summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2020-08-31 22:37:03 +0200
committerJules Laplace <julescarbon@gmail.com>2020-08-31 22:37:03 +0200
commitd22d51a1ae49680015326857360eb699f31efced (patch)
tree43ac5007de26848f516b37b863daeb77f86d97d2
parenta81d20bc18d002623fc24cdcea8df7eed6d85bc9 (diff)
NO MORE ANDROID BUILD
-rwxr-xr-xStoneIsland/platforms/android/.gitignore14
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties1
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileHashes.binbin269151 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshots.binbin3302526 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.binbin61704 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/taskArtifacts.binbin227219 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin47020 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin18542 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin47020 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin18542 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin63867 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin20624 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin63867 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin20627 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties1
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties.lockbin17 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileHashes.binbin174048 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileSnapshots.binbin798667 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/outputFileStates.binbin21362 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/taskArtifacts.binbin52187 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileHashes.binbin422132 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileSnapshots.binbin5541731 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.binbin270945 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin47000 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin18522 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin47000 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin18522 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin124312 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin20593 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.binbin124312 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.binbin20595 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lockbin17 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/.idea/compiler.xml22
-rw-r--r--StoneIsland/platforms/android/.idea/copyright/profiles_settings.xml3
-rw-r--r--StoneIsland/platforms/android/.idea/gradle.xml18
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/ShortcutBadger_1_1_11.xml12
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/play_services_base_9_8_0.xml10
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/play_services_basement_9_8_0.xml10
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/play_services_gcm_9_8_0.xml10
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/play_services_iid_9_8_0.xml10
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/play_services_tasks_9_8_0.xml10
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/support_annotations_24_0_0.xml11
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/support_v13_23_4_0.xml13
-rw-r--r--StoneIsland/platforms/android/.idea/libraries/support_v4_24_0_0.xml16
-rw-r--r--StoneIsland/platforms/android/.idea/misc.xml19
-rw-r--r--StoneIsland/platforms/android/.idea/modules.xml9
-rw-r--r--StoneIsland/platforms/android/.idea/runConfigurations.xml12
-rw-r--r--StoneIsland/platforms/android/.idea/workspace.xml2056
-rwxr-xr-xStoneIsland/platforms/android/AndroidManifest.xml59
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/AndroidManifest.xml23
-rw-r--r--StoneIsland/platforms/android/CordovaLib/CordovaLib.iml101
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build.gradle135
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/debug/org/apache/cordova/BuildConfig.java13
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/release/org/apache/cordova/BuildConfig.java13
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/AndroidManifest.xml27
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/classes.jarbin130522 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/AndroidManifest.xml27
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/classes.jarbin130446 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/AuthenticationToken.classbin776 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/BuildConfig.classbin711 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackContext.classbin3329 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackMap.classbin1491 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Config.classbin1841 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ConfigXmlParser.classbin4919 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$1.classbin943 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$2.classbin1019 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$3.classbin1522 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4$1.classbin1090 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4.classbin2012 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity.classbin11826 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaArgs.classbin2561 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaBridge.classbin5470 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaClientCertRequest.classbin1426 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$1.classbin1221 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$2.classbin1201 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$3.classbin1352 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$4.classbin1223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$5.classbin1223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$6.classbin1203 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$7.classbin1354 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$8.classbin1506 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$9.classbin1240 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$Result.classbin277 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper.classbin3796 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaHttpAuthHandler.classbin821 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterface.classbin725 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.classbin1064 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl.classbin7855 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPlugin.classbin6877 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPreferences.classbin3223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi$OpenForReadResult.classbin905 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi.classbin12711 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebView.classbin2239 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$Client.classbin549 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$EngineView.classbin308 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine.classbin1170 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$1.classbin1660 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$2.classbin1560 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$3.classbin1468 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.classbin1256 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.classbin1482 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient.classbin4953 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl.classbin16044 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$1.classbin1027 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$2.classbin748 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$3.classbin737 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$4.classbin748 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$5.classbin1988 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid.classbin9479 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ExposedJsApi.classbin442 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaClientCertRequest.classbin443 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaCookieManager.classbin345 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaHttpAuthHandler.classbin229 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/LOG.classbin3616 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.classbin814 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.classbin1456 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.classbin1544 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$JsMessage.classbin4360 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.classbin1594 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.classbin1562 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.classbin712 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.classbin1407 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.classbin1733 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.classbin499 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.classbin2619 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue.classbin7448 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginEntry.classbin1042 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginManager.classbin12314 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult$Status.classbin1651 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult.classbin5908 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ResumeCallback.classbin2995 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist$URLPattern.classbin3133 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist.classbin2952 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemCookieManager.classbin1843 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemExposedJsApi.classbin1433 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$1.classbin1202 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$2.classbin1204 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$3.classbin1270 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$4.classbin1707 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$5.classbin1787 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient.classbin10992 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebView.classbin2658 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewClient.classbin9561 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$1.classbin1841 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$2.classbin1050 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine.classbin12258 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/AuthenticationToken.classbin776 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/BuildConfig.classbin576 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackContext.classbin3329 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackMap.classbin1491 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Config.classbin1841 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ConfigXmlParser.classbin4919 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$1.classbin943 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$2.classbin1019 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$3.classbin1522 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4$1.classbin1090 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4.classbin2012 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity.classbin11826 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaArgs.classbin2561 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaBridge.classbin5470 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaClientCertRequest.classbin1426 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$1.classbin1221 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$2.classbin1201 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$3.classbin1352 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$4.classbin1223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$5.classbin1223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$6.classbin1203 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$7.classbin1354 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$8.classbin1506 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$9.classbin1240 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$Result.classbin277 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper.classbin3796 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaHttpAuthHandler.classbin821 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterface.classbin725 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.classbin1064 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl.classbin7855 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPlugin.classbin6877 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPreferences.classbin3223 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi$OpenForReadResult.classbin905 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi.classbin12711 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebView.classbin2239 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$Client.classbin549 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$EngineView.classbin308 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine.classbin1170 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$1.classbin1660 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$2.classbin1560 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$3.classbin1468 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.classbin1256 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.classbin1482 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient.classbin4953 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl.classbin16044 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$1.classbin1027 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$2.classbin748 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$3.classbin737 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$4.classbin748 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$5.classbin1988 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid.classbin9479 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ExposedJsApi.classbin442 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaClientCertRequest.classbin443 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaCookieManager.classbin345 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaHttpAuthHandler.classbin229 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/LOG.classbin3616 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.classbin814 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.classbin1456 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.classbin1544 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$JsMessage.classbin4360 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.classbin1594 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.classbin1562 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.classbin712 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.classbin1407 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.classbin1733 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.classbin499 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.classbin2619 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue.classbin7448 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginEntry.classbin1042 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginManager.classbin12314 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult$Status.classbin1651 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult.classbin5908 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ResumeCallback.classbin2995 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist$URLPattern.classbin3133 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist.classbin2952 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemCookieManager.classbin1843 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemExposedJsApi.classbin1433 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$1.classbin1202 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$2.classbin1204 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$3.classbin1270 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$4.classbin1707 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$5.classbin1787 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient.classbin10992 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebView.classbin2658 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewClient.classbin9561 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$1.classbin1841 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$2.classbin1050 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine.classbin12258 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/debug/tag.txt1
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/release/tag.txt1
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileDebugAidl/dependency.storebin5 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileReleaseAidl/dependency.storebin5 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugAssets/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugShaders/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/compile-file-map.properties1
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties1
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/merger.xml2
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/debug/AndroidManifest.xml27
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/release/AndroidManifest.xml27
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-debug.aarbin117856 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-release.aarbin117781 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/CordovaLib/cordova.gradle201
-rw-r--r--StoneIsland/platforms/android/CordovaLib/project.properties16
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/AuthenticationToken.java69
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackContext.java142
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackMap.java65
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Config.java71
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ConfigXmlParser.java145
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java518
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaArgs.java113
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java182
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java96
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaDialogsHelper.java152
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaHttpAuthHandler.java51
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java88
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java241
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java422
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPreferences.java101
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaResourceApi.java471
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java142
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewEngine.java85
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java613
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CoreAndroid.java390
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java31
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaClientCertRequest.java66
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaCookieManager.java33
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaHttpAuthHandler.java38
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/LOG.java244
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/NativeToJsMessageQueue.java539
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginEntry.java70
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginManager.java526
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginResult.java198
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ResumeCallback.java76
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Whitelist.java170
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java69
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemExposedJsApi.java53
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebChromeClient.java292
-rw-r--r--StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebView.java88
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java374
-rwxr-xr-xStoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java355
-rw-r--r--StoneIsland/platforms/android/android.iml126
-rwxr-xr-xStoneIsland/platforms/android/android.json436
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js36
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js35
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova-js-src/exec.js297
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova-js-src/platform.js125
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova-js-src/plugin/android/app.js108
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova.js2208
-rwxr-xr-xStoneIsland/platforms/android/assets/www/cordova_plugins.js170
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/account.css576
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/blogs.css427
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/cart.css385
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/andale_mono.ttfbin109700 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/andale_mono.woffbin53751 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/fonts.css37
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/ionicons.css1480
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/ionicons.eotbin120724 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/ionicons.svg2230
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/ionicons.ttfbin188508 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/ionicons.woffbin67904 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-bold-webfont.woffbin25068 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-italic-webfont.woffbin30160 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-light-webfont.woffbin28824 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-medium-webfont.woffbin26668 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-regular-webfont.woffbin25352 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/index.css126
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/nav.css572
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/products.css301
-rwxr-xr-xStoneIsland/platforms/android/assets/www/css/vendor/flickity.css141
-rw-r--r--StoneIsland/platforms/android/assets/www/css/vendor/imageviewer.css227
-rw-r--r--StoneIsland/platforms/android/assets/www/db.json4869
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/CDVNotification.bundle/beep.wavbin8114 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-568h@2x~iphone.pngbin101919 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-667h.pngbin104550 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-736h.pngbin192301 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape-736h.pngbin195426 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape@2x~ipad.pngbin246786 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape~ipad.pngbin107960 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait@2x~ipad.pngbin244661 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait~ipad.pngbin107123 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default@2x~iphone.pngbin100977 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/Resources/splash/Default~iphone.pngbin46074 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/assets/www/img/angle-down.pngbin5562 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/bottom-fade.pngbin2936 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/cart-box.pngbin173 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/cart-handle.pngbin42648 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/compass-logo.pngbin75721 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/compass-logo.png.oldbin137677 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/fade-to-bottom-threshold.gifbin80012 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/fade-to-bottom.pngbin2936 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/left-arrow.pngbin5147 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/right-arrow.pngbin5264 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/small-cart-box.pngbin130 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/small-cart-handle.pngbin4017 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/small-logo.pngbin8140 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/spinner.gifbin5694 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/img/wide-logo.pngbin18354 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/assets/www/index.html1387
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/index.js165
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/_router.js138
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/AccountView.js176
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/account/ConsentModal.js90
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/OrdersView.js195
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/PaymentView.js128
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/ProfileView.js129
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/SettingsView.js46
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/account/ShippingView.js89
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/auth/LoginView.js58
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/auth/LogoutView.js19
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/auth/SignupView.js137
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js235
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/BlogView.js115
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/HubView.js226
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/PageView.js46
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/blogs/StoryView.js78
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartConfirm.js194
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartError.js28
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js203
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartShipping.js152
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartSummary.js213
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartThanks.js28
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/cart/CartView.js72
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/etc/accessibility.js77
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/etc/backup_db.js419
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/etc/deeplink.js6
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/etc/geo.js71
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/etc/push.js154
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/etc/scroll.js29
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/etc/sim.js49
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/AddressView.js303
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/CreditCardView.js63
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/CurtainView.js39
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/FooterView.js43
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/HeaderView.js57
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/IntroView.js64
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/NavView.js182
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/nav/SearchView.js16
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/ClosedStoreView.js75
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/CollectionView.js254
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/GalleryView.js109
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/ProductView.js605
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/Selector.js70
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/products/filters/CategoryFilter.js40
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/products/filters/DepartmentFilter.js30
-rw-r--r--StoneIsland/platforms/android/assets/www/js/lib/products/filters/SizeFilter.js60
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/view/Router.js75
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/view/Scrollable.js44
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/view/Serializable.js194
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/lib/view/View.js147
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/_sdk.js48
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/account.js133
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/address.js78
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/auth.js152
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/cart.js248
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/payment.js72
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/product.js68
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/sdk/shipping.js85
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/fastclick.js790
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/flickity.pkgd.js5090
-rw-r--r--StoneIsland/platforms/android/assets/www/js/vendor/imageviewer.js821
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/iscroll-5.1.3.js2011
-rw-r--r--StoneIsland/platforms/android/assets/www/js/vendor/iscroll.js2170
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/jquery-2.1.4.min.js4
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/jquery.creditCardValidator.js208
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/loader.js100
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/lodash.min.js98
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/moment.js3195
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/oktween.js125
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/prefixfree.js497
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/promise.js34
-rwxr-xr-xStoneIsland/platforms/android/assets/www/js/vendor/util.js209
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js1778
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js1778
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js48
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js85
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/android/notification.js76
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/notification.js132
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/PositionError.js40
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/android/geolocation.js73
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js113
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/Connection.js36
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/network.js93
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js11
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js8
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js36
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-statusbar/www/statusbar.js116
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js123
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/ionic-plugin-keyboard/www/android/keyboard.js62
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js53
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js502
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js329
-rw-r--r--StoneIsland/platforms/android/build.gradle317
-rw-r--r--StoneIsland/platforms/android/cordova/.jshintrc10
-rw-r--r--StoneIsland/platforms/android/cordova/Api.js415
-rwxr-xr-xStoneIsland/platforms/android/cordova/android_sdk_version29
-rw-r--r--StoneIsland/platforms/android/cordova/android_sdk_version.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/build50
-rw-r--r--StoneIsland/platforms/android/cordova/build.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/check_reqs31
-rw-r--r--StoneIsland/platforms/android/cordova/check_reqs.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/clean51
-rw-r--r--StoneIsland/platforms/android/cordova/clean.bat26
-rw-r--r--StoneIsland/platforms/android/cordova/defaults.xml26
-rw-r--r--StoneIsland/platforms/android/cordova/lib/Adb.js105
-rw-r--r--StoneIsland/platforms/android/cordova/lib/AndroidManifest.js161
-rw-r--r--StoneIsland/platforms/android/cordova/lib/AndroidProject.js210
-rw-r--r--StoneIsland/platforms/android/cordova/lib/AndroidStudio.js42
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/android_sdk.js106
-rw-r--r--StoneIsland/platforms/android/cordova/lib/build.js301
-rw-r--r--StoneIsland/platforms/android/cordova/lib/builders/AntBuilder.js156
-rw-r--r--StoneIsland/platforms/android/cordova/lib/builders/GenericBuilder.js147
-rw-r--r--StoneIsland/platforms/android/cordova/lib/builders/GradleBuilder.js279
-rw-r--r--StoneIsland/platforms/android/cordova/lib/builders/builders.js47
-rw-r--r--StoneIsland/platforms/android/cordova/lib/check_reqs.js432
-rw-r--r--StoneIsland/platforms/android/cordova/lib/device.js120
-rw-r--r--StoneIsland/platforms/android/cordova/lib/emulator.js532
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/install-device42
-rw-r--r--StoneIsland/platforms/android/cordova/lib/install-device.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/install-emulator38
-rw-r--r--StoneIsland/platforms/android/cordova/lib/install-emulator.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/list-devices34
-rw-r--r--StoneIsland/platforms/android/cordova/lib/list-devices.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/list-emulator-images34
-rw-r--r--StoneIsland/platforms/android/cordova/lib/list-emulator-images.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/list-started-emulators34
-rw-r--r--StoneIsland/platforms/android/cordova/lib/list-started-emulators.bat26
-rw-r--r--StoneIsland/platforms/android/cordova/lib/log.js56
-rw-r--r--StoneIsland/platforms/android/cordova/lib/plugin-build.gradle70
-rw-r--r--StoneIsland/platforms/android/cordova/lib/pluginHandlers.js308
-rw-r--r--StoneIsland/platforms/android/cordova/lib/prepare.js471
-rw-r--r--StoneIsland/platforms/android/cordova/lib/retry.js68
-rw-r--r--StoneIsland/platforms/android/cordova/lib/run.js141
-rwxr-xr-xStoneIsland/platforms/android/cordova/lib/start-emulator39
-rw-r--r--StoneIsland/platforms/android/cordova/lib/start-emulator.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/log36
-rw-r--r--StoneIsland/platforms/android/cordova/log.bat26
-rw-r--r--StoneIsland/platforms/android/cordova/loggingHelper.js18
-rwxr-xr-xStoneIsland/platforms/android/cordova/run53
-rw-r--r--StoneIsland/platforms/android/cordova/run.bat26
-rwxr-xr-xStoneIsland/platforms/android/cordova/version29
-rw-r--r--StoneIsland/platforms/android/cordova/version.bat26
-rw-r--r--StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle21
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js36
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js35
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova-js-src/exec.js297
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova-js-src/platform.js125
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova-js-src/plugin/android/app.js108
-rw-r--r--StoneIsland/platforms/android/platform_www/cordova.js2208
-rwxr-xr-xStoneIsland/platforms/android/platform_www/cordova_plugins.js170
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js1778
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js1778
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js48
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js85
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/android/notification.js76
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/notification.js132
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/PositionError.js40
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/android/geolocation.js73
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js113
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/Connection.js36
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/network.js93
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js11
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js8
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js36
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js116
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js123
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/ionic-plugin-keyboard/www/android/keyboard.js62
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js53
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js502
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js329
-rwxr-xr-xStoneIsland/platforms/android/project.properties18
-rw-r--r--StoneIsland/platforms/android/res/drawable-hdpi/ic_action_next_item.pngbin593 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-hdpi/ic_action_previous_item.pngbin599 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-hdpi/ic_action_remove.pngbin438 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-hdpi/icon.pngbin7963 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-land-hdpi/screen.pngbin72684 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-land-ldpi/screen.pngbin22582 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-land-mdpi/screen.pngbin39292 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-land-xhdpi/screen.pngbin133130 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-land-xxhdpi/screen.pngbin180267 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-land-xxxhdpi/screen.pngbin235602 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-ldpi/icon.pngbin3204 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-mdpi/ic_action_next_item.pngbin427 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-mdpi/ic_action_previous_item.pngbin438 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-mdpi/ic_action_remove.pngbin328 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-mdpi/icon.pngbin4631 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-port-hdpi/screen.pngbin71896 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-port-ldpi/screen.pngbin21748 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-port-mdpi/screen.pngbin38625 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-port-xhdpi/screen.pngbin129139 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-port-xxhdpi/screen.pngbin173802 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-port-xxxhdpi/screen.pngbin232931 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_next_item.pngbin727 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_previous_item.pngbin744 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_remove.pngbin536 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/drawable-xhdpi/icon.pngbin11662 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_next_item.pngbin1021 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_previous_item.pngbin1038 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_remove.pngbin681 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xxhdpi/icon.pngbin20810 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable-xxxhdpi/icon.pngbin32451 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/drawable/icon.pngbin11662 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-hdpi/icon.pngbin7763 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-ldpi/icon.pngbin3085 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-mdpi/icon.pngbin4529 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-xhdpi/icon.pngbin11368 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-xxhdpi/icon.pngbin20517 -> 0 bytes
-rw-r--r--StoneIsland/platforms/android/res/mipmap-xxxhdpi/icon.pngbin31964 -> 0 bytes
-rwxr-xr-xStoneIsland/platforms/android/res/values/strings.xml7
-rw-r--r--StoneIsland/platforms/android/res/xml/config.xml85
-rwxr-xr-xStoneIsland/platforms/android/settings.gradle3
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java41
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java802
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java55
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java72
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java120
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java27
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java458
-rw-r--r--StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java38
-rw-r--r--StoneIsland/platforms/android/src/com/pbakondy/Sim.java264
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/AbstractMobileAccessibilityHelper.java41
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/DonutMobileAccessibilityHelper.java187
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/IceCreamSandwichMobileAccessibilityHelper.java104
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/JellyBeanMobileAccessibilityHelper.java52
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/KitKatMobileAccessibilityHelper.java99
-rw-r--r--StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/MobileAccessibility.java330
-rw-r--r--StoneIsland/platforms/android/src/io/ionic/keyboard/IonicKeyboard.java130
-rw-r--r--StoneIsland/platforms/android/src/nl/xservices/plugins/LaunchMyApp.java173
-rw-r--r--StoneIsland/platforms/android/src/nl/xservices/plugins/SocialSharing.java775
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/BuildHelper.java70
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/PermissionHelper.java138
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/device/Device.java174
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/dialogs/Notification.java513
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/geolocation/Geolocation.java107
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java1005
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowserDialog.java57
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppChromeClient.java133
-rwxr-xr-xStoneIsland/platforms/android/src/org/apache/cordova/networkinformation/NetworkManager.java287
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/splashscreen/SplashScreen.java385
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/statusbar/StatusBar.java201
-rw-r--r--StoneIsland/platforms/android/src/org/apache/cordova/whitelist/WhitelistPlugin.java161
-rwxr-xr-xStoneIsland/platforms/android/src/us/okfoc/stoneisland/MainActivity.java34
-rw-r--r--StoneIsland/platforms/android/wrapper.gradle1
610 files changed, 0 insertions, 75602 deletions
diff --git a/StoneIsland/platforms/android/.gitignore b/StoneIsland/platforms/android/.gitignore
deleted file mode 100755
index 6e524459..00000000
--- a/StoneIsland/platforms/android/.gitignore
+++ /dev/null
@@ -1,14 +0,0 @@
-# Non-project-specific build files:
-build.xml
-local.properties
-/gradlew
-/gradlew.bat
-/gradle
-# Ant builds
-ant-build
-ant-gen
-# Eclipse builds
-gen
-out
-# Gradle builds
-/build
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties
deleted file mode 100644
index 9b4af36e..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Thu Mar 02 23:45:31 CET 2017
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties.lock b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties.lock
deleted file mode 100644
index 69aed35e..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/cache.properties.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileHashes.bin b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileHashes.bin
deleted file mode 100644
index 45ba7620..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileHashes.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin
deleted file mode 100644
index 6dc2f62e..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshots.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin
deleted file mode 100644
index fb3af1c3..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/fileSnapshotsToTreeSnapshotsIndex.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin b/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin
deleted file mode 100644
index 8eeaef09..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/taskArtifacts/taskArtifacts.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 4a2afda8..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index a8ffa97e..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index eb29afb1..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 8cd3a403..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 4a2afda8..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 02b74ffc..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index eb29afb1..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 8e42c8c0..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 4a51332a..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index e0d404eb..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index a9c6a5fa..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 76076136..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 4a51332a..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 0c3093de..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index 9edafb2f..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 6a341aa5..00000000
--- a/StoneIsland/platforms/android/.gradle/2.14.1/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties
deleted file mode 100755
index 378a9612..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Tue Dec 29 00:15:00 CST 2015
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties.lock b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties.lock
deleted file mode 100755
index eefa2205..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/cache.properties.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileHashes.bin b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileHashes.bin
deleted file mode 100755
index 1b044ece..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileHashes.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin
deleted file mode 100755
index 45955f6e..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/fileSnapshots.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/outputFileStates.bin b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/outputFileStates.bin
deleted file mode 100755
index bd8c4043..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/outputFileStates.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin b/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin
deleted file mode 100755
index 4b42afed..00000000
--- a/StoneIsland/platforms/android/.gradle/2.2.1/taskArtifacts/taskArtifacts.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileHashes.bin b/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileHashes.bin
deleted file mode 100644
index fbc77f3a..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileHashes.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileSnapshots.bin b/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileSnapshots.bin
deleted file mode 100644
index 7288e2f3..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/fileSnapshots.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.bin b/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.bin
deleted file mode 100644
index 5dce2d6f..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.lock b/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.lock
deleted file mode 100644
index ece2358e..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/taskArtifacts/taskArtifacts.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index caceec07..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 304f2a81..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index 32949413..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 66d8e793..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index caceec07..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 642602fc..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index 32949413..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 831cb889..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_CordovaLib_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 829a44a1..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 9846179a..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index 39d2299c..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 0e3369e0..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileDebugJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
deleted file mode 100644
index 829a44a1..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
deleted file mode 100644
index 1ed23d39..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
deleted file mode 100644
index 5fab83aa..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.bin
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
deleted file mode 100644
index 1be520bb..00000000
--- a/StoneIsland/platforms/android/.gradle/3.3/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/.idea/compiler.xml b/StoneIsland/platforms/android/.idea/compiler.xml
deleted file mode 100644
index 96cc43ef..00000000
--- a/StoneIsland/platforms/android/.idea/compiler.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CompilerConfiguration">
- <resourceExtensions />
- <wildcardResourcePatterns>
- <entry name="!?*.java" />
- <entry name="!?*.form" />
- <entry name="!?*.class" />
- <entry name="!?*.groovy" />
- <entry name="!?*.scala" />
- <entry name="!?*.flex" />
- <entry name="!?*.kt" />
- <entry name="!?*.clj" />
- <entry name="!?*.aj" />
- </wildcardResourcePatterns>
- <annotationProcessing>
- <profile default="true" name="Default" enabled="false">
- <processorPath useClasspath="true" />
- </profile>
- </annotationProcessing>
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/copyright/profiles_settings.xml b/StoneIsland/platforms/android/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf33..00000000
--- a/StoneIsland/platforms/android/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="CopyrightManager">
- <settings default="" />
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/gradle.xml b/StoneIsland/platforms/android/.idea/gradle.xml
deleted file mode 100644
index e3e5ad54..00000000
--- a/StoneIsland/platforms/android/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="GradleSettings">
- <option name="linkedExternalProjectsSettings">
- <GradleProjectSettings>
- <option name="distributionType" value="DEFAULT_WRAPPED" />
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="modules">
- <set>
- <option value="$PROJECT_DIR$" />
- <option value="$PROJECT_DIR$/CordovaLib" />
- </set>
- </option>
- <option name="resolveModulePerSourceSet" value="false" />
- </GradleProjectSettings>
- </option>
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/ShortcutBadger_1_1_11.xml b/StoneIsland/platforms/android/.idea/libraries/ShortcutBadger_1_1_11.xml
deleted file mode 100644
index 40e00fe9..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/ShortcutBadger_1_1_11.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<component name="libraryTable">
- <library name="ShortcutBadger-1.1.11">
- <CLASSES>
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/me.leolin/ShortcutBadger/1.1.11/res" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/me.leolin/ShortcutBadger/1.1.11/jars/classes.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/me.leolin/ShortcutBadger/1.1.11/46503d1474a256d2a2893b7eaaa631e4a91914ea/ShortcutBadger-1.1.11-sources.jar!/" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/play_services_base_9_8_0.xml b/StoneIsland/platforms/android/.idea/libraries/play_services_base_9_8_0.xml
deleted file mode 100644
index c8e3f017..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/play_services_base_9_8_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="play-services-base-9.8.0">
- <CLASSES>
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/9.8.0/res" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/9.8.0/jars/classes.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/play_services_basement_9_8_0.xml b/StoneIsland/platforms/android/.idea/libraries/play_services_basement_9_8_0.xml
deleted file mode 100644
index a525e3fd..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/play_services_basement_9_8_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="play-services-basement-9.8.0">
- <CLASSES>
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-basement/9.8.0/res" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-basement/9.8.0/jars/classes.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/play_services_gcm_9_8_0.xml b/StoneIsland/platforms/android/.idea/libraries/play_services_gcm_9_8_0.xml
deleted file mode 100644
index 2b6e11fb..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/play_services_gcm_9_8_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="play-services-gcm-9.8.0">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-gcm/9.8.0/jars/classes.jar!/" />
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-gcm/9.8.0/res" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/play_services_iid_9_8_0.xml b/StoneIsland/platforms/android/.idea/libraries/play_services_iid_9_8_0.xml
deleted file mode 100644
index 75de45d6..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/play_services_iid_9_8_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="play-services-iid-9.8.0">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-iid/9.8.0/jars/classes.jar!/" />
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-iid/9.8.0/res" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/play_services_tasks_9_8_0.xml b/StoneIsland/platforms/android/.idea/libraries/play_services_tasks_9_8_0.xml
deleted file mode 100644
index 9a273f1b..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/play_services_tasks_9_8_0.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<component name="libraryTable">
- <library name="play-services-tasks-9.8.0">
- <CLASSES>
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-tasks/9.8.0/jars/classes.jar!/" />
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-tasks/9.8.0/res" />
- </CLASSES>
- <JAVADOC />
- <SOURCES />
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/support_annotations_24_0_0.xml b/StoneIsland/platforms/android/.idea/libraries/support_annotations_24_0_0.xml
deleted file mode 100644
index 959d7c16..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/support_annotations_24_0_0.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<component name="libraryTable">
- <library name="support-annotations-24.0.0">
- <CLASSES>
- <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/24.0.0/support-annotations-24.0.0.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/24.0.0/support-annotations-24.0.0-sources.jar!/" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/support_v13_23_4_0.xml b/StoneIsland/platforms/android/.idea/libraries/support_v13_23_4_0.xml
deleted file mode 100644
index 337f32a1..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/support_v13_23_4_0.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<component name="libraryTable">
- <library name="support-v13-23.4.0">
- <CLASSES>
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/23.4.0/res" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/23.4.0/jars/libs/internal_impl-23.4.0.jar!/" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/23.4.0/jars/classes.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v13/23.4.0/support-v13-23.4.0-sources.jar!/" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/libraries/support_v4_24_0_0.xml b/StoneIsland/platforms/android/.idea/libraries/support_v4_24_0_0.xml
deleted file mode 100644
index ff7623ec..00000000
--- a/StoneIsland/platforms/android/.idea/libraries/support_v4_24_0_0.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<component name="libraryTable">
- <library name="support-v4-24.0.0">
- <ANNOTATIONS>
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.0.0/annotations.zip!/" />
- </ANNOTATIONS>
- <CLASSES>
- <root url="file://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.0.0/res" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.0.0/jars/classes.jar!/" />
- <root url="jar://$PROJECT_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.0.0/jars/libs/internal_impl-24.0.0.jar!/" />
- </CLASSES>
- <JAVADOC />
- <SOURCES>
- <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-v4/24.0.0/support-v4-24.0.0-sources.jar!/" />
- </SOURCES>
- </library>
-</component> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/misc.xml b/StoneIsland/platforms/android/.idea/misc.xml
deleted file mode 100644
index 3368772a..00000000
--- a/StoneIsland/platforms/android/.idea/misc.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/build/classes" />
- </component>
- <component name="ProjectType">
- <option name="id" value="Android" />
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/modules.xml b/StoneIsland/platforms/android/.idea/modules.xml
deleted file mode 100644
index 4d9445df..00000000
--- a/StoneIsland/platforms/android/.idea/modules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/CordovaLib/CordovaLib.iml" filepath="$PROJECT_DIR$/CordovaLib/CordovaLib.iml" />
- <module fileurl="file://$PROJECT_DIR$/android.iml" filepath="$PROJECT_DIR$/android.iml" />
- </modules>
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/runConfigurations.xml b/StoneIsland/platforms/android/.idea/runConfigurations.xml
deleted file mode 100644
index 7f68460d..00000000
--- a/StoneIsland/platforms/android/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="RunConfigurationProducerService">
- <option name="ignoredProducers">
- <set>
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
- </set>
- </option>
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/.idea/workspace.xml b/StoneIsland/platforms/android/.idea/workspace.xml
deleted file mode 100644
index 8f95a3f9..00000000
--- a/StoneIsland/platforms/android/.idea/workspace.xml
+++ /dev/null
@@ -1,2056 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ChangeListManager">
- <list default="true" id="cc697f5d-25fa-447a-8c46-adb5b90200bb" name="Default" comment="" />
- <ignored path="android.iws" />
- <ignored path=".idea/workspace.xml" />
- <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
- <option name="TRACKING_ENABLED" value="true" />
- <option name="SHOW_DIALOG" value="false" />
- <option name="HIGHLIGHT_CONFLICTS" value="true" />
- <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
- <option name="LAST_RESOLUTION" value="IGNORE" />
- </component>
- <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
- <component name="CreatePatchCommitExecutor">
- <option name="PATCH_PATH" value="" />
- </component>
- <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
- <component name="ExternalProjectsData">
- <projectState path="$PROJECT_DIR$">
- <ProjectState />
- </projectState>
- </component>
- <component name="ExternalProjectsManager">
- <system id="GRADLE">
- <state>
- <projects_view />
- </state>
- </system>
- </component>
- <component name="FavoritesManager">
- <favorites_list name="android" />
- </component>
- <component name="GradleLocalSettings">
- <option name="availableProjects">
- <map>
- <entry>
- <key>
- <ExternalProjectPojo>
- <option name="name" value="android" />
- <option name="path" value="$PROJECT_DIR$" />
- </ExternalProjectPojo>
- </key>
- <value>
- <list>
- <ExternalProjectPojo>
- <option name="name" value=":CordovaLib" />
- <option name="path" value="$PROJECT_DIR$/CordovaLib" />
- </ExternalProjectPojo>
- <ExternalProjectPojo>
- <option name="name" value="android" />
- <option name="path" value="$PROJECT_DIR$" />
- </ExternalProjectPojo>
- </list>
- </value>
- </entry>
- </map>
- </option>
- <option name="availableTasks">
- <map>
- <entry key="$PROJECT_DIR$">
- <value>
- <list>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the sub-projects of root project 'android'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="projects" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="validateSigningDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareDebugDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles a bundle containing the library in debug." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="bundleDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processReleaseJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="copyDebugLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateReleaseAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="lintDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles a bundle containing the library in release." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="bundleRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Creates a version of android.jar that's suitable for unit tests." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mockableAndroidJar" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the configuration model of root project 'android'. [incubating]" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="model" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the tasks runnable from root project 'android' (some of the displayed tasks may belong to subprojects)." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="tasks" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Initializes a new Gradle build. [incubating]" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="init" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageReleaseRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeReleaseProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="cdvBuildDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="incrementalDebugJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageDebugJarArtifact" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all device checks using Device Providers and Test Servers." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="deviceCheck" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare android:CordovaLib:unspecified:release" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareAndroidCordovaLibUnspecifiedReleaseLibrary" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays all dependencies declared in root project 'android'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="dependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on all variants." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="lint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project and all projects it depends on." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="buildNeeded" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAndroidTestBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugUnitTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for the release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="testReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleDefault" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the components produced by root project 'android'. [incubating]" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="components" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformNative_libsWithSyncJniLibsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all Debug builds." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugAndroidTestManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugUnitTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformClassesWithDexForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preDebugAndroidTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugAndroidTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processReleaseUnitTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.android.support:support-v4:24.0.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComAndroidSupportSupportV42400Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstalls the Release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="uninstallRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformClassesAndResourcesWithSyncLibJarsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAndroidTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareDebugAndroidTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="incrementalDebugAndroidTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformClassesAndResourcesWithSyncLibJarsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="checkReleaseManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeReleaseJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareReleaseDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs instrumentation tests using all Device Providers." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="deviceAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugAndroidTestAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="cdvPrintProps" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processReleaseManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstalls the android (on device) tests for the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="uninstallDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the insight into a specific dependency in root project 'android'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="dependencyInsight" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateReleaseSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="incrementalReleaseUnitTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preReleaseBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all variants of all applications and secondary packages." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assemble" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.google.android.gms:play-services-iid:9.8.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComGoogleAndroidGmsPlayServicesIid980Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="incrementalDebugUnitTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="incrementalReleaseJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays a help message." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="help" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseUnitTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs the android (on device) tests for the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="installDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all device checks on currently connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="connectedCheck" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs the tests for debug on connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="connectedDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstall all applications." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="uninstallAll" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all the Test applications." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare android:CordovaLib:unspecified:debug" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareAndroidCordovaLibUnspecifiedDebugLibrary" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="validateSigningDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preDebugUnitTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="wrapper" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAndroidTestResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeReleaseShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the Android dependencies of the project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="androidDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugUnitTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.android.support:support-v13:23.4.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComAndroidSupportSupportV132340Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugAndroidTestJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="extractProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.google.android.gms:play-services-tasks:9.8.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComGoogleAndroidGmsPlayServicesTasks980Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformClassesWithDexForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.google.android.gms:play-services-gcm:9.8.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComGoogleAndroidGmsPlayServicesGcm980Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="copyReleaseLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAndroidTestAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageReleaseJarArtifact" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="jarReleaseClasses" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareReleaseUnitTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for all variants." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="test" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preReleaseUnitTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.google.android.gms:play-services-base:9.8.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComGoogleAndroidGmsPlayServicesBase980Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all checks." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="check" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for the debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="testDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="connectedAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="jarDebugClasses" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformClassesWithDexForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="installDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformResourcesWithMergeJavaResForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseUnitTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileReleaseAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on the Release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="lintRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project and all projects that depend on it." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="buildDependents" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays all buildscript dependencies declared in root project 'android'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="buildEnvironment" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="checkDebugManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prints out all the source sets defined in this project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="sourceSets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeReleaseAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare com.google.android.gms:play-services-basement:9.8.0" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareComGoogleAndroidGmsPlayServicesBasement980Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageDebugRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateReleaseBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareDebugUnitTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on just the fatal issues in the release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="lintVitalRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstalls the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="uninstallDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the signing info for each variant." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="signingReport" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="mergeDebugAndroidTestShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Deletes the build directory." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="clean" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="preDebugBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="transformNative_libsWithSyncJniLibsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="cdvBuildRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="build" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all Release builds." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="assembleRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prepare me.leolin:ShortcutBadger:1.1.11" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="prepareMeLeolinShortcutBadger1111Library" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="compileDebugAndroidTestRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="processDebugManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="packageDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="generateReleaseResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the properties of root project 'android'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$" />
- <option name="name" value="properties" />
- </ExternalTaskPojo>
- </list>
- </value>
- </entry>
- <entry key="$PROJECT_DIR$/CordovaLib">
- <value>
- <list>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the sub-projects of project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="projects" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="validateSigningDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="prepareDebugDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles a bundle containing the library in debug." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="bundleDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="copyDebugLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processReleaseJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateReleaseAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="lintDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles a bundle containing the library in release." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="bundleRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Creates a version of android.jar that's suitable for unit tests." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mockableAndroidJar" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the configuration model of project ':CordovaLib'. [incubating]" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="model" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the tasks runnable from project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="tasks" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageReleaseRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeReleaseProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="incrementalDebugJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageDebugJarArtifact" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all device checks using Device Providers and Test Servers." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="deviceCheck" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays all dependencies declared in project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="dependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on all variants." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="lint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project and all projects it depends on." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="buildNeeded" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAndroidTestBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugUnitTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for the release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="testReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleDefault" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the components produced by project ':CordovaLib'. [incubating]" />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="components" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformNative_libsWithSyncJniLibsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all Debug builds." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugAndroidTestManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugUnitTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformResourcesWithMergeJavaResForReleaseUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preDebugAndroidTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugAndroidTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processReleaseUnitTestJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformClassesAndResourcesWithSyncLibJarsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAndroidTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="prepareDebugAndroidTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="incrementalDebugAndroidTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformClassesAndResourcesWithSyncLibJarsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="checkReleaseManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageDebugResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeReleaseJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="prepareReleaseDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs instrumentation tests using all Device Providers." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="deviceAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugAndroidTestAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processReleaseManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstalls the android (on device) tests for the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="uninstallDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the insight into a specific dependency in project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="dependencyInsight" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateReleaseSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="incrementalReleaseUnitTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preReleaseBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all variants of all applications and secondary packages." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assemble" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="incrementalDebugUnitTestJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="incrementalReleaseJavaCompilationSafeguard" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays a help message." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="help" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseUnitTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs the android (on device) tests for the Debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="installDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all device checks on currently connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="connectedCheck" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs the tests for debug on connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="connectedDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Uninstall all applications." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="uninstallAll" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all the Test applications." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preDebugUnitTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAndroidTestResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeReleaseShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the Android dependencies of the project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="androidDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugUnitTestSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugAndroidTestJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="extractProguardFiles" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformClassesWithDexForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="copyReleaseLint" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugJavaRes" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAndroidTestAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageReleaseJarArtifact" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="prepareReleaseUnitTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for all variants." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="test" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugNdk" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformNative_libsWithMergeJniLibsForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preReleaseUnitTestBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs all checks." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="check" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Run unit tests for the debug build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="testDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Installs and runs instrumentation tests for all flavors on connected devices." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="connectedAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformResourcesWithMergeJavaResForRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseSources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseUnitTestJavaWithJavac" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileReleaseAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Runs lint on the Release build." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="lintRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project and all projects that depend on it." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="buildDependents" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays all buildscript dependencies declared in project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="buildEnvironment" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="checkDebugManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugJniLibFolders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Prints out all the source sets defined in this project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="sourceSets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformResourcesWithMergeJavaResForDebugUnitTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeReleaseAssets" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageDebugRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateReleaseBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="prepareDebugUnitTestDependencies" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateReleaseResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the signing info for each variant." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="signingReport" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestAidl" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="mergeDebugAndroidTestShaders" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Deletes the build directory." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="clean" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="preDebugBuild" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="transformNative_libsWithSyncJniLibsForDebug" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugBuildConfig" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles and tests this project." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="build" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Assembles all Release builds." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="assembleRelease" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="compileDebugAndroidTestRenderscript" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateDebugAndroidTestResources" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="processDebugManifest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="packageDebugAndroidTest" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="generateReleaseResValues" />
- </ExternalTaskPojo>
- <ExternalTaskPojo>
- <option name="description" value="Displays the properties of project ':CordovaLib'." />
- <option name="linkedExternalProjectPath" value="$PROJECT_DIR$/CordovaLib" />
- <option name="name" value="properties" />
- </ExternalTaskPojo>
- </list>
- </value>
- </entry>
- </map>
- </option>
- <option name="modificationStamps">
- <map>
- <entry key="$PROJECT_DIR$" value="5952662113000" />
- </map>
- </option>
- <option name="projectBuildClasspath">
- <map>
- <entry key="$PROJECT_DIR$">
- <value>
- <ExternalProjectBuildClasspathPojo>
- <option name="modulesBuildClasspath">
- <map>
- <entry key="$PROJECT_DIR$">
- <value>
- <ExternalModuleBuildClasspathPojo>
- <option name="entries">
- <list>
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.gms/google-services/3.0.0/32b833222c886ecfb37d79b1a05ce1eddb702db1/google-services-3.0.0-sources.jar" />
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.gms/google-services/3.0.0/ee538ce9cf4148485e43017c5542202b8c78ff8e/google-services-3.0.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/2.2.3/gradle-core-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/2.2.3/builder-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/25.2.3/lint-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-api/2.2.3/gradle-api-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/compilerCommon/2.2.3/compilerCommon-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.4/asm-commons-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.5.201505241946/org.jacoco.core-0.7.5.201505241946.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.report/0.7.5.201505241946/org.jacoco.report-0.7.5.201505241946.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/2.2.3/builder-model-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/2.2.3/builder-test-api-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/25.2.3/sdklib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/25.2.3/sdk-common-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/25.2.3/common-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/25.2.3/manifest-merger-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/25.2.3/ddmlib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jack/jack-api/0.11.0/jack-api-0.11.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jill/jill-api/0.10.0/jill-api-0.10.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/protos/25.2.3/protos-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/shared/25.2.3/shared-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/tracker/25.2.3/tracker-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.4/asm-tree-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/25.2.3/lint-checks-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.5.1/ecj-4.5.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/18.0/guava-18.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/baseLibrary/2.2.3/baseLibrary-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/25.2.3/annotations-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/25.2.3/layoutlib-api-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/25.2.3/dvlib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/repository/25.2.3/repository-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/25.2.3/lint-api-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.4/asm-analysis-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/com-intellij/uast/145.597.4/uast-145.597.4.jar" />
- </list>
- </option>
- <option name="path" value="$PROJECT_DIR$" />
- </ExternalModuleBuildClasspathPojo>
- </value>
- </entry>
- <entry key="$PROJECT_DIR$/CordovaLib">
- <value>
- <ExternalModuleBuildClasspathPojo>
- <option name="entries">
- <list>
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.gms/google-services/3.0.0/32b833222c886ecfb37d79b1a05ce1eddb702db1/google-services-3.0.0-sources.jar" />
- <option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.gms/google-services/3.0.0/ee538ce9cf4148485e43017c5542202b8c78ff8e/google-services-3.0.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle/2.2.3/gradle-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-core/2.2.3/gradle-core-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder/2.2.3/builder-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint/25.2.3/lint-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-gradle-api.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/gradle-api/2.2.3/gradle-api-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/compilerCommon/2.2.3/compilerCommon-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm/5.0.4/asm-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-commons/5.0.4/asm-commons-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-gradle/5.2.1/proguard-gradle-5.2.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.core/0.7.5.201505241946/org.jacoco.core-0.7.5.201505241946.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/jacoco/org.jacoco.report/0.7.5.201505241946/org.jacoco.report-0.7.5.201505241946.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/jopt-simple/jopt-simple/4.9/jopt-simple-4.9.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-model/2.2.3/builder-model-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/builder-test-api/2.2.3/builder-test-api-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdklib/25.2.3/sdklib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/sdk-common/25.2.3/sdk-common-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/common/25.2.3/common-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/build/manifest-merger/25.2.3/manifest-merger-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/ddms/ddmlib/25.2.3/ddmlib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jack/jack-api/0.11.0/jack-api-0.11.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/jill/jill-api/0.10.0/jill-api-0.10.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/protos/25.2.3/protos-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/shared/25.2.3/shared-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/analytics-library/tracker/25.2.3/tracker-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/squareup/javawriter/2.5.0/javawriter-2.5.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcpkix-jdk15on/1.48/bcpkix-jdk15on-1.48.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/bouncycastle/bcprov-jdk15on/1.48/bcprov-jdk15on-1.48.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-tree/5.0.4/asm-tree-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-checks/25.2.3/lint-checks-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/eclipse/jdt/core/compiler/ecj/4.5.1/ecj-4.5.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/guava/guava/18.0/guava-18.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/databinding/baseLibrary/2.2.3/baseLibrary-2.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/antlr/antlr4/4.5.3/antlr4-4.5.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-io/commons-io/2.4/commons-io-2.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/googlecode/juniversalchardet/juniversalchardet/1.0.3/juniversalchardet-1.0.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/annotations/25.2.3/annotations-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/proguard/proguard-base/5.2.1/proguard-base-5.2.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-debug-all/5.0.1/asm-debug-all-5.0.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/layoutlib/layoutlib-api/25.2.3/layoutlib-api-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/dvlib/25.2.3/dvlib-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/repository/25.2.3/repository-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/commons/commons-compress/1.8.1/commons-compress-1.8.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpclient/4.1.1/httpclient-4.1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpmime/4.1/httpmime-4.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/net/sf/kxml/kxml2/2.3.0/kxml2-2.3.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/lint/lint-api/25.2.3/lint-api-25.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/ow2/asm/asm-analysis/5.0.4/asm-analysis-5.0.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/intellij/annotations/12.0/annotations-12.0.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/google/jimfs/jimfs/1.1/jimfs-1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/org/apache/httpcomponents/httpcore/4.1/httpcore-4.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3-sources.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/lombok/lombok-ast/0.2.3/lombok-ast-0.2.3.jar" />
- <option value="$APPLICATION_HOME_DIR$/gradle/m2repository/com/android/tools/external/com-intellij/uast/145.597.4/uast-145.597.4.jar" />
- </list>
- </option>
- <option name="path" value="$PROJECT_DIR$/CordovaLib" />
- </ExternalModuleBuildClasspathPojo>
- </value>
- </entry>
- </map>
- </option>
- <option name="name" value="CordovaLib" />
- <option name="projectBuildClasspath">
- <list>
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/announce" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/antlr" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/base-services" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/base-services-groovy" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/build-comparison" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/build-init" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/cli" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/code-quality" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/core" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/dependency-management" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/diagnostics" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ear" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ide" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ide-native" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ide-play" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/installation-beacon" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/internal-integ-testing" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/internal-testing" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ivy" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/jacoco" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/javascript" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/jetty" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/jvm-services" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/language-groovy" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/language-java" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/language-jvm" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/language-native" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/language-scala" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/launcher" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/logging" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/maven" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/messaging" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/model-core" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/model-groovy" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/native" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/open-api" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/osgi" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/platform-base" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/platform-jvm" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/platform-native" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/platform-play" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/plugin-development" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/plugin-use" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/plugins" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/process-services" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/publish" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/reporting" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/resources" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/resources-http" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/resources-s3" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/resources-sftp" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/scala" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/signing" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/sonar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/test-kit" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/testing-base" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/testing-jvm" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/testing-native" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/tooling-api" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/tooling-api-builders" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/ui" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/src/wrapper" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/ant-1.9.6.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/ant-launcher-1.9.6.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-base-services-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-base-services-groovy-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-cli-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-core-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-docs-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-installation-beacon-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-jvm-services-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-launcher-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-logging-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-messaging-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-model-core-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-model-groovy-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-native-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-open-api-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-process-services-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-resources-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-tooling-api-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-ui-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/gradle-wrapper-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/groovy-all-2.4.4.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-announce-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-antlr-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-build-comparison-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-build-init-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-code-quality-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-dependency-management-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-diagnostics-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-ear-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-ide-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-ide-native-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-ide-play-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-ivy-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-jacoco-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-javascript-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-jetty-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-language-groovy-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-language-java-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-language-jvm-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-language-native-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-language-scala-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-maven-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-osgi-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-platform-base-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-platform-jvm-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-platform-native-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-platform-play-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-plugin-development-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-plugin-use-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-plugins-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-publish-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-reporting-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-resources-http-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-resources-s3-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-resources-sftp-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-scala-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-signing-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-sonar-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-test-kit-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-testing-base-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-testing-jvm-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-testing-native-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/gradle-tooling-api-builders-2.14.1.jar" />
- <option value="$USER_HOME$/.gradle/wrapper/dists/gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv/gradle-2.14.1/lib/plugins/ivy-2.2.0.jar" />
- <option value="$PROJECT_DIR$/buildSrc/src/main/java" />
- <option value="$PROJECT_DIR$/buildSrc/src/main/groovy" />
- </list>
- </option>
- </ExternalProjectBuildClasspathPojo>
- </value>
- </entry>
- </map>
- </option>
- <option name="externalProjectsViewState">
- <projects_view />
- </option>
- </component>
- <component name="ProjectFrameBounds">
- <option name="x" value="260" />
- <option name="y" value="109" />
- <option name="width" value="1400" />
- <option name="height" value="1000" />
- </component>
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectView">
- <navigator proportions="" version="1">
- <flattenPackages />
- <showMembers />
- <showModules />
- <showLibraryContents />
- <hideEmptyPackages />
- <abbreviatePackageNames />
- <autoscrollToSource />
- <autoscrollFromSource />
- <sortByType />
- <manualOrder />
- <foldersAlwaysOnTop value="true" />
- </navigator>
- <panes />
- </component>
- <component name="PropertiesComponent">
- <property name="android.sdk.path" value="$USER_HOME$/Library/Android/sdk" />
- <property name="last_opened_file_path" value="$PROJECT_DIR$" />
- <property name="device.picker.selection" value="Nexus_5_API_25" />
- </component>
- <component name="RunManager" selected="Android App.android">
- <configuration default="true" type="AndroidRunConfigurationType" factoryName="Android App">
- <module name="" />
- <option name="DEPLOY" value="true" />
- <option name="ARTIFACT_NAME" value="" />
- <option name="PM_INSTALL_OPTIONS" value="" />
- <option name="ACTIVITY_EXTRA_FLAGS" value="" />
- <option name="MODE" value="default_activity" />
- <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
- <option name="PREFERRED_AVD" value="" />
- <option name="CLEAR_LOGCAT" value="false" />
- <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
- <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
- <option name="FORCE_STOP_RUNNING_APP" value="true" />
- <option name="DEBUGGER_TYPE" value="Auto" />
- <option name="USE_LAST_SELECTED_DEVICE" value="false" />
- <option name="PREFERRED_AVD" value="" />
- <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
- <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
- <Auto>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Auto>
- <Hybrid>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Hybrid>
- <Java />
- <Native>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Native>
- <Profilers>
- <option name="ENABLE_ADVANCED_PROFILING" value="true" />
- <option name="GAPID_ENABLED" value="false" />
- <option name="GAPID_DISABLE_PCS" value="false" />
- <option name="SUPPORT_LIB_ENABLED" value="true" />
- <option name="INSTRUMENTATION_ENABLED" value="true" />
- </Profilers>
- <option name="DEEP_LINK" value="" />
- <option name="ACTIVITY_CLASS" value="" />
- <method />
- </configuration>
- <configuration default="true" type="Application" factoryName="Application">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <option name="MAIN_CLASS_NAME" />
- <option name="VM_PARAMETERS" />
- <option name="PROGRAM_PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="ENABLE_SWING_INSPECTOR" value="false" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <module name="" />
- <envs />
- <method />
- </configuration>
- <configuration default="true" type="JUnit" factoryName="JUnit">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <module name="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="TEST_OBJECT" value="class" />
- <option name="VM_PARAMETERS" value="-ea" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="singleModule" />
- </option>
- <envs />
- <patterns />
- <method>
- <option name="Make" enabled="false" />
- <option name="Android.Gradle.BeforeRunTask" enabled="true" />
- </method>
- </configuration>
- <configuration default="true" type="Remote" factoryName="Remote">
- <option name="USE_SOCKET_TRANSPORT" value="true" />
- <option name="SERVER_MODE" value="false" />
- <option name="SHMEM_ADDRESS" value="javadebug" />
- <option name="HOST" value="localhost" />
- <option name="PORT" value="5005" />
- <method />
- </configuration>
- <configuration default="true" type="TestNG" factoryName="TestNG">
- <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
- <module name="" />
- <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
- <option name="ALTERNATIVE_JRE_PATH" />
- <option name="SUITE_NAME" />
- <option name="PACKAGE_NAME" />
- <option name="MAIN_CLASS_NAME" />
- <option name="METHOD_NAME" />
- <option name="GROUP_NAME" />
- <option name="TEST_OBJECT" value="CLASS" />
- <option name="VM_PARAMETERS" value="-ea" />
- <option name="PARAMETERS" />
- <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
- <option name="OUTPUT_DIRECTORY" />
- <option name="ANNOTATION_TYPE" />
- <option name="ENV_VARIABLES" />
- <option name="PASS_PARENT_ENVS" value="true" />
- <option name="TEST_SEARCH_SCOPE">
- <value defaultName="singleModule" />
- </option>
- <option name="USE_DEFAULT_REPORTERS" value="false" />
- <option name="PROPERTIES_FILE" />
- <envs />
- <properties />
- <listeners />
- <method />
- </configuration>
- <configuration default="false" name="android" type="AndroidRunConfigurationType" factoryName="Android App" activateToolWindowBeforeRun="false">
- <module name="android" />
- <option name="DEPLOY" value="true" />
- <option name="ARTIFACT_NAME" value="" />
- <option name="PM_INSTALL_OPTIONS" value="" />
- <option name="ACTIVITY_EXTRA_FLAGS" value="" />
- <option name="MODE" value="default_activity" />
- <option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
- <option name="PREFERRED_AVD" value="" />
- <option name="CLEAR_LOGCAT" value="false" />
- <option name="SHOW_LOGCAT_AUTOMATICALLY" value="false" />
- <option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
- <option name="FORCE_STOP_RUNNING_APP" value="true" />
- <option name="DEBUGGER_TYPE" value="Auto" />
- <option name="USE_LAST_SELECTED_DEVICE" value="false" />
- <option name="PREFERRED_AVD" value="" />
- <option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
- <option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
- <Auto>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Auto>
- <Hybrid>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Hybrid>
- <Java />
- <Native>
- <option name="USE_JAVA_AWARE_DEBUGGER" value="false" />
- <option name="WORKING_DIR" value="" />
- <option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
- </Native>
- <Profilers>
- <option name="ENABLE_ADVANCED_PROFILING" value="true" />
- <option name="GAPID_ENABLED" value="false" />
- <option name="GAPID_DISABLE_PCS" value="false" />
- <option name="SUPPORT_LIB_ENABLED" value="true" />
- <option name="INSTRUMENTATION_ENABLED" value="true" />
- </Profilers>
- <option name="DEEP_LINK" value="" />
- <option name="ACTIVITY_CLASS" value="" />
- <method />
- </configuration>
- <list size="1">
- <item index="0" class="java.lang.String" itemvalue="Android App.android" />
- </list>
- <configuration name="&lt;template&gt;" type="Applet" default="true" selected="false">
- <option name="MAIN_CLASS_NAME" />
- <option name="HTML_FILE_NAME" />
- <option name="HTML_USED" value="false" />
- <option name="WIDTH" value="400" />
- <option name="HEIGHT" value="300" />
- <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
- <option name="VM_PARAMETERS" />
- </configuration>
- <configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
- <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
- </configuration>
- </component>
- <component name="ShelveChangesManager" show_recycled="false">
- <option name="remove_strategy" value="false" />
- </component>
- <component name="SvnConfiguration">
- <configuration />
- </component>
- <component name="TaskManager">
- <task active="true" id="Default" summary="Default task">
- <changelist id="cc697f5d-25fa-447a-8c46-adb5b90200bb" name="Default" comment="" />
- <created>1488494890976</created>
- <option name="number" value="Default" />
- <option name="presentableId" value="Default" />
- <updated>1488494890976</updated>
- </task>
- <servers />
- </component>
- <component name="ToolWindowManager">
- <frame x="260" y="109" width="1400" height="1000" extended-state="0" />
- <editor active="false" />
- <layout>
- <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
- <window_info id="Nl-Palette" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
- <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
- <window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32918552" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Properties" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32918552" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
- <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
- <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
- <window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
- <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
- <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
- <window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
- <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
- <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
- <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
- <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
- <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
- </layout>
- </component>
- <component name="Vcs.Log.UiProperties">
- <option name="RECENTLY_FILTERED_USER_GROUPS">
- <collection />
- </option>
- <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
- <collection />
- </option>
- </component>
- <component name="VcsContentAnnotationSettings">
- <option name="myLimit" value="2678400000" />
- </component>
- <component name="XDebuggerManager">
- <breakpoint-manager />
- <watches-manager />
- </component>
-</project> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/AndroidManifest.xml b/StoneIsland/platforms/android/AndroidManifest.xml
deleted file mode 100755
index e5232423..00000000
--- a/StoneIsland/platforms/android/AndroidManifest.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<manifest android:hardwareAccelerated="true" android:versionCode="6126" android:versionName="1.2.6" package="us.okfoc.stoneisland" xmlns:android="http://schemas.android.com/apk/res/android">
- <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">
- <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize">
- <intent-filter android:label="@string/launcher_name">
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:scheme="stoneisland" />
- </intent-filter>
- <intent-filter>
- <action android:name="android.intent.action.VIEW" />
- <category android:name="android.intent.category.DEFAULT" />
- <category android:name="android.intent.category.BROWSABLE" />
- <data android:host=" " android:pathPrefix="/" android:scheme=" " />
- </intent-filter>
- </activity>
- <activity android:exported="true" android:name="com.adobe.phonegap.push.PushHandlerActivity" android:permission="${applicationId}.permission.PushHandlerActivity" />
- <receiver android:name="com.adobe.phonegap.push.BackgroundActionButtonHandler" />
- <receiver android:exported="true" android:name="com.google.android.gms.gcm.GcmReceiver" android:permission="com.google.android.c2dm.permission.SEND">
- <intent-filter>
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
- <category android:name="${applicationId}" />
- </intent-filter>
- </receiver>
- <service android:exported="false" android:name="com.adobe.phonegap.push.GCMIntentService">
- <intent-filter>
- <action android:name="com.google.android.c2dm.intent.RECEIVE" />
- </intent-filter>
- </service>
- <service android:exported="false" android:name="com.adobe.phonegap.push.PushInstanceIDListenerService">
- <intent-filter>
- <action android:name="com.google.android.gms.iid.InstanceID" />
- </intent-filter>
- </service>
- <service android:exported="false" android:name="com.adobe.phonegap.push.RegistrationIntentService" />
- </application>
- <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="28" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- <uses-feature android:name="android.hardware.location.gps" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.VIBRATE" />
- <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
- <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
- <uses-permission android:name="${applicationId}.permission.PushHandlerActivity" />
- <permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
- <permission android:name="${applicationId}.permission.PushHandlerActivity" android:protectionLevel="signature" />
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
-</manifest>
diff --git a/StoneIsland/platforms/android/CordovaLib/AndroidManifest.xml b/StoneIsland/platforms/android/CordovaLib/AndroidManifest.xml
deleted file mode 100755
index 3feb903c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/AndroidManifest.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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="org.apache.cordova" android:versionName="1.0" android:versionCode="1">
- <uses-sdk android:minSdkVersion="14" />
-</manifest>
diff --git a/StoneIsland/platforms/android/CordovaLib/CordovaLib.iml b/StoneIsland/platforms/android/CordovaLib/CordovaLib.iml
deleted file mode 100644
index 9064f70c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/CordovaLib.iml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id=":CordovaLib" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="android-gradle" name="Android-Gradle">
- <configuration>
- <option name="GRADLE_PROJECT_PATH" value=":CordovaLib" />
- </configuration>
- </facet>
- <facet type="android" name="Android">
- <configuration>
- <option name="SELECTED_BUILD_VARIANT" value="debug" />
- <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
- <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
- <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
- <afterSyncTasks>
- <task>generateDebugSources</task>
- </afterSyncTasks>
- <option name="ALLOW_USER_CONFIGURATION" value="false" />
- <option name="RES_FOLDERS_RELATIVE_PATH" value="" />
- <option name="LIBRARY_PROJECT" value="true" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
- <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
- <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
- <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
- </content>
- <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build.gradle b/StoneIsland/platforms/android/CordovaLib/build.gradle
deleted file mode 100644
index da3b45bf..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build.gradle
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-ext {
- apply from: 'cordova.gradle'
- cdvCompileSdkVersion = privateHelpers.getProjectTarget()
- cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
-}
-
-buildscript {
- repositories {
- mavenCentral()
- jcenter()
- }
-
- dependencies {
- classpath 'com.android.tools.build:gradle:2.2.3'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
- }
-}
-
-apply plugin: 'com.android.library'
-apply plugin: 'com.github.dcendents.android-maven'
-apply plugin: 'com.jfrog.bintray'
-
-group = 'org.apache.cordova'
-version = '6.2.3'
-
-android {
- compileSdkVersion cdvCompileSdkVersion
- buildToolsVersion cdvBuildToolsVersion
- publishNonDefault true
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_6
- targetCompatibility JavaVersion.VERSION_1_6
- }
-
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- }
- }
-
- packagingOptions {
- exclude 'META-INF/LICENSE'
- exclude 'META-INF/LICENSE.txt'
- exclude 'META-INF/DEPENDENCIES'
- exclude 'META-INF/NOTICE'
- }
-}
-
-install {
- repositories.mavenInstaller {
- pom {
- project {
- packaging 'aar'
- name 'Cordova'
- url 'https://cordova.apache.org'
- licenses {
- license {
- name 'The Apache Software License, Version 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
- }
- }
- developers {
- developer {
- id 'stevengill'
- name 'Steve Gill'
- }
- }
- scm {
- connection 'https://git-wip-us.apache.org/repos/asf?p=cordova-android.git'
- developerConnection 'https://git-wip-us.apache.org/repos/asf?p=cordova-android.git'
- url 'https://git-wip-us.apache.org/repos/asf?p=cordova-android'
-
- }
- }
- }
- }
-}
-
-task sourcesJar(type: Jar) {
- from android.sourceSets.main.java.srcDirs
- classifier = 'sources'
-}
-
-artifacts {
- archives sourcesJar
-}
-
-bintray {
- user = System.getenv('BINTRAY_USER')
- key = System.getenv('BINTRAY_KEY')
- configurations = ['archives']
- pkg {
- repo = 'maven'
- name = 'cordova-android'
- userOrg = 'cordova'
- licenses = ['Apache-2.0']
- vcsUrl = 'https://git-wip-us.apache.org/repos/asf?p=cordova-android.git'
- websiteUrl = 'https://cordova.apache.org'
- issueTrackerUrl = 'https://issues.apache.org/jira/browse/CB'
- publicDownloadNumbers = true
- licenses = ['Apache-2.0']
- labels = ['android', 'cordova', 'phonegap']
- version {
- name = '6.2.3'
- released = new Date()
- vcsTag = '6.2.3'
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/debug/org/apache/cordova/BuildConfig.java b/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/debug/org/apache/cordova/BuildConfig.java
deleted file mode 100644
index f2feb906..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/debug/org/apache/cordova/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package org.apache.cordova;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "org.apache.cordova";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/release/org/apache/cordova/BuildConfig.java b/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/release/org/apache/cordova/BuildConfig.java
deleted file mode 100644
index 3e3c0cfe..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/generated/source/buildConfig/release/org/apache/cordova/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package org.apache.cordova;
-
-public final class BuildConfig {
- public static final boolean DEBUG = false;
- public static final String APPLICATION_ID = "org.apache.cordova";
- public static final String BUILD_TYPE = "release";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/AndroidManifest.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/AndroidManifest.xml
deleted file mode 100644
index 90863ed8..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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="org.apache.cordova"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="14" />
-
-</manifest> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/classes.jar b/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/classes.jar
deleted file mode 100644
index 4a99943b..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/debug/classes.jar
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/AndroidManifest.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/AndroidManifest.xml
deleted file mode 100644
index 90863ed8..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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="org.apache.cordova"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="14" />
-
-</manifest> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/classes.jar b/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/classes.jar
deleted file mode 100644
index 6a68a5c3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/bundles/release/classes.jar
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/AuthenticationToken.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/AuthenticationToken.class
deleted file mode 100644
index e9d51465..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/AuthenticationToken.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/BuildConfig.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/BuildConfig.class
deleted file mode 100644
index 4c5619f6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/BuildConfig.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackContext.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackContext.class
deleted file mode 100644
index 2ee39be7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackContext.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackMap.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackMap.class
deleted file mode 100644
index 462375d9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CallbackMap.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Config.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Config.class
deleted file mode 100644
index 66cb1be9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Config.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ConfigXmlParser.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ConfigXmlParser.class
deleted file mode 100644
index 62fa0b3d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ConfigXmlParser.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$1.class
deleted file mode 100644
index c4624d15..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$2.class
deleted file mode 100644
index 33738151..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$3.class
deleted file mode 100644
index fabe9efa..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4$1.class
deleted file mode 100644
index 3c062db9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4.class
deleted file mode 100644
index 76695eb5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity.class
deleted file mode 100644
index 46a17ceb..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaActivity.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaArgs.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaArgs.class
deleted file mode 100644
index 18014a39..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaArgs.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaBridge.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaBridge.class
deleted file mode 100644
index c7f3f237..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaBridge.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaClientCertRequest.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaClientCertRequest.class
deleted file mode 100644
index 46007d42..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaClientCertRequest.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$1.class
deleted file mode 100644
index 683ff52e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$2.class
deleted file mode 100644
index c7f3d4af..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$3.class
deleted file mode 100644
index 4cb4f9bc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$4.class
deleted file mode 100644
index ac24ba52..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$5.class
deleted file mode 100644
index 3ab9531e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$6.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$6.class
deleted file mode 100644
index 05530d9e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$6.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$7.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$7.class
deleted file mode 100644
index 5cd2cb8c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$7.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$8.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$8.class
deleted file mode 100644
index e57fded7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$8.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$9.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$9.class
deleted file mode 100644
index 628d4627..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$9.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$Result.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$Result.class
deleted file mode 100644
index c4dd9997..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper$Result.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper.class
deleted file mode 100644
index fd873766..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaDialogsHelper.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaHttpAuthHandler.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaHttpAuthHandler.class
deleted file mode 100644
index c912f928..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaHttpAuthHandler.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterface.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterface.class
deleted file mode 100644
index b2059438..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterface.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class
deleted file mode 100644
index 92dae914..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl.class
deleted file mode 100644
index 22ffbfe4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaInterfaceImpl.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPlugin.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPlugin.class
deleted file mode 100644
index d8906c9c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPlugin.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPreferences.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPreferences.class
deleted file mode 100644
index ed0b3da5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaPreferences.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class
deleted file mode 100644
index 15ab1f62..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi.class
deleted file mode 100644
index f11f59a3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaResourceApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebView.class
deleted file mode 100644
index 14ca5e93..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$Client.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$Client.class
deleted file mode 100644
index deb6dfda..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$Client.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$EngineView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$EngineView.class
deleted file mode 100644
index 1149bf24..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine$EngineView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine.class
deleted file mode 100644
index 7a7dcb4f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewEngine.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$1.class
deleted file mode 100644
index 4cf05bbe..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$2.class
deleted file mode 100644
index af9110d2..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$3.class
deleted file mode 100644
index e5c567e3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class
deleted file mode 100644
index 1370f669..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class
deleted file mode 100644
index a93f9374..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient.class
deleted file mode 100644
index 4df9559c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl$EngineClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl.class
deleted file mode 100644
index a8921a41..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CordovaWebViewImpl.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$1.class
deleted file mode 100644
index 5365b497..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$2.class
deleted file mode 100644
index 7509891d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$3.class
deleted file mode 100644
index 6f01ec94..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$4.class
deleted file mode 100644
index 12c2685d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$5.class
deleted file mode 100644
index 306f92b6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid.class
deleted file mode 100644
index 324266e6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/CoreAndroid.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ExposedJsApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ExposedJsApi.class
deleted file mode 100644
index 6e675205..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ExposedJsApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaClientCertRequest.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaClientCertRequest.class
deleted file mode 100644
index 18ad39ec..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaClientCertRequest.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaCookieManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaCookieManager.class
deleted file mode 100644
index 142b69c9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaCookieManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaHttpAuthHandler.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaHttpAuthHandler.class
deleted file mode 100644
index ac03d2d9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ICordovaHttpAuthHandler.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/LOG.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/LOG.class
deleted file mode 100644
index 11bd8f7c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/LOG.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class
deleted file mode 100644
index 1d25e8d1..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class
deleted file mode 100644
index 9f380c55..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class
deleted file mode 100644
index 8bae598b..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class
deleted file mode 100644
index 11fbf781..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class
deleted file mode 100644
index 1f58f471..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class
deleted file mode 100644
index 58ab6eea..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class
deleted file mode 100644
index 5befb5dd..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class
deleted file mode 100644
index 3d637415..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class
deleted file mode 100644
index 58299a40..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class
deleted file mode 100644
index c3848041..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class
deleted file mode 100644
index 4281bfde..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue.class
deleted file mode 100644
index 7048a7b4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/NativeToJsMessageQueue.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginEntry.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginEntry.class
deleted file mode 100644
index 4adc8d03..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginEntry.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginManager.class
deleted file mode 100644
index c59578c4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult$Status.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult$Status.class
deleted file mode 100644
index d9ff981f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult$Status.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult.class
deleted file mode 100644
index dfefc658..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/PluginResult.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ResumeCallback.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ResumeCallback.class
deleted file mode 100644
index fc6a4d13..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/ResumeCallback.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist$URLPattern.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist$URLPattern.class
deleted file mode 100644
index 05973c38..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist$URLPattern.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist.class
deleted file mode 100644
index 1be2bfca..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/Whitelist.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemCookieManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemCookieManager.class
deleted file mode 100644
index 4d1199c6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemCookieManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemExposedJsApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemExposedJsApi.class
deleted file mode 100644
index 8511795f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemExposedJsApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$1.class
deleted file mode 100644
index 9b3e91ee..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$2.class
deleted file mode 100644
index 2d0ac1a4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$3.class
deleted file mode 100644
index 5c6f1a01..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$4.class
deleted file mode 100644
index d7817b09..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$5.class
deleted file mode 100644
index 797cdd71..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient.class
deleted file mode 100644
index f4959cc7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebChromeClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebView.class
deleted file mode 100644
index 9dfe6ede..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewClient.class
deleted file mode 100644
index 4ded5789..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$1.class
deleted file mode 100644
index 88b63e1e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$2.class
deleted file mode 100644
index ec201a98..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine.class
deleted file mode 100644
index f7f36b74..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/debug/org/apache/cordova/engine/SystemWebViewEngine.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/AuthenticationToken.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/AuthenticationToken.class
deleted file mode 100644
index e9d51465..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/AuthenticationToken.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/BuildConfig.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/BuildConfig.class
deleted file mode 100644
index bf0083a2..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/BuildConfig.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackContext.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackContext.class
deleted file mode 100644
index 2ee39be7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackContext.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackMap.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackMap.class
deleted file mode 100644
index 462375d9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CallbackMap.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Config.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Config.class
deleted file mode 100644
index 66cb1be9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Config.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ConfigXmlParser.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ConfigXmlParser.class
deleted file mode 100644
index 62fa0b3d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ConfigXmlParser.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$1.class
deleted file mode 100644
index c4624d15..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$2.class
deleted file mode 100644
index 33738151..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$3.class
deleted file mode 100644
index fabe9efa..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4$1.class
deleted file mode 100644
index 3c062db9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4.class
deleted file mode 100644
index 76695eb5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity.class
deleted file mode 100644
index 46a17ceb..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaActivity.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaArgs.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaArgs.class
deleted file mode 100644
index 18014a39..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaArgs.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaBridge.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaBridge.class
deleted file mode 100644
index c7f3f237..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaBridge.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaClientCertRequest.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaClientCertRequest.class
deleted file mode 100644
index 46007d42..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaClientCertRequest.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$1.class
deleted file mode 100644
index 683ff52e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$2.class
deleted file mode 100644
index c7f3d4af..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$3.class
deleted file mode 100644
index 4cb4f9bc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$4.class
deleted file mode 100644
index ac24ba52..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$5.class
deleted file mode 100644
index 3ab9531e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$6.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$6.class
deleted file mode 100644
index 05530d9e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$6.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$7.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$7.class
deleted file mode 100644
index 5cd2cb8c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$7.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$8.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$8.class
deleted file mode 100644
index e57fded7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$8.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$9.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$9.class
deleted file mode 100644
index 628d4627..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$9.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$Result.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$Result.class
deleted file mode 100644
index c4dd9997..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper$Result.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper.class
deleted file mode 100644
index fd873766..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaDialogsHelper.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaHttpAuthHandler.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaHttpAuthHandler.class
deleted file mode 100644
index c912f928..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaHttpAuthHandler.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterface.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterface.class
deleted file mode 100644
index b2059438..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterface.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class
deleted file mode 100644
index 92dae914..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl$ActivityResultHolder.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl.class
deleted file mode 100644
index 22ffbfe4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaInterfaceImpl.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPlugin.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPlugin.class
deleted file mode 100644
index d8906c9c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPlugin.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPreferences.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPreferences.class
deleted file mode 100644
index ed0b3da5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaPreferences.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class
deleted file mode 100644
index 15ab1f62..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi$OpenForReadResult.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi.class
deleted file mode 100644
index f11f59a3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaResourceApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebView.class
deleted file mode 100644
index 14ca5e93..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$Client.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$Client.class
deleted file mode 100644
index deb6dfda..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$Client.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$EngineView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$EngineView.class
deleted file mode 100644
index 1149bf24..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine$EngineView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine.class
deleted file mode 100644
index 7a7dcb4f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewEngine.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$1.class
deleted file mode 100644
index 4cf05bbe..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$2.class
deleted file mode 100644
index af9110d2..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$3.class
deleted file mode 100644
index e5c567e3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class
deleted file mode 100644
index 1370f669..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class
deleted file mode 100644
index a93f9374..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient.class
deleted file mode 100644
index 4df9559c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl$EngineClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl.class
deleted file mode 100644
index a8921a41..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CordovaWebViewImpl.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$1.class
deleted file mode 100644
index 5365b497..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$2.class
deleted file mode 100644
index 7509891d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$3.class
deleted file mode 100644
index 6f01ec94..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$4.class
deleted file mode 100644
index 12c2685d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$5.class
deleted file mode 100644
index 306f92b6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid.class
deleted file mode 100644
index 324266e6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/CoreAndroid.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ExposedJsApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ExposedJsApi.class
deleted file mode 100644
index 6e675205..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ExposedJsApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaClientCertRequest.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaClientCertRequest.class
deleted file mode 100644
index 18ad39ec..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaClientCertRequest.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaCookieManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaCookieManager.class
deleted file mode 100644
index 142b69c9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaCookieManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaHttpAuthHandler.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaHttpAuthHandler.class
deleted file mode 100644
index ac03d2d9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ICordovaHttpAuthHandler.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/LOG.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/LOG.class
deleted file mode 100644
index 11bd8f7c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/LOG.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class
deleted file mode 100644
index 1d25e8d1..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$BridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class
deleted file mode 100644
index 9f380c55..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class
deleted file mode 100644
index 8bae598b..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$EvalBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class
deleted file mode 100644
index 11fbf781..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$JsMessage.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class
deleted file mode 100644
index 1f58f471..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class
deleted file mode 100644
index 58ab6eea..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$LoadUrlBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class
deleted file mode 100644
index 5befb5dd..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$NoOpBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class
deleted file mode 100644
index 3d637415..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class
deleted file mode 100644
index 58299a40..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class
deleted file mode 100644
index c3848041..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode$OnlineEventsBridgeModeDelegate.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class
deleted file mode 100644
index 4281bfde..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue$OnlineEventsBridgeMode.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue.class
deleted file mode 100644
index 7048a7b4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/NativeToJsMessageQueue.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginEntry.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginEntry.class
deleted file mode 100644
index 4adc8d03..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginEntry.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginManager.class
deleted file mode 100644
index c59578c4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult$Status.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult$Status.class
deleted file mode 100644
index d9ff981f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult$Status.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult.class
deleted file mode 100644
index dfefc658..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/PluginResult.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ResumeCallback.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ResumeCallback.class
deleted file mode 100644
index fc6a4d13..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/ResumeCallback.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist$URLPattern.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist$URLPattern.class
deleted file mode 100644
index 05973c38..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist$URLPattern.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist.class
deleted file mode 100644
index 1be2bfca..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/Whitelist.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemCookieManager.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemCookieManager.class
deleted file mode 100644
index 4d1199c6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemCookieManager.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemExposedJsApi.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemExposedJsApi.class
deleted file mode 100644
index 8511795f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemExposedJsApi.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$1.class
deleted file mode 100644
index 9b3e91ee..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$2.class
deleted file mode 100644
index 2d0ac1a4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$3.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$3.class
deleted file mode 100644
index 5c6f1a01..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$3.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$4.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$4.class
deleted file mode 100644
index d7817b09..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$4.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$5.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$5.class
deleted file mode 100644
index 797cdd71..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient$5.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient.class
deleted file mode 100644
index f4959cc7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebChromeClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebView.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebView.class
deleted file mode 100644
index 9dfe6ede..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebView.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewClient.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewClient.class
deleted file mode 100644
index 4ded5789..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewClient.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$1.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$1.class
deleted file mode 100644
index 88b63e1e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$1.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$2.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$2.class
deleted file mode 100644
index ec201a98..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine$2.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine.class b/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine.class
deleted file mode 100644
index f7f36b74..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/classes/release/org/apache/cordova/engine/SystemWebViewEngine.class
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/debug/tag.txt b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/debug/tag.txt
deleted file mode 100644
index c01a13dc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/debug/tag.txt
+++ /dev/null
@@ -1 +0,0 @@
-incremental task execution \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/release/tag.txt b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/release/tag.txt
deleted file mode 100644
index c01a13dc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental-safeguard/release/tag.txt
+++ /dev/null
@@ -1 +0,0 @@
-incremental task execution \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileDebugAidl/dependency.store b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileDebugAidl/dependency.store
deleted file mode 100644
index 8b8400dc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileDebugAidl/dependency.store
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileReleaseAidl/dependency.store b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileReleaseAidl/dependency.store
deleted file mode 100644
index 8b8400dc..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/compileReleaseAidl/dependency.store
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugAssets/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugAssets/merger.xml
deleted file mode 100644
index 4c208e13..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugAssets/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/assets"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/assets/shaders/debug"/></dataSet><dataSet config="debug"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/debug/assets"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
deleted file mode 100644
index e595fb8f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/main/jniLibs"/></dataSet><dataSet config="debug"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/debug/jniLibs"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugShaders/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugShaders/merger.xml
deleted file mode 100644
index ac16ccac..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeDebugShaders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/main/shaders"/></dataSet><dataSet config="debug"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/debug/shaders"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml
deleted file mode 100644
index fcafcdc0..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseAssets/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/assets"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/assets/shaders/release"/></dataSet><dataSet config="release"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/release/assets"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
deleted file mode 100644
index 2c2760b3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/main/jniLibs"/></dataSet><dataSet config="release"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/release/jniLibs"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml
deleted file mode 100644
index b2ca7bf1..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/mergeReleaseShaders/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/main/shaders"/></dataSet><dataSet config="release"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/release/shaders"/></dataSet></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/compile-file-map.properties b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
deleted file mode 100644
index 5b6ab9a4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/compile-file-map.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Thu Sep 05 14:14:23 CEST 2019
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/merger.xml
deleted file mode 100644
index fd6ec75b..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageDebugResources/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main$Generated" generated="true"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/res"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/rs/debug"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/resValues/debug"/></dataSet><dataSet config="debug$Generated" generated="true"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/debug/res"/></dataSet><dataSet config="main" generated-set="main$Generated"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/res"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/rs/debug"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/resValues/debug"/></dataSet><dataSet config="debug" generated-set="debug$Generated"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/debug/res"/></dataSet><mergedItems/></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties
deleted file mode 100644
index afa4ff6d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/compile-file-map.properties
+++ /dev/null
@@ -1 +0,0 @@
-#Thu Sep 05 14:14:24 CEST 2019
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/merger.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/merger.xml
deleted file mode 100644
index 60241c2b..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/incremental/packageReleaseResources/merger.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<merger version="3"><dataSet config="main$Generated" generated="true"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/res"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/rs/release"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/resValues/release"/></dataSet><dataSet config="release$Generated" generated="true"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/release/res"/></dataSet><dataSet config="main" generated-set="main$Generated"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/res"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/rs/release"/><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/build/generated/res/resValues/release"/></dataSet><dataSet config="release" generated-set="release$Generated"><source path="/Users/user/work/stone-island/StoneIsland/platforms/android/CordovaLib/src/release/res"/></dataSet><mergedItems/></merger> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/debug/AndroidManifest.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/debug/AndroidManifest.xml
deleted file mode 100644
index 90863ed8..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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="org.apache.cordova"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="14" />
-
-</manifest> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/release/AndroidManifest.xml b/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/release/AndroidManifest.xml
deleted file mode 100644
index 90863ed8..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/intermediates/manifests/aapt/release/AndroidManifest.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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="org.apache.cordova"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk android:minSdkVersion="14" />
-
-</manifest> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-debug.aar b/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-debug.aar
deleted file mode 100644
index 5d55c0f4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-debug.aar
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-release.aar b/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-release.aar
deleted file mode 100644
index d5e4db28..00000000
--- a/StoneIsland/platforms/android/CordovaLib/build/outputs/aar/CordovaLib-release.aar
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/CordovaLib/cordova.gradle b/StoneIsland/platforms/android/CordovaLib/cordova.gradle
deleted file mode 100644
index 21a01bb5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/cordova.gradle
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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 java.util.regex.Pattern
-import groovy.swing.SwingBuilder
-
-String doEnsureValueExists(filePath, props, key) {
- if (props.get(key) == null) {
- throw new GradleException(filePath + ': Missing key required "' + key + '"')
- }
- return props.get(key)
-}
-
-String doGetProjectTarget() {
- def props = new Properties()
- file('project.properties').withReader { reader ->
- props.load(reader)
- }
- return doEnsureValueExists('project.properties', props, 'target')
-}
-
-String[] getAvailableBuildTools() {
- def buildToolsDir = new File(getAndroidSdkDir(), "build-tools")
- buildToolsDir.list()
- .findAll { it ==~ /[0-9.]+/ }
- .sort { a, b -> compareVersions(b, a) }
-}
-
-String doFindLatestInstalledBuildTools(String minBuildToolsVersion) {
- def availableBuildToolsVersions
- try {
- availableBuildToolsVersions = getAvailableBuildTools()
- } catch (e) {
- println "An exception occurred while trying to find the Android build tools."
- throw e
- }
- if (availableBuildToolsVersions.length > 0) {
- def highestBuildToolsVersion = availableBuildToolsVersions[0]
- if (compareVersions(highestBuildToolsVersion, minBuildToolsVersion) < 0) {
- throw new RuntimeException(
- "No usable Android build tools found. Highest installed version is " +
- highestBuildToolsVersion + "; minimum version required is " +
- minBuildToolsVersion + ".")
- }
- highestBuildToolsVersion
- } else {
- throw new RuntimeException(
- "No installed build tools found. Install the Android build tools version " +
- minBuildToolsVersion + " or higher.")
- }
-}
-
-// Return the first non-zero result of subtracting version list elements
-// pairwise. If they are all identical, return the difference in length of
-// the two lists.
-int compareVersionList(Collection aParts, Collection bParts) {
- def pairs = ([aParts, bParts]).transpose()
- pairs.findResult(aParts.size()-bParts.size()) {it[0] - it[1] != 0 ? it[0] - it[1] : null}
-}
-
-// Compare two version strings, such as "19.0.0" and "18.1.1.0". If all matched
-// elements are identical, the longer version is the largest by this method.
-// Examples:
-// "19.0.0" > "19"
-// "19.0.1" > "19.0.0"
-// "19.1.0" > "19.0.1"
-// "19" > "18.999.999"
-int compareVersions(String a, String b) {
- def aParts = a.tokenize('.').collect {it.toInteger()}
- def bParts = b.tokenize('.').collect {it.toInteger()}
- compareVersionList(aParts, bParts)
-}
-
-String getAndroidSdkDir() {
- def rootDir = project.rootDir
- def androidSdkDir = null
- String envVar = System.getenv("ANDROID_HOME")
- def localProperties = new File(rootDir, 'local.properties')
- String systemProperty = System.getProperty("android.home")
- if (envVar != null) {
- androidSdkDir = envVar
- } else if (localProperties.exists()) {
- Properties properties = new Properties()
- localProperties.withInputStream { instr ->
- properties.load(instr)
- }
- def sdkDirProp = properties.getProperty('sdk.dir')
- if (sdkDirProp != null) {
- androidSdkDir = sdkDirProp
- } else {
- sdkDirProp = properties.getProperty('android.dir')
- if (sdkDirProp != null) {
- androidSdkDir = (new File(rootDir, sdkDirProp)).getAbsolutePath()
- }
- }
- }
- if (androidSdkDir == null && systemProperty != null) {
- androidSdkDir = systemProperty
- }
- if (androidSdkDir == null) {
- throw new RuntimeException(
- "Unable to determine Android SDK directory.")
- }
- androidSdkDir
-}
-
-def doExtractIntFromManifest(name) {
- def manifestFile = file(android.sourceSets.main.manifest.srcFile)
- def pattern = Pattern.compile(name + "=\"(\\d+)\"")
- def matcher = pattern.matcher(manifestFile.getText())
- matcher.find()
- return new BigInteger(matcher.group(1))
-}
-
-def doExtractStringFromManifest(name) {
- def manifestFile = file(android.sourceSets.main.manifest.srcFile)
- def pattern = Pattern.compile(name + "=\"(\\S+)\"")
- def matcher = pattern.matcher(manifestFile.getText())
- matcher.find()
- return matcher.group(1)
-}
-
-def doPromptForPassword(msg) {
- if (System.console() == null) {
- def ret = null
- new SwingBuilder().edt {
- dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) {
- vbox {
- label(text: msg)
- def input = passwordField()
- button(defaultButton: true, text: 'OK', actionPerformed: {
- ret = input.password;
- dispose();
- })
- }
- }
- }
- if (!ret) {
- throw new GradleException('User canceled build')
- }
- return new String(ret)
- } else {
- return System.console().readPassword('\n' + msg);
- }
-}
-
-def doGetConfigXml() {
- def xml = file("res/xml/config.xml").getText()
- // Disable namespace awareness since Cordova doesn't use them properly
- return new XmlParser(false, false).parseText(xml)
-}
-
-def doGetConfigPreference(name, defaultValue) {
- name = name.toLowerCase()
- def root = doGetConfigXml()
-
- def ret = defaultValue
- root.preference.each { it ->
- def attrName = it.attribute("name")
- if (attrName && attrName.toLowerCase() == name) {
- ret = it.attribute("value")
- }
- }
- return ret
-}
-
-// Properties exported here are visible to all plugins.
-ext {
- // These helpers are shared, but are not guaranteed to be stable / unchanged.
- privateHelpers = {}
- privateHelpers.getProjectTarget = { doGetProjectTarget() }
- privateHelpers.findLatestInstalledBuildTools = { doFindLatestInstalledBuildTools('19.1.0') }
- privateHelpers.extractIntFromManifest = { name -> doExtractIntFromManifest(name) }
- privateHelpers.extractStringFromManifest = { name -> doExtractStringFromManifest(name) }
- privateHelpers.promptForPassword = { msg -> doPromptForPassword(msg) }
- privateHelpers.ensureValueExists = { filePath, props, key -> doEnsureValueExists(filePath, props, key) }
-
- // These helpers can be used by plugins / projects and will not change.
- cdvHelpers = {}
- // Returns a XmlParser for the config.xml. Added in 4.1.0.
- cdvHelpers.getConfigXml = { doGetConfigXml() }
- // Returns the value for the desired <preference>. Added in 4.1.0.
- cdvHelpers.getConfigPreference = { name, defaultValue -> doGetConfigPreference(name, defaultValue) }
-}
-
diff --git a/StoneIsland/platforms/android/CordovaLib/project.properties b/StoneIsland/platforms/android/CordovaLib/project.properties
deleted file mode 100644
index df3c73c4..00000000
--- a/StoneIsland/platforms/android/CordovaLib/project.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system use,
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-
-# Indicates whether an apk should be generated for each density.
-split.density=false
-# Project target.
-target=android-25
-apk-configurations=
-renderscript.opt.level=O0
-android.library=true
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/AuthenticationToken.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/AuthenticationToken.java
deleted file mode 100644
index d3a231a0..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/AuthenticationToken.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-/**
- * The Class AuthenticationToken defines the userName and password to be used for authenticating a web resource
- */
-public class AuthenticationToken {
- private String userName;
- private String password;
-
- /**
- * Gets the user name.
- *
- * @return the user name
- */
- public String getUserName() {
- return userName;
- }
-
- /**
- * Sets the user name.
- *
- * @param userName
- * the new user name
- */
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- /**
- * Gets the password.
- *
- * @return the password
- */
- public String getPassword() {
- return password;
- }
-
- /**
- * Sets the password.
- *
- * @param password
- * the new password
- */
- public void setPassword(String password) {
- this.password = password;
- }
-
-
-
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackContext.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackContext.java
deleted file mode 100644
index 43363869..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackContext.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import org.json.JSONArray;
-
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.PluginResult;
-import org.json.JSONObject;
-
-public class CallbackContext {
- private static final String LOG_TAG = "CordovaPlugin";
-
- private String callbackId;
- private CordovaWebView webView;
- protected boolean finished;
- private int changingThreads;
-
- public CallbackContext(String callbackId, CordovaWebView webView) {
- this.callbackId = callbackId;
- this.webView = webView;
- }
-
- public boolean isFinished() {
- return finished;
- }
-
- public boolean isChangingThreads() {
- return changingThreads > 0;
- }
-
- public String getCallbackId() {
- return callbackId;
- }
-
- public void sendPluginResult(PluginResult pluginResult) {
- synchronized (this) {
- if (finished) {
- LOG.w(LOG_TAG, "Attempted to send a second callback for ID: " + callbackId + "\nResult was: " + pluginResult.getMessage());
- return;
- } else {
- finished = !pluginResult.getKeepCallback();
- }
- }
- webView.sendPluginResult(pluginResult, callbackId);
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- *
- * @param message The message to add to the success result.
- */
- public void success(JSONObject message) {
- sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- *
- * @param message The message to add to the success result.
- */
- public void success(String message) {
- sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- *
- * @param message The message to add to the success result.
- */
- public void success(JSONArray message) {
- sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- *
- * @param message The message to add to the success result.
- */
- public void success(byte[] message) {
- sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- *
- * @param message The message to add to the success result.
- */
- public void success(int message) {
- sendPluginResult(new PluginResult(PluginResult.Status.OK, message));
- }
-
- /**
- * Helper for success callbacks that just returns the Status.OK by default
- */
- public void success() {
- sendPluginResult(new PluginResult(PluginResult.Status.OK));
- }
-
- /**
- * Helper for error callbacks that just returns the Status.ERROR by default
- *
- * @param message The message to add to the error result.
- */
- public void error(JSONObject message) {
- sendPluginResult(new PluginResult(PluginResult.Status.ERROR, message));
- }
-
- /**
- * Helper for error callbacks that just returns the Status.ERROR by default
- *
- * @param message The message to add to the error result.
- */
- public void error(String message) {
- sendPluginResult(new PluginResult(PluginResult.Status.ERROR, message));
- }
-
- /**
- * Helper for error callbacks that just returns the Status.ERROR by default
- *
- * @param message The message to add to the error result.
- */
- public void error(int message) {
- sendPluginResult(new PluginResult(PluginResult.Status.ERROR, message));
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackMap.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackMap.java
deleted file mode 100644
index 050daa01..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CallbackMap.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.util.Pair;
-import android.util.SparseArray;
-
-/**
- * Provides a collection that maps unique request codes to CordovaPlugins and Integers.
- * Used to ensure that when plugins make requests for runtime permissions, those requests do not
- * collide with requests from other plugins that use the same request code value.
- */
-public class CallbackMap {
- private int currentCallbackId = 0;
- private SparseArray<Pair<CordovaPlugin, Integer>> callbacks;
-
- public CallbackMap() {
- this.callbacks = new SparseArray<Pair<CordovaPlugin, Integer>>();
- }
-
- /**
- * Stores a CordovaPlugin and request code and returns a new unique request code to use
- * in a permission request.
- *
- * @param receiver The plugin that is making the request
- * @param requestCode The original request code used by the plugin
- * @return A unique request code that can be used to retrieve this callback
- * with getAndRemoveCallback()
- */
- public synchronized int registerCallback(CordovaPlugin receiver, int requestCode) {
- int mappedId = this.currentCallbackId++;
- callbacks.put(mappedId, new Pair<CordovaPlugin, Integer>(receiver, requestCode));
- return mappedId;
- }
-
- /**
- * Retrieves and removes a callback stored in the map using the mapped request code
- * obtained from registerCallback()
- *
- * @param mappedId The request code obtained from registerCallback()
- * @return The CordovaPlugin and orignal request code that correspond to the
- * given mappedCode
- */
- public synchronized Pair<CordovaPlugin, Integer> getAndRemoveCallback(int mappedId) {
- Pair<CordovaPlugin, Integer> callback = callbacks.get(mappedId);
- callbacks.remove(mappedId);
- return callback;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Config.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Config.java
deleted file mode 100644
index 07397959..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Config.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import java.util.List;
-
-import android.app.Activity;
-
-@Deprecated // Use Whitelist, CordovaPrefences, etc. directly.
-public class Config {
- private static final String TAG = "Config";
-
- static ConfigXmlParser parser;
-
- private Config() {
- }
-
- public static void init(Activity action) {
- parser = new ConfigXmlParser();
- parser.parse(action);
- //TODO: Add feature to bring this back. Some preferences should be overridden by intents, but not all
- parser.getPreferences().setPreferencesBundle(action.getIntent().getExtras());
- }
-
- // Intended to be used for testing only; creates an empty configuration.
- public static void init() {
- if (parser == null) {
- parser = new ConfigXmlParser();
- }
- }
-
- public static String getStartUrl() {
- if (parser == null) {
- return "file:///android_asset/www/index.html";
- }
- return parser.getLaunchUrl();
- }
-
- public static String getErrorUrl() {
- return parser.getPreferences().getString("errorurl", null);
- }
-
- public static List<PluginEntry> getPluginEntries() {
- return parser.getPluginEntries();
- }
-
- public static CordovaPreferences getPreferences() {
- return parser.getPreferences();
- }
-
- public static boolean isInitialized() {
- return parser != null;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ConfigXmlParser.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ConfigXmlParser.java
deleted file mode 100644
index 01a97f2d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ConfigXmlParser.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.xmlpull.v1.XmlPullParser;
-import org.xmlpull.v1.XmlPullParserException;
-
-import android.content.Context;
-
-public class ConfigXmlParser {
- private static String TAG = "ConfigXmlParser";
-
- private String launchUrl = "file:///android_asset/www/index.html";
- private CordovaPreferences prefs = new CordovaPreferences();
- private ArrayList<PluginEntry> pluginEntries = new ArrayList<PluginEntry>(20);
-
- public CordovaPreferences getPreferences() {
- return prefs;
- }
-
- public ArrayList<PluginEntry> getPluginEntries() {
- return pluginEntries;
- }
-
- public String getLaunchUrl() {
- return launchUrl;
- }
-
- public void parse(Context action) {
- // First checking the class namespace for config.xml
- int id = action.getResources().getIdentifier("config", "xml", action.getClass().getPackage().getName());
- if (id == 0) {
- // If we couldn't find config.xml there, we'll look in the namespace from AndroidManifest.xml
- id = action.getResources().getIdentifier("config", "xml", action.getPackageName());
- if (id == 0) {
- LOG.e(TAG, "res/xml/config.xml is missing!");
- return;
- }
- }
- parse(action.getResources().getXml(id));
- }
-
- boolean insideFeature = false;
- String service = "", pluginClass = "", paramType = "";
- boolean onload = false;
-
- public void parse(XmlPullParser xml) {
- int eventType = -1;
-
- while (eventType != XmlPullParser.END_DOCUMENT) {
- if (eventType == XmlPullParser.START_TAG) {
- handleStartTag(xml);
- }
- else if (eventType == XmlPullParser.END_TAG)
- {
- handleEndTag(xml);
- }
- try {
- eventType = xml.next();
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- public void handleStartTag(XmlPullParser xml) {
- String strNode = xml.getName();
- if (strNode.equals("feature")) {
- //Check for supported feature sets aka. plugins (Accelerometer, Geolocation, etc)
- //Set the bit for reading params
- insideFeature = true;
- service = xml.getAttributeValue(null, "name");
- }
- else if (insideFeature && strNode.equals("param")) {
- paramType = xml.getAttributeValue(null, "name");
- if (paramType.equals("service")) // check if it is using the older service param
- service = xml.getAttributeValue(null, "value");
- else if (paramType.equals("package") || paramType.equals("android-package"))
- pluginClass = xml.getAttributeValue(null,"value");
- else if (paramType.equals("onload"))
- onload = "true".equals(xml.getAttributeValue(null, "value"));
- }
- else if (strNode.equals("preference")) {
- String name = xml.getAttributeValue(null, "name").toLowerCase(Locale.ENGLISH);
- String value = xml.getAttributeValue(null, "value");
- prefs.set(name, value);
- }
- else if (strNode.equals("content")) {
- String src = xml.getAttributeValue(null, "src");
- if (src != null) {
- setStartUrl(src);
- }
- }
- }
-
- public void handleEndTag(XmlPullParser xml) {
- String strNode = xml.getName();
- if (strNode.equals("feature")) {
- pluginEntries.add(new PluginEntry(service, pluginClass, onload));
-
- service = "";
- pluginClass = "";
- insideFeature = false;
- onload = false;
- }
- }
-
- private void setStartUrl(String src) {
- Pattern schemeRegex = Pattern.compile("^[a-z-]+://");
- Matcher matcher = schemeRegex.matcher(src);
- if (matcher.find()) {
- launchUrl = src;
- } else {
- if (src.charAt(0) == '/') {
- src = src.substring(1);
- }
- launchUrl = "file:///android_asset/www/" + src;
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java
deleted file mode 100755
index 85eeb53a..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaActivity.java
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.util.ArrayList;
-import java.util.Locale;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.annotation.SuppressLint;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.graphics.Color;
-import android.media.AudioManager;
-import android.os.Build;
-import android.os.Bundle;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.Window;
-import android.view.WindowManager;
-import android.webkit.WebViewClient;
-import android.widget.FrameLayout;
-
-/**
- * This class is the main Android activity that represents the Cordova
- * application. It should be extended by the user to load the specific
- * html file that contains the application.
- *
- * As an example:
- *
- * <pre>
- * package org.apache.cordova.examples;
- *
- * import android.os.Bundle;
- * import org.apache.cordova.*;
- *
- * public class Example extends CordovaActivity {
- * &#64;Override
- * public void onCreate(Bundle savedInstanceState) {
- * super.onCreate(savedInstanceState);
- * super.init();
- * // Load your application
- * loadUrl(launchUrl);
- * }
- * }
- * </pre>
- *
- * Cordova xml configuration: Cordova uses a configuration file at
- * res/xml/config.xml to specify its settings. See "The config.xml File"
- * guide in cordova-docs at http://cordova.apache.org/docs for the documentation
- * for the configuration. The use of the set*Property() methods is
- * deprecated in favor of the config.xml file.
- *
- */
-public class CordovaActivity extends Activity {
- public static String TAG = "CordovaActivity";
-
- // The webview for our app
- protected CordovaWebView appView;
-
- private static int ACTIVITY_STARTING = 0;
- private static int ACTIVITY_RUNNING = 1;
- private static int ACTIVITY_EXITING = 2;
-
- // Keep app running when pause is received. (default = true)
- // If true, then the JavaScript and native code continue to run in the background
- // when another application (activity) is started.
- protected boolean keepRunning = true;
-
- // Flag to keep immersive mode if set to fullscreen
- protected boolean immersiveMode;
-
- // Read from config.xml:
- protected CordovaPreferences preferences;
- protected String launchUrl;
- protected ArrayList<PluginEntry> pluginEntries;
- protected CordovaInterfaceImpl cordovaInterface;
-
- /**
- * Called when the activity is first created.
- */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- // need to activate preferences before super.onCreate to avoid "requestFeature() must be called before adding content" exception
- loadConfig();
-
- String logLevel = preferences.getString("loglevel", "ERROR");
- LOG.setLogLevel(logLevel);
-
- LOG.i(TAG, "Apache Cordova native platform version " + CordovaWebView.CORDOVA_VERSION + " is starting");
- LOG.d(TAG, "CordovaActivity.onCreate()");
-
- if (!preferences.getBoolean("ShowTitle", false)) {
- getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- }
-
- if (preferences.getBoolean("SetFullscreen", false)) {
- LOG.d(TAG, "The SetFullscreen configuration is deprecated in favor of Fullscreen, and will be removed in a future version.");
- preferences.set("Fullscreen", true);
- }
- if (preferences.getBoolean("Fullscreen", false)) {
- // NOTE: use the FullscreenNotImmersive configuration key to set the activity in a REAL full screen
- // (as was the case in previous cordova versions)
- if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) && !preferences.getBoolean("FullscreenNotImmersive", false)) {
- immersiveMode = true;
- } else {
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- } else {
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
- }
-
- super.onCreate(savedInstanceState);
-
- cordovaInterface = makeCordovaInterface();
- if (savedInstanceState != null) {
- cordovaInterface.restoreInstanceState(savedInstanceState);
- }
- }
-
- protected void init() {
- appView = makeWebView();
- createViews();
- if (!appView.isInitialized()) {
- appView.init(cordovaInterface, pluginEntries, preferences);
- }
- cordovaInterface.onCordovaInit(appView.getPluginManager());
-
- // Wire the hardware volume controls to control media if desired.
- String volumePref = preferences.getString("DefaultVolumeStream", "");
- if ("media".equals(volumePref.toLowerCase(Locale.ENGLISH))) {
- setVolumeControlStream(AudioManager.STREAM_MUSIC);
- }
- }
-
- @SuppressWarnings("deprecation")
- protected void loadConfig() {
- ConfigXmlParser parser = new ConfigXmlParser();
- parser.parse(this);
- preferences = parser.getPreferences();
- preferences.setPreferencesBundle(getIntent().getExtras());
- launchUrl = parser.getLaunchUrl();
- pluginEntries = parser.getPluginEntries();
- Config.parser = parser;
- }
-
- //Suppressing warnings in AndroidStudio
- @SuppressWarnings({"deprecation", "ResourceType"})
- protected void createViews() {
- //Why are we setting a constant as the ID? This should be investigated
- appView.getView().setId(100);
- appView.getView().setLayoutParams(new FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT));
-
- setContentView(appView.getView());
-
- if (preferences.contains("BackgroundColor")) {
- try {
- int backgroundColor = preferences.getInteger("BackgroundColor", Color.BLACK);
- // Background of activity:
- appView.getView().setBackgroundColor(backgroundColor);
- }
- catch (NumberFormatException e){
- e.printStackTrace();
- }
- }
-
- appView.getView().requestFocusFromTouch();
- }
-
- /**
- * Construct the default web view object.
- * <p/>
- * Override this to customize the webview that is used.
- */
- protected CordovaWebView makeWebView() {
- return new CordovaWebViewImpl(makeWebViewEngine());
- }
-
- protected CordovaWebViewEngine makeWebViewEngine() {
- return CordovaWebViewImpl.createEngine(this, preferences);
- }
-
- protected CordovaInterfaceImpl makeCordovaInterface() {
- return new CordovaInterfaceImpl(this) {
- @Override
- public Object onMessage(String id, Object data) {
- // Plumb this to CordovaActivity.onMessage for backwards compatibility
- return CordovaActivity.this.onMessage(id, data);
- }
- };
- }
-
- /**
- * Load the url into the webview.
- */
- public void loadUrl(String url) {
- if (appView == null) {
- init();
- }
-
- // If keepRunning
- this.keepRunning = preferences.getBoolean("KeepRunning", true);
-
- appView.loadUrlIntoView(url, true);
- }
-
- /**
- * Called when the system is about to start resuming a previous activity.
- */
- @Override
- protected void onPause() {
- super.onPause();
- LOG.d(TAG, "Paused the activity.");
-
- if (this.appView != null) {
- // CB-9382 If there is an activity that started for result and main activity is waiting for callback
- // result, we shoudn't stop WebView Javascript timers, as activity for result might be using them
- boolean keepRunning = this.keepRunning || this.cordovaInterface.activityResultCallback != null;
- this.appView.handlePause(keepRunning);
- }
- }
-
- /**
- * Called when the activity receives a new intent
- */
- @Override
- protected void onNewIntent(Intent intent) {
- super.onNewIntent(intent);
- //Forward to plugins
- if (this.appView != null)
- this.appView.onNewIntent(intent);
- }
-
- /**
- * Called when the activity will start interacting with the user.
- */
- @Override
- protected void onResume() {
- super.onResume();
- LOG.d(TAG, "Resumed the activity.");
-
- if (this.appView == null) {
- return;
- }
- // Force window to have focus, so application always
- // receive user input. Workaround for some devices (Samsung Galaxy Note 3 at least)
- this.getWindow().getDecorView().requestFocus();
-
- this.appView.handleResume(this.keepRunning);
- }
-
- /**
- * Called when the activity is no longer visible to the user.
- */
- @Override
- protected void onStop() {
- super.onStop();
- LOG.d(TAG, "Stopped the activity.");
-
- if (this.appView == null) {
- return;
- }
- this.appView.handleStop();
- }
-
- /**
- * Called when the activity is becoming visible to the user.
- */
- @Override
- protected void onStart() {
- super.onStart();
- LOG.d(TAG, "Started the activity.");
-
- if (this.appView == null) {
- return;
- }
- this.appView.handleStart();
- }
-
- /**
- * The final call you receive before your activity is destroyed.
- */
- @Override
- public void onDestroy() {
- LOG.d(TAG, "CordovaActivity.onDestroy()");
- super.onDestroy();
-
- if (this.appView != null) {
- appView.handleDestroy();
- }
- }
-
- /**
- * Called when view focus is changed
- */
- @Override
- public void onWindowFocusChanged(boolean hasFocus) {
- super.onWindowFocusChanged(hasFocus);
- if (hasFocus && immersiveMode) {
- final int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
- | View.SYSTEM_UI_FLAG_FULLSCREEN
- | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
-
- getWindow().getDecorView().setSystemUiVisibility(uiOptions);
- }
- }
-
- @SuppressLint("NewApi")
- @Override
- public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
- // Capture requestCode here so that it is captured in the setActivityResultCallback() case.
- cordovaInterface.setActivityResultRequestCode(requestCode);
- super.startActivityForResult(intent, requestCode, options);
- }
-
- /**
- * Called when an activity you launched exits, giving you the requestCode you started it with,
- * the resultCode it returned, and any additional data from it.
- *
- * @param requestCode The request code originally supplied to startActivityForResult(),
- * allowing you to identify who this result came from.
- * @param resultCode The integer result code returned by the child activity through its setResult().
- * @param intent An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
- LOG.d(TAG, "Incoming Result. Request code = " + requestCode);
- super.onActivityResult(requestCode, resultCode, intent);
- cordovaInterface.onActivityResult(requestCode, resultCode, intent);
- }
-
- /**
- * Report an error to the host application. These errors are unrecoverable (i.e. the main resource is unavailable).
- * The errorCode parameter corresponds to one of the ERROR_* constants.
- *
- * @param errorCode The error code corresponding to an ERROR_* value.
- * @param description A String describing the error.
- * @param failingUrl The url that failed to load.
- */
- public void onReceivedError(final int errorCode, final String description, final String failingUrl) {
- final CordovaActivity me = this;
-
- // If errorUrl specified, then load it
- final String errorUrl = preferences.getString("errorUrl", null);
- if ((errorUrl != null) && (!failingUrl.equals(errorUrl)) && (appView != null)) {
- // Load URL on UI thread
- me.runOnUiThread(new Runnable() {
- public void run() {
- me.appView.showWebPage(errorUrl, false, true, null);
- }
- });
- }
- // If not, then display error dialog
- else {
- final boolean exit = !(errorCode == WebViewClient.ERROR_HOST_LOOKUP);
- me.runOnUiThread(new Runnable() {
- public void run() {
- if (exit) {
- me.appView.getView().setVisibility(View.GONE);
- me.displayError("Application Error", description + " (" + failingUrl + ")", "OK", exit);
- }
- }
- });
- }
- }
-
- /**
- * Display an error dialog and optionally exit application.
- */
- public void displayError(final String title, final String message, final String button, final boolean exit) {
- final CordovaActivity me = this;
- me.runOnUiThread(new Runnable() {
- public void run() {
- try {
- AlertDialog.Builder dlg = new AlertDialog.Builder(me);
- dlg.setMessage(message);
- dlg.setTitle(title);
- dlg.setCancelable(false);
- dlg.setPositiveButton(button,
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- if (exit) {
- finish();
- }
- }
- });
- dlg.create();
- dlg.show();
- } catch (Exception e) {
- finish();
- }
- }
- });
- }
-
- /*
- * Hook in Cordova for menu plugins
- */
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- if (appView != null) {
- appView.getPluginManager().postMessage("onCreateOptionsMenu", menu);
- }
- return super.onCreateOptionsMenu(menu);
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- if (appView != null) {
- appView.getPluginManager().postMessage("onPrepareOptionsMenu", menu);
- }
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- if (appView != null) {
- appView.getPluginManager().postMessage("onOptionsItemSelected", item);
- }
- return true;
- }
-
- /**
- * Called when a message is sent to plugin.
- *
- * @param id The message id
- * @param data The message data
- * @return Object or null
- */
- public Object onMessage(String id, Object data) {
- if ("onReceivedError".equals(id)) {
- JSONObject d = (JSONObject) data;
- try {
- this.onReceivedError(d.getInt("errorCode"), d.getString("description"), d.getString("url"));
- } catch (JSONException e) {
- e.printStackTrace();
- }
- } else if ("exit".equals(id)) {
- finish();
- }
- return null;
- }
-
- protected void onSaveInstanceState(Bundle outState) {
- cordovaInterface.onSaveInstanceState(outState);
- super.onSaveInstanceState(outState);
- }
-
- /**
- * Called by the system when the device configuration changes while your activity is running.
- *
- * @param newConfig The new device configuration
- */
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- if (this.appView == null) {
- return;
- }
- PluginManager pm = this.appView.getPluginManager();
- if (pm != null) {
- pm.onConfigurationChanged(newConfig);
- }
- }
-
- /**
- * Called by the system when the user grants permissions
- *
- * @param requestCode
- * @param permissions
- * @param grantResults
- */
- @Override
- public void onRequestPermissionsResult(int requestCode, String permissions[],
- int[] grantResults) {
- try
- {
- cordovaInterface.onRequestPermissionResult(requestCode, permissions, grantResults);
- }
- catch (JSONException e)
- {
- LOG.d(TAG, "JSONException: Parameters fed into the method are not valid");
- e.printStackTrace();
- }
-
- }
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaArgs.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaArgs.java
deleted file mode 100644
index d40d26eb..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaArgs.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.util.Base64;
-
-public class CordovaArgs {
- private JSONArray baseArgs;
-
- public CordovaArgs(JSONArray args) {
- this.baseArgs = args;
- }
-
-
- // Pass through the basics to the base args.
- public Object get(int index) throws JSONException {
- return baseArgs.get(index);
- }
-
- public boolean getBoolean(int index) throws JSONException {
- return baseArgs.getBoolean(index);
- }
-
- public double getDouble(int index) throws JSONException {
- return baseArgs.getDouble(index);
- }
-
- public int getInt(int index) throws JSONException {
- return baseArgs.getInt(index);
- }
-
- public JSONArray getJSONArray(int index) throws JSONException {
- return baseArgs.getJSONArray(index);
- }
-
- public JSONObject getJSONObject(int index) throws JSONException {
- return baseArgs.getJSONObject(index);
- }
-
- public long getLong(int index) throws JSONException {
- return baseArgs.getLong(index);
- }
-
- public String getString(int index) throws JSONException {
- return baseArgs.getString(index);
- }
-
-
- public Object opt(int index) {
- return baseArgs.opt(index);
- }
-
- public boolean optBoolean(int index) {
- return baseArgs.optBoolean(index);
- }
-
- public double optDouble(int index) {
- return baseArgs.optDouble(index);
- }
-
- public int optInt(int index) {
- return baseArgs.optInt(index);
- }
-
- public JSONArray optJSONArray(int index) {
- return baseArgs.optJSONArray(index);
- }
-
- public JSONObject optJSONObject(int index) {
- return baseArgs.optJSONObject(index);
- }
-
- public long optLong(int index) {
- return baseArgs.optLong(index);
- }
-
- public String optString(int index) {
- return baseArgs.optString(index);
- }
-
- public boolean isNull(int index) {
- return baseArgs.isNull(index);
- }
-
-
- // The interesting custom helpers.
- public byte[] getArrayBuffer(int index) throws JSONException {
- String encoded = baseArgs.getString(index);
- return Base64.decode(encoded, Base64.DEFAULT);
- }
-}
-
-
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java
deleted file mode 100644
index 9459a113..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaBridge.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.security.SecureRandom;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-
-/**
- * Contains APIs that the JS can call. All functions in here should also have
- * an equivalent entry in CordovaChromeClient.java, and be added to
- * cordova-js/lib/android/plugin/android/promptbasednativeapi.js
- */
-public class CordovaBridge {
- private static final String LOG_TAG = "CordovaBridge";
- private PluginManager pluginManager;
- private NativeToJsMessageQueue jsMessageQueue;
- private volatile int expectedBridgeSecret = -1; // written by UI thread, read by JS thread.
-
- public CordovaBridge(PluginManager pluginManager, NativeToJsMessageQueue jsMessageQueue) {
- this.pluginManager = pluginManager;
- this.jsMessageQueue = jsMessageQueue;
- }
-
- public String jsExec(int bridgeSecret, String service, String action, String callbackId, String arguments) throws JSONException, IllegalAccessException {
- if (!verifySecret("exec()", bridgeSecret)) {
- return null;
- }
- // If the arguments weren't received, send a message back to JS. It will switch bridge modes and try again. See CB-2666.
- // We send a message meant specifically for this case. It starts with "@" so no other message can be encoded into the same string.
- if (arguments == null) {
- return "@Null arguments.";
- }
-
- jsMessageQueue.setPaused(true);
- try {
- // Tell the resourceApi what thread the JS is running on.
- CordovaResourceApi.jsThread = Thread.currentThread();
-
- pluginManager.exec(service, action, callbackId, arguments);
- String ret = null;
- if (!NativeToJsMessageQueue.DISABLE_EXEC_CHAINING) {
- ret = jsMessageQueue.popAndEncode(false);
- }
- return ret;
- } catch (Throwable e) {
- e.printStackTrace();
- return "";
- } finally {
- jsMessageQueue.setPaused(false);
- }
- }
-
- public void jsSetNativeToJsBridgeMode(int bridgeSecret, int value) throws IllegalAccessException {
- if (!verifySecret("setNativeToJsBridgeMode()", bridgeSecret)) {
- return;
- }
- jsMessageQueue.setBridgeMode(value);
- }
-
- public String jsRetrieveJsMessages(int bridgeSecret, boolean fromOnlineEvent) throws IllegalAccessException {
- if (!verifySecret("retrieveJsMessages()", bridgeSecret)) {
- return null;
- }
- return jsMessageQueue.popAndEncode(fromOnlineEvent);
- }
-
- private boolean verifySecret(String action, int bridgeSecret) throws IllegalAccessException {
- if (!jsMessageQueue.isBridgeEnabled()) {
- if (bridgeSecret == -1) {
- LOG.d(LOG_TAG, action + " call made before bridge was enabled.");
- } else {
- LOG.d(LOG_TAG, "Ignoring " + action + " from previous page load.");
- }
- return false;
- }
- // Bridge secret wrong and bridge not due to it being from the previous page.
- if (expectedBridgeSecret < 0 || bridgeSecret != expectedBridgeSecret) {
- LOG.e(LOG_TAG, "Bridge access attempt with wrong secret token, possibly from malicious code. Disabling exec() bridge!");
- clearBridgeSecret();
- throw new IllegalAccessException();
- }
- return true;
- }
-
- /** Called on page transitions */
- void clearBridgeSecret() {
- expectedBridgeSecret = -1;
- }
-
- public boolean isSecretEstablished() {
- return expectedBridgeSecret != -1;
- }
-
- /** Called by cordova.js to initialize the bridge. */
- int generateBridgeSecret() {
- SecureRandom randGen = new SecureRandom();
- expectedBridgeSecret = randGen.nextInt(Integer.MAX_VALUE);
- return expectedBridgeSecret;
- }
-
- public void reset() {
- jsMessageQueue.reset();
- clearBridgeSecret();
- }
-
- public String promptOnJsPrompt(String origin, String message, String defaultValue) {
- if (defaultValue != null && defaultValue.length() > 3 && defaultValue.startsWith("gap:")) {
- JSONArray array;
- try {
- array = new JSONArray(defaultValue.substring(4));
- int bridgeSecret = array.getInt(0);
- String service = array.getString(1);
- String action = array.getString(2);
- String callbackId = array.getString(3);
- String r = jsExec(bridgeSecret, service, action, callbackId, message);
- return r == null ? "" : r;
- } catch (JSONException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return "";
- }
- // Sets the native->JS bridge mode.
- else if (defaultValue != null && defaultValue.startsWith("gap_bridge_mode:")) {
- try {
- int bridgeSecret = Integer.parseInt(defaultValue.substring(16));
- jsSetNativeToJsBridgeMode(bridgeSecret, Integer.parseInt(message));
- } catch (NumberFormatException e){
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return "";
- }
- // Polling for JavaScript messages
- else if (defaultValue != null && defaultValue.startsWith("gap_poll:")) {
- int bridgeSecret = Integer.parseInt(defaultValue.substring(9));
- try {
- String r = jsRetrieveJsMessages(bridgeSecret, "1".equals(message));
- return r == null ? "" : r;
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return "";
- }
- else if (defaultValue != null && defaultValue.startsWith("gap_init:")) {
- // Protect against random iframes being able to talk through the bridge.
- // Trust only pages which the app would have been allowed to navigate to anyway.
- if (pluginManager.shouldAllowBridgeAccess(origin)) {
- // Enable the bridge
- int bridgeMode = Integer.parseInt(defaultValue.substring(9));
- jsMessageQueue.setBridgeMode(bridgeMode);
- // Tell JS the bridge secret.
- int secret = generateBridgeSecret();
- return ""+secret;
- } else {
- LOG.e(LOG_TAG, "gap_init called from restricted origin: " + origin);
- }
- return "";
- }
- return null;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java
deleted file mode 100644
index 5dd0ecae..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaClientCertRequest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.security.Principal;
-import java.security.PrivateKey;
-import java.security.cert.X509Certificate;
-
-import android.webkit.ClientCertRequest;
-
-/**
- * Implementation of the ICordovaClientCertRequest for Android WebView.
- */
-public class CordovaClientCertRequest implements ICordovaClientCertRequest {
-
- private final ClientCertRequest request;
-
- public CordovaClientCertRequest(ClientCertRequest request) {
- this.request = request;
- }
-
- /**
- * Cancel this request
- */
- public void cancel()
- {
- request.cancel();
- }
-
- /*
- * Returns the host name of the server requesting the certificate.
- */
- public String getHost()
- {
- return request.getHost();
- }
-
- /*
- * Returns the acceptable types of asymmetric keys (can be null).
- */
- public String[] getKeyTypes()
- {
- return request.getKeyTypes();
- }
-
- /*
- * Returns the port number of the server requesting the certificate.
- */
- public int getPort()
- {
- return request.getPort();
- }
-
- /*
- * Returns the acceptable certificate issuers for the certificate matching the private key (can be null).
- */
- public Principal[] getPrincipals()
- {
- return request.getPrincipals();
- }
-
- /*
- * Ignore the request for now. Do not remember user's choice.
- */
- public void ignore()
- {
- request.ignore();
- }
-
- /*
- * Proceed with the specified private key and client certificate chain. Remember the user's positive choice and use it for future requests.
- *
- * @param privateKey The privateKey
- * @param chain The certificate chain
- */
- public void proceed(PrivateKey privateKey, X509Certificate[] chain)
- {
- request.proceed(privateKey, chain);
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaDialogsHelper.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaDialogsHelper.java
deleted file mode 100644
index a219c992..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaDialogsHelper.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.view.KeyEvent;
-import android.widget.EditText;
-
-/**
- * Helper class for WebViews to implement prompt(), alert(), confirm() dialogs.
- */
-public class CordovaDialogsHelper {
- private final Context context;
- private AlertDialog lastHandledDialog;
-
- public CordovaDialogsHelper(Context context) {
- this.context = context;
- }
-
- public void showAlert(String message, final Result result) {
- AlertDialog.Builder dlg = new AlertDialog.Builder(context);
- dlg.setMessage(message);
- dlg.setTitle("Alert");
- //Don't let alerts break the back button
- dlg.setCancelable(true);
- dlg.setPositiveButton(android.R.string.ok,
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.gotResult(true, null);
- }
- });
- dlg.setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- result.gotResult(false, null);
- }
- });
- dlg.setOnKeyListener(new DialogInterface.OnKeyListener() {
- //DO NOTHING
- public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK)
- {
- result.gotResult(true, null);
- return false;
- }
- else
- return true;
- }
- });
- lastHandledDialog = dlg.show();
- }
-
- public void showConfirm(String message, final Result result) {
- AlertDialog.Builder dlg = new AlertDialog.Builder(context);
- dlg.setMessage(message);
- dlg.setTitle("Confirm");
- dlg.setCancelable(true);
- dlg.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.gotResult(true, null);
- }
- });
- dlg.setNegativeButton(android.R.string.cancel,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.gotResult(false, null);
- }
- });
- dlg.setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- result.gotResult(false, null);
- }
- });
- dlg.setOnKeyListener(new DialogInterface.OnKeyListener() {
- //DO NOTHING
- public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK)
- {
- result.gotResult(false, null);
- return false;
- }
- else
- return true;
- }
- });
- lastHandledDialog = dlg.show();
- }
-
- /**
- * Tell the client to display a prompt dialog to the user.
- * If the client returns true, WebView will assume that the client will
- * handle the prompt dialog and call the appropriate JsPromptResult method.
- *
- * Since we are hacking prompts for our own purposes, we should not be using them for
- * this purpose, perhaps we should hack console.log to do this instead!
- */
- public void showPrompt(String message, String defaultValue, final Result result) {
- // Returning false would also show a dialog, but the default one shows the origin (ugly).
- AlertDialog.Builder dlg = new AlertDialog.Builder(context);
- dlg.setMessage(message);
- final EditText input = new EditText(context);
- if (defaultValue != null) {
- input.setText(defaultValue);
- }
- dlg.setView(input);
- dlg.setCancelable(false);
- dlg.setPositiveButton(android.R.string.ok,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- String userText = input.getText().toString();
- result.gotResult(true, userText);
- }
- });
- dlg.setNegativeButton(android.R.string.cancel,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- result.gotResult(false, null);
- }
- });
- lastHandledDialog = dlg.show();
- }
-
- public void destroyLastDialog(){
- if (lastHandledDialog != null){
- lastHandledDialog.cancel();
- }
- }
-
- public interface Result {
- public void gotResult(boolean success, String value);
- }
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaHttpAuthHandler.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaHttpAuthHandler.java
deleted file mode 100644
index 724381e2..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaHttpAuthHandler.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.webkit.HttpAuthHandler;
-
-/**
- * Specifies interface for HTTP auth handler object which is used to handle auth requests and
- * specifying user credentials.
- */
-public class CordovaHttpAuthHandler implements ICordovaHttpAuthHandler {
-
- private final HttpAuthHandler handler;
-
- public CordovaHttpAuthHandler(HttpAuthHandler handler) {
- this.handler = handler;
- }
-
- /**
- * Instructs the WebView to cancel the authentication request.
- */
- public void cancel () {
- this.handler.cancel();
- }
-
- /**
- * Instructs the WebView to proceed with the authentication with the given credentials.
- *
- * @param username
- * @param password
- */
- public void proceed (String username, String password) {
- this.handler.proceed(username, password);
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java
deleted file mode 100755
index 3b8468f3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterface.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.app.Activity;
-import android.content.Intent;
-
-import org.apache.cordova.CordovaPlugin;
-
-import java.util.concurrent.ExecutorService;
-
-/**
- * The Activity interface that is implemented by CordovaActivity.
- * It is used to isolate plugin development, and remove dependency on entire Cordova library.
- */
-public interface CordovaInterface {
-
- /**
- * Launch an activity for which you would like a result when it finished. When this activity exits,
- * your onActivityResult() method will be called.
- *
- * @param command The command object
- * @param intent The intent to start
- * @param requestCode The request code that is passed to callback to identify the activity
- */
- abstract public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode);
-
- /**
- * Set the plugin to be called when a sub-activity exits.
- *
- * @param plugin The plugin on which onActivityResult is to be called
- */
- abstract public void setActivityResultCallback(CordovaPlugin plugin);
-
- /**
- * Get the Android activity.
- *
- * @return the Activity
- */
- public abstract Activity getActivity();
-
-
- /**
- * Called when a message is sent to plugin.
- *
- * @param id The message id
- * @param data The message data
- * @return Object or null
- */
- public Object onMessage(String id, Object data);
-
- /**
- * Returns a shared thread pool that can be used for background tasks.
- */
- public ExecutorService getThreadPool();
-
- /**
- * Sends a permission request to the activity for one permission.
- */
- public void requestPermission(CordovaPlugin plugin, int requestCode, String permission);
-
- /**
- * Sends a permission request to the activity for a group of permissions
- */
- public void requestPermissions(CordovaPlugin plugin, int requestCode, String [] permissions);
-
- /**
- * Check for a permission. Returns true if the permission is granted, false otherwise.
- */
- public boolean hasPermission(String permission);
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java
deleted file mode 100644
index 71dcb782..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaInterfaceImpl.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.os.Bundle;
-import android.util.Pair;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-/**
- * Default implementation of CordovaInterface.
- */
-public class CordovaInterfaceImpl implements CordovaInterface {
- private static final String TAG = "CordovaInterfaceImpl";
- protected Activity activity;
- protected ExecutorService threadPool;
- protected PluginManager pluginManager;
-
- protected ActivityResultHolder savedResult;
- protected CallbackMap permissionResultCallbacks;
- protected CordovaPlugin activityResultCallback;
- protected String initCallbackService;
- protected int activityResultRequestCode;
- protected boolean activityWasDestroyed = false;
- protected Bundle savedPluginState;
-
- public CordovaInterfaceImpl(Activity activity) {
- this(activity, Executors.newCachedThreadPool());
- }
-
- public CordovaInterfaceImpl(Activity activity, ExecutorService threadPool) {
- this.activity = activity;
- this.threadPool = threadPool;
- this.permissionResultCallbacks = new CallbackMap();
- }
-
- @Override
- public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
- setActivityResultCallback(command);
- try {
- activity.startActivityForResult(intent, requestCode);
- } catch (RuntimeException e) { // E.g.: ActivityNotFoundException
- activityResultCallback = null;
- throw e;
- }
- }
-
- @Override
- public void setActivityResultCallback(CordovaPlugin plugin) {
- // Cancel any previously pending activity.
- if (activityResultCallback != null) {
- activityResultCallback.onActivityResult(activityResultRequestCode, Activity.RESULT_CANCELED, null);
- }
- activityResultCallback = plugin;
- }
-
- @Override
- public Activity getActivity() {
- return activity;
- }
-
- @Override
- public Object onMessage(String id, Object data) {
- if ("exit".equals(id)) {
- activity.finish();
- }
- return null;
- }
-
- @Override
- public ExecutorService getThreadPool() {
- return threadPool;
- }
-
- /**
- * Dispatches any pending onActivityResult callbacks and sends the resume event if the
- * Activity was destroyed by the OS.
- */
- public void onCordovaInit(PluginManager pluginManager) {
- this.pluginManager = pluginManager;
- if (savedResult != null) {
- onActivityResult(savedResult.requestCode, savedResult.resultCode, savedResult.intent);
- } else if(activityWasDestroyed) {
- // If there was no Activity result, we still need to send out the resume event if the
- // Activity was destroyed by the OS
- activityWasDestroyed = false;
- if(pluginManager != null)
- {
- CoreAndroid appPlugin = (CoreAndroid) pluginManager.getPlugin(CoreAndroid.PLUGIN_NAME);
- if(appPlugin != null) {
- JSONObject obj = new JSONObject();
- try {
- obj.put("action", "resume");
- } catch (JSONException e) {
- LOG.e(TAG, "Failed to create event message", e);
- }
- appPlugin.sendResumeEvent(new PluginResult(PluginResult.Status.OK, obj));
- }
- }
-
- }
- }
-
- /**
- * Routes the result to the awaiting plugin. Returns false if no plugin was waiting.
- */
- public boolean onActivityResult(int requestCode, int resultCode, Intent intent) {
- CordovaPlugin callback = activityResultCallback;
- if(callback == null && initCallbackService != null) {
- // The application was restarted, but had defined an initial callback
- // before being shut down.
- savedResult = new ActivityResultHolder(requestCode, resultCode, intent);
- if (pluginManager != null) {
- callback = pluginManager.getPlugin(initCallbackService);
- if(callback != null) {
- callback.onRestoreStateForActivityResult(savedPluginState.getBundle(callback.getServiceName()),
- new ResumeCallback(callback.getServiceName(), pluginManager));
- }
- }
- }
- activityResultCallback = null;
-
- if (callback != null) {
- LOG.d(TAG, "Sending activity result to plugin");
- initCallbackService = null;
- savedResult = null;
- callback.onActivityResult(requestCode, resultCode, intent);
- return true;
- }
- LOG.w(TAG, "Got an activity result, but no plugin was registered to receive it" + (savedResult != null ? " yet!" : "."));
- return false;
- }
-
- /**
- * Call this from your startActivityForResult() overload. This is required to catch the case
- * where plugins use Activity.startActivityForResult() + CordovaInterface.setActivityResultCallback()
- * rather than CordovaInterface.startActivityForResult().
- */
- public void setActivityResultRequestCode(int requestCode) {
- activityResultRequestCode = requestCode;
- }
-
- /**
- * Saves parameters for startActivityForResult().
- */
- public void onSaveInstanceState(Bundle outState) {
- if (activityResultCallback != null) {
- String serviceName = activityResultCallback.getServiceName();
- outState.putString("callbackService", serviceName);
- }
- if(pluginManager != null){
- outState.putBundle("plugin", pluginManager.onSaveInstanceState());
- }
-
- }
-
- /**
- * Call this from onCreate() so that any saved startActivityForResult parameters will be restored.
- */
- public void restoreInstanceState(Bundle savedInstanceState) {
- initCallbackService = savedInstanceState.getString("callbackService");
- savedPluginState = savedInstanceState.getBundle("plugin");
- activityWasDestroyed = true;
- }
-
- private static class ActivityResultHolder {
- private int requestCode;
- private int resultCode;
- private Intent intent;
-
- public ActivityResultHolder(int requestCode, int resultCode, Intent intent) {
- this.requestCode = requestCode;
- this.resultCode = resultCode;
- this.intent = intent;
- }
- }
-
- /**
- * Called by the system when the user grants permissions
- *
- * @param requestCode
- * @param permissions
- * @param grantResults
- */
- public void onRequestPermissionResult(int requestCode, String[] permissions,
- int[] grantResults) throws JSONException {
- Pair<CordovaPlugin, Integer> callback = permissionResultCallbacks.getAndRemoveCallback(requestCode);
- if(callback != null) {
- callback.first.onRequestPermissionResult(callback.second, permissions, grantResults);
- }
- }
-
- public void requestPermission(CordovaPlugin plugin, int requestCode, String permission) {
- String[] permissions = new String [1];
- permissions[0] = permission;
- requestPermissions(plugin, requestCode, permissions);
- }
-
- public void requestPermissions(CordovaPlugin plugin, int requestCode, String [] permissions) {
- int mappedRequestCode = permissionResultCallbacks.registerCallback(plugin, requestCode);
- getActivity().requestPermissions(permissions, mappedRequestCode);
- }
-
- public boolean hasPermission(String permission)
- {
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
- {
- int result = activity.checkSelfPermission(permission);
- return PackageManager.PERMISSION_GRANTED == result;
- }
- else
- {
- return true;
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java
deleted file mode 100644
index 41af1db7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java
+++ /dev/null
@@ -1,422 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import org.apache.cordova.CordovaArgs;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CallbackContext;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-
-/**
- * Plugins must extend this class and override one of the execute methods.
- */
-public class CordovaPlugin {
- public CordovaWebView webView;
- public CordovaInterface cordova;
- protected CordovaPreferences preferences;
- private String serviceName;
-
- /**
- * Call this after constructing to initialize the plugin.
- * Final because we want to be able to change args without breaking plugins.
- */
- public final void privateInitialize(String serviceName, CordovaInterface cordova, CordovaWebView webView, CordovaPreferences preferences) {
- assert this.cordova == null;
- this.serviceName = serviceName;
- this.cordova = cordova;
- this.webView = webView;
- this.preferences = preferences;
- initialize(cordova, webView);
- pluginInitialize();
- }
-
- /**
- * Called after plugin construction and fields have been initialized.
- * Prefer to use pluginInitialize instead since there is no value in
- * having parameters on the initialize() function.
- */
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- }
-
- /**
- * Called after plugin construction and fields have been initialized.
- */
- protected void pluginInitialize() {
- }
-
- /**
- * Returns the plugin's service name (what you'd use when calling pluginManger.getPlugin())
- */
- public String getServiceName() {
- return serviceName;
- }
-
- /**
- * Executes the request.
- *
- * This method is called from the WebView thread. To do a non-trivial amount of work, use:
- * cordova.getThreadPool().execute(runnable);
- *
- * To run on the UI thread, use:
- * cordova.getActivity().runOnUiThread(runnable);
- *
- * @param action The action to execute.
- * @param rawArgs The exec() arguments in JSON form.
- * @param callbackContext The callback context used when calling back into JavaScript.
- * @return Whether the action was valid.
- */
- public boolean execute(String action, String rawArgs, CallbackContext callbackContext) throws JSONException {
- JSONArray args = new JSONArray(rawArgs);
- return execute(action, args, callbackContext);
- }
-
- /**
- * Executes the request.
- *
- * This method is called from the WebView thread. To do a non-trivial amount of work, use:
- * cordova.getThreadPool().execute(runnable);
- *
- * To run on the UI thread, use:
- * cordova.getActivity().runOnUiThread(runnable);
- *
- * @param action The action to execute.
- * @param args The exec() arguments.
- * @param callbackContext The callback context used when calling back into JavaScript.
- * @return Whether the action was valid.
- */
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- CordovaArgs cordovaArgs = new CordovaArgs(args);
- return execute(action, cordovaArgs, callbackContext);
- }
-
- /**
- * Executes the request.
- *
- * This method is called from the WebView thread. To do a non-trivial amount of work, use:
- * cordova.getThreadPool().execute(runnable);
- *
- * To run on the UI thread, use:
- * cordova.getActivity().runOnUiThread(runnable);
- *
- * @param action The action to execute.
- * @param args The exec() arguments, wrapped with some Cordova helpers.
- * @param callbackContext The callback context used when calling back into JavaScript.
- * @return Whether the action was valid.
- */
- public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
- return false;
- }
-
- /**
- * Called when the system is about to start resuming a previous activity.
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- public void onPause(boolean multitasking) {
- }
-
- /**
- * Called when the activity will start interacting with the user.
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- public void onResume(boolean multitasking) {
- }
-
- /**
- * Called when the activity is becoming visible to the user.
- */
- public void onStart() {
- }
-
- /**
- * Called when the activity is no longer visible to the user.
- */
- public void onStop() {
- }
-
- /**
- * Called when the activity receives a new intent.
- */
- public void onNewIntent(Intent intent) {
- }
-
- /**
- * The final call you receive before your activity is destroyed.
- */
- public void onDestroy() {
- }
-
- /**
- * Called when the Activity is being destroyed (e.g. if a plugin calls out to an external
- * Activity and the OS kills the CordovaActivity in the background). The plugin should save its
- * state in this method only if it is awaiting the result of an external Activity and needs
- * to preserve some information so as to handle that result; onRestoreStateForActivityResult()
- * will only be called if the plugin is the recipient of an Activity result
- *
- * @return Bundle containing the state of the plugin or null if state does not need to be saved
- */
- public Bundle onSaveInstanceState() {
- return null;
- }
-
- /**
- * Called when a plugin is the recipient of an Activity result after the CordovaActivity has
- * been destroyed. The Bundle will be the same as the one the plugin returned in
- * onSaveInstanceState()
- *
- * @param state Bundle containing the state of the plugin
- * @param callbackContext Replacement Context to return the plugin result to
- */
- public void onRestoreStateForActivityResult(Bundle state, CallbackContext callbackContext) {}
-
- /**
- * Called when a message is sent to plugin.
- *
- * @param id The message id
- * @param data The message data
- * @return Object to stop propagation or null
- */
- public Object onMessage(String id, Object data) {
- return null;
- }
-
- /**
- * Called when an activity you launched exits, giving you the requestCode you started it with,
- * the resultCode it returned, and any additional data from it.
- *
- * @param requestCode The request code originally supplied to startActivityForResult(),
- * allowing you to identify who this result came from.
- * @param resultCode The integer result code returned by the child activity through its setResult().
- * @param intent An Intent, which can return result data to the caller (various data can be
- * attached to Intent "extras").
- */
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- }
-
- /**
- * Hook for blocking the loading of external resources.
- *
- * This will be called when the WebView's shouldInterceptRequest wants to
- * know whether to open a connection to an external resource. Return false
- * to block the request: if any plugin returns false, Cordova will block
- * the request. If all plugins return null, the default policy will be
- * enforced. If at least one plugin returns true, and no plugins return
- * false, then the request will proceed.
- *
- * Note that this only affects resource requests which are routed through
- * WebViewClient.shouldInterceptRequest, such as XMLHttpRequest requests and
- * img tag loads. WebSockets and media requests (such as <video> and <audio>
- * tags) are not affected by this method. Use CSP headers to control access
- * to such resources.
- */
- public Boolean shouldAllowRequest(String url) {
- return null;
- }
-
- /**
- * Hook for blocking navigation by the Cordova WebView. This applies both to top-level and
- * iframe navigations.
- *
- * This will be called when the WebView's needs to know whether to navigate
- * to a new page. Return false to block the navigation: if any plugin
- * returns false, Cordova will block the navigation. If all plugins return
- * null, the default policy will be enforced. It at least one plugin returns
- * true, and no plugins return false, then the navigation will proceed.
- */
- public Boolean shouldAllowNavigation(String url) {
- return null;
- }
-
- /**
- * Hook for allowing page to call exec(). By default, this returns the result of
- * shouldAllowNavigation(). It's generally unsafe to allow untrusted content to be loaded
- * into a CordovaWebView, even within an iframe, so it's best not to touch this.
- */
- public Boolean shouldAllowBridgeAccess(String url) {
- return shouldAllowNavigation(url);
- }
-
- /**
- * Hook for blocking the launching of Intents by the Cordova application.
- *
- * This will be called when the WebView will not navigate to a page, but
- * could launch an intent to handle the URL. Return false to block this: if
- * any plugin returns false, Cordova will block the navigation. If all
- * plugins return null, the default policy will be enforced. If at least one
- * plugin returns true, and no plugins return false, then the URL will be
- * opened.
- */
- public Boolean shouldOpenExternalUrl(String url) {
- return null;
- }
-
- /**
- * Allows plugins to handle a link being clicked. Return true here to cancel the navigation.
- *
- * @param url The URL that is trying to be loaded in the Cordova webview.
- * @return Return true to prevent the URL from loading. Default is false.
- */
- public boolean onOverrideUrlLoading(String url) {
- return false;
- }
-
- /**
- * Hook for redirecting requests. Applies to WebView requests as well as requests made by plugins.
- * To handle the request directly, return a URI in the form:
- *
- * cdvplugin://pluginId/...
- *
- * And implement handleOpenForRead().
- * To make this easier, use the toPluginUri() and fromPluginUri() helpers:
- *
- * public Uri remapUri(Uri uri) { return toPluginUri(uri); }
- *
- * public CordovaResourceApi.OpenForReadResult handleOpenForRead(Uri uri) throws IOException {
- * Uri origUri = fromPluginUri(uri);
- * ...
- * }
- */
- public Uri remapUri(Uri uri) {
- return null;
- }
-
- /**
- * Called to handle CordovaResourceApi.openForRead() calls for a cdvplugin://pluginId/ URL.
- * Should never return null.
- * Added in cordova-android@4.0.0
- */
- public CordovaResourceApi.OpenForReadResult handleOpenForRead(Uri uri) throws IOException {
- throw new FileNotFoundException("Plugin can't handle uri: " + uri);
- }
-
- /**
- * Refer to remapUri()
- * Added in cordova-android@4.0.0
- */
- protected Uri toPluginUri(Uri origUri) {
- return new Uri.Builder()
- .scheme(CordovaResourceApi.PLUGIN_URI_SCHEME)
- .authority(serviceName)
- .appendQueryParameter("origUri", origUri.toString())
- .build();
- }
-
- /**
- * Refer to remapUri()
- * Added in cordova-android@4.0.0
- */
- protected Uri fromPluginUri(Uri pluginUri) {
- return Uri.parse(pluginUri.getQueryParameter("origUri"));
- }
-
- /**
- * Called when the WebView does a top-level navigation or refreshes.
- *
- * Plugins should stop any long-running processes and clean up internal state.
- *
- * Does nothing by default.
- */
- public void onReset() {
- }
-
- /**
- * Called when the system received an HTTP authentication request. Plugin can use
- * the supplied HttpAuthHandler to process this auth challenge.
- *
- * @param view The WebView that is initiating the callback
- * @param handler The HttpAuthHandler used to set the WebView's response
- * @param host The host requiring authentication
- * @param realm The realm for which authentication is required
- *
- * @return Returns True if plugin will resolve this auth challenge, otherwise False
- *
- */
- public boolean onReceivedHttpAuthRequest(CordovaWebView view, ICordovaHttpAuthHandler handler, String host, String realm) {
- return false;
- }
-
- /**
- * Called when he system received an SSL client certificate request. Plugin can use
- * the supplied ClientCertRequest to process this certificate challenge.
- *
- * @param view The WebView that is initiating the callback
- * @param request The client certificate request
- *
- * @return Returns True if plugin will resolve this auth challenge, otherwise False
- *
- */
- public boolean onReceivedClientCertRequest(CordovaWebView view, ICordovaClientCertRequest request) {
- return false;
- }
-
- /**
- * Called by the system when the device configuration changes while your activity is running.
- *
- * @param newConfig The new device configuration
- */
- public void onConfigurationChanged(Configuration newConfig) {
- }
-
- /**
- * Called by the Plugin Manager when we need to actually request permissions
- *
- * @param requestCode Passed to the activity to track the request
- *
- * @return Returns the permission that was stored in the plugin
- */
-
- public void requestPermissions(int requestCode) {
- }
-
- /*
- * Called by the WebView implementation to check for geolocation permissions, can be used
- * by other Java methods in the event that a plugin is using this as a dependency.
- *
- * @return Returns true if the plugin has all the permissions it needs to operate.
- */
-
- public boolean hasPermisssion() {
- return true;
- }
-
- /**
- * Called by the system when the user grants permissions
- *
- * @param requestCode
- * @param permissions
- * @param grantResults
- */
- public void onRequestPermissionResult(int requestCode, String[] permissions,
- int[] grantResults) throws JSONException {
-
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPreferences.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPreferences.java
deleted file mode 100644
index 4dbc93e6..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPreferences.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.cordova.LOG;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class CordovaPreferences {
- private HashMap<String, String> prefs = new HashMap<String, String>(20);
- private Bundle preferencesBundleExtras;
-
- public void setPreferencesBundle(Bundle extras) {
- preferencesBundleExtras = extras;
- }
-
- public void set(String name, String value) {
- prefs.put(name.toLowerCase(Locale.ENGLISH), value);
- }
-
- public void set(String name, boolean value) {
- set(name, "" + value);
- }
-
- public void set(String name, int value) {
- set(name, "" + value);
- }
-
- public void set(String name, double value) {
- set(name, "" + value);
- }
-
- public Map<String, String> getAll() {
- return prefs;
- }
-
- public boolean getBoolean(String name, boolean defaultValue) {
- name = name.toLowerCase(Locale.ENGLISH);
- String value = prefs.get(name);
- if (value != null) {
- return Boolean.parseBoolean(value);
- }
- return defaultValue;
- }
-
- // Added in 4.0.0
- public boolean contains(String name) {
- return getString(name, null) != null;
- }
-
- public int getInteger(String name, int defaultValue) {
- name = name.toLowerCase(Locale.ENGLISH);
- String value = prefs.get(name);
- if (value != null) {
- // Use Integer.decode() can't handle it if the highest bit is set.
- return (int)(long)Long.decode(value);
- }
- return defaultValue;
- }
-
- public double getDouble(String name, double defaultValue) {
- name = name.toLowerCase(Locale.ENGLISH);
- String value = prefs.get(name);
- if (value != null) {
- return Double.valueOf(value);
- }
- return defaultValue;
- }
-
- public String getString(String name, String defaultValue) {
- name = name.toLowerCase(Locale.ENGLISH);
- String value = prefs.get(name);
- if (value != null) {
- return value;
- }
- return defaultValue;
- }
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaResourceApi.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaResourceApi.java
deleted file mode 100644
index e725e255..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaResourceApi.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-package org.apache.cordova;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.res.AssetFileDescriptor;
-import android.content.res.AssetManager;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Looper;
-import android.util.Base64;
-import android.webkit.MimeTypeMap;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.channels.FileChannel;
-import java.util.Locale;
-
-/**
- * What this class provides:
- * 1. Helpers for reading & writing to URLs.
- * - E.g. handles assets, resources, content providers, files, data URIs, http[s]
- * - E.g. Can be used to query for mime-type & content length.
- *
- * 2. To allow plugins to redirect URLs (via remapUrl).
- * - All plugins should call remapUrl() on URLs they receive from JS *before*
- * passing the URL onto other utility functions in this class.
- * - For an example usage of this, refer to the org.apache.cordova.file plugin.
- *
- * Future Work:
- * - Consider using a Cursor to query content URLs for their size (like the file plugin does).
- * - Allow plugins to remapUri to "cdv-plugin://plugin-name/foo", which CordovaResourceApi
- * would then delegate to pluginManager.getPlugin(plugin-name).openForRead(url)
- * - Currently, plugins *can* do this by remapping to a data: URL, but it's inefficient
- * for large payloads.
- */
-public class CordovaResourceApi {
- @SuppressWarnings("unused")
- private static final String LOG_TAG = "CordovaResourceApi";
-
- public static final int URI_TYPE_FILE = 0;
- public static final int URI_TYPE_ASSET = 1;
- public static final int URI_TYPE_CONTENT = 2;
- public static final int URI_TYPE_RESOURCE = 3;
- public static final int URI_TYPE_DATA = 4;
- public static final int URI_TYPE_HTTP = 5;
- public static final int URI_TYPE_HTTPS = 6;
- public static final int URI_TYPE_PLUGIN = 7;
- public static final int URI_TYPE_UNKNOWN = -1;
-
- public static final String PLUGIN_URI_SCHEME = "cdvplugin";
-
- private static final String[] LOCAL_FILE_PROJECTION = { "_data" };
-
- public static Thread jsThread;
-
- private final AssetManager assetManager;
- private final ContentResolver contentResolver;
- private final PluginManager pluginManager;
- private boolean threadCheckingEnabled = true;
-
-
- public CordovaResourceApi(Context context, PluginManager pluginManager) {
- this.contentResolver = context.getContentResolver();
- this.assetManager = context.getAssets();
- this.pluginManager = pluginManager;
- }
-
- public void setThreadCheckingEnabled(boolean value) {
- threadCheckingEnabled = value;
- }
-
- public boolean isThreadCheckingEnabled() {
- return threadCheckingEnabled;
- }
-
-
- public static int getUriType(Uri uri) {
- assertNonRelative(uri);
- String scheme = uri.getScheme();
- if (ContentResolver.SCHEME_CONTENT.equalsIgnoreCase(scheme)) {
- return URI_TYPE_CONTENT;
- }
- if (ContentResolver.SCHEME_ANDROID_RESOURCE.equalsIgnoreCase(scheme)) {
- return URI_TYPE_RESOURCE;
- }
- if (ContentResolver.SCHEME_FILE.equalsIgnoreCase(scheme)) {
- if (uri.getPath().startsWith("/android_asset/")) {
- return URI_TYPE_ASSET;
- }
- return URI_TYPE_FILE;
- }
- if ("data".equalsIgnoreCase(scheme)) {
- return URI_TYPE_DATA;
- }
- if ("http".equalsIgnoreCase(scheme)) {
- return URI_TYPE_HTTP;
- }
- if ("https".equalsIgnoreCase(scheme)) {
- return URI_TYPE_HTTPS;
- }
- if (PLUGIN_URI_SCHEME.equalsIgnoreCase(scheme)) {
- return URI_TYPE_PLUGIN;
- }
- return URI_TYPE_UNKNOWN;
- }
-
- public Uri remapUri(Uri uri) {
- assertNonRelative(uri);
- Uri pluginUri = pluginManager.remapUri(uri);
- return pluginUri != null ? pluginUri : uri;
- }
-
- public String remapPath(String path) {
- return remapUri(Uri.fromFile(new File(path))).getPath();
- }
-
- /**
- * Returns a File that points to the resource, or null if the resource
- * is not on the local filesystem.
- */
- public File mapUriToFile(Uri uri) {
- assertBackgroundThread();
- switch (getUriType(uri)) {
- case URI_TYPE_FILE:
- return new File(uri.getPath());
- case URI_TYPE_CONTENT: {
- Cursor cursor = contentResolver.query(uri, LOCAL_FILE_PROJECTION, null, null, null);
- if (cursor != null) {
- try {
- int columnIndex = cursor.getColumnIndex(LOCAL_FILE_PROJECTION[0]);
- if (columnIndex != -1 && cursor.getCount() > 0) {
- cursor.moveToFirst();
- String realPath = cursor.getString(columnIndex);
- if (realPath != null) {
- return new File(realPath);
- }
- }
- } finally {
- cursor.close();
- }
- }
- }
- }
- return null;
- }
-
- public String getMimeType(Uri uri) {
- switch (getUriType(uri)) {
- case URI_TYPE_FILE:
- case URI_TYPE_ASSET:
- return getMimeTypeFromPath(uri.getPath());
- case URI_TYPE_CONTENT:
- case URI_TYPE_RESOURCE:
- return contentResolver.getType(uri);
- case URI_TYPE_DATA: {
- return getDataUriMimeType(uri);
- }
- case URI_TYPE_HTTP:
- case URI_TYPE_HTTPS: {
- try {
- HttpURLConnection conn = (HttpURLConnection)new URL(uri.toString()).openConnection();
- conn.setDoInput(false);
- conn.setRequestMethod("HEAD");
- String mimeType = conn.getHeaderField("Content-Type");
- if (mimeType != null) {
- mimeType = mimeType.split(";")[0];
- }
- return mimeType;
- } catch (IOException e) {
- }
- }
- }
-
- return null;
- }
-
-
- //This already exists
- private String getMimeTypeFromPath(String path) {
- String extension = path;
- int lastDot = extension.lastIndexOf('.');
- if (lastDot != -1) {
- extension = extension.substring(lastDot + 1);
- }
- // Convert the URI string to lower case to ensure compatibility with MimeTypeMap (see CB-2185).
- extension = extension.toLowerCase(Locale.getDefault());
- if (extension.equals("3ga")) {
- return "audio/3gpp";
- } else if (extension.equals("js")) {
- // Missing from the map :(.
- return "text/javascript";
- }
- return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
- }
-
- /**
- * Opens a stream to the given URI, also providing the MIME type & length.
- * @return Never returns null.
- * @throws Throws an InvalidArgumentException for relative URIs. Relative URIs should be
- * resolved before being passed into this function.
- * @throws Throws an IOException if the URI cannot be opened.
- * @throws Throws an IllegalStateException if called on a foreground thread.
- */
- public OpenForReadResult openForRead(Uri uri) throws IOException {
- return openForRead(uri, false);
- }
-
- /**
- * Opens a stream to the given URI, also providing the MIME type & length.
- * @return Never returns null.
- * @throws Throws an InvalidArgumentException for relative URIs. Relative URIs should be
- * resolved before being passed into this function.
- * @throws Throws an IOException if the URI cannot be opened.
- * @throws Throws an IllegalStateException if called on a foreground thread and skipThreadCheck is false.
- */
- public OpenForReadResult openForRead(Uri uri, boolean skipThreadCheck) throws IOException {
- if (!skipThreadCheck) {
- assertBackgroundThread();
- }
- switch (getUriType(uri)) {
- case URI_TYPE_FILE: {
- FileInputStream inputStream = new FileInputStream(uri.getPath());
- String mimeType = getMimeTypeFromPath(uri.getPath());
- long length = inputStream.getChannel().size();
- return new OpenForReadResult(uri, inputStream, mimeType, length, null);
- }
- case URI_TYPE_ASSET: {
- String assetPath = uri.getPath().substring(15);
- AssetFileDescriptor assetFd = null;
- InputStream inputStream;
- long length = -1;
- try {
- assetFd = assetManager.openFd(assetPath);
- inputStream = assetFd.createInputStream();
- length = assetFd.getLength();
- } catch (FileNotFoundException e) {
- // Will occur if the file is compressed.
- inputStream = assetManager.open(assetPath);
- }
- String mimeType = getMimeTypeFromPath(assetPath);
- return new OpenForReadResult(uri, inputStream, mimeType, length, assetFd);
- }
- case URI_TYPE_CONTENT:
- case URI_TYPE_RESOURCE: {
- String mimeType = contentResolver.getType(uri);
- AssetFileDescriptor assetFd = contentResolver.openAssetFileDescriptor(uri, "r");
- InputStream inputStream = assetFd.createInputStream();
- long length = assetFd.getLength();
- return new OpenForReadResult(uri, inputStream, mimeType, length, assetFd);
- }
- case URI_TYPE_DATA: {
- OpenForReadResult ret = readDataUri(uri);
- if (ret == null) {
- break;
- }
- return ret;
- }
- case URI_TYPE_HTTP:
- case URI_TYPE_HTTPS: {
- HttpURLConnection conn = (HttpURLConnection)new URL(uri.toString()).openConnection();
- conn.setDoInput(true);
- String mimeType = conn.getHeaderField("Content-Type");
- if (mimeType != null) {
- mimeType = mimeType.split(";")[0];
- }
- int length = conn.getContentLength();
- InputStream inputStream = conn.getInputStream();
- return new OpenForReadResult(uri, inputStream, mimeType, length, null);
- }
- case URI_TYPE_PLUGIN: {
- String pluginId = uri.getHost();
- CordovaPlugin plugin = pluginManager.getPlugin(pluginId);
- if (plugin == null) {
- throw new FileNotFoundException("Invalid plugin ID in URI: " + uri);
- }
- return plugin.handleOpenForRead(uri);
- }
- }
- throw new FileNotFoundException("URI not supported by CordovaResourceApi: " + uri);
- }
-
- public OutputStream openOutputStream(Uri uri) throws IOException {
- return openOutputStream(uri, false);
- }
-
- /**
- * Opens a stream to the given URI.
- * @return Never returns null.
- * @throws Throws an InvalidArgumentException for relative URIs. Relative URIs should be
- * resolved before being passed into this function.
- * @throws Throws an IOException if the URI cannot be opened.
- */
- public OutputStream openOutputStream(Uri uri, boolean append) throws IOException {
- assertBackgroundThread();
- switch (getUriType(uri)) {
- case URI_TYPE_FILE: {
- File localFile = new File(uri.getPath());
- File parent = localFile.getParentFile();
- if (parent != null) {
- parent.mkdirs();
- }
- return new FileOutputStream(localFile, append);
- }
- case URI_TYPE_CONTENT:
- case URI_TYPE_RESOURCE: {
- AssetFileDescriptor assetFd = contentResolver.openAssetFileDescriptor(uri, append ? "wa" : "w");
- return assetFd.createOutputStream();
- }
- }
- throw new FileNotFoundException("URI not supported by CordovaResourceApi: " + uri);
- }
-
- public HttpURLConnection createHttpConnection(Uri uri) throws IOException {
- assertBackgroundThread();
- return (HttpURLConnection)new URL(uri.toString()).openConnection();
- }
-
- // Copies the input to the output in the most efficient manner possible.
- // Closes both streams.
- public void copyResource(OpenForReadResult input, OutputStream outputStream) throws IOException {
- assertBackgroundThread();
- try {
- InputStream inputStream = input.inputStream;
- if (inputStream instanceof FileInputStream && outputStream instanceof FileOutputStream) {
- FileChannel inChannel = ((FileInputStream)input.inputStream).getChannel();
- FileChannel outChannel = ((FileOutputStream)outputStream).getChannel();
- long offset = 0;
- long length = input.length;
- if (input.assetFd != null) {
- offset = input.assetFd.getStartOffset();
- }
- // transferFrom()'s 2nd arg is a relative position. Need to set the absolute
- // position first.
- inChannel.position(offset);
- outChannel.transferFrom(inChannel, 0, length);
- } else {
- final int BUFFER_SIZE = 8192;
- byte[] buffer = new byte[BUFFER_SIZE];
-
- for (;;) {
- int bytesRead = inputStream.read(buffer, 0, BUFFER_SIZE);
-
- if (bytesRead <= 0) {
- break;
- }
- outputStream.write(buffer, 0, bytesRead);
- }
- }
- } finally {
- input.inputStream.close();
- if (outputStream != null) {
- outputStream.close();
- }
- }
- }
-
- public void copyResource(Uri sourceUri, OutputStream outputStream) throws IOException {
- copyResource(openForRead(sourceUri), outputStream);
- }
-
- // Added in 3.5.0.
- public void copyResource(Uri sourceUri, Uri dstUri) throws IOException {
- copyResource(openForRead(sourceUri), openOutputStream(dstUri));
- }
-
- private void assertBackgroundThread() {
- if (threadCheckingEnabled) {
- Thread curThread = Thread.currentThread();
- if (curThread == Looper.getMainLooper().getThread()) {
- throw new IllegalStateException("Do not perform IO operations on the UI thread. Use CordovaInterface.getThreadPool() instead.");
- }
- if (curThread == jsThread) {
- throw new IllegalStateException("Tried to perform an IO operation on the WebCore thread. Use CordovaInterface.getThreadPool() instead.");
- }
- }
- }
-
- private String getDataUriMimeType(Uri uri) {
- String uriAsString = uri.getSchemeSpecificPart();
- int commaPos = uriAsString.indexOf(',');
- if (commaPos == -1) {
- return null;
- }
- String[] mimeParts = uriAsString.substring(0, commaPos).split(";");
- if (mimeParts.length > 0) {
- return mimeParts[0];
- }
- return null;
- }
-
- private OpenForReadResult readDataUri(Uri uri) {
- String uriAsString = uri.getSchemeSpecificPart();
- int commaPos = uriAsString.indexOf(',');
- if (commaPos == -1) {
- return null;
- }
- String[] mimeParts = uriAsString.substring(0, commaPos).split(";");
- String contentType = null;
- boolean base64 = false;
- if (mimeParts.length > 0) {
- contentType = mimeParts[0];
- }
- for (int i = 1; i < mimeParts.length; ++i) {
- if ("base64".equalsIgnoreCase(mimeParts[i])) {
- base64 = true;
- }
- }
- String dataPartAsString = uriAsString.substring(commaPos + 1);
- byte[] data;
- if (base64) {
- data = Base64.decode(dataPartAsString, Base64.DEFAULT);
- } else {
- try {
- data = dataPartAsString.getBytes("UTF-8");
- } catch (UnsupportedEncodingException e) {
- data = dataPartAsString.getBytes();
- }
- }
- InputStream inputStream = new ByteArrayInputStream(data);
- return new OpenForReadResult(uri, inputStream, contentType, data.length, null);
- }
-
- private static void assertNonRelative(Uri uri) {
- if (!uri.isAbsolute()) {
- throw new IllegalArgumentException("Relative URIs are not supported.");
- }
- }
-
- public static final class OpenForReadResult {
- public final Uri uri;
- public final InputStream inputStream;
- public final String mimeType;
- public final long length;
- public final AssetFileDescriptor assetFd;
-
- public OpenForReadResult(Uri uri, InputStream inputStream, String mimeType, long length, AssetFileDescriptor assetFd) {
- this.uri = uri;
- this.inputStream = inputStream;
- this.mimeType = mimeType;
- this.length = length;
- this.assetFd = assetFd;
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java
deleted file mode 100644
index 713884b9..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebView.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.util.List;
-import java.util.Map;
-
-import android.content.Context;
-import android.content.Intent;
-import android.view.View;
-import android.webkit.WebChromeClient.CustomViewCallback;
-
-/**
- * Main interface for interacting with a Cordova webview - implemented by CordovaWebViewImpl.
- * This is an interface so that it can be easily mocked in tests.
- * Methods may be added to this interface without a major version bump, as plugins & embedders
- * are not expected to implement it.
- */
-public interface CordovaWebView {
- public static final String CORDOVA_VERSION = "6.2.3";
-
- void init(CordovaInterface cordova, List<PluginEntry> pluginEntries, CordovaPreferences preferences);
-
- boolean isInitialized();
-
- View getView();
-
- void loadUrlIntoView(String url, boolean recreatePlugins);
-
- void stopLoading();
-
- boolean canGoBack();
-
- void clearCache();
-
- /** Use parameter-less overload */
- @Deprecated
- void clearCache(boolean b);
-
- void clearHistory();
-
- boolean backHistory();
-
- void handlePause(boolean keepRunning);
-
- void onNewIntent(Intent intent);
-
- void handleResume(boolean keepRunning);
-
- void handleStart();
-
- void handleStop();
-
- void handleDestroy();
-
- /**
- * Send JavaScript statement back to JavaScript.
- *
- * Deprecated (https://issues.apache.org/jira/browse/CB-6851)
- * Instead of executing snippets of JS, you should use the exec bridge
- * to create a Java->JS communication channel.
- * To do this:
- * 1. Within plugin.xml (to have your JS run before deviceready):
- * <js-module><runs/></js-module>
- * 2. Within your .js (call exec on start-up):
- * require('cordova/channel').onCordovaReady.subscribe(function() {
- * require('cordova/exec')(win, null, 'Plugin', 'method', []);
- * function win(message) {
- * ... process message from java here ...
- * }
- * });
- * 3. Within your .java:
- * PluginResult dataResult = new PluginResult(PluginResult.Status.OK, CODE);
- * dataResult.setKeepCallback(true);
- * savedCallbackContext.sendPluginResult(dataResult);
- */
- @Deprecated
- void sendJavascript(String statememt);
-
- /**
- * Load the specified URL in the Cordova webview or a new browser instance.
- *
- * NOTE: If openExternal is false, only whitelisted URLs can be loaded.
- *
- * @param url The url to load.
- * @param openExternal Load url in browser instead of Cordova webview.
- * @param clearHistory Clear the history stack, so new page becomes top of history
- * @param params Parameters for new app
- */
- void showWebPage(String url, boolean openExternal, boolean clearHistory, Map<String, Object> params);
-
- /**
- * Deprecated in 4.0.0. Use your own View-toggling logic.
- */
- @Deprecated
- boolean isCustomViewShowing();
-
- /**
- * Deprecated in 4.0.0. Use your own View-toggling logic.
- */
- @Deprecated
- void showCustomView(View view, CustomViewCallback callback);
-
- /**
- * Deprecated in 4.0.0. Use your own View-toggling logic.
- */
- @Deprecated
- void hideCustomView();
-
- CordovaResourceApi getResourceApi();
-
- void setButtonPlumbedToJs(int keyCode, boolean override);
- boolean isButtonPlumbedToJs(int keyCode);
-
- void sendPluginResult(PluginResult cr, String callbackId);
-
- PluginManager getPluginManager();
- CordovaWebViewEngine getEngine();
- CordovaPreferences getPreferences();
- ICordovaCookieManager getCookieManager();
-
- String getUrl();
-
- // TODO: Work on deleting these by removing refs from plugins.
- Context getContext();
- void loadUrl(String url);
- Object postMessage(String id, Object data);
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewEngine.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewEngine.java
deleted file mode 100644
index c8e5a55d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewEngine.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.view.KeyEvent;
-import android.view.View;
-import android.webkit.ValueCallback;
-
-/**
- * Interface for all Cordova engines.
- * No methods will be added to this class (in order to be compatible with existing engines).
- * Instead, we will create a new interface: e.g. CordovaWebViewEngineV2
- */
-public interface CordovaWebViewEngine {
- void init(CordovaWebView parentWebView, CordovaInterface cordova, Client client,
- CordovaResourceApi resourceApi, PluginManager pluginManager,
- NativeToJsMessageQueue nativeToJsMessageQueue);
-
- CordovaWebView getCordovaWebView();
- ICordovaCookieManager getCookieManager();
- View getView();
-
- void loadUrl(String url, boolean clearNavigationStack);
-
- void stopLoading();
-
- /** Return the currently loaded URL */
- String getUrl();
-
- void clearCache();
-
- /** After calling clearHistory(), canGoBack() should be false. */
- void clearHistory();
-
- boolean canGoBack();
-
- /** Returns whether a navigation occurred */
- boolean goBack();
-
- /** Pauses / resumes the WebView's event loop. */
- void setPaused(boolean value);
-
- /** Clean up all resources associated with the WebView. */
- void destroy();
-
- /** Add the evaulate Javascript method **/
- void evaluateJavascript(String js, ValueCallback<String> callback);
-
- /**
- * Used to retrieve the associated CordovaWebView given a View without knowing the type of Engine.
- * E.g. ((CordovaWebView.EngineView)activity.findViewById(android.R.id.webView)).getCordovaWebView();
- */
- public interface EngineView {
- CordovaWebView getCordovaWebView();
- }
-
- /**
- * Contains methods that an engine uses to communicate with the parent CordovaWebView.
- * Methods may be added in future cordova versions, but never removed.
- */
- public interface Client {
- Boolean onDispatchKeyEvent(KeyEvent event);
- void clearLoadTimeoutTimer();
- void onPageStarted(String newUrl);
- void onReceivedError(int errorCode, String description, String failingUrl);
- void onPageFinishedLoading(String url);
- boolean onNavigationAttempt(String url);
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java
deleted file mode 100644
index 85a0b5f5..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CordovaWebViewImpl.java
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.content.Context;
-import android.content.Intent;
-import android.net.Uri;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.webkit.WebChromeClient;
-import android.widget.FrameLayout;
-
-import org.apache.cordova.engine.SystemWebViewEngine;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.lang.reflect.Constructor;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Main class for interacting with a Cordova webview. Manages plugins, events, and a CordovaWebViewEngine.
- * Class uses two-phase initialization. You must call init() before calling any other methods.
- */
-public class CordovaWebViewImpl implements CordovaWebView {
-
- public static final String TAG = "CordovaWebViewImpl";
-
- private PluginManager pluginManager;
-
- protected final CordovaWebViewEngine engine;
- private CordovaInterface cordova;
-
- // Flag to track that a loadUrl timeout occurred
- private int loadUrlTimeout = 0;
-
- private CordovaResourceApi resourceApi;
- private CordovaPreferences preferences;
- private CoreAndroid appPlugin;
- private NativeToJsMessageQueue nativeToJsMessageQueue;
- private EngineClient engineClient = new EngineClient();
- private boolean hasPausedEver;
-
- // The URL passed to loadUrl(), not necessarily the URL of the current page.
- String loadedUrl;
-
- /** custom view created by the browser (a video player for example) */
- private View mCustomView;
- private WebChromeClient.CustomViewCallback mCustomViewCallback;
-
- private Set<Integer> boundKeyCodes = new HashSet<Integer>();
-
- public static CordovaWebViewEngine createEngine(Context context, CordovaPreferences preferences) {
- String className = preferences.getString("webview", SystemWebViewEngine.class.getCanonicalName());
- try {
- Class<?> webViewClass = Class.forName(className);
- Constructor<?> constructor = webViewClass.getConstructor(Context.class, CordovaPreferences.class);
- return (CordovaWebViewEngine) constructor.newInstance(context, preferences);
- } catch (Exception e) {
- throw new RuntimeException("Failed to create webview. ", e);
- }
- }
-
- public CordovaWebViewImpl(CordovaWebViewEngine cordovaWebViewEngine) {
- this.engine = cordovaWebViewEngine;
- }
-
- // Convenience method for when creating programmatically (not from Config.xml).
- public void init(CordovaInterface cordova) {
- init(cordova, new ArrayList<PluginEntry>(), new CordovaPreferences());
- }
-
- @Override
- public void init(CordovaInterface cordova, List<PluginEntry> pluginEntries, CordovaPreferences preferences) {
- if (this.cordova != null) {
- throw new IllegalStateException();
- }
- this.cordova = cordova;
- this.preferences = preferences;
- pluginManager = new PluginManager(this, this.cordova, pluginEntries);
- resourceApi = new CordovaResourceApi(engine.getView().getContext(), pluginManager);
- nativeToJsMessageQueue = new NativeToJsMessageQueue();
- nativeToJsMessageQueue.addBridgeMode(new NativeToJsMessageQueue.NoOpBridgeMode());
- nativeToJsMessageQueue.addBridgeMode(new NativeToJsMessageQueue.LoadUrlBridgeMode(engine, cordova));
-
- if (preferences.getBoolean("DisallowOverscroll", false)) {
- engine.getView().setOverScrollMode(View.OVER_SCROLL_NEVER);
- }
- engine.init(this, cordova, engineClient, resourceApi, pluginManager, nativeToJsMessageQueue);
- // This isn't enforced by the compiler, so assert here.
- assert engine.getView() instanceof CordovaWebViewEngine.EngineView;
-
- pluginManager.addService(CoreAndroid.PLUGIN_NAME, "org.apache.cordova.CoreAndroid");
- pluginManager.init();
-
- }
-
- @Override
- public boolean isInitialized() {
- return cordova != null;
- }
-
- @Override
- public void loadUrlIntoView(final String url, boolean recreatePlugins) {
- LOG.d(TAG, ">>> loadUrl(" + url + ")");
- if (url.equals("about:blank") || url.startsWith("javascript:")) {
- engine.loadUrl(url, false);
- return;
- }
-
- recreatePlugins = recreatePlugins || (loadedUrl == null);
-
- if (recreatePlugins) {
- // Don't re-initialize on first load.
- if (loadedUrl != null) {
- appPlugin = null;
- pluginManager.init();
- }
- loadedUrl = url;
- }
-
- // Create a timeout timer for loadUrl
- final int currentLoadUrlTimeout = loadUrlTimeout;
- final int loadUrlTimeoutValue = preferences.getInteger("LoadUrlTimeoutValue", 20000);
-
- // Timeout error method
- final Runnable loadError = new Runnable() {
- public void run() {
- stopLoading();
- LOG.e(TAG, "CordovaWebView: TIMEOUT ERROR!");
-
- // Handle other errors by passing them to the webview in JS
- JSONObject data = new JSONObject();
- try {
- data.put("errorCode", -6);
- data.put("description", "The connection to the server was unsuccessful.");
- data.put("url", url);
- } catch (JSONException e) {
- // Will never happen.
- }
- pluginManager.postMessage("onReceivedError", data);
- }
- };
-
- // Timeout timer method
- final Runnable timeoutCheck = new Runnable() {
- public void run() {
- try {
- synchronized (this) {
- wait(loadUrlTimeoutValue);
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
-
- // If timeout, then stop loading and handle error
- if (loadUrlTimeout == currentLoadUrlTimeout) {
- cordova.getActivity().runOnUiThread(loadError);
- }
- }
- };
-
- final boolean _recreatePlugins = recreatePlugins;
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- if (loadUrlTimeoutValue > 0) {
- cordova.getThreadPool().execute(timeoutCheck);
- }
- engine.loadUrl(url, _recreatePlugins);
- }
- });
- }
-
-
- @Override
- public void loadUrl(String url) {
- loadUrlIntoView(url, true);
- }
-
- @Override
- public void showWebPage(String url, boolean openExternal, boolean clearHistory, Map<String, Object> params) {
- LOG.d(TAG, "showWebPage(%s, %b, %b, HashMap)", url, openExternal, clearHistory);
-
- // If clearing history
- if (clearHistory) {
- engine.clearHistory();
- }
-
- // If loading into our webview
- if (!openExternal) {
- // Make sure url is in whitelist
- if (pluginManager.shouldAllowNavigation(url)) {
- // TODO: What about params?
- // Load new URL
- loadUrlIntoView(url, true);
- } else {
- LOG.w(TAG, "showWebPage: Refusing to load URL into webview since it is not in the <allow-navigation> whitelist. URL=" + url);
- }
- }
- if (!pluginManager.shouldOpenExternalUrl(url)) {
- LOG.w(TAG, "showWebPage: Refusing to send intent for URL since it is not in the <allow-intent> whitelist. URL=" + url);
- return;
- }
- try {
- Intent intent = new Intent(Intent.ACTION_VIEW);
- // To send an intent without CATEGORY_BROWSER, a custom plugin should be used.
- intent.addCategory(Intent.CATEGORY_BROWSABLE);
- Uri uri = Uri.parse(url);
- // Omitting the MIME type for file: URLs causes "No Activity found to handle Intent".
- // Adding the MIME type to http: URLs causes them to not be handled by the downloader.
- if ("file".equals(uri.getScheme())) {
- intent.setDataAndType(uri, resourceApi.getMimeType(uri));
- } else {
- intent.setData(uri);
- }
- cordova.getActivity().startActivity(intent);
- } catch (android.content.ActivityNotFoundException e) {
- LOG.e(TAG, "Error loading url " + url, e);
- }
- }
-
- @Override
- @Deprecated
- public void showCustomView(View view, WebChromeClient.CustomViewCallback callback) {
- // This code is adapted from the original Android Browser code, licensed under the Apache License, Version 2.0
- LOG.d(TAG, "showing Custom View");
- // if a view already exists then immediately terminate the new one
- if (mCustomView != null) {
- callback.onCustomViewHidden();
- return;
- }
-
- // Store the view and its callback for later (to kill it properly)
- mCustomView = view;
- mCustomViewCallback = callback;
-
- // Add the custom view to its container.
- ViewGroup parent = (ViewGroup) engine.getView().getParent();
- parent.addView(view, new FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT,
- Gravity.CENTER));
-
- // Hide the content view.
- engine.getView().setVisibility(View.GONE);
-
- // Finally show the custom view container.
- parent.setVisibility(View.VISIBLE);
- parent.bringToFront();
- }
-
- @Override
- @Deprecated
- public void hideCustomView() {
- // This code is adapted from the original Android Browser code, licensed under the Apache License, Version 2.0
- if (mCustomView == null) return;
- LOG.d(TAG, "Hiding Custom View");
-
- // Hide the custom view.
- mCustomView.setVisibility(View.GONE);
-
- // Remove the custom view from its container.
- ViewGroup parent = (ViewGroup) engine.getView().getParent();
- parent.removeView(mCustomView);
- mCustomView = null;
- mCustomViewCallback.onCustomViewHidden();
-
- // Show the content view.
- engine.getView().setVisibility(View.VISIBLE);
- }
-
- @Override
- @Deprecated
- public boolean isCustomViewShowing() {
- return mCustomView != null;
- }
-
- @Override
- @Deprecated
- public void sendJavascript(String statement) {
- nativeToJsMessageQueue.addJavaScript(statement);
- }
-
- @Override
- public void sendPluginResult(PluginResult cr, String callbackId) {
- nativeToJsMessageQueue.addPluginResult(cr, callbackId);
- }
-
- @Override
- public PluginManager getPluginManager() {
- return pluginManager;
- }
- @Override
- public CordovaPreferences getPreferences() {
- return preferences;
- }
- @Override
- public ICordovaCookieManager getCookieManager() {
- return engine.getCookieManager();
- }
- @Override
- public CordovaResourceApi getResourceApi() {
- return resourceApi;
- }
- @Override
- public CordovaWebViewEngine getEngine() {
- return engine;
- }
- @Override
- public View getView() {
- return engine.getView();
- }
- @Override
- public Context getContext() {
- return engine.getView().getContext();
- }
-
- private void sendJavascriptEvent(String event) {
- if (appPlugin == null) {
- appPlugin = (CoreAndroid)pluginManager.getPlugin(CoreAndroid.PLUGIN_NAME);
- }
-
- if (appPlugin == null) {
- LOG.w(TAG, "Unable to fire event without existing plugin");
- return;
- }
- appPlugin.fireJavascriptEvent(event);
- }
-
- @Override
- public void setButtonPlumbedToJs(int keyCode, boolean override) {
- switch (keyCode) {
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- case KeyEvent.KEYCODE_VOLUME_UP:
- case KeyEvent.KEYCODE_BACK:
- case KeyEvent.KEYCODE_MENU:
- // TODO: Why are search and menu buttons handled separately?
- if (override) {
- boundKeyCodes.add(keyCode);
- } else {
- boundKeyCodes.remove(keyCode);
- }
- return;
- default:
- throw new IllegalArgumentException("Unsupported keycode: " + keyCode);
- }
- }
-
- @Override
- public boolean isButtonPlumbedToJs(int keyCode) {
- return boundKeyCodes.contains(keyCode);
- }
-
- @Override
- public Object postMessage(String id, Object data) {
- return pluginManager.postMessage(id, data);
- }
-
- // Engine method proxies:
- @Override
- public String getUrl() {
- return engine.getUrl();
- }
-
- @Override
- public void stopLoading() {
- // Clear timeout flag
- loadUrlTimeout++;
- }
-
- @Override
- public boolean canGoBack() {
- return engine.canGoBack();
- }
-
- @Override
- public void clearCache() {
- engine.clearCache();
- }
-
- @Override
- @Deprecated
- public void clearCache(boolean b) {
- engine.clearCache();
- }
-
- @Override
- public void clearHistory() {
- engine.clearHistory();
- }
-
- @Override
- public boolean backHistory() {
- return engine.goBack();
- }
-
- /////// LifeCycle methods ///////
- @Override
- public void onNewIntent(Intent intent) {
- if (this.pluginManager != null) {
- this.pluginManager.onNewIntent(intent);
- }
- }
- @Override
- public void handlePause(boolean keepRunning) {
- if (!isInitialized()) {
- return;
- }
- hasPausedEver = true;
- pluginManager.onPause(keepRunning);
- sendJavascriptEvent("pause");
-
- // If app doesn't want to run in background
- if (!keepRunning) {
- // Pause JavaScript timers. This affects all webviews within the app!
- engine.setPaused(true);
- }
- }
- @Override
- public void handleResume(boolean keepRunning) {
- if (!isInitialized()) {
- return;
- }
-
- // Resume JavaScript timers. This affects all webviews within the app!
- engine.setPaused(false);
- this.pluginManager.onResume(keepRunning);
-
- // In order to match the behavior of the other platforms, we only send onResume after an
- // onPause has occurred. The resume event might still be sent if the Activity was killed
- // while waiting for the result of an external Activity once the result is obtained
- if (hasPausedEver) {
- sendJavascriptEvent("resume");
- }
- }
- @Override
- public void handleStart() {
- if (!isInitialized()) {
- return;
- }
- pluginManager.onStart();
- }
- @Override
- public void handleStop() {
- if (!isInitialized()) {
- return;
- }
- pluginManager.onStop();
- }
- @Override
- public void handleDestroy() {
- if (!isInitialized()) {
- return;
- }
- // Cancel pending timeout timer.
- loadUrlTimeout++;
-
- // Forward to plugins
- this.pluginManager.onDestroy();
-
- // TODO: about:blank is a bit special (and the default URL for new frames)
- // We should use a blank data: url instead so it's more obvious
- this.loadUrl("about:blank");
-
- // TODO: Should not destroy webview until after about:blank is done loading.
- engine.destroy();
- hideCustomView();
- }
-
- protected class EngineClient implements CordovaWebViewEngine.Client {
- @Override
- public void clearLoadTimeoutTimer() {
- loadUrlTimeout++;
- }
-
- @Override
- public void onPageStarted(String newUrl) {
- LOG.d(TAG, "onPageDidNavigate(" + newUrl + ")");
- boundKeyCodes.clear();
- pluginManager.onReset();
- pluginManager.postMessage("onPageStarted", newUrl);
- }
-
- @Override
- public void onReceivedError(int errorCode, String description, String failingUrl) {
- clearLoadTimeoutTimer();
- JSONObject data = new JSONObject();
- try {
- data.put("errorCode", errorCode);
- data.put("description", description);
- data.put("url", failingUrl);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- pluginManager.postMessage("onReceivedError", data);
- }
-
- @Override
- public void onPageFinishedLoading(String url) {
- LOG.d(TAG, "onPageFinished(" + url + ")");
-
- clearLoadTimeoutTimer();
-
- // Broadcast message that page has loaded
- pluginManager.postMessage("onPageFinished", url);
-
- // Make app visible after 2 sec in case there was a JS error and Cordova JS never initialized correctly
- if (engine.getView().getVisibility() != View.VISIBLE) {
- Thread t = new Thread(new Runnable() {
- public void run() {
- try {
- Thread.sleep(2000);
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- pluginManager.postMessage("spinner", "stop");
- }
- });
- } catch (InterruptedException e) {
- }
- }
- });
- t.start();
- }
-
- // Shutdown if blank loaded
- if (url.equals("about:blank")) {
- pluginManager.postMessage("exit", null);
- }
- }
-
- @Override
- public Boolean onDispatchKeyEvent(KeyEvent event) {
- int keyCode = event.getKeyCode();
- boolean isBackButton = keyCode == KeyEvent.KEYCODE_BACK;
- if (event.getAction() == KeyEvent.ACTION_DOWN) {
- if (isBackButton && mCustomView != null) {
- return true;
- } else if (boundKeyCodes.contains(keyCode)) {
- return true;
- } else if (isBackButton) {
- return engine.canGoBack();
- }
- } else if (event.getAction() == KeyEvent.ACTION_UP) {
- if (isBackButton && mCustomView != null) {
- hideCustomView();
- return true;
- } else if (boundKeyCodes.contains(keyCode)) {
- String eventName = null;
- switch (keyCode) {
- case KeyEvent.KEYCODE_VOLUME_DOWN:
- eventName = "volumedownbutton";
- break;
- case KeyEvent.KEYCODE_VOLUME_UP:
- eventName = "volumeupbutton";
- break;
- case KeyEvent.KEYCODE_SEARCH:
- eventName = "searchbutton";
- break;
- case KeyEvent.KEYCODE_MENU:
- eventName = "menubutton";
- break;
- case KeyEvent.KEYCODE_BACK:
- eventName = "backbutton";
- break;
- }
- if (eventName != null) {
- sendJavascriptEvent(eventName);
- return true;
- }
- } else if (isBackButton) {
- return engine.goBack();
- }
- }
- return null;
- }
-
- @Override
- public boolean onNavigationAttempt(String url) {
- // Give plugins the chance to handle the url
- if (pluginManager.onOverrideUrlLoading(url)) {
- return true;
- } else if (pluginManager.shouldAllowNavigation(url)) {
- return false;
- } else if (pluginManager.shouldOpenExternalUrl(url)) {
- showWebPage(url, true, false, null);
- return true;
- }
- LOG.w(TAG, "Blocked (possibly sub-frame) navigation to non-allowed URL: " + url);
- return true;
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CoreAndroid.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CoreAndroid.java
deleted file mode 100755
index e384f8d7..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/CoreAndroid.java
+++ /dev/null
@@ -1,390 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.telephony.TelephonyManager;
-import android.view.KeyEvent;
-
-import java.lang.reflect.Field;
-import java.util.HashMap;
-
-/**
- * This class exposes methods in Cordova that can be called from JavaScript.
- */
-public class CoreAndroid extends CordovaPlugin {
-
- public static final String PLUGIN_NAME = "CoreAndroid";
- protected static final String TAG = "CordovaApp";
- private BroadcastReceiver telephonyReceiver;
- private CallbackContext messageChannel;
- private PluginResult pendingResume;
- private final Object messageChannelLock = new Object();
-
- /**
- * Send an event to be fired on the Javascript side.
- *
- * @param action The name of the event to be fired
- */
- public void fireJavascriptEvent(String action) {
- sendEventMessage(action);
- }
-
- /**
- * Sets the context of the Command. This can then be used to do things like
- * get file paths associated with the Activity.
- */
- @Override
- public void pluginInitialize() {
- this.initTelephonyReceiver();
- }
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action The action to execute.
- * @param args JSONArry of arguments for the plugin.
- * @param callbackContext The callback context from which we were invoked.
- * @return A PluginResult object with a status and message.
- */
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- PluginResult.Status status = PluginResult.Status.OK;
- String result = "";
-
- try {
- if (action.equals("clearCache")) {
- this.clearCache();
- }
- else if (action.equals("show")) {
- // This gets called from JavaScript onCordovaReady to show the webview.
- // I recommend we change the name of the Message as spinner/stop is not
- // indicative of what this actually does (shows the webview).
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.getPluginManager().postMessage("spinner", "stop");
- }
- });
- }
- else if (action.equals("loadUrl")) {
- this.loadUrl(args.getString(0), args.optJSONObject(1));
- }
- else if (action.equals("cancelLoadUrl")) {
- //this.cancelLoadUrl();
- }
- else if (action.equals("clearHistory")) {
- this.clearHistory();
- }
- else if (action.equals("backHistory")) {
- this.backHistory();
- }
- else if (action.equals("overrideButton")) {
- this.overrideButton(args.getString(0), args.getBoolean(1));
- }
- else if (action.equals("overrideBackbutton")) {
- this.overrideBackbutton(args.getBoolean(0));
- }
- else if (action.equals("exitApp")) {
- this.exitApp();
- }
- else if (action.equals("messageChannel")) {
- synchronized(messageChannelLock) {
- messageChannel = callbackContext;
- if (pendingResume != null) {
- sendEventMessage(pendingResume);
- pendingResume = null;
- }
- }
- return true;
- }
-
- callbackContext.sendPluginResult(new PluginResult(status, result));
- return true;
- } catch (JSONException e) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
- return false;
- }
- }
-
- //--------------------------------------------------------------------------
- // LOCAL METHODS
- //--------------------------------------------------------------------------
-
- /**
- * Clear the resource cache.
- */
- public void clearCache() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.clearCache(true);
- }
- });
- }
-
- /**
- * Load the url into the webview.
- *
- * @param url
- * @param props Properties that can be passed in to the Cordova activity (i.e. loadingDialog, wait, ...)
- * @throws JSONException
- */
- public void loadUrl(String url, JSONObject props) throws JSONException {
- LOG.d("App", "App.loadUrl("+url+","+props+")");
- int wait = 0;
- boolean openExternal = false;
- boolean clearHistory = false;
-
- // If there are properties, then set them on the Activity
- HashMap<String, Object> params = new HashMap<String, Object>();
- if (props != null) {
- JSONArray keys = props.names();
- for (int i = 0; i < keys.length(); i++) {
- String key = keys.getString(i);
- if (key.equals("wait")) {
- wait = props.getInt(key);
- }
- else if (key.equalsIgnoreCase("openexternal")) {
- openExternal = props.getBoolean(key);
- }
- else if (key.equalsIgnoreCase("clearhistory")) {
- clearHistory = props.getBoolean(key);
- }
- else {
- Object value = props.get(key);
- if (value == null) {
-
- }
- else if (value.getClass().equals(String.class)) {
- params.put(key, (String)value);
- }
- else if (value.getClass().equals(Boolean.class)) {
- params.put(key, (Boolean)value);
- }
- else if (value.getClass().equals(Integer.class)) {
- params.put(key, (Integer)value);
- }
- }
- }
- }
-
- // If wait property, then delay loading
-
- if (wait > 0) {
- try {
- synchronized(this) {
- this.wait(wait);
- }
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- this.webView.showWebPage(url, openExternal, clearHistory, params);
- }
-
- /**
- * Clear page history for the app.
- */
- public void clearHistory() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.clearHistory();
- }
- });
- }
-
- /**
- * Go to previous page displayed.
- * This is the same as pressing the backbutton on Android device.
- */
- public void backHistory() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.backHistory();
- }
- });
- }
-
- /**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * @param override T=override, F=cancel override
- */
- public void overrideBackbutton(boolean override) {
- LOG.i("App", "WARNING: Back Button Default Behavior will be overridden. The backbutton event will be fired!");
- webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_BACK, override);
- }
-
- /**
- * Override the default behavior of the Android volume buttons.
- * If overridden, when the volume button is pressed, the "volume[up|down]button" JavaScript event will be fired.
- *
- * @param button volumeup, volumedown
- * @param override T=override, F=cancel override
- */
- public void overrideButton(String button, boolean override) {
- LOG.i("App", "WARNING: Volume Button Default Behavior will be overridden. The volume event will be fired!");
- if (button.equals("volumeup")) {
- webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_UP, override);
- }
- else if (button.equals("volumedown")) {
- webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_VOLUME_DOWN, override);
- }
- else if (button.equals("menubutton")) {
- webView.setButtonPlumbedToJs(KeyEvent.KEYCODE_MENU, override);
- }
- }
-
- /**
- * Return whether the Android back button is overridden by the user.
- *
- * @return boolean
- */
- public boolean isBackbuttonOverridden() {
- return webView.isButtonPlumbedToJs(KeyEvent.KEYCODE_BACK);
- }
-
- /**
- * Exit the Android application.
- */
- public void exitApp() {
- this.webView.getPluginManager().postMessage("exit", null);
- }
-
-
- /**
- * Listen for telephony events: RINGING, OFFHOOK and IDLE
- * Send these events to all plugins using
- * CordovaActivity.onMessage("telephone", "ringing" | "offhook" | "idle")
- */
- private void initTelephonyReceiver() {
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);
- //final CordovaInterface mycordova = this.cordova;
- this.telephonyReceiver = new BroadcastReceiver() {
-
- @Override
- public void onReceive(Context context, Intent intent) {
-
- // If state has changed
- if ((intent != null) && intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
- if (intent.hasExtra(TelephonyManager.EXTRA_STATE)) {
- String extraData = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
- if (extraData.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
- LOG.i(TAG, "Telephone RINGING");
- webView.getPluginManager().postMessage("telephone", "ringing");
- }
- else if (extraData.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
- LOG.i(TAG, "Telephone OFFHOOK");
- webView.getPluginManager().postMessage("telephone", "offhook");
- }
- else if (extraData.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
- LOG.i(TAG, "Telephone IDLE");
- webView.getPluginManager().postMessage("telephone", "idle");
- }
- }
- }
- }
- };
-
- // Register the receiver
- webView.getContext().registerReceiver(this.telephonyReceiver, intentFilter);
- }
-
- private void sendEventMessage(String action) {
- JSONObject obj = new JSONObject();
- try {
- obj.put("action", action);
- } catch (JSONException e) {
- LOG.e(TAG, "Failed to create event message", e);
- }
- sendEventMessage(new PluginResult(PluginResult.Status.OK, obj));
- }
-
- private void sendEventMessage(PluginResult payload) {
- payload.setKeepCallback(true);
- if (messageChannel != null) {
- messageChannel.sendPluginResult(payload);
- }
- }
-
- /*
- * Unregister the receiver
- *
- */
- public void onDestroy()
- {
- webView.getContext().unregisterReceiver(this.telephonyReceiver);
- }
-
- /**
- * Used to send the resume event in the case that the Activity is destroyed by the OS
- *
- * @param resumeEvent PluginResult containing the payload for the resume event to be fired
- */
- public void sendResumeEvent(PluginResult resumeEvent) {
- // This operation must be synchronized because plugin results that trigger resume
- // events can be processed asynchronously
- synchronized(messageChannelLock) {
- if (messageChannel != null) {
- sendEventMessage(resumeEvent);
- } else {
- // Might get called before the page loads, so we need to store it until the
- // messageChannel gets created
- this.pendingResume = resumeEvent;
- }
- }
- }
-
- /*
- * This needs to be implemented if you wish to use the Camera Plugin or other plugins
- * that read the Build Configuration.
- *
- * Thanks to Phil@Medtronic and Graham Borland for finding the answer and posting it to
- * StackOverflow. This is annoying as hell!
- *
- */
-
- public static Object getBuildConfigValue(Context ctx, String key)
- {
- try
- {
- Class<?> clazz = Class.forName(ctx.getPackageName() + ".BuildConfig");
- Field field = clazz.getField(key);
- return field.get(null);
- } catch (ClassNotFoundException e) {
- LOG.d(TAG, "Unable to get the BuildConfig, is this built with ANT?");
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- LOG.d(TAG, key + " is not a valid field. Check your build.gradle");
- } catch (IllegalAccessException e) {
- LOG.d(TAG, "Illegal Access Exception: Let's print a stack trace.");
- e.printStackTrace();
- }
-
- return null;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java
deleted file mode 100644
index acc65c6f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ExposedJsApi.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-import org.json.JSONException;
-
-/*
- * Any exposed Javascript API MUST implement these three things!
- */
-public interface ExposedJsApi {
- public String exec(int bridgeSecret, String service, String action, String callbackId, String arguments) throws JSONException, IllegalAccessException;
- public void setNativeToJsBridgeMode(int bridgeSecret, int value) throws IllegalAccessException;
- public String retrieveJsMessages(int bridgeSecret, boolean fromOnlineEvent) throws IllegalAccessException;
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaClientCertRequest.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaClientCertRequest.java
deleted file mode 100644
index 455d2f9d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaClientCertRequest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.security.Principal;
-import java.security.PrivateKey;
-import java.security.cert.X509Certificate;
-
-/**
- * Specifies interface for handling certificate requests.
- */
-public interface ICordovaClientCertRequest {
- /**
- * Cancel this request
- */
- public void cancel();
-
- /*
- * Returns the host name of the server requesting the certificate.
- */
- public String getHost();
-
- /*
- * Returns the acceptable types of asymmetric keys (can be null).
- */
- public String[] getKeyTypes();
-
- /*
- * Returns the port number of the server requesting the certificate.
- */
- public int getPort();
-
- /*
- * Returns the acceptable certificate issuers for the certificate matching the private key (can be null).
- */
- public Principal[] getPrincipals();
-
- /*
- * Ignore the request for now. Do not remember user's choice.
- */
- public void ignore();
-
- /*
- * Proceed with the specified private key and client certificate chain. Remember the user's positive choice and use it for future requests.
- *
- * @param privateKey The privateKey
- * @param chain The certificate chain
- */
- public void proceed(PrivateKey privateKey, X509Certificate[] chain);
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaCookieManager.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaCookieManager.java
deleted file mode 100644
index e776194f..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaCookieManager.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-public interface ICordovaCookieManager {
-
- public void setCookiesEnabled(boolean accept);
-
- public void setCookie(final String url, final String value);
-
- public String getCookie(final String url);
-
- public void clearCookies();
-
- public void flush();
-};
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaHttpAuthHandler.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaHttpAuthHandler.java
deleted file mode 100644
index c55818ac..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ICordovaHttpAuthHandler.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-/**
- * Specifies interface for HTTP auth handler object which is used to handle auth requests and
- * specifying user credentials.
- */
- public interface ICordovaHttpAuthHandler {
- /**
- * Instructs the WebView to cancel the authentication request.
- */
- public void cancel ();
-
- /**
- * Instructs the WebView to proceed with the authentication with the given credentials.
- *
- * @param username The user name
- * @param password The password
- */
- public void proceed (String username, String password);
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/LOG.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/LOG.java
deleted file mode 100755
index 9fe7a7df..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/LOG.java
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import android.util.Log;
-
-/**
- * Log to Android logging system.
- *
- * Log message can be a string or a printf formatted string with arguments.
- * See http://developer.android.com/reference/java/util/Formatter.html
- */
-public class LOG {
-
- public static final int VERBOSE = Log.VERBOSE;
- public static final int DEBUG = Log.DEBUG;
- public static final int INFO = Log.INFO;
- public static final int WARN = Log.WARN;
- public static final int ERROR = Log.ERROR;
-
- // Current log level
- public static int LOGLEVEL = Log.ERROR;
-
- /**
- * Set the current log level.
- *
- * @param logLevel
- */
- public static void setLogLevel(int logLevel) {
- LOGLEVEL = logLevel;
- Log.i("CordovaLog", "Changing log level to " + logLevel);
- }
-
- /**
- * Set the current log level.
- *
- * @param logLevel
- */
- public static void setLogLevel(String logLevel) {
- if ("VERBOSE".equals(logLevel)) LOGLEVEL = VERBOSE;
- else if ("DEBUG".equals(logLevel)) LOGLEVEL = DEBUG;
- else if ("INFO".equals(logLevel)) LOGLEVEL = INFO;
- else if ("WARN".equals(logLevel)) LOGLEVEL = WARN;
- else if ("ERROR".equals(logLevel)) LOGLEVEL = ERROR;
- Log.i("CordovaLog", "Changing log level to " + logLevel + "(" + LOGLEVEL + ")");
- }
-
- /**
- * Determine if log level will be logged
- *
- * @param logLevel
- * @return true if the parameter passed in is greater than or equal to the current log level
- */
- public static boolean isLoggable(int logLevel) {
- return (logLevel >= LOGLEVEL);
- }
-
- /**
- * Verbose log message.
- *
- * @param tag
- * @param s
- */
- public static void v(String tag, String s) {
- if (LOG.VERBOSE >= LOGLEVEL) Log.v(tag, s);
- }
-
- /**
- * Debug log message.
- *
- * @param tag
- * @param s
- */
- public static void d(String tag, String s) {
- if (LOG.DEBUG >= LOGLEVEL) Log.d(tag, s);
- }
-
- /**
- * Info log message.
- *
- * @param tag
- * @param s
- */
- public static void i(String tag, String s) {
- if (LOG.INFO >= LOGLEVEL) Log.i(tag, s);
- }
-
- /**
- * Warning log message.
- *
- * @param tag
- * @param s
- */
- public static void w(String tag, String s) {
- if (LOG.WARN >= LOGLEVEL) Log.w(tag, s);
- }
-
- /**
- * Error log message.
- *
- * @param tag
- * @param s
- */
- public static void e(String tag, String s) {
- if (LOG.ERROR >= LOGLEVEL) Log.e(tag, s);
- }
-
- /**
- * Verbose log message.
- *
- * @param tag
- * @param s
- * @param e
- */
- public static void v(String tag, String s, Throwable e) {
- if (LOG.VERBOSE >= LOGLEVEL) Log.v(tag, s, e);
- }
-
- /**
- * Debug log message.
- *
- * @param tag
- * @param s
- * @param e
- */
- public static void d(String tag, String s, Throwable e) {
- if (LOG.DEBUG >= LOGLEVEL) Log.d(tag, s, e);
- }
-
- /**
- * Info log message.
- *
- * @param tag
- * @param s
- * @param e
- */
- public static void i(String tag, String s, Throwable e) {
- if (LOG.INFO >= LOGLEVEL) Log.i(tag, s, e);
- }
-
- /**
- * Warning log message.
- *
- * @param tag
- * @param e
- */
- public static void w(String tag, Throwable e) {
- if (LOG.WARN >= LOGLEVEL) Log.w(tag, e);
- }
-
- /**
- * Warning log message.
- *
- * @param tag
- * @param s
- * @param e
- */
- public static void w(String tag, String s, Throwable e) {
- if (LOG.WARN >= LOGLEVEL) Log.w(tag, s, e);
- }
-
- /**
- * Error log message.
- *
- * @param tag
- * @param s
- * @param e
- */
- public static void e(String tag, String s, Throwable e) {
- if (LOG.ERROR >= LOGLEVEL) Log.e(tag, s, e);
- }
-
- /**
- * Verbose log message with printf formatting.
- *
- * @param tag
- * @param s
- * @param args
- */
- public static void v(String tag, String s, Object... args) {
- if (LOG.VERBOSE >= LOGLEVEL) Log.v(tag, String.format(s, args));
- }
-
- /**
- * Debug log message with printf formatting.
- *
- * @param tag
- * @param s
- * @param args
- */
- public static void d(String tag, String s, Object... args) {
- if (LOG.DEBUG >= LOGLEVEL) Log.d(tag, String.format(s, args));
- }
-
- /**
- * Info log message with printf formatting.
- *
- * @param tag
- * @param s
- * @param args
- */
- public static void i(String tag, String s, Object... args) {
- if (LOG.INFO >= LOGLEVEL) Log.i(tag, String.format(s, args));
- }
-
- /**
- * Warning log message with printf formatting.
- *
- * @param tag
- * @param s
- * @param args
- */
- public static void w(String tag, String s, Object... args) {
- if (LOG.WARN >= LOGLEVEL) Log.w(tag, String.format(s, args));
- }
-
- /**
- * Error log message with printf formatting.
- *
- * @param tag
- * @param s
- * @param args
- */
- public static void e(String tag, String s, Object... args) {
- if (LOG.ERROR >= LOGLEVEL) Log.e(tag, String.format(s, args));
- }
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/NativeToJsMessageQueue.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/NativeToJsMessageQueue.java
deleted file mode 100755
index a8f59fad..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/NativeToJsMessageQueue.java
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-
-/**
- * Holds the list of messages to be sent to the WebView.
- */
-public class NativeToJsMessageQueue {
- private static final String LOG_TAG = "JsMessageQueue";
-
- // Set this to true to force plugin results to be encoding as
- // JS instead of the custom format (useful for benchmarking).
- // Doesn't work for multipart messages.
- private static final boolean FORCE_ENCODE_USING_EVAL = false;
-
- // Disable sending back native->JS messages during an exec() when the active
- // exec() is asynchronous. Set this to true when running bridge benchmarks.
- static final boolean DISABLE_EXEC_CHAINING = false;
-
- // Arbitrarily chosen upper limit for how much data to send to JS in one shot.
- // This currently only chops up on message boundaries. It may be useful
- // to allow it to break up messages.
- private static int MAX_PAYLOAD_SIZE = 50 * 1024 * 10240;
-
- /**
- * When true, the active listener is not fired upon enqueue. When set to false,
- * the active listener will be fired if the queue is non-empty.
- */
- private boolean paused;
-
- /**
- * The list of JavaScript statements to be sent to JavaScript.
- */
- private final LinkedList<JsMessage> queue = new LinkedList<JsMessage>();
-
- /**
- * The array of listeners that can be used to send messages to JS.
- */
- private ArrayList<BridgeMode> bridgeModes = new ArrayList<BridgeMode>();
-
- /**
- * When null, the bridge is disabled. This occurs during page transitions.
- * When disabled, all callbacks are dropped since they are assumed to be
- * relevant to the previous page.
- */
- private BridgeMode activeBridgeMode;
-
- public void addBridgeMode(BridgeMode bridgeMode) {
- bridgeModes.add(bridgeMode);
- }
-
- public boolean isBridgeEnabled() {
- return activeBridgeMode != null;
- }
-
- public boolean isEmpty() {
- return queue.isEmpty();
- }
-
- /**
- * Changes the bridge mode.
- */
- public void setBridgeMode(int value) {
- if (value < -1 || value >= bridgeModes.size()) {
- LOG.d(LOG_TAG, "Invalid NativeToJsBridgeMode: " + value);
- } else {
- BridgeMode newMode = value < 0 ? null : bridgeModes.get(value);
- if (newMode != activeBridgeMode) {
- LOG.d(LOG_TAG, "Set native->JS mode to " + (newMode == null ? "null" : newMode.getClass().getSimpleName()));
- synchronized (this) {
- activeBridgeMode = newMode;
- if (newMode != null) {
- newMode.reset();
- if (!paused && !queue.isEmpty()) {
- newMode.onNativeToJsMessageAvailable(this);
- }
- }
- }
- }
- }
- }
-
- /**
- * Clears all messages and resets to the default bridge mode.
- */
- public void reset() {
- synchronized (this) {
- queue.clear();
- setBridgeMode(-1);
- }
- }
-
- private int calculatePackedMessageLength(JsMessage message) {
- int messageLen = message.calculateEncodedLength();
- String messageLenStr = String.valueOf(messageLen);
- return messageLenStr.length() + messageLen + 1;
- }
-
- private void packMessage(JsMessage message, StringBuilder sb) {
- int len = message.calculateEncodedLength();
- sb.append(len)
- .append(' ');
- message.encodeAsMessage(sb);
- }
-
- /**
- * Combines and returns queued messages combined into a single string.
- * Combines as many messages as possible, while staying under MAX_PAYLOAD_SIZE.
- * Returns null if the queue is empty.
- */
- public String popAndEncode(boolean fromOnlineEvent) {
- synchronized (this) {
- if (activeBridgeMode == null) {
- return null;
- }
- activeBridgeMode.notifyOfFlush(this, fromOnlineEvent);
- if (queue.isEmpty()) {
- return null;
- }
- int totalPayloadLen = 0;
- int numMessagesToSend = 0;
- for (JsMessage message : queue) {
- int messageSize = calculatePackedMessageLength(message);
- if (numMessagesToSend > 0 && totalPayloadLen + messageSize > MAX_PAYLOAD_SIZE && MAX_PAYLOAD_SIZE > 0) {
- break;
- }
- totalPayloadLen += messageSize;
- numMessagesToSend += 1;
- }
-
- StringBuilder sb = new StringBuilder(totalPayloadLen);
- for (int i = 0; i < numMessagesToSend; ++i) {
- JsMessage message = queue.removeFirst();
- packMessage(message, sb);
- }
-
- if (!queue.isEmpty()) {
- // Attach a char to indicate that there are more messages pending.
- sb.append('*');
- }
- String ret = sb.toString();
- return ret;
- }
- }
-
- /**
- * Same as popAndEncode(), except encodes in a form that can be executed as JS.
- */
- public String popAndEncodeAsJs() {
- synchronized (this) {
- int length = queue.size();
- if (length == 0) {
- return null;
- }
- int totalPayloadLen = 0;
- int numMessagesToSend = 0;
- for (JsMessage message : queue) {
- int messageSize = message.calculateEncodedLength() + 50; // overestimate.
- if (numMessagesToSend > 0 && totalPayloadLen + messageSize > MAX_PAYLOAD_SIZE && MAX_PAYLOAD_SIZE > 0) {
- break;
- }
- totalPayloadLen += messageSize;
- numMessagesToSend += 1;
- }
- boolean willSendAllMessages = numMessagesToSend == queue.size();
- StringBuilder sb = new StringBuilder(totalPayloadLen + (willSendAllMessages ? 0 : 100));
- // Wrap each statement in a try/finally so that if one throws it does
- // not affect the next.
- for (int i = 0; i < numMessagesToSend; ++i) {
- JsMessage message = queue.removeFirst();
- if (willSendAllMessages && (i + 1 == numMessagesToSend)) {
- message.encodeAsJsMessage(sb);
- } else {
- sb.append("try{");
- message.encodeAsJsMessage(sb);
- sb.append("}finally{");
- }
- }
- if (!willSendAllMessages) {
- sb.append("window.setTimeout(function(){cordova.require('cordova/plugin/android/polling').pollOnce();},0);");
- }
- for (int i = willSendAllMessages ? 1 : 0; i < numMessagesToSend; ++i) {
- sb.append('}');
- }
- String ret = sb.toString();
- return ret;
- }
- }
-
- /**
- * Add a JavaScript statement to the list.
- */
- public void addJavaScript(String statement) {
- enqueueMessage(new JsMessage(statement));
- }
-
- /**
- * Add a JavaScript statement to the list.
- */
- public void addPluginResult(PluginResult result, String callbackId) {
- if (callbackId == null) {
- LOG.e(LOG_TAG, "Got plugin result with no callbackId", new Throwable());
- return;
- }
- // Don't send anything if there is no result and there is no need to
- // clear the callbacks.
- boolean noResult = result.getStatus() == PluginResult.Status.NO_RESULT.ordinal();
- boolean keepCallback = result.getKeepCallback();
- if (noResult && keepCallback) {
- return;
- }
- JsMessage message = new JsMessage(result, callbackId);
- if (FORCE_ENCODE_USING_EVAL) {
- StringBuilder sb = new StringBuilder(message.calculateEncodedLength() + 50);
- message.encodeAsJsMessage(sb);
- message = new JsMessage(sb.toString());
- }
-
- enqueueMessage(message);
- }
-
- private void enqueueMessage(JsMessage message) {
- synchronized (this) {
- if (activeBridgeMode == null) {
- LOG.d(LOG_TAG, "Dropping Native->JS message due to disabled bridge");
- return;
- }
- queue.add(message);
- if (!paused) {
- activeBridgeMode.onNativeToJsMessageAvailable(this);
- }
- }
- }
-
- public void setPaused(boolean value) {
- if (paused && value) {
- // This should never happen. If a use-case for it comes up, we should
- // change pause to be a counter.
- LOG.e(LOG_TAG, "nested call to setPaused detected.", new Throwable());
- }
- paused = value;
- if (!value) {
- synchronized (this) {
- if (!queue.isEmpty() && activeBridgeMode != null) {
- activeBridgeMode.onNativeToJsMessageAvailable(this);
- }
- }
- }
- }
-
- public static abstract class BridgeMode {
- public abstract void onNativeToJsMessageAvailable(NativeToJsMessageQueue queue);
- public void notifyOfFlush(NativeToJsMessageQueue queue, boolean fromOnlineEvent) {}
- public void reset() {}
- }
-
- /** Uses JS polls for messages on a timer.. */
- public static class NoOpBridgeMode extends BridgeMode {
- @Override public void onNativeToJsMessageAvailable(NativeToJsMessageQueue queue) {
- }
- }
-
- /** Uses webView.loadUrl("javascript:") to execute messages. */
- public static class LoadUrlBridgeMode extends BridgeMode {
- private final CordovaWebViewEngine engine;
- private final CordovaInterface cordova;
-
- public LoadUrlBridgeMode(CordovaWebViewEngine engine, CordovaInterface cordova) {
- this.engine = engine;
- this.cordova = cordova;
- }
-
- @Override
- public void onNativeToJsMessageAvailable(final NativeToJsMessageQueue queue) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- String js = queue.popAndEncodeAsJs();
- if (js != null) {
- engine.loadUrl("javascript:" + js, false);
- }
- }
- });
- }
- }
-
- /** Uses online/offline events to tell the JS when to poll for messages. */
- public static class OnlineEventsBridgeMode extends BridgeMode {
- private final OnlineEventsBridgeModeDelegate delegate;
- private boolean online;
- private boolean ignoreNextFlush;
-
- public interface OnlineEventsBridgeModeDelegate {
- void setNetworkAvailable(boolean value);
- void runOnUiThread(Runnable r);
- }
-
- public OnlineEventsBridgeMode(OnlineEventsBridgeModeDelegate delegate) {
- this.delegate = delegate;
- }
-
- @Override
- public void reset() {
- delegate.runOnUiThread(new Runnable() {
- public void run() {
- online = false;
- // If the following call triggers a notifyOfFlush, then ignore it.
- ignoreNextFlush = true;
- delegate.setNetworkAvailable(true);
- }
- });
- }
-
- @Override
- public void onNativeToJsMessageAvailable(final NativeToJsMessageQueue queue) {
- delegate.runOnUiThread(new Runnable() {
- public void run() {
- if (!queue.isEmpty()) {
- ignoreNextFlush = false;
- delegate.setNetworkAvailable(online);
- }
- }
- });
- }
- // Track when online/offline events are fired so that we don't fire excess events.
- @Override
- public void notifyOfFlush(final NativeToJsMessageQueue queue, boolean fromOnlineEvent) {
- if (fromOnlineEvent && !ignoreNextFlush) {
- online = !online;
- }
- }
- }
-
- /** Uses webView.evaluateJavascript to execute messages. */
- public static class EvalBridgeMode extends BridgeMode {
- private final CordovaWebViewEngine engine;
- private final CordovaInterface cordova;
-
- public EvalBridgeMode(CordovaWebViewEngine engine, CordovaInterface cordova) {
- this.engine = engine;
- this.cordova = cordova;
- }
-
- @Override
- public void onNativeToJsMessageAvailable(final NativeToJsMessageQueue queue) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- String js = queue.popAndEncodeAsJs();
- if (js != null) {
- engine.evaluateJavascript(js, null);
- }
- }
- });
- }
- }
-
-
-
- private static class JsMessage {
- final String jsPayloadOrCallbackId;
- final PluginResult pluginResult;
- JsMessage(String js) {
- if (js == null) {
- throw new NullPointerException();
- }
- jsPayloadOrCallbackId = js;
- pluginResult = null;
- }
- JsMessage(PluginResult pluginResult, String callbackId) {
- if (callbackId == null || pluginResult == null) {
- throw new NullPointerException();
- }
- jsPayloadOrCallbackId = callbackId;
- this.pluginResult = pluginResult;
- }
-
- static int calculateEncodedLengthHelper(PluginResult pluginResult) {
- switch (pluginResult.getMessageType()) {
- case PluginResult.MESSAGE_TYPE_BOOLEAN: // f or t
- case PluginResult.MESSAGE_TYPE_NULL: // N
- return 1;
- case PluginResult.MESSAGE_TYPE_NUMBER: // n
- return 1 + pluginResult.getMessage().length();
- case PluginResult.MESSAGE_TYPE_STRING: // s
- return 1 + pluginResult.getStrMessage().length();
- case PluginResult.MESSAGE_TYPE_BINARYSTRING:
- return 1 + pluginResult.getMessage().length();
- case PluginResult.MESSAGE_TYPE_ARRAYBUFFER:
- return 1 + pluginResult.getMessage().length();
- case PluginResult.MESSAGE_TYPE_MULTIPART:
- int ret = 1;
- for (int i = 0; i < pluginResult.getMultipartMessagesSize(); i++) {
- int length = calculateEncodedLengthHelper(pluginResult.getMultipartMessage(i));
- int argLength = String.valueOf(length).length();
- ret += argLength + 1 + length;
- }
- return ret;
- case PluginResult.MESSAGE_TYPE_JSON:
- default:
- return pluginResult.getMessage().length();
- }
- }
-
- int calculateEncodedLength() {
- if (pluginResult == null) {
- return jsPayloadOrCallbackId.length() + 1;
- }
- int statusLen = String.valueOf(pluginResult.getStatus()).length();
- int ret = 2 + statusLen + 1 + jsPayloadOrCallbackId.length() + 1;
- return ret + calculateEncodedLengthHelper(pluginResult);
- }
-
- static void encodeAsMessageHelper(StringBuilder sb, PluginResult pluginResult) {
- switch (pluginResult.getMessageType()) {
- case PluginResult.MESSAGE_TYPE_BOOLEAN:
- sb.append(pluginResult.getMessage().charAt(0)); // t or f.
- break;
- case PluginResult.MESSAGE_TYPE_NULL: // N
- sb.append('N');
- break;
- case PluginResult.MESSAGE_TYPE_NUMBER: // n
- sb.append('n')
- .append(pluginResult.getMessage());
- break;
- case PluginResult.MESSAGE_TYPE_STRING: // s
- sb.append('s');
- sb.append(pluginResult.getStrMessage());
- break;
- case PluginResult.MESSAGE_TYPE_BINARYSTRING: // S
- sb.append('S');
- sb.append(pluginResult.getMessage());
- break;
- case PluginResult.MESSAGE_TYPE_ARRAYBUFFER: // A
- sb.append('A');
- sb.append(pluginResult.getMessage());
- break;
- case PluginResult.MESSAGE_TYPE_MULTIPART:
- sb.append('M');
- for (int i = 0; i < pluginResult.getMultipartMessagesSize(); i++) {
- PluginResult multipartMessage = pluginResult.getMultipartMessage(i);
- sb.append(String.valueOf(calculateEncodedLengthHelper(multipartMessage)));
- sb.append(' ');
- encodeAsMessageHelper(sb, multipartMessage);
- }
- break;
- case PluginResult.MESSAGE_TYPE_JSON:
- default:
- sb.append(pluginResult.getMessage()); // [ or {
- }
- }
-
- void encodeAsMessage(StringBuilder sb) {
- if (pluginResult == null) {
- sb.append('J')
- .append(jsPayloadOrCallbackId);
- return;
- }
- int status = pluginResult.getStatus();
- boolean noResult = status == PluginResult.Status.NO_RESULT.ordinal();
- boolean resultOk = status == PluginResult.Status.OK.ordinal();
- boolean keepCallback = pluginResult.getKeepCallback();
-
- sb.append((noResult || resultOk) ? 'S' : 'F')
- .append(keepCallback ? '1' : '0')
- .append(status)
- .append(' ')
- .append(jsPayloadOrCallbackId)
- .append(' ');
-
- encodeAsMessageHelper(sb, pluginResult);
- }
-
- void buildJsMessage(StringBuilder sb) {
- switch (pluginResult.getMessageType()) {
- case PluginResult.MESSAGE_TYPE_MULTIPART:
- int size = pluginResult.getMultipartMessagesSize();
- for (int i=0; i<size; i++) {
- PluginResult subresult = pluginResult.getMultipartMessage(i);
- JsMessage submessage = new JsMessage(subresult, jsPayloadOrCallbackId);
- submessage.buildJsMessage(sb);
- if (i < (size-1)) {
- sb.append(",");
- }
- }
- break;
- case PluginResult.MESSAGE_TYPE_BINARYSTRING:
- sb.append("atob('")
- .append(pluginResult.getMessage())
- .append("')");
- break;
- case PluginResult.MESSAGE_TYPE_ARRAYBUFFER:
- sb.append("cordova.require('cordova/base64').toArrayBuffer('")
- .append(pluginResult.getMessage())
- .append("')");
- break;
- default:
- sb.append(pluginResult.getMessage());
- }
- }
-
- void encodeAsJsMessage(StringBuilder sb) {
- if (pluginResult == null) {
- sb.append(jsPayloadOrCallbackId);
- } else {
- int status = pluginResult.getStatus();
- boolean success = (status == PluginResult.Status.OK.ordinal()) || (status == PluginResult.Status.NO_RESULT.ordinal());
- sb.append("cordova.callbackFromNative('")
- .append(jsPayloadOrCallbackId)
- .append("',")
- .append(success)
- .append(",")
- .append(status)
- .append(",[");
- buildJsMessage(sb);
- sb.append("],")
- .append(pluginResult.getKeepCallback())
- .append(");");
- }
- }
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginEntry.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginEntry.java
deleted file mode 100755
index c56c453c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginEntry.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-package org.apache.cordova;
-
-import org.apache.cordova.CordovaPlugin;
-
-/**
- * This class represents a service entry object.
- */
-public final class PluginEntry {
-
- /**
- * The name of the service that this plugin implements
- */
- public final String service;
-
- /**
- * The plugin class name that implements the service.
- */
- public final String pluginClass;
-
- /**
- * The pre-instantiated plugin to use for this entry.
- */
- public final CordovaPlugin plugin;
-
- /**
- * Flag that indicates the plugin object should be created when PluginManager is initialized.
- */
- public final boolean onload;
-
- /**
- * Constructs with a CordovaPlugin already instantiated.
- */
- public PluginEntry(String service, CordovaPlugin plugin) {
- this(service, plugin.getClass().getName(), true, plugin);
- }
-
- /**
- * @param service The name of the service
- * @param pluginClass The plugin class name
- * @param onload Create plugin object when HTML page is loaded
- */
- public PluginEntry(String service, String pluginClass, boolean onload) {
- this(service, pluginClass, onload, null);
- }
-
- private PluginEntry(String service, String pluginClass, boolean onload, CordovaPlugin plugin) {
- this.service = service;
- this.pluginClass = pluginClass;
- this.onload = onload;
- this.plugin = plugin;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginManager.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginManager.java
deleted file mode 100755
index c9576a6c..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginManager.java
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-package org.apache.cordova;
-
-import java.util.Collection;
-import java.util.LinkedHashMap;
-
-import org.json.JSONException;
-
-import android.content.Intent;
-import android.content.res.Configuration;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Debug;
-
-/**
- * PluginManager is exposed to JavaScript in the Cordova WebView.
- *
- * Calling native plugin code can be done by calling PluginManager.exec(...)
- * from JavaScript.
- */
-public class PluginManager {
- private static String TAG = "PluginManager";
- private static final int SLOW_EXEC_WARNING_THRESHOLD = Debug.isDebuggerConnected() ? 60 : 16;
-
- // List of service entries
- private final LinkedHashMap<String, CordovaPlugin> pluginMap = new LinkedHashMap<String, CordovaPlugin>();
- private final LinkedHashMap<String, PluginEntry> entryMap = new LinkedHashMap<String, PluginEntry>();
-
- private final CordovaInterface ctx;
- private final CordovaWebView app;
- private boolean isInitialized;
-
- private CordovaPlugin permissionRequester;
-
- public PluginManager(CordovaWebView cordovaWebView, CordovaInterface cordova, Collection<PluginEntry> pluginEntries) {
- this.ctx = cordova;
- this.app = cordovaWebView;
- setPluginEntries(pluginEntries);
- }
-
- public Collection<PluginEntry> getPluginEntries() {
- return entryMap.values();
- }
-
- public void setPluginEntries(Collection<PluginEntry> pluginEntries) {
- if (isInitialized) {
- this.onPause(false);
- this.onDestroy();
- pluginMap.clear();
- entryMap.clear();
- }
- for (PluginEntry entry : pluginEntries) {
- addService(entry);
- }
- if (isInitialized) {
- startupPlugins();
- }
- }
-
- /**
- * Init when loading a new HTML page into webview.
- */
- public void init() {
- LOG.d(TAG, "init()");
- isInitialized = true;
- this.onPause(false);
- this.onDestroy();
- pluginMap.clear();
- this.startupPlugins();
- }
-
- /**
- * Create plugins objects that have onload set.
- */
- private void startupPlugins() {
- for (PluginEntry entry : entryMap.values()) {
- // Add a null entry to for each non-startup plugin to avoid ConcurrentModificationException
- // When iterating plugins.
- if (entry.onload) {
- getPlugin(entry.service);
- } else {
- pluginMap.put(entry.service, null);
- }
- }
- }
-
- /**
- * Receives a request for execution and fulfills it by finding the appropriate
- * Java class and calling it's execute method.
- *
- * PluginManager.exec can be used either synchronously or async. In either case, a JSON encoded
- * string is returned that will indicate if any errors have occurred when trying to find
- * or execute the class denoted by the clazz argument.
- *
- * @param service String containing the service to run
- * @param action String containing the action that the class is supposed to perform. This is
- * passed to the plugin execute method and it is up to the plugin developer
- * how to deal with it.
- * @param callbackId String containing the id of the callback that is execute in JavaScript if
- * this is an async plugin call.
- * @param rawArgs An Array literal string containing any arguments needed in the
- * plugin execute method.
- */
- public void exec(final String service, final String action, final String callbackId, final String rawArgs) {
- CordovaPlugin plugin = getPlugin(service);
- if (plugin == null) {
- LOG.d(TAG, "exec() call to unknown plugin: " + service);
- PluginResult cr = new PluginResult(PluginResult.Status.CLASS_NOT_FOUND_EXCEPTION);
- app.sendPluginResult(cr, callbackId);
- return;
- }
- CallbackContext callbackContext = new CallbackContext(callbackId, app);
- try {
- long pluginStartTime = System.currentTimeMillis();
- boolean wasValidAction = plugin.execute(action, rawArgs, callbackContext);
- long duration = System.currentTimeMillis() - pluginStartTime;
-
- if (duration > SLOW_EXEC_WARNING_THRESHOLD) {
- LOG.w(TAG, "THREAD WARNING: exec() call to " + service + "." + action + " blocked the main thread for " + duration + "ms. Plugin should use CordovaInterface.getThreadPool().");
- }
- if (!wasValidAction) {
- PluginResult cr = new PluginResult(PluginResult.Status.INVALID_ACTION);
- callbackContext.sendPluginResult(cr);
- }
- } catch (JSONException e) {
- PluginResult cr = new PluginResult(PluginResult.Status.JSON_EXCEPTION);
- callbackContext.sendPluginResult(cr);
- } catch (Exception e) {
- LOG.e(TAG, "Uncaught exception from plugin", e);
- callbackContext.error(e.getMessage());
- }
- }
-
- /**
- * Get the plugin object that implements the service.
- * If the plugin object does not already exist, then create it.
- * If the service doesn't exist, then return null.
- *
- * @param service The name of the service.
- * @return CordovaPlugin or null
- */
- public CordovaPlugin getPlugin(String service) {
- CordovaPlugin ret = pluginMap.get(service);
- if (ret == null) {
- PluginEntry pe = entryMap.get(service);
- if (pe == null) {
- return null;
- }
- if (pe.plugin != null) {
- ret = pe.plugin;
- } else {
- ret = instantiatePlugin(pe.pluginClass);
- }
- ret.privateInitialize(service, ctx, app, app.getPreferences());
- pluginMap.put(service, ret);
- }
- return ret;
- }
-
- /**
- * Add a plugin class that implements a service to the service entry table.
- * This does not create the plugin object instance.
- *
- * @param service The service name
- * @param className The plugin class name
- */
- public void addService(String service, String className) {
- PluginEntry entry = new PluginEntry(service, className, false);
- this.addService(entry);
- }
-
- /**
- * Add a plugin class that implements a service to the service entry table.
- * This does not create the plugin object instance.
- *
- * @param entry The plugin entry
- */
- public void addService(PluginEntry entry) {
- this.entryMap.put(entry.service, entry);
- if (entry.plugin != null) {
- entry.plugin.privateInitialize(entry.service, ctx, app, app.getPreferences());
- pluginMap.put(entry.service, entry.plugin);
- }
- }
-
- /**
- * Called when the system is about to start resuming a previous activity.
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- public void onPause(boolean multitasking) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onPause(multitasking);
- }
- }
- }
-
- /**
- * Called when the system received an HTTP authentication request. Plugins can use
- * the supplied HttpAuthHandler to process this auth challenge.
- *
- * @param view The WebView that is initiating the callback
- * @param handler The HttpAuthHandler used to set the WebView's response
- * @param host The host requiring authentication
- * @param realm The realm for which authentication is required
- *
- * @return Returns True if there is a plugin which will resolve this auth challenge, otherwise False
- *
- */
- public boolean onReceivedHttpAuthRequest(CordovaWebView view, ICordovaHttpAuthHandler handler, String host, String realm) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null && plugin.onReceivedHttpAuthRequest(app, handler, host, realm)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Called when he system received an SSL client certificate request. Plugin can use
- * the supplied ClientCertRequest to process this certificate challenge.
- *
- * @param view The WebView that is initiating the callback
- * @param request The client certificate request
- *
- * @return Returns True if plugin will resolve this auth challenge, otherwise False
- *
- */
- public boolean onReceivedClientCertRequest(CordovaWebView view, ICordovaClientCertRequest request) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null && plugin.onReceivedClientCertRequest(app, request)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Called when the activity will start interacting with the user.
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- public void onResume(boolean multitasking) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onResume(multitasking);
- }
- }
- }
-
- /**
- * Called when the activity is becoming visible to the user.
- */
- public void onStart() {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onStart();
- }
- }
- }
-
- /**
- * Called when the activity is no longer visible to the user.
- */
- public void onStop() {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onStop();
- }
- }
- }
-
- /**
- * The final call you receive before your activity is destroyed.
- */
- public void onDestroy() {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onDestroy();
- }
- }
- }
-
- /**
- * Send a message to all plugins.
- *
- * @param id The message id
- * @param data The message data
- * @return Object to stop propagation or null
- */
- public Object postMessage(String id, Object data) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- Object obj = plugin.onMessage(id, data);
- if (obj != null) {
- return obj;
- }
- }
- }
- return ctx.onMessage(id, data);
- }
-
- /**
- * Called when the activity receives a new intent.
- */
- public void onNewIntent(Intent intent) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onNewIntent(intent);
- }
- }
- }
-
- /**
- * Called when the webview is going to request an external resource.
- *
- * This delegates to the installed plugins, and returns true/false for the
- * first plugin to provide a non-null result. If no plugins respond, then
- * the default policy is applied.
- *
- * @param url The URL that is being requested.
- * @return Returns true to allow the resource to load,
- * false to block the resource.
- */
- public boolean shouldAllowRequest(String url) {
- for (PluginEntry entry : this.entryMap.values()) {
- CordovaPlugin plugin = pluginMap.get(entry.service);
- if (plugin != null) {
- Boolean result = plugin.shouldAllowRequest(url);
- if (result != null) {
- return result;
- }
- }
- }
-
- // Default policy:
- if (url.startsWith("blob:") || url.startsWith("data:") || url.startsWith("about:blank")) {
- return true;
- }
- // TalkBack requires this, so allow it by default.
- if (url.startsWith("https://ssl.gstatic.com/accessibility/javascript/android/")) {
- return true;
- }
- if (url.startsWith("file://")) {
- //This directory on WebKit/Blink based webviews contains SQLite databases!
- //DON'T CHANGE THIS UNLESS YOU KNOW WHAT YOU'RE DOING!
- return !url.contains("/app_webview/");
- }
- return false;
- }
-
- /**
- * Called when the webview is going to change the URL of the loaded content.
- *
- * This delegates to the installed plugins, and returns true/false for the
- * first plugin to provide a non-null result. If no plugins respond, then
- * the default policy is applied.
- *
- * @param url The URL that is being requested.
- * @return Returns true to allow the navigation,
- * false to block the navigation.
- */
- public boolean shouldAllowNavigation(String url) {
- for (PluginEntry entry : this.entryMap.values()) {
- CordovaPlugin plugin = pluginMap.get(entry.service);
- if (plugin != null) {
- Boolean result = plugin.shouldAllowNavigation(url);
- if (result != null) {
- return result;
- }
- }
- }
-
- // Default policy:
- return url.startsWith("file://") || url.startsWith("about:blank");
- }
-
-
- /**
- * Called when the webview is requesting the exec() bridge be enabled.
- */
- public boolean shouldAllowBridgeAccess(String url) {
- for (PluginEntry entry : this.entryMap.values()) {
- CordovaPlugin plugin = pluginMap.get(entry.service);
- if (plugin != null) {
- Boolean result = plugin.shouldAllowBridgeAccess(url);
- if (result != null) {
- return result;
- }
- }
- }
-
- // Default policy:
- return url.startsWith("file://");
- }
-
- /**
- * Called when the webview is going not going to navigate, but may launch
- * an Intent for an URL.
- *
- * This delegates to the installed plugins, and returns true/false for the
- * first plugin to provide a non-null result. If no plugins respond, then
- * the default policy is applied.
- *
- * @param url The URL that is being requested.
- * @return Returns true to allow the URL to launch an intent,
- * false to block the intent.
- */
- public Boolean shouldOpenExternalUrl(String url) {
- for (PluginEntry entry : this.entryMap.values()) {
- CordovaPlugin plugin = pluginMap.get(entry.service);
- if (plugin != null) {
- Boolean result = plugin.shouldOpenExternalUrl(url);
- if (result != null) {
- return result;
- }
- }
- }
- // Default policy:
- // External URLs are not allowed
- return false;
- }
-
- /**
- * Called when the URL of the webview changes.
- *
- * @param url The URL that is being changed to.
- * @return Return false to allow the URL to load, return true to prevent the URL from loading.
- */
- public boolean onOverrideUrlLoading(String url) {
- for (PluginEntry entry : this.entryMap.values()) {
- CordovaPlugin plugin = pluginMap.get(entry.service);
- if (plugin != null && plugin.onOverrideUrlLoading(url)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Called when the app navigates or refreshes.
- */
- public void onReset() {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onReset();
- }
- }
- }
-
- Uri remapUri(Uri uri) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- Uri ret = plugin.remapUri(uri);
- if (ret != null) {
- return ret;
- }
- }
- }
- return null;
- }
-
- /**
- * Create a plugin based on class name.
- */
- private CordovaPlugin instantiatePlugin(String className) {
- CordovaPlugin ret = null;
- try {
- Class<?> c = null;
- if ((className != null) && !("".equals(className))) {
- c = Class.forName(className);
- }
- if (c != null & CordovaPlugin.class.isAssignableFrom(c)) {
- ret = (CordovaPlugin) c.newInstance();
- }
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("Error adding plugin " + className + ".");
- }
- return ret;
- }
-
- /**
- * Called by the system when the device configuration changes while your activity is running.
- *
- * @param newConfig The new device configuration
- */
- public void onConfigurationChanged(Configuration newConfig) {
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- plugin.onConfigurationChanged(newConfig);
- }
- }
- }
-
- public Bundle onSaveInstanceState() {
- Bundle state = new Bundle();
- for (CordovaPlugin plugin : this.pluginMap.values()) {
- if (plugin != null) {
- Bundle pluginState = plugin.onSaveInstanceState();
- if(pluginState != null) {
- state.putBundle(plugin.getServiceName(), pluginState);
- }
- }
- }
- return state;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginResult.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginResult.java
deleted file mode 100644
index 2b3ac72e..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/PluginResult.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.util.List;
-
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import android.util.Base64;
-
-public class PluginResult {
- private final int status;
- private final int messageType;
- private boolean keepCallback = false;
- private String strMessage;
- private String encodedMessage;
- private List<PluginResult> multipartMessages;
-
- public PluginResult(Status status) {
- this(status, PluginResult.StatusMessages[status.ordinal()]);
- }
-
- public PluginResult(Status status, String message) {
- this.status = status.ordinal();
- this.messageType = message == null ? MESSAGE_TYPE_NULL : MESSAGE_TYPE_STRING;
- this.strMessage = message;
- }
-
- public PluginResult(Status status, JSONArray message) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_JSON;
- encodedMessage = message.toString();
- }
-
- public PluginResult(Status status, JSONObject message) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_JSON;
- encodedMessage = message.toString();
- }
-
- public PluginResult(Status status, int i) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_NUMBER;
- this.encodedMessage = ""+i;
- }
-
- public PluginResult(Status status, float f) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_NUMBER;
- this.encodedMessage = ""+f;
- }
-
- public PluginResult(Status status, boolean b) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_BOOLEAN;
- this.encodedMessage = Boolean.toString(b);
- }
-
- public PluginResult(Status status, byte[] data) {
- this(status, data, false);
- }
-
- public PluginResult(Status status, byte[] data, boolean binaryString) {
- this.status = status.ordinal();
- this.messageType = binaryString ? MESSAGE_TYPE_BINARYSTRING : MESSAGE_TYPE_ARRAYBUFFER;
- this.encodedMessage = Base64.encodeToString(data, Base64.NO_WRAP);
- }
-
- // The keepCallback and status of multipartMessages are ignored.
- public PluginResult(Status status, List<PluginResult> multipartMessages) {
- this.status = status.ordinal();
- this.messageType = MESSAGE_TYPE_MULTIPART;
- this.multipartMessages = multipartMessages;
- }
-
- public void setKeepCallback(boolean b) {
- this.keepCallback = b;
- }
-
- public int getStatus() {
- return status;
- }
-
- public int getMessageType() {
- return messageType;
- }
-
- public String getMessage() {
- if (encodedMessage == null) {
- encodedMessage = JSONObject.quote(strMessage);
- }
- return encodedMessage;
- }
-
- public int getMultipartMessagesSize() {
- return multipartMessages.size();
- }
-
- public PluginResult getMultipartMessage(int index) {
- return multipartMessages.get(index);
- }
-
- /**
- * If messageType == MESSAGE_TYPE_STRING, then returns the message string.
- * Otherwise, returns null.
- */
- public String getStrMessage() {
- return strMessage;
- }
-
- public boolean getKeepCallback() {
- return this.keepCallback;
- }
-
- @Deprecated // Use sendPluginResult instead of sendJavascript.
- public String getJSONString() {
- return "{\"status\":" + this.status + ",\"message\":" + this.getMessage() + ",\"keepCallback\":" + this.keepCallback + "}";
- }
-
- @Deprecated // Use sendPluginResult instead of sendJavascript.
- public String toCallbackString(String callbackId) {
- // If no result to be sent and keeping callback, then no need to sent back to JavaScript
- if ((status == PluginResult.Status.NO_RESULT.ordinal()) && keepCallback) {
- return null;
- }
-
- // Check the success (OK, NO_RESULT & !KEEP_CALLBACK)
- if ((status == PluginResult.Status.OK.ordinal()) || (status == PluginResult.Status.NO_RESULT.ordinal())) {
- return toSuccessCallbackString(callbackId);
- }
-
- return toErrorCallbackString(callbackId);
- }
-
- @Deprecated // Use sendPluginResult instead of sendJavascript.
- public String toSuccessCallbackString(String callbackId) {
- return "cordova.callbackSuccess('"+callbackId+"',"+this.getJSONString()+");";
- }
-
- @Deprecated // Use sendPluginResult instead of sendJavascript.
- public String toErrorCallbackString(String callbackId) {
- return "cordova.callbackError('"+callbackId+"', " + this.getJSONString()+ ");";
- }
-
- public static final int MESSAGE_TYPE_STRING = 1;
- public static final int MESSAGE_TYPE_JSON = 2;
- public static final int MESSAGE_TYPE_NUMBER = 3;
- public static final int MESSAGE_TYPE_BOOLEAN = 4;
- public static final int MESSAGE_TYPE_NULL = 5;
- public static final int MESSAGE_TYPE_ARRAYBUFFER = 6;
- // Use BINARYSTRING when your string may contain null characters.
- // This is required to work around a bug in the platform :(.
- public static final int MESSAGE_TYPE_BINARYSTRING = 7;
- public static final int MESSAGE_TYPE_MULTIPART = 8;
-
- public static String[] StatusMessages = new String[] {
- "No result",
- "OK",
- "Class not found",
- "Illegal access",
- "Instantiation error",
- "Malformed url",
- "IO error",
- "Invalid action",
- "JSON error",
- "Error"
- };
-
- public enum Status {
- NO_RESULT,
- OK,
- CLASS_NOT_FOUND_EXCEPTION,
- ILLEGAL_ACCESS_EXCEPTION,
- INSTANTIATION_EXCEPTION,
- MALFORMED_URL_EXCEPTION,
- IO_EXCEPTION,
- INVALID_ACTION,
- JSON_EXCEPTION,
- ERROR
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ResumeCallback.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ResumeCallback.java
deleted file mode 100644
index 49a43b5d..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/ResumeCallback.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class ResumeCallback extends CallbackContext {
- private final String TAG = "CordovaResumeCallback";
- private String serviceName;
- private PluginManager pluginManager;
-
- public ResumeCallback(String serviceName, PluginManager pluginManager) {
- super("resumecallback", null);
- this.serviceName = serviceName;
- this.pluginManager = pluginManager;
- }
-
- @Override
- public void sendPluginResult(PluginResult pluginResult) {
- synchronized (this) {
- if (finished) {
- LOG.w(TAG, serviceName + " attempted to send a second callback to ResumeCallback\nResult was: " + pluginResult.getMessage());
- return;
- } else {
- finished = true;
- }
- }
-
- JSONObject event = new JSONObject();
- JSONObject pluginResultObject = new JSONObject();
-
- try {
- pluginResultObject.put("pluginServiceName", this.serviceName);
- pluginResultObject.put("pluginStatus", PluginResult.StatusMessages[pluginResult.getStatus()]);
-
- event.put("action", "resume");
- event.put("pendingResult", pluginResultObject);
- } catch (JSONException e) {
- LOG.e(TAG, "Unable to create resume object for Activity Result");
- }
-
- PluginResult eventResult = new PluginResult(PluginResult.Status.OK, event);
-
- // We send a list of results to the js so that we don't have to decode
- // the PluginResult passed to this CallbackContext into JSON twice.
- // The results are combined into an event payload before the event is
- // fired on the js side of things (see platform.js)
- List<PluginResult> result = new ArrayList<PluginResult>();
- result.add(eventResult);
- result.add(pluginResult);
-
- CoreAndroid appPlugin = (CoreAndroid) pluginManager.getPlugin(CoreAndroid.PLUGIN_NAME);
- appPlugin.sendResumeEvent(new PluginResult(PluginResult.Status.OK, result));
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Whitelist.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Whitelist.java
deleted file mode 100644
index d0f823c3..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/Whitelist.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.cordova.LOG;
-
-import android.net.Uri;
-
-public class Whitelist {
- private static class URLPattern {
- public Pattern scheme;
- public Pattern host;
- public Integer port;
- public Pattern path;
-
- private String regexFromPattern(String pattern, boolean allowWildcards) {
- final String toReplace = "\\.[]{}()^$?+|";
- StringBuilder regex = new StringBuilder();
- for (int i=0; i < pattern.length(); i++) {
- char c = pattern.charAt(i);
- if (c == '*' && allowWildcards) {
- regex.append(".");
- } else if (toReplace.indexOf(c) > -1) {
- regex.append('\\');
- }
- regex.append(c);
- }
- return regex.toString();
- }
-
- public URLPattern(String scheme, String host, String port, String path) throws MalformedURLException {
- try {
- if (scheme == null || "*".equals(scheme)) {
- this.scheme = null;
- } else {
- this.scheme = Pattern.compile(regexFromPattern(scheme, false), Pattern.CASE_INSENSITIVE);
- }
- if ("*".equals(host)) {
- this.host = null;
- } else if (host.startsWith("*.")) {
- this.host = Pattern.compile("([a-z0-9.-]*\\.)?" + regexFromPattern(host.substring(2), false), Pattern.CASE_INSENSITIVE);
- } else {
- this.host = Pattern.compile(regexFromPattern(host, false), Pattern.CASE_INSENSITIVE);
- }
- if (port == null || "*".equals(port)) {
- this.port = null;
- } else {
- this.port = Integer.parseInt(port,10);
- }
- if (path == null || "/*".equals(path)) {
- this.path = null;
- } else {
- this.path = Pattern.compile(regexFromPattern(path, true));
- }
- } catch (NumberFormatException e) {
- throw new MalformedURLException("Port must be a number");
- }
- }
-
- public boolean matches(Uri uri) {
- try {
- return ((scheme == null || scheme.matcher(uri.getScheme()).matches()) &&
- (host == null || host.matcher(uri.getHost()).matches()) &&
- (port == null || port.equals(uri.getPort())) &&
- (path == null || path.matcher(uri.getPath()).matches()));
- } catch (Exception e) {
- LOG.d(TAG, e.toString());
- return false;
- }
- }
- }
-
- private ArrayList<URLPattern> whiteList;
-
- public static final String TAG = "Whitelist";
-
- public Whitelist() {
- this.whiteList = new ArrayList<URLPattern>();
- }
-
- /* Match patterns (from http://developer.chrome.com/extensions/match_patterns.html)
- *
- * <url-pattern> := <scheme>://<host><path>
- * <scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'chrome-extension'
- * <host> := '*' | '*.' <any char except '/' and '*'>+
- * <path> := '/' <any chars>
- *
- * We extend this to explicitly allow a port attached to the host, and we allow
- * the scheme to be omitted for backwards compatibility. (Also host is not required
- * to begin with a "*" or "*.".)
- */
- public void addWhiteListEntry(String origin, boolean subdomains) {
- if (whiteList != null) {
- try {
- // Unlimited access to network resources
- if (origin.compareTo("*") == 0) {
- LOG.d(TAG, "Unlimited access to network resources");
- whiteList = null;
- }
- else { // specific access
- Pattern parts = Pattern.compile("^((\\*|[A-Za-z-]+):(//)?)?(\\*|((\\*\\.)?[^*/:]+))?(:(\\d+))?(/.*)?");
- Matcher m = parts.matcher(origin);
- if (m.matches()) {
- String scheme = m.group(2);
- String host = m.group(4);
- // Special case for two urls which are allowed to have empty hosts
- if (("file".equals(scheme) || "content".equals(scheme)) && host == null) host = "*";
- String port = m.group(8);
- String path = m.group(9);
- if (scheme == null) {
- // XXX making it stupid friendly for people who forget to include protocol/SSL
- whiteList.add(new URLPattern("http", host, port, path));
- whiteList.add(new URLPattern("https", host, port, path));
- } else {
- whiteList.add(new URLPattern(scheme, host, port, path));
- }
- }
- }
- } catch (Exception e) {
- LOG.d(TAG, "Failed to add origin %s", origin);
- }
- }
- }
-
-
- /**
- * Determine if URL is in approved list of URLs to load.
- *
- * @param uri
- * @return true if wide open or whitelisted
- */
- public boolean isUrlWhiteListed(String uri) {
- // If there is no whitelist, then it's wide open
- if (whiteList == null) return true;
-
- Uri parsedUri = Uri.parse(uri);
- // Look for match in white list
- Iterator<URLPattern> pit = whiteList.iterator();
- while (pit.hasNext()) {
- URLPattern p = pit.next();
- if (p.matches(parsedUri)) {
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java
deleted file mode 100644
index acf795fa..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemCookieManager.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova.engine;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.webkit.CookieManager;
-import android.webkit.WebView;
-
-import org.apache.cordova.ICordovaCookieManager;
-
-class SystemCookieManager implements ICordovaCookieManager {
-
- protected final WebView webView;
- private final CookieManager cookieManager;
-
- //Added because lint can't see the conditional RIGHT ABOVE this
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public SystemCookieManager(WebView webview) {
- webView = webview;
- cookieManager = CookieManager.getInstance();
-
- //REALLY? Nobody has seen this UNTIL NOW?
- cookieManager.setAcceptFileSchemeCookies(true);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- cookieManager.setAcceptThirdPartyCookies(webView, true);
- }
- }
-
- public void setCookiesEnabled(boolean accept) {
- cookieManager.setAcceptCookie(accept);
- }
-
- public void setCookie(final String url, final String value) {
- cookieManager.setCookie(url, value);
- }
-
- public String getCookie(final String url) {
- return cookieManager.getCookie(url);
- }
-
- public void clearCookies() {
- cookieManager.removeAllCookie();
- }
-
- public void flush() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- cookieManager.flush();
- }
- }
-};
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemExposedJsApi.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemExposedJsApi.java
deleted file mode 100755
index 94c3d934..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemExposedJsApi.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.engine;
-
-import android.webkit.JavascriptInterface;
-
-import org.apache.cordova.CordovaBridge;
-import org.apache.cordova.ExposedJsApi;
-import org.json.JSONException;
-
-/**
- * Contains APIs that the JS can call. All functions in here should also have
- * an equivalent entry in CordovaChromeClient.java, and be added to
- * cordova-js/lib/android/plugin/android/promptbasednativeapi.js
- */
-class SystemExposedJsApi implements ExposedJsApi {
- private final CordovaBridge bridge;
-
- SystemExposedJsApi(CordovaBridge bridge) {
- this.bridge = bridge;
- }
-
- @JavascriptInterface
- public String exec(int bridgeSecret, String service, String action, String callbackId, String arguments) throws JSONException, IllegalAccessException {
- return bridge.jsExec(bridgeSecret, service, action, callbackId, arguments);
- }
-
- @JavascriptInterface
- public void setNativeToJsBridgeMode(int bridgeSecret, int value) throws IllegalAccessException {
- bridge.jsSetNativeToJsBridgeMode(bridgeSecret, value);
- }
-
- @JavascriptInterface
- public String retrieveJsMessages(int bridgeSecret, boolean fromOnlineEvent) throws IllegalAccessException {
- return bridge.jsRetrieveJsMessages(bridgeSecret, fromOnlineEvent);
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebChromeClient.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebChromeClient.java
deleted file mode 100755
index 3ea5e576..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebChromeClient.java
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.engine;
-
-import java.util.Arrays;
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.Context;
-import android.content.ActivityNotFoundException;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Build;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup.LayoutParams;
-import android.webkit.ConsoleMessage;
-import android.webkit.GeolocationPermissions.Callback;
-import android.webkit.JsPromptResult;
-import android.webkit.JsResult;
-import android.webkit.ValueCallback;
-import android.webkit.WebChromeClient;
-import android.webkit.WebStorage;
-import android.webkit.WebView;
-import android.webkit.PermissionRequest;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-
-import org.apache.cordova.CordovaDialogsHelper;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.LOG;
-
-/**
- * This class is the WebChromeClient that implements callbacks for our web view.
- * The kind of callbacks that happen here are on the chrome outside the document,
- * such as onCreateWindow(), onConsoleMessage(), onProgressChanged(), etc. Related
- * to but different than CordovaWebViewClient.
- */
-public class SystemWebChromeClient extends WebChromeClient {
-
- private static final int FILECHOOSER_RESULTCODE = 5173;
- private static final String LOG_TAG = "SystemWebChromeClient";
- private long MAX_QUOTA = 100 * 1024 * 1024;
- protected final SystemWebViewEngine parentEngine;
-
- // the video progress view
- private View mVideoProgressView;
-
- private CordovaDialogsHelper dialogsHelper;
- private Context appContext;
-
- private WebChromeClient.CustomViewCallback mCustomViewCallback;
- private View mCustomView;
-
- public SystemWebChromeClient(SystemWebViewEngine parentEngine) {
- this.parentEngine = parentEngine;
- appContext = parentEngine.webView.getContext();
- dialogsHelper = new CordovaDialogsHelper(appContext);
- }
-
- /**
- * Tell the client to display a javascript alert dialog.
- */
- @Override
- public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
- dialogsHelper.showAlert(message, new CordovaDialogsHelper.Result() {
- @Override public void gotResult(boolean success, String value) {
- if (success) {
- result.confirm();
- } else {
- result.cancel();
- }
- }
- });
- return true;
- }
-
- /**
- * Tell the client to display a confirm dialog to the user.
- */
- @Override
- public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
- dialogsHelper.showConfirm(message, new CordovaDialogsHelper.Result() {
- @Override
- public void gotResult(boolean success, String value) {
- if (success) {
- result.confirm();
- } else {
- result.cancel();
- }
- }
- });
- return true;
- }
-
- /**
- * Tell the client to display a prompt dialog to the user.
- * If the client returns true, WebView will assume that the client will
- * handle the prompt dialog and call the appropriate JsPromptResult method.
- *
- * Since we are hacking prompts for our own purposes, we should not be using them for
- * this purpose, perhaps we should hack console.log to do this instead!
- */
- @Override
- public boolean onJsPrompt(WebView view, String origin, String message, String defaultValue, final JsPromptResult result) {
- // Unlike the @JavascriptInterface bridge, this method is always called on the UI thread.
- String handledRet = parentEngine.bridge.promptOnJsPrompt(origin, message, defaultValue);
- if (handledRet != null) {
- result.confirm(handledRet);
- } else {
- dialogsHelper.showPrompt(message, defaultValue, new CordovaDialogsHelper.Result() {
- @Override
- public void gotResult(boolean success, String value) {
- if (success) {
- result.confirm(value);
- } else {
- result.cancel();
- }
- }
- });
- }
- return true;
- }
-
- /**
- * Handle database quota exceeded notification.
- */
- @Override
- public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
- long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater)
- {
- LOG.d(LOG_TAG, "onExceededDatabaseQuota estimatedSize: %d currentQuota: %d totalUsedQuota: %d", estimatedSize, currentQuota, totalUsedQuota);
- quotaUpdater.updateQuota(MAX_QUOTA);
- }
-
- // console.log in api level 7: http://developer.android.com/guide/developing/debug-tasks.html
- // Expect this to not compile in a future Android release!
- @SuppressWarnings("deprecation")
- @Override
- public void onConsoleMessage(String message, int lineNumber, String sourceID)
- {
- //This is only for Android 2.1
- if(android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.ECLAIR_MR1)
- {
- LOG.d(LOG_TAG, "%s: Line %d : %s", sourceID, lineNumber, message);
- super.onConsoleMessage(message, lineNumber, sourceID);
- }
- }
-
- @TargetApi(8)
- @Override
- public boolean onConsoleMessage(ConsoleMessage consoleMessage)
- {
- if (consoleMessage.message() != null)
- LOG.d(LOG_TAG, "%s: Line %d : %s" , consoleMessage.sourceId() , consoleMessage.lineNumber(), consoleMessage.message());
- return super.onConsoleMessage(consoleMessage);
- }
-
- @Override
- /**
- * Instructs the client to show a prompt to ask the user to set the Geolocation permission state for the specified origin.
- *
- * This also checks for the Geolocation Plugin and requests permission from the application to use Geolocation.
- *
- * @param origin
- * @param callback
- */
- public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
- super.onGeolocationPermissionsShowPrompt(origin, callback);
- callback.invoke(origin, true, false);
- //Get the plugin, it should be loaded
- CordovaPlugin geolocation = parentEngine.pluginManager.getPlugin("Geolocation");
- if(geolocation != null && !geolocation.hasPermisssion())
- {
- geolocation.requestPermissions(0);
- }
-
- }
-
- // API level 7 is required for this, see if we could lower this using something else
- @Override
- public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
- parentEngine.getCordovaWebView().showCustomView(view, callback);
- }
-
- @Override
- public void onHideCustomView() {
- parentEngine.getCordovaWebView().hideCustomView();
- }
-
- @Override
- /**
- * Ask the host application for a custom progress view to show while
- * a <video> is loading.
- * @return View The progress view.
- */
- public View getVideoLoadingProgressView() {
-
- if (mVideoProgressView == null) {
- // Create a new Loading view programmatically.
-
- // create the linear layout
- LinearLayout layout = new LinearLayout(parentEngine.getView().getContext());
- layout.setOrientation(LinearLayout.VERTICAL);
- RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
- layout.setLayoutParams(layoutParams);
- // the proress bar
- ProgressBar bar = new ProgressBar(parentEngine.getView().getContext());
- LinearLayout.LayoutParams barLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- barLayoutParams.gravity = Gravity.CENTER;
- bar.setLayoutParams(barLayoutParams);
- layout.addView(bar);
-
- mVideoProgressView = layout;
- }
- return mVideoProgressView;
- }
-
- // <input type=file> support:
- // openFileChooser() is for pre KitKat and in KitKat mr1 (it's known broken in KitKat).
- // For Lollipop, we use onShowFileChooser().
- public void openFileChooser(ValueCallback<Uri> uploadMsg) {
- this.openFileChooser(uploadMsg, "*/*");
- }
-
- public void openFileChooser( ValueCallback<Uri> uploadMsg, String acceptType ) {
- this.openFileChooser(uploadMsg, acceptType, null);
- }
-
- public void openFileChooser(final ValueCallback<Uri> uploadMsg, String acceptType, String capture)
- {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.addCategory(Intent.CATEGORY_OPENABLE);
- intent.setType("*/*");
- parentEngine.cordova.startActivityForResult(new CordovaPlugin() {
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- Uri result = intent == null || resultCode != Activity.RESULT_OK ? null : intent.getData();
- LOG.d(LOG_TAG, "Receive file chooser URL: " + result);
- uploadMsg.onReceiveValue(result);
- }
- }, intent, FILECHOOSER_RESULTCODE);
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- @Override
- public boolean onShowFileChooser(WebView webView, final ValueCallback<Uri[]> filePathsCallback, final WebChromeClient.FileChooserParams fileChooserParams) {
- Intent intent = fileChooserParams.createIntent();
- try {
- parentEngine.cordova.startActivityForResult(new CordovaPlugin() {
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- Uri[] result = WebChromeClient.FileChooserParams.parseResult(resultCode, intent);
- LOG.d(LOG_TAG, "Receive file chooser URL: " + result);
- filePathsCallback.onReceiveValue(result);
- }
- }, intent, FILECHOOSER_RESULTCODE);
- } catch (ActivityNotFoundException e) {
- LOG.w("No activity found to handle file chooser intent.", e);
- filePathsCallback.onReceiveValue(null);
- }
- return true;
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- @Override
- public void onPermissionRequest(final PermissionRequest request) {
- LOG.d(LOG_TAG, "onPermissionRequest: " + Arrays.toString(request.getResources()));
- request.grant(request.getResources());
- }
-
- public void destroyLastDialog(){
- dialogsHelper.destroyLastDialog();
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebView.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebView.java
deleted file mode 100644
index 01c2f000..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebView.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova.engine;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.KeyEvent;
-import android.webkit.WebChromeClient;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.CordovaWebViewEngine;
-
-/**
- * Custom WebView subclass that enables us to capture events needed for Cordova.
- */
-public class SystemWebView extends WebView implements CordovaWebViewEngine.EngineView {
- private SystemWebViewClient viewClient;
- SystemWebChromeClient chromeClient;
- private SystemWebViewEngine parentEngine;
- private CordovaInterface cordova;
-
- public SystemWebView(Context context) {
- this(context, null);
- }
-
- public SystemWebView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- // Package visibility to enforce that only SystemWebViewEngine should call this method.
- void init(SystemWebViewEngine parentEngine, CordovaInterface cordova) {
- this.cordova = cordova;
- this.parentEngine = parentEngine;
- if (this.viewClient == null) {
- setWebViewClient(new SystemWebViewClient(parentEngine));
- }
-
- if (this.chromeClient == null) {
- setWebChromeClient(new SystemWebChromeClient(parentEngine));
- }
- }
-
- @Override
- public CordovaWebView getCordovaWebView() {
- return parentEngine != null ? parentEngine.getCordovaWebView() : null;
- }
-
- @Override
- public void setWebViewClient(WebViewClient client) {
- viewClient = (SystemWebViewClient)client;
- super.setWebViewClient(client);
- }
-
- @Override
- public void setWebChromeClient(WebChromeClient client) {
- chromeClient = (SystemWebChromeClient)client;
- super.setWebChromeClient(client);
- }
-
- @Override
- public boolean dispatchKeyEvent(KeyEvent event) {
- Boolean ret = parentEngine.client.onDispatchKeyEvent(event);
- if (ret != null) {
- return ret.booleanValue();
- }
- return super.dispatchKeyEvent(event);
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java
deleted file mode 100755
index d1765024..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewClient.java
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.engine;
-
-import android.annotation.TargetApi;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
-import android.graphics.Bitmap;
-import android.net.Uri;
-import android.net.http.SslError;
-import android.os.Build;
-import android.webkit.ClientCertRequest;
-import android.webkit.HttpAuthHandler;
-import android.webkit.SslErrorHandler;
-import android.webkit.WebResourceResponse;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-
-import org.apache.cordova.AuthenticationToken;
-import org.apache.cordova.CordovaClientCertRequest;
-import org.apache.cordova.CordovaHttpAuthHandler;
-import org.apache.cordova.CordovaResourceApi;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginManager;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Hashtable;
-
-
-/**
- * This class is the WebViewClient that implements callbacks for our web view.
- * The kind of callbacks that happen here are regarding the rendering of the
- * document instead of the chrome surrounding it, such as onPageStarted(),
- * shouldOverrideUrlLoading(), etc. Related to but different than
- * CordovaChromeClient.
- */
-public class SystemWebViewClient extends WebViewClient {
-
- private static final String TAG = "SystemWebViewClient";
- protected final SystemWebViewEngine parentEngine;
- private boolean doClearHistory = false;
- boolean isCurrentlyLoading;
-
- /** The authorization tokens. */
- private Hashtable<String, AuthenticationToken> authenticationTokens = new Hashtable<String, AuthenticationToken>();
-
- public SystemWebViewClient(SystemWebViewEngine parentEngine) {
- this.parentEngine = parentEngine;
- }
-
- /**
- * Give the host application a chance to take over the control when a new url
- * is about to be loaded in the current WebView.
- *
- * @param view The WebView that is initiating the callback.
- * @param url The url to be loaded.
- * @return true to override, false for default behavior
- */
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- return parentEngine.client.onNavigationAttempt(url);
- }
-
- /**
- * On received http auth request.
- * The method reacts on all registered authentication tokens. There is one and only one authentication token for any host + realm combination
- */
- @Override
- public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
-
- // Get the authentication token (if specified)
- AuthenticationToken token = this.getAuthenticationToken(host, realm);
- if (token != null) {
- handler.proceed(token.getUserName(), token.getPassword());
- return;
- }
-
- // Check if there is some plugin which can resolve this auth challenge
- PluginManager pluginManager = this.parentEngine.pluginManager;
- if (pluginManager != null && pluginManager.onReceivedHttpAuthRequest(null, new CordovaHttpAuthHandler(handler), host, realm)) {
- parentEngine.client.clearLoadTimeoutTimer();
- return;
- }
-
- // By default handle 401 like we'd normally do!
- super.onReceivedHttpAuthRequest(view, handler, host, realm);
- }
-
- /**
- * On received client cert request.
- * The method forwards the request to any running plugins before using the default implementation.
- *
- * @param view
- * @param request
- */
- @Override
- @TargetApi(21)
- public void onReceivedClientCertRequest (WebView view, ClientCertRequest request)
- {
-
- // Check if there is some plugin which can resolve this certificate request
- PluginManager pluginManager = this.parentEngine.pluginManager;
- if (pluginManager != null && pluginManager.onReceivedClientCertRequest(null, new CordovaClientCertRequest(request))) {
- parentEngine.client.clearLoadTimeoutTimer();
- return;
- }
-
- // By default pass to WebViewClient
- super.onReceivedClientCertRequest(view, request);
- }
-
- /**
- * Notify the host application that a page has started loading.
- * This method is called once for each main frame load so a page with iframes or framesets will call onPageStarted
- * one time for the main frame. This also means that onPageStarted will not be called when the contents of an
- * embedded frame changes, i.e. clicking a link whose target is an iframe.
- *
- * @param view The webview initiating the callback.
- * @param url The url of the page.
- */
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- isCurrentlyLoading = true;
- // Flush stale messages & reset plugins.
- parentEngine.bridge.reset();
- parentEngine.client.onPageStarted(url);
- }
-
- /**
- * Notify the host application that a page has finished loading.
- * This method is called only for main frame. When onPageFinished() is called, the rendering picture may not be updated yet.
- *
- *
- * @param view The webview initiating the callback.
- * @param url The url of the page.
- */
- @Override
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
- // Ignore excessive calls, if url is not about:blank (CB-8317).
- if (!isCurrentlyLoading && !url.startsWith("about:")) {
- return;
- }
- isCurrentlyLoading = false;
-
- /**
- * Because of a timing issue we need to clear this history in onPageFinished as well as
- * onPageStarted. However we only want to do this if the doClearHistory boolean is set to
- * true. You see when you load a url with a # in it which is common in jQuery applications
- * onPageStared is not called. Clearing the history at that point would break jQuery apps.
- */
- if (this.doClearHistory) {
- view.clearHistory();
- this.doClearHistory = false;
- }
- parentEngine.client.onPageFinishedLoading(url);
-
- }
-
- /**
- * Report an error to the host application. These errors are unrecoverable (i.e. the main resource is unavailable).
- * The errorCode parameter corresponds to one of the ERROR_* constants.
- *
- * @param view The WebView that is initiating the callback.
- * @param errorCode The error code corresponding to an ERROR_* value.
- * @param description A String describing the error.
- * @param failingUrl The url that failed to load.
- */
- @Override
- public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
- // Ignore error due to stopLoading().
- if (!isCurrentlyLoading) {
- return;
- }
- LOG.d(TAG, "CordovaWebViewClient.onReceivedError: Error code=%s Description=%s URL=%s", errorCode, description, failingUrl);
-
- // If this is a "Protocol Not Supported" error, then revert to the previous
- // page. If there was no previous page, then punt. The application's config
- // is likely incorrect (start page set to sms: or something like that)
- if (errorCode == WebViewClient.ERROR_UNSUPPORTED_SCHEME) {
- parentEngine.client.clearLoadTimeoutTimer();
-
- if (view.canGoBack()) {
- view.goBack();
- return;
- } else {
- super.onReceivedError(view, errorCode, description, failingUrl);
- }
- }
- parentEngine.client.onReceivedError(errorCode, description, failingUrl);
- }
-
- /**
- * Notify the host application that an SSL error occurred while loading a resource.
- * The host application must call either handler.cancel() or handler.proceed().
- * Note that the decision may be retained for use in response to future SSL errors.
- * The default behavior is to cancel the load.
- *
- * @param view The WebView that is initiating the callback.
- * @param handler An SslErrorHandler object that will handle the user's response.
- * @param error The SSL error object.
- */
- @TargetApi(8)
- @Override
- public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
-
- final String packageName = parentEngine.cordova.getActivity().getPackageName();
- final PackageManager pm = parentEngine.cordova.getActivity().getPackageManager();
-
- ApplicationInfo appInfo;
- try {
- appInfo = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
- if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
- // debug = true
- handler.proceed();
- return;
- } else {
- // debug = false
- super.onReceivedSslError(view, handler, error);
- }
- } catch (NameNotFoundException e) {
- // When it doubt, lock it out!
- super.onReceivedSslError(view, handler, error);
- }
- }
-
-
- /**
- * Sets the authentication token.
- *
- * @param authenticationToken
- * @param host
- * @param realm
- */
- public void setAuthenticationToken(AuthenticationToken authenticationToken, String host, String realm) {
- if (host == null) {
- host = "";
- }
- if (realm == null) {
- realm = "";
- }
- this.authenticationTokens.put(host.concat(realm), authenticationToken);
- }
-
- /**
- * Removes the authentication token.
- *
- * @param host
- * @param realm
- *
- * @return the authentication token or null if did not exist
- */
- public AuthenticationToken removeAuthenticationToken(String host, String realm) {
- return this.authenticationTokens.remove(host.concat(realm));
- }
-
- /**
- * Gets the authentication token.
- *
- * In order it tries:
- * 1- host + realm
- * 2- host
- * 3- realm
- * 4- no host, no realm
- *
- * @param host
- * @param realm
- *
- * @return the authentication token
- */
- public AuthenticationToken getAuthenticationToken(String host, String realm) {
- AuthenticationToken token = null;
- token = this.authenticationTokens.get(host.concat(realm));
-
- if (token == null) {
- // try with just the host
- token = this.authenticationTokens.get(host);
-
- // Try the realm
- if (token == null) {
- token = this.authenticationTokens.get(realm);
- }
-
- // if no host found, just query for default
- if (token == null) {
- token = this.authenticationTokens.get("");
- }
- }
-
- return token;
- }
-
- /**
- * Clear all authentication tokens.
- */
- public void clearAuthenticationTokens() {
- this.authenticationTokens.clear();
- }
-
- @TargetApi(Build.VERSION_CODES.HONEYCOMB)
- @Override
- public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
- try {
- // Check the against the whitelist and lock out access to the WebView directory
- // Changing this will cause problems for your application
- if (!parentEngine.pluginManager.shouldAllowRequest(url)) {
- LOG.w(TAG, "URL blocked by whitelist: " + url);
- // Results in a 404.
- return new WebResourceResponse("text/plain", "UTF-8", null);
- }
-
- CordovaResourceApi resourceApi = parentEngine.resourceApi;
- Uri origUri = Uri.parse(url);
- // Allow plugins to intercept WebView requests.
- Uri remappedUri = resourceApi.remapUri(origUri);
-
- if (!origUri.equals(remappedUri) || needsSpecialsInAssetUrlFix(origUri) || needsKitKatContentUrlFix(origUri)) {
- CordovaResourceApi.OpenForReadResult result = resourceApi.openForRead(remappedUri, true);
- return new WebResourceResponse(result.mimeType, "UTF-8", result.inputStream);
- }
- // If we don't need to special-case the request, let the browser load it.
- return null;
- } catch (IOException e) {
- if (!(e instanceof FileNotFoundException)) {
- LOG.e(TAG, "Error occurred while loading a file (returning a 404).", e);
- }
- // Results in a 404.
- return new WebResourceResponse("text/plain", "UTF-8", null);
- }
- }
-
- private static boolean needsKitKatContentUrlFix(Uri uri) {
- return android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT && "content".equals(uri.getScheme());
- }
-
- private static boolean needsSpecialsInAssetUrlFix(Uri uri) {
- if (CordovaResourceApi.getUriType(uri) != CordovaResourceApi.URI_TYPE_ASSET) {
- return false;
- }
- if (uri.getQuery() != null || uri.getFragment() != null) {
- return true;
- }
-
- if (!uri.toString().contains("%")) {
- return false;
- }
-
- switch(android.os.Build.VERSION.SDK_INT){
- case android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH:
- case android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1:
- return true;
- }
- return false;
- }
-}
diff --git a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java b/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java
deleted file mode 100755
index 3be7d940..00000000
--- a/StoneIsland/platforms/android/CordovaLib/src/org/apache/cordova/engine/SystemWebViewEngine.java
+++ /dev/null
@@ -1,355 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova.engine;
-
-import android.annotation.SuppressLint;
-import android.annotation.TargetApi;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.ApplicationInfo;
-import android.os.Build;
-import android.view.View;
-import android.webkit.ValueCallback;
-import android.webkit.WebSettings;
-import android.webkit.WebSettings.LayoutAlgorithm;
-import android.webkit.WebView;
-
-import org.apache.cordova.CordovaBridge;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPreferences;
-import org.apache.cordova.CordovaResourceApi;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.CordovaWebViewEngine;
-import org.apache.cordova.ICordovaCookieManager;
-import org.apache.cordova.LOG;
-import org.apache.cordova.NativeToJsMessageQueue;
-import org.apache.cordova.PluginManager;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-
-/**
- * Glue class between CordovaWebView (main Cordova logic) and SystemWebView (the actual View).
- * We make the Engine separate from the actual View so that:
- * A) We don't need to worry about WebView methods clashing with CordovaWebViewEngine methods
- * (e.g.: goBack() is void for WebView, and boolean for CordovaWebViewEngine)
- * B) Separating the actual View from the Engine makes API surfaces smaller.
- * Class uses two-phase initialization. However, CordovaWebView is responsible for calling .init().
- */
-public class SystemWebViewEngine implements CordovaWebViewEngine {
- public static final String TAG = "SystemWebViewEngine";
-
- protected final SystemWebView webView;
- protected final SystemCookieManager cookieManager;
- protected CordovaPreferences preferences;
- protected CordovaBridge bridge;
- protected CordovaWebViewEngine.Client client;
- protected CordovaWebView parentWebView;
- protected CordovaInterface cordova;
- protected PluginManager pluginManager;
- protected CordovaResourceApi resourceApi;
- protected NativeToJsMessageQueue nativeToJsMessageQueue;
- private BroadcastReceiver receiver;
-
- /** Used when created via reflection. */
- public SystemWebViewEngine(Context context, CordovaPreferences preferences) {
- this(new SystemWebView(context), preferences);
- }
-
- public SystemWebViewEngine(SystemWebView webView) {
- this(webView, null);
- }
-
- public SystemWebViewEngine(SystemWebView webView, CordovaPreferences preferences) {
- this.preferences = preferences;
- this.webView = webView;
- cookieManager = new SystemCookieManager(webView);
- }
-
- @Override
- public void init(CordovaWebView parentWebView, CordovaInterface cordova, CordovaWebViewEngine.Client client,
- CordovaResourceApi resourceApi, PluginManager pluginManager,
- NativeToJsMessageQueue nativeToJsMessageQueue) {
- if (this.cordova != null) {
- throw new IllegalStateException();
- }
- // Needed when prefs are not passed by the constructor
- if (preferences == null) {
- preferences = parentWebView.getPreferences();
- }
- this.parentWebView = parentWebView;
- this.cordova = cordova;
- this.client = client;
- this.resourceApi = resourceApi;
- this.pluginManager = pluginManager;
- this.nativeToJsMessageQueue = nativeToJsMessageQueue;
- webView.init(this, cordova);
-
- initWebViewSettings();
-
- nativeToJsMessageQueue.addBridgeMode(new NativeToJsMessageQueue.OnlineEventsBridgeMode(new NativeToJsMessageQueue.OnlineEventsBridgeMode.OnlineEventsBridgeModeDelegate() {
- @Override
- public void setNetworkAvailable(boolean value) {
- webView.setNetworkAvailable(value);
- }
- @Override
- public void runOnUiThread(Runnable r) {
- SystemWebViewEngine.this.cordova.getActivity().runOnUiThread(r);
- }
- }));
- if(Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2)
- nativeToJsMessageQueue.addBridgeMode(new NativeToJsMessageQueue.EvalBridgeMode(this, cordova));
- bridge = new CordovaBridge(pluginManager, nativeToJsMessageQueue);
- exposeJsInterface(webView, bridge);
- }
-
- @Override
- public CordovaWebView getCordovaWebView() {
- return parentWebView;
- }
-
- @Override
- public ICordovaCookieManager getCookieManager() {
- return cookieManager;
- }
-
- @Override
- public View getView() {
- return webView;
- }
-
- @SuppressLint({"NewApi", "SetJavaScriptEnabled"})
- @SuppressWarnings("deprecation")
- private void initWebViewSettings() {
- webView.setInitialScale(0);
- webView.setVerticalScrollBarEnabled(false);
- // Enable JavaScript
- final WebSettings settings = webView.getSettings();
- settings.setJavaScriptEnabled(true);
- settings.setJavaScriptCanOpenWindowsAutomatically(true);
- settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);
-
- // Set the nav dump for HTC 2.x devices (disabling for ICS, deprecated entirely for Jellybean 4.2)
- try {
- Method gingerbread_getMethod = WebSettings.class.getMethod("setNavDump", new Class[] { boolean.class });
-
- String manufacturer = android.os.Build.MANUFACTURER;
- LOG.d(TAG, "CordovaWebView is running on device made by: " + manufacturer);
- if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB &&
- android.os.Build.MANUFACTURER.contains("HTC"))
- {
- gingerbread_getMethod.invoke(settings, true);
- }
- } catch (NoSuchMethodException e) {
- LOG.d(TAG, "We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
- } catch (IllegalArgumentException e) {
- LOG.d(TAG, "Doing the NavDump failed with bad arguments");
- } catch (IllegalAccessException e) {
- LOG.d(TAG, "This should never happen: IllegalAccessException means this isn't Android anymore");
- } catch (InvocationTargetException e) {
- LOG.d(TAG, "This should never happen: InvocationTargetException means this isn't Android anymore.");
- }
-
- //We don't save any form data in the application
- settings.setSaveFormData(false);
- settings.setSavePassword(false);
-
- // Jellybean rightfully tried to lock this down. Too bad they didn't give us a whitelist
- // while we do this
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
- settings.setAllowUniversalAccessFromFileURLs(true);
- }
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
- settings.setMediaPlaybackRequiresUserGesture(false);
- }
- // Enable database
- // We keep this disabled because we use or shim to get around DOM_EXCEPTION_ERROR_16
- String databasePath = webView.getContext().getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
- settings.setDatabaseEnabled(true);
- settings.setDatabasePath(databasePath);
-
-
- //Determine whether we're in debug or release mode, and turn on Debugging!
- ApplicationInfo appInfo = webView.getContext().getApplicationContext().getApplicationInfo();
- if ((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0 &&
- android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
- enableRemoteDebugging();
- }
-
- settings.setGeolocationDatabasePath(databasePath);
-
- // Enable DOM storage
- settings.setDomStorageEnabled(true);
-
- // Enable built-in geolocation
- settings.setGeolocationEnabled(true);
-
- // Enable AppCache
- // Fix for CB-2282
- settings.setAppCacheMaxSize(5 * 1048576);
- settings.setAppCachePath(databasePath);
- settings.setAppCacheEnabled(true);
-
- // Enable scaling
- // Fix for CB-12015
- settings.setUseWideViewPort(true);
- settings.setLoadWithOverviewMode(true);
-
- // Fix for CB-1405
- // Google issue 4641
- String defaultUserAgent = settings.getUserAgentString();
-
- // Fix for CB-3360
- String overrideUserAgent = preferences.getString("OverrideUserAgent", null);
- if (overrideUserAgent != null) {
- settings.setUserAgentString(overrideUserAgent);
- } else {
- String appendUserAgent = preferences.getString("AppendUserAgent", null);
- if (appendUserAgent != null) {
- settings.setUserAgentString(defaultUserAgent + " " + appendUserAgent);
- }
- }
- // End CB-3360
-
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
- if (this.receiver == null) {
- this.receiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- settings.getUserAgentString();
- }
- };
- webView.getContext().registerReceiver(this.receiver, intentFilter);
- }
- // end CB-1405
- }
-
- @TargetApi(Build.VERSION_CODES.KITKAT)
- private void enableRemoteDebugging() {
- try {
- WebView.setWebContentsDebuggingEnabled(true);
- } catch (IllegalArgumentException e) {
- LOG.d(TAG, "You have one job! To turn on Remote Web Debugging! YOU HAVE FAILED! ");
- e.printStackTrace();
- }
- }
-
- private static void exposeJsInterface(WebView webView, CordovaBridge bridge) {
- if ((Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1)) {
- LOG.i(TAG, "Disabled addJavascriptInterface() bridge since Android version is old.");
- // Bug being that Java Strings do not get converted to JS strings automatically.
- // This isn't hard to work-around on the JS side, but it's easier to just
- // use the prompt bridge instead.
- return;
- }
- SystemExposedJsApi exposedJsApi = new SystemExposedJsApi(bridge);
- webView.addJavascriptInterface(exposedJsApi, "_cordovaNative");
- }
-
-
- /**
- * Load the url into the webview.
- */
- @Override
- public void loadUrl(final String url, boolean clearNavigationStack) {
- webView.loadUrl(url);
- }
-
- @Override
- public String getUrl() {
- return webView.getUrl();
- }
-
- @Override
- public void stopLoading() {
- webView.stopLoading();
- }
-
- @Override
- public void clearCache() {
- webView.clearCache(true);
- }
-
- @Override
- public void clearHistory() {
- webView.clearHistory();
- }
-
- @Override
- public boolean canGoBack() {
- return webView.canGoBack();
- }
-
- /**
- * Go to previous page in history. (We manage our own history)
- *
- * @return true if we went back, false if we are already at top
- */
- @Override
- public boolean goBack() {
- // Check webview first to see if there is a history
- // This is needed to support curPage#diffLink, since they are added to parentEngine's history, but not our history url array (JQMobile behavior)
- if (webView.canGoBack()) {
- webView.goBack();
- return true;
- }
- return false;
- }
-
- @Override
- public void setPaused(boolean value) {
- if (value) {
- webView.onPause();
- webView.pauseTimers();
- } else {
- webView.onResume();
- webView.resumeTimers();
- }
- }
-
- @Override
- public void destroy() {
- webView.chromeClient.destroyLastDialog();
- webView.destroy();
- // unregister the receiver
- if (receiver != null) {
- try {
- webView.getContext().unregisterReceiver(receiver);
- } catch (Exception e) {
- LOG.e(TAG, "Error unregistering configuration receiver: " + e.getMessage(), e);
- }
- }
- }
-
- @Override
- public void evaluateJavascript(String js, ValueCallback<String> callback) {
- if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- webView.evaluateJavascript(js, callback);
- }
- else
- {
- LOG.d(TAG, "This webview is using the old bridge");
- }
- }
-}
diff --git a/StoneIsland/platforms/android/android.iml b/StoneIsland/platforms/android/android.iml
deleted file mode 100644
index 33e4d9ba..00000000
--- a/StoneIsland/platforms/android/android.iml
+++ /dev/null
@@ -1,126 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id="android" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="android-gradle" name="Android-Gradle">
- <configuration>
- <option name="GRADLE_PROJECT_PATH" value=":" />
- </configuration>
- </facet>
- <facet type="android" name="Android">
- <configuration>
- <option name="SELECTED_BUILD_VARIANT" value="debug" />
- <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
- <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
- <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
- <afterSyncTasks>
- <task>generateDebugSources</task>
- </afterSyncTasks>
- <option name="ALLOW_USER_CONFIGURATION" value="false" />
- <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/res" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_6" inherit-compiler-output="false">
- <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
- <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/23.4.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/24.0.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-base/9.8.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-basement/9.8.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-gcm/9.8.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-iid/9.8.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.google.android.gms/play-services-tasks/9.8.0/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/me.leolin/ShortcutBadger/1.1.11/jars" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
- <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
- <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
- <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
- </content>
- <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
- <orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="library" exported="" name="play-services-base-9.8.0" level="project" />
- <orderEntry type="library" exported="" name="play-services-tasks-9.8.0" level="project" />
- <orderEntry type="library" exported="" name="play-services-iid-9.8.0" level="project" />
- <orderEntry type="library" exported="" name="support-v13-23.4.0" level="project" />
- <orderEntry type="library" exported="" name="ShortcutBadger-1.1.11" level="project" />
- <orderEntry type="library" exported="" name="play-services-gcm-9.8.0" level="project" />
- <orderEntry type="library" exported="" name="support-annotations-24.0.0" level="project" />
- <orderEntry type="library" exported="" name="support-v4-24.0.0" level="project" />
- <orderEntry type="library" exported="" name="play-services-basement-9.8.0" level="project" />
- <orderEntry type="module" module-name="CordovaLib" exported="" />
- </component>
-</module> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/android.json b/StoneIsland/platforms/android/android.json
deleted file mode 100755
index 63f4e5bc..00000000
--- a/StoneIsland/platforms/android/android.json
+++ /dev/null
@@ -1,436 +0,0 @@
-{
- "prepare_queue": {
- "installed": [],
- "uninstalled": []
- },
- "config_munge": {
- "files": {
- "res/xml/config.xml": {
- "parents": {
- "/*": [
- {
- "xml": "<feature name=\"InAppBrowser\"><param name=\"android-package\" value=\"org.apache.cordova.inappbrowser.InAppBrowser\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"SocialSharing\"><param name=\"android-package\" value=\"nl.xservices.plugins.SocialSharing\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"LaunchMyApp\"><param name=\"android-package\" value=\"nl.xservices.plugins.LaunchMyApp\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Whitelist\"><param name=\"android-package\" value=\"org.apache.cordova.whitelist.WhitelistPlugin\" /><param name=\"onload\" value=\"true\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Device\"><param name=\"android-package\" value=\"org.apache.cordova.device.Device\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"NetworkStatus\"><param name=\"android-package\" value=\"org.apache.cordova.networkinformation.NetworkManager\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Notification\"><param name=\"android-package\" value=\"org.apache.cordova.dialogs.Notification\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Geolocation\"><param name=\"android-package\" value=\"org.apache.cordova.geolocation.Geolocation\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Keyboard\"><param name=\"android-package\" value=\"io.ionic.keyboard.IonicKeyboard\" /><param name=\"onload\" value=\"true\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"StatusBar\"><param name=\"android-package\" value=\"org.apache.cordova.statusbar.StatusBar\" /><param name=\"onload\" value=\"true\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"SplashScreen\"><param name=\"android-package\" value=\"org.apache.cordova.splashscreen.SplashScreen\" /><param name=\"onload\" value=\"true\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"PushNotification\"><param name=\"android-package\" value=\"com.adobe.phonegap.push.PushPlugin\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"Sim\"><param name=\"android-package\" value=\"com.pbakondy.Sim\" /></feature>",
- "count": 1
- }
- ]
- }
- },
- "AndroidManifest.xml": {
- "parents": {
- "/manifest/application": [
- {
- "xml": "<activity android:exported=\"true\" android:name=\"com.adobe.phonegap.push.PushHandlerActivity\" android:permission=\"${applicationId}.permission.PushHandlerActivity\" />",
- "count": 1
- },
- {
- "xml": "<receiver android:name=\"com.adobe.phonegap.push.BackgroundActionButtonHandler\" />",
- "count": 1
- },
- {
- "xml": "<receiver android:exported=\"true\" android:name=\"com.google.android.gms.gcm.GcmReceiver\" android:permission=\"com.google.android.c2dm.permission.SEND\"><intent-filter><action android:name=\"com.google.android.c2dm.intent.RECEIVE\" /><category android:name=\"${applicationId}\" /></intent-filter></receiver>",
- "count": 1
- },
- {
- "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.GCMIntentService\"><intent-filter><action android:name=\"com.google.android.c2dm.intent.RECEIVE\" /></intent-filter></service>",
- "count": 1
- },
- {
- "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.PushInstanceIDListenerService\"><intent-filter><action android:name=\"com.google.android.gms.iid.InstanceID\" /></intent-filter></service>",
- "count": 1
- },
- {
- "xml": "<service android:exported=\"false\" android:name=\"com.adobe.phonegap.push.RegistrationIntentService\" />",
- "count": 1
- }
- ],
- "/manifest": [
- {
- "xml": "<uses-permission android:name=\"android.permission.INTERNET\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.WAKE_LOCK\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.VIBRATE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"com.google.android.c2dm.permission.RECEIVE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"${applicationId}.permission.C2D_MESSAGE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"${applicationId}.permission.PushHandlerActivity\" />",
- "count": 1
- },
- {
- "xml": "<permission android:name=\"${applicationId}.permission.C2D_MESSAGE\" android:protectionLevel=\"signature\" />",
- "count": 1
- },
- {
- "xml": "<permission android:name=\"${applicationId}.permission.PushHandlerActivity\" android:protectionLevel=\"signature\" />",
- "count": 1
- }
- ],
- "/*/application/activity": [],
- "/*": [
- {
- "xml": "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" />",
- "count": 1
- },
- {
- "xml": "<uses-feature android:name=\"android.hardware.location.gps\" />",
- "count": 1
- },
- {
- "xml": "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",
- "count": 1
- }
- ],
- "/manifest/application/activity": [
- {
- "xml": "<intent-filter><action android:name=\"android.intent.action.VIEW\" /><category android:name=\"android.intent.category.DEFAULT\" /><category android:name=\"android.intent.category.BROWSABLE\" /><data android:scheme=\"stoneisland\" /></intent-filter>",
- "count": 1
- },
- {
- "xml": "<intent-filter><action android:name=\"android.intent.action.VIEW\" /><category android:name=\"android.intent.category.DEFAULT\" /><category android:name=\"android.intent.category.BROWSABLE\" /><data android:host=\" \" android:pathPrefix=\"/\" android:scheme=\" \" /></intent-filter>",
- "count": 1
- }
- ]
- }
- },
- "res/values/parseplugin.xml": {
- "parents": {
- "/*": []
- }
- },
- "res/values/strings.xml": {
- "parents": {
- "/resources": [
- {
- "xml": "<string name=\"google_app_id\">85075801930</string>",
- "count": 1
- }
- ]
- }
- },
- "config.xml": {
- "parents": {
- "/*": [
- {
- "xml": "<preference name=\"AppName\" value=\"Stone Island\" />",
- "count": 1
- },
- {
- "xml": "<feature name=\"Device\"><param name=\"android-package\" value=\"org.apache.cordova.device.Device\" /></feature>",
- "count": 1
- },
- {
- "xml": "<feature name=\"NetworkStatus\"><param name=\"android-package\" value=\"org.apache.cordova.networkinformation.NetworkManager\" /></feature>",
- "count": 1
- },
- {
- "xml": "<access origin=\"https://ssl.gstatic.com/accessibility/javascript/android/*\" />",
- "count": 1
- },
- {
- "xml": "<feature name=\"MobileAccessibility\"><param name=\"android-package\" value=\"com.phonegap.plugin.mobileaccessibility.MobileAccessibility\" /></feature>",
- "count": 1
- }
- ]
- }
- }
- }
- },
- "installed_plugins": {
- "cordova-plugin-inappbrowser": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-x-socialsharing": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-customurlscheme": {
- "URL_SCHEME": "stoneisland",
- "ANDROID_SCHEME": " ",
- "ANDROID_HOST": " ",
- "ANDROID_PATHPREFIX": "/",
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-whitelist": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-device": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-network-information": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-dialogs": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-compat": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-geolocation": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "ionic-plugin-keyboard": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-statusbar": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-app-name": {
- "APP_NAME": "Stone Island",
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-splashscreen": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "phonegap-plugin-push": {
- "SENDER_ID": "85075801930",
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "cordova-plugin-sim": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- },
- "phonegap-plugin-mobile-accessibility": {
- "PACKAGE_NAME": "us.okfoc.stoneisland"
- }
- },
- "dependent_plugins": {},
- "modules": [
- {
- "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
- "id": "cordova-plugin-inappbrowser.inappbrowser",
- "pluginId": "cordova-plugin-inappbrowser",
- "clobbers": [
- "cordova.InAppBrowser.open",
- "window.open"
- ]
- },
- {
- "file": "plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js",
- "id": "cordova-plugin-x-socialsharing.SocialSharing",
- "pluginId": "cordova-plugin-x-socialsharing",
- "clobbers": [
- "window.plugins.socialsharing"
- ]
- },
- {
- "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
- "id": "cordova-plugin-customurlscheme.LaunchMyApp",
- "pluginId": "cordova-plugin-customurlscheme",
- "clobbers": [
- "window.plugins.launchmyapp"
- ]
- },
- {
- "file": "plugins/cordova-plugin-device/www/device.js",
- "id": "cordova-plugin-device.device",
- "pluginId": "cordova-plugin-device",
- "clobbers": [
- "device"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/network.js",
- "id": "cordova-plugin-network-information.network",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "navigator.connection",
- "navigator.network.connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/Connection.js",
- "id": "cordova-plugin-network-information.Connection",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "Connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/notification.js",
- "id": "cordova-plugin-dialogs.notification",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/android/notification.js",
- "id": "cordova-plugin-dialogs.notification_android",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
- "id": "cordova-plugin-geolocation.geolocation",
- "pluginId": "cordova-plugin-geolocation",
- "clobbers": [
- "navigator.geolocation"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/PositionError.js",
- "id": "cordova-plugin-geolocation.PositionError",
- "pluginId": "cordova-plugin-geolocation",
- "runs": true
- },
- {
- "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js",
- "id": "ionic-plugin-keyboard.keyboard",
- "pluginId": "ionic-plugin-keyboard",
- "clobbers": [
- "cordova.plugins.Keyboard"
- ],
- "runs": true
- },
- {
- "id": "cordova-plugin-statusbar.statusbar",
- "file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
- "pluginId": "cordova-plugin-statusbar",
- "clobbers": [
- "window.StatusBar"
- ]
- },
- {
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
- "id": "phonegap-plugin-push.PushNotification",
- "file": "plugins/phonegap-plugin-push/www/push.js",
- "pluginId": "phonegap-plugin-push",
- "clobbers": [
- "PushNotification"
- ]
- },
- {
- "id": "cordova-plugin-sim.Sim",
- "file": "plugins/cordova-plugin-sim/www/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "cordova-plugin-sim.SimAndroid",
- "file": "plugins/cordova-plugin-sim/www/android/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.mobile-accessibility",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "window.MobileAccessibility"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "MobileAccessibilityNotifications"
- ]
- }
- ],
- "plugin_metadata": {
- "cordova-plugin-inappbrowser": "1.5.0",
- "cordova-plugin-x-socialsharing": "5.1.3",
- "cordova-plugin-customurlscheme": "4.2.0",
- "cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-device": "1.1.3",
- "cordova-plugin-network-information": "1.3.0",
- "cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-compat": "1.1.0",
- "cordova-plugin-geolocation": "2.4.0",
- "ionic-plugin-keyboard": "2.2.1",
- "cordova-plugin-statusbar": "2.2.3",
- "cordova-plugin-app-name": "1.0.4",
- "cordova-plugin-splashscreen": "4.0.3",
- "phonegap-plugin-push": "1.9.2",
- "cordova-plugin-sim": "1.3.3",
- "phonegap-plugin-mobile-accessibility": "1.0.5-dev"
- }
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js b/StoneIsland/platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js
deleted file mode 100644
index 2e9aa67b..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-/**
- * Exports the ExposedJsApi.java object if available, otherwise exports the PromptBasedNativeApi.
- */
-
-var nativeApi = this._cordovaNative || require('cordova/android/promptbasednativeapi');
-var currentApi = nativeApi;
-
-module.exports = {
- get: function() { return currentApi; },
- setPreferPrompt: function(value) {
- currentApi = value ? require('cordova/android/promptbasednativeapi') : nativeApi;
- },
- // Used only by tests.
- set: function(value) {
- currentApi = value;
- }
-};
diff --git a/StoneIsland/platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js b/StoneIsland/platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js
deleted file mode 100644
index f7fb6bc7..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-/**
- * Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
- * This is used pre-JellyBean, where addJavascriptInterface() is disabled.
- */
-
-module.exports = {
- exec: function(bridgeSecret, service, action, callbackId, argsJson) {
- return prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, service, action, callbackId]));
- },
- setNativeToJsBridgeMode: function(bridgeSecret, value) {
- prompt(value, 'gap_bridge_mode:' + bridgeSecret);
- },
- retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
- return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
- }
-};
diff --git a/StoneIsland/platforms/android/assets/www/cordova-js-src/exec.js b/StoneIsland/platforms/android/assets/www/cordova-js-src/exec.js
deleted file mode 100644
index f73d87a1..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova-js-src/exec.js
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Execute a cordova command. It is up to the native side whether this action
- * is synchronous or asynchronous. The native side can return:
- * Synchronous: PluginResult object as a JSON string
- * Asynchronous: Empty string ""
- * If async, the native side will cordova.callbackSuccess or cordova.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success The success callback
- * @param {Function} fail The fail callback
- * @param {String} service The name of the service to use
- * @param {String} action Action to be run in cordova
- * @param {String[]} [args] Zero or more arguments to pass to the method
- */
-var cordova = require('cordova'),
- nativeApiProvider = require('cordova/android/nativeapiprovider'),
- utils = require('cordova/utils'),
- base64 = require('cordova/base64'),
- channel = require('cordova/channel'),
- jsToNativeModes = {
- PROMPT: 0,
- JS_OBJECT: 1
- },
- nativeToJsModes = {
- // Polls for messages using the JS->Native bridge.
- POLLING: 0,
- // For LOAD_URL to be viable, it would need to have a work-around for
- // the bug where the soft-keyboard gets dismissed when a message is sent.
- LOAD_URL: 1,
- // For the ONLINE_EVENT to be viable, it would need to intercept all event
- // listeners (both through addEventListener and window.ononline) as well
- // as set the navigator property itself.
- ONLINE_EVENT: 2,
- EVAL_BRIDGE: 3
- },
- jsToNativeBridgeMode, // Set lazily.
- nativeToJsBridgeMode = nativeToJsModes.EVAL_BRIDGE,
- pollEnabled = false,
- bridgeSecret = -1;
-
-var messagesFromNative = [];
-var isProcessing = false;
-var resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();
-var nextTick = resolvedPromise ? function(fn) { resolvedPromise.then(fn); } : function(fn) { setTimeout(fn); };
-
-function androidExec(success, fail, service, action, args) {
- if (bridgeSecret < 0) {
- // If we ever catch this firing, we'll need to queue up exec()s
- // and fire them once we get a secret. For now, I don't think
- // it's possible for exec() to be called since plugins are parsed but
- // not run until until after onNativeReady.
- throw new Error('exec() called without bridgeSecret');
- }
- // Set default bridge modes if they have not already been set.
- // By default, we use the failsafe, since addJavascriptInterface breaks too often
- if (jsToNativeBridgeMode === undefined) {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- }
-
- // If args is not provided, default to an empty array
- args = args || [];
-
- // Process any ArrayBuffers in the args into a string.
- for (var i = 0; i < args.length; i++) {
- if (utils.typeName(args[i]) == 'ArrayBuffer') {
- args[i] = base64.fromArrayBuffer(args[i]);
- }
- }
-
- var callbackId = service + cordova.callbackId++,
- argsJson = JSON.stringify(args);
- if (success || fail) {
- cordova.callbacks[callbackId] = {success:success, fail:fail};
- }
-
- var msgs = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);
- // If argsJson was received by Java as null, try again with the PROMPT bridge mode.
- // This happens in rare circumstances, such as when certain Unicode characters are passed over the bridge on a Galaxy S2. See CB-2666.
- if (jsToNativeBridgeMode == jsToNativeModes.JS_OBJECT && msgs === "@Null arguments.") {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.PROMPT);
- androidExec(success, fail, service, action, args);
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- } else if (msgs) {
- messagesFromNative.push(msgs);
- // Always process async to avoid exceptions messing up stack.
- nextTick(processMessages);
- }
-}
-
-androidExec.init = function() {
- //CB-11828
- //This failsafe checks the version of Android and if it's Jellybean, it switches it to
- //using the Online Event bridge for communicating from Native to JS
- //
- //It's ugly, but it's necessary.
- var check = navigator.userAgent.toLowerCase().match(/android\s[0-9].[0-9]/);
- var version_code = check && check[0].match(/4.[0-3].*/);
- if (version_code != null && nativeToJsBridgeMode == nativeToJsModes.EVAL_BRIDGE) {
- nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT;
- }
-
- bridgeSecret = +prompt('', 'gap_init:' + nativeToJsBridgeMode);
- channel.onNativeReady.fire();
-};
-
-function pollOnceFromOnlineEvent() {
- pollOnce(true);
-}
-
-function pollOnce(opt_fromOnlineEvent) {
- if (bridgeSecret < 0) {
- // This can happen when the NativeToJsMessageQueue resets the online state on page transitions.
- // We know there's nothing to retrieve, so no need to poll.
- return;
- }
- var msgs = nativeApiProvider.get().retrieveJsMessages(bridgeSecret, !!opt_fromOnlineEvent);
- if (msgs) {
- messagesFromNative.push(msgs);
- // Process sync since we know we're already top-of-stack.
- processMessages();
- }
-}
-
-function pollingTimerFunc() {
- if (pollEnabled) {
- pollOnce();
- setTimeout(pollingTimerFunc, 50);
- }
-}
-
-function hookOnlineApis() {
- function proxyEvent(e) {
- cordova.fireWindowEvent(e.type);
- }
- // The network module takes care of firing online and offline events.
- // It currently fires them only on document though, so we bridge them
- // to window here (while first listening for exec()-releated online/offline
- // events).
- window.addEventListener('online', pollOnceFromOnlineEvent, false);
- window.addEventListener('offline', pollOnceFromOnlineEvent, false);
- cordova.addWindowEventHandler('online');
- cordova.addWindowEventHandler('offline');
- document.addEventListener('online', proxyEvent, false);
- document.addEventListener('offline', proxyEvent, false);
-}
-
-hookOnlineApis();
-
-androidExec.jsToNativeModes = jsToNativeModes;
-androidExec.nativeToJsModes = nativeToJsModes;
-
-androidExec.setJsToNativeBridgeMode = function(mode) {
- if (mode == jsToNativeModes.JS_OBJECT && !window._cordovaNative) {
- mode = jsToNativeModes.PROMPT;
- }
- nativeApiProvider.setPreferPrompt(mode == jsToNativeModes.PROMPT);
- jsToNativeBridgeMode = mode;
-};
-
-androidExec.setNativeToJsBridgeMode = function(mode) {
- if (mode == nativeToJsBridgeMode) {
- return;
- }
- if (nativeToJsBridgeMode == nativeToJsModes.POLLING) {
- pollEnabled = false;
- }
-
- nativeToJsBridgeMode = mode;
- // Tell the native side to switch modes.
- // Otherwise, it will be set by androidExec.init()
- if (bridgeSecret >= 0) {
- nativeApiProvider.get().setNativeToJsBridgeMode(bridgeSecret, mode);
- }
-
- if (mode == nativeToJsModes.POLLING) {
- pollEnabled = true;
- setTimeout(pollingTimerFunc, 1);
- }
-};
-
-function buildPayload(payload, message) {
- var payloadKind = message.charAt(0);
- if (payloadKind == 's') {
- payload.push(message.slice(1));
- } else if (payloadKind == 't') {
- payload.push(true);
- } else if (payloadKind == 'f') {
- payload.push(false);
- } else if (payloadKind == 'N') {
- payload.push(null);
- } else if (payloadKind == 'n') {
- payload.push(+message.slice(1));
- } else if (payloadKind == 'A') {
- var data = message.slice(1);
- payload.push(base64.toArrayBuffer(data));
- } else if (payloadKind == 'S') {
- payload.push(window.atob(message.slice(1)));
- } else if (payloadKind == 'M') {
- var multipartMessages = message.slice(1);
- while (multipartMessages !== "") {
- var spaceIdx = multipartMessages.indexOf(' ');
- var msgLen = +multipartMessages.slice(0, spaceIdx);
- var multipartMessage = multipartMessages.substr(spaceIdx + 1, msgLen);
- multipartMessages = multipartMessages.slice(spaceIdx + msgLen + 1);
- buildPayload(payload, multipartMessage);
- }
- } else {
- payload.push(JSON.parse(message));
- }
-}
-
-// Processes a single message, as encoded by NativeToJsMessageQueue.java.
-function processMessage(message) {
- var firstChar = message.charAt(0);
- if (firstChar == 'J') {
- // This is deprecated on the .java side. It doesn't work with CSP enabled.
- eval(message.slice(1));
- } else if (firstChar == 'S' || firstChar == 'F') {
- var success = firstChar == 'S';
- var keepCallback = message.charAt(1) == '1';
- var spaceIdx = message.indexOf(' ', 2);
- var status = +message.slice(2, spaceIdx);
- var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
- var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
- var payloadMessage = message.slice(nextSpaceIdx + 1);
- var payload = [];
- buildPayload(payload, payloadMessage);
- cordova.callbackFromNative(callbackId, success, status, payload, keepCallback);
- } else {
- console.log("processMessage failed: invalid message: " + JSON.stringify(message));
- }
-}
-
-function processMessages() {
- // Check for the reentrant case.
- if (isProcessing) {
- return;
- }
- if (messagesFromNative.length === 0) {
- return;
- }
- isProcessing = true;
- try {
- var msg = popMessageFromQueue();
- // The Java side can send a * message to indicate that it
- // still has messages waiting to be retrieved.
- if (msg == '*' && messagesFromNative.length === 0) {
- nextTick(pollOnce);
- return;
- }
- processMessage(msg);
- } finally {
- isProcessing = false;
- if (messagesFromNative.length > 0) {
- nextTick(processMessages);
- }
- }
-}
-
-function popMessageFromQueue() {
- var messageBatch = messagesFromNative.shift();
- if (messageBatch == '*') {
- return '*';
- }
-
- var spaceIdx = messageBatch.indexOf(' ');
- var msgLen = +messageBatch.slice(0, spaceIdx);
- var message = messageBatch.substr(spaceIdx + 1, msgLen);
- messageBatch = messageBatch.slice(spaceIdx + msgLen + 1);
- if (messageBatch) {
- messagesFromNative.unshift(messageBatch);
- }
- return message;
-}
-
-module.exports = androidExec;
diff --git a/StoneIsland/platforms/android/assets/www/cordova-js-src/platform.js b/StoneIsland/platforms/android/assets/www/cordova-js-src/platform.js
deleted file mode 100644
index 2bfd0247..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova-js-src/platform.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT 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 last resume event that was received that had the result of a plugin call.
-var lastResumeEvent = null;
-
-module.exports = {
- id: 'android',
- bootstrap: function() {
- var channel = require('cordova/channel'),
- cordova = require('cordova'),
- exec = require('cordova/exec'),
- modulemapper = require('cordova/modulemapper');
-
- // Get the shared secret needed to use the bridge.
- exec.init();
-
- // TODO: Extract this as a proper plugin.
- modulemapper.clobbers('cordova/plugin/android/app', 'navigator.app');
-
- var APP_PLUGIN_NAME = Number(cordova.platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
- // Inject a listener for the backbutton on the document.
- var backButtonChannel = cordova.addDocumentEventHandler('backbutton');
- backButtonChannel.onHasSubscribersChange = function() {
- // If we just attached the first handler or detached the last handler,
- // let native know we need to override the back button.
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [this.numHandlers == 1]);
- };
-
- // Add hardware MENU and SEARCH button handlers
- cordova.addDocumentEventHandler('menubutton');
- cordova.addDocumentEventHandler('searchbutton');
-
- function bindButtonChannel(buttonName) {
- // generic button bind used for volumeup/volumedown buttons
- var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
- volumeButtonChannel.onHasSubscribersChange = function() {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [buttonName, this.numHandlers == 1]);
- };
- }
- // Inject a listener for the volume buttons on the document.
- bindButtonChannel('volumeup');
- bindButtonChannel('volumedown');
-
- // The resume event is not "sticky", but it is possible that the event
- // will contain the result of a plugin call. We need to ensure that the
- // plugin result is delivered even after the event is fired (CB-10498)
- var cordovaAddEventListener = document.addEventListener;
-
- document.addEventListener = function(evt, handler, capture) {
- cordovaAddEventListener(evt, handler, capture);
-
- if (evt === 'resume' && lastResumeEvent) {
- handler(lastResumeEvent);
- }
- };
-
- // Let native code know we are all done on the JS side.
- // Native code will then un-hide the WebView.
- channel.onCordovaReady.subscribe(function() {
- exec(onMessageFromNative, null, APP_PLUGIN_NAME, 'messageChannel', []);
- exec(null, null, APP_PLUGIN_NAME, "show", []);
- });
- }
-};
-
-function onMessageFromNative(msg) {
- var cordova = require('cordova');
- var action = msg.action;
-
- switch (action)
- {
- // Button events
- case 'backbutton':
- case 'menubutton':
- case 'searchbutton':
- // App life cycle events
- case 'pause':
- // Volume events
- case 'volumedownbutton':
- case 'volumeupbutton':
- cordova.fireDocumentEvent(action);
- break;
- case 'resume':
- if(arguments.length > 1 && msg.pendingResult) {
- if(arguments.length === 2) {
- msg.pendingResult.result = arguments[1];
- } else {
- // The plugin returned a multipart message
- var res = [];
- for(var i = 1; i < arguments.length; i++) {
- res.push(arguments[i]);
- }
- msg.pendingResult.result = res;
- }
-
- // Save the plugin result so that it can be delivered to the js
- // even if they miss the initial firing of the event
- lastResumeEvent = msg;
- }
- cordova.fireDocumentEvent(action, msg);
- break;
- default:
- throw new Error('Unknown event action ' + action);
- }
-}
diff --git a/StoneIsland/platforms/android/assets/www/cordova-js-src/plugin/android/app.js b/StoneIsland/platforms/android/assets/www/cordova-js-src/plugin/android/app.js
deleted file mode 100644
index 22cf96e8..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova-js-src/plugin/android/app.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-var APP_PLUGIN_NAME = Number(require('cordova').platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
-module.exports = {
- /**
- * Clear the resource cache.
- */
- clearCache:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearCache", []);
- },
-
- /**
- * Load the url into the webview or into new browser instance.
- *
- * @param url The URL to load
- * @param props Properties that can be passed in to the activity:
- * wait: int => wait msec before loading URL
- * loadingDialog: "Title,Message" => display a native loading dialog
- * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
- * clearHistory: boolean => clear webview history (default=false)
- * openExternal: boolean => open in a new browser (default=false)
- *
- * Example:
- * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
- loadUrl:function(url, props) {
- exec(null, null, APP_PLUGIN_NAME, "loadUrl", [url, props]);
- },
-
- /**
- * Cancel loadUrl that is waiting to be loaded.
- */
- cancelLoadUrl:function() {
- exec(null, null, APP_PLUGIN_NAME, "cancelLoadUrl", []);
- },
-
- /**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
- clearHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearHistory", []);
- },
-
- /**
- * Go to previous page displayed.
- * This is the same as pressing the backbutton on Android device.
- */
- backHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "backHistory", []);
- },
-
- /**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "backbutton" event, this is automatically done.
- *
- * @param override T=override, F=cancel override
- */
- overrideBackbutton:function(override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [override]);
- },
-
- /**
- * Override the default behavior of the Android volume button.
- * If overridden, when the volume button is pressed, the "volume[up|down]button"
- * JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "volume[up|down]button" event, this is automatically done.
- *
- * @param button volumeup, volumedown
- * @param override T=override, F=cancel override
- */
- overrideButton:function(button, override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [button, override]);
- },
-
- /**
- * Exit and terminate the application.
- */
- exitApp:function() {
- return exec(null, null, APP_PLUGIN_NAME, "exitApp", []);
- }
-};
diff --git a/StoneIsland/platforms/android/assets/www/cordova.js b/StoneIsland/platforms/android/assets/www/cordova.js
deleted file mode 100644
index bda7c3e5..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova.js
+++ /dev/null
@@ -1,2208 +0,0 @@
-// Platform: android
-// 7ef9f9c03167a4dde4372d869472241b6816fee9
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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() {
-var PLATFORM_VERSION_BUILD_LABEL = '6.2.3';
-// file: src/scripts/require.js
-
-/*jshint -W079 */
-/*jshint -W020 */
-
-var require,
- define;
-
-(function () {
- var modules = {},
- // Stack of moduleIds currently being built.
- requireStack = [],
- // Map of module ID -> index into requireStack of modules currently being built.
- inProgressModules = {},
- SEPARATOR = ".";
-
-
-
- function build(module) {
- var factory = module.factory,
- localRequire = function (id) {
- var resultantId = id;
- //Its a relative path, so lop off the last portion and add the id (minus "./")
- if (id.charAt(0) === ".") {
- resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
- }
- return require(resultantId);
- };
- module.exports = {};
- delete module.factory;
- factory(localRequire, module.exports, module);
- return module.exports;
- }
-
- require = function (id) {
- if (!modules[id]) {
- throw "module " + id + " not found";
- } else if (id in inProgressModules) {
- var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
- throw "Cycle in require graph: " + cycle;
- }
- if (modules[id].factory) {
- try {
- inProgressModules[id] = requireStack.length;
- requireStack.push(id);
- return build(modules[id]);
- } finally {
- delete inProgressModules[id];
- requireStack.pop();
- }
- }
- return modules[id].exports;
- };
-
- define = function (id, factory) {
- if (modules[id]) {
- throw "module " + id + " already defined";
- }
-
- modules[id] = {
- id: id,
- factory: factory
- };
- };
-
- define.remove = function (id) {
- delete modules[id];
- };
-
- define.moduleMap = modules;
-})();
-
-//Export for use in node
-if (typeof module === "object" && typeof require === "function") {
- module.exports.require = require;
- module.exports.define = define;
-}
-
-// file: src/cordova.js
-define("cordova", function(require, exports, module) {
-
-// Workaround for Windows 10 in hosted environment case
-// http://www.w3.org/html/wg/drafts/html/master/browsers.html#named-access-on-the-window-object
-if (window.cordova && !(window.cordova instanceof HTMLElement)) {
- throw new Error("cordova already defined");
-}
-
-
-var channel = require('cordova/channel');
-var platform = require('cordova/platform');
-
-
-/**
- * Intercept calls to addEventListener + removeEventListener and handle deviceready,
- * resume, and pause events.
- */
-var m_document_addEventListener = document.addEventListener;
-var m_document_removeEventListener = document.removeEventListener;
-var m_window_addEventListener = window.addEventListener;
-var m_window_removeEventListener = window.removeEventListener;
-
-/**
- * Houses custom event handlers to intercept on document + window event listeners.
- */
-var documentEventHandlers = {},
- windowEventHandlers = {};
-
-document.addEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- if (typeof documentEventHandlers[e] != 'undefined') {
- documentEventHandlers[e].subscribe(handler);
- } else {
- m_document_addEventListener.call(document, evt, handler, capture);
- }
-};
-
-window.addEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- if (typeof windowEventHandlers[e] != 'undefined') {
- windowEventHandlers[e].subscribe(handler);
- } else {
- m_window_addEventListener.call(window, evt, handler, capture);
- }
-};
-
-document.removeEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- // If unsubscribing from an event that is handled by a plugin
- if (typeof documentEventHandlers[e] != "undefined") {
- documentEventHandlers[e].unsubscribe(handler);
- } else {
- m_document_removeEventListener.call(document, evt, handler, capture);
- }
-};
-
-window.removeEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- // If unsubscribing from an event that is handled by a plugin
- if (typeof windowEventHandlers[e] != "undefined") {
- windowEventHandlers[e].unsubscribe(handler);
- } else {
- m_window_removeEventListener.call(window, evt, handler, capture);
- }
-};
-
-function createEvent(type, data) {
- var event = document.createEvent('Events');
- event.initEvent(type, false, false);
- if (data) {
- for (var i in data) {
- if (data.hasOwnProperty(i)) {
- event[i] = data[i];
- }
- }
- }
- return event;
-}
-
-
-var cordova = {
- define:define,
- require:require,
- version:PLATFORM_VERSION_BUILD_LABEL,
- platformVersion:PLATFORM_VERSION_BUILD_LABEL,
- platformId:platform.id,
- /**
- * Methods to add/remove your own addEventListener hijacking on document + window.
- */
- addWindowEventHandler:function(event) {
- return (windowEventHandlers[event] = channel.create(event));
- },
- addStickyDocumentEventHandler:function(event) {
- return (documentEventHandlers[event] = channel.createSticky(event));
- },
- addDocumentEventHandler:function(event) {
- return (documentEventHandlers[event] = channel.create(event));
- },
- removeWindowEventHandler:function(event) {
- delete windowEventHandlers[event];
- },
- removeDocumentEventHandler:function(event) {
- delete documentEventHandlers[event];
- },
- /**
- * Retrieve original event handlers that were replaced by Cordova
- *
- * @return object
- */
- getOriginalHandlers: function() {
- return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},
- 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
- },
- /**
- * Method to fire event from native code
- * bNoDetach is required for events which cause an exception which needs to be caught in native code
- */
- fireDocumentEvent: function(type, data, bNoDetach) {
- var evt = createEvent(type, data);
- if (typeof documentEventHandlers[type] != 'undefined') {
- if( bNoDetach ) {
- documentEventHandlers[type].fire(evt);
- }
- else {
- setTimeout(function() {
- // Fire deviceready on listeners that were registered before cordova.js was loaded.
- if (type == 'deviceready') {
- document.dispatchEvent(evt);
- }
- documentEventHandlers[type].fire(evt);
- }, 0);
- }
- } else {
- document.dispatchEvent(evt);
- }
- },
- fireWindowEvent: function(type, data) {
- var evt = createEvent(type,data);
- if (typeof windowEventHandlers[type] != 'undefined') {
- setTimeout(function() {
- windowEventHandlers[type].fire(evt);
- }, 0);
- } else {
- window.dispatchEvent(evt);
- }
- },
-
- /**
- * Plugin callback mechanism.
- */
- // Randomize the starting callbackId to avoid collisions after refreshing or navigating.
- // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.
- callbackId: Math.floor(Math.random() * 2000000000),
- callbacks: {},
- callbackStatus: {
- NO_RESULT: 0,
- OK: 1,
- CLASS_NOT_FOUND_EXCEPTION: 2,
- ILLEGAL_ACCESS_EXCEPTION: 3,
- INSTANTIATION_EXCEPTION: 4,
- MALFORMED_URL_EXCEPTION: 5,
- IO_EXCEPTION: 6,
- INVALID_ACTION: 7,
- JSON_EXCEPTION: 8,
- ERROR: 9
- },
-
- /**
- * Called by native code when returning successful result from an action.
- */
- callbackSuccess: function(callbackId, args) {
- cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);
- },
-
- /**
- * Called by native code when returning error result from an action.
- */
- callbackError: function(callbackId, args) {
- // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.
- // Derive success from status.
- cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);
- },
-
- /**
- * Called by native code when returning the result from an action.
- */
- callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) {
- try {
- var callback = cordova.callbacks[callbackId];
- if (callback) {
- if (isSuccess && status == cordova.callbackStatus.OK) {
- callback.success && callback.success.apply(null, args);
- } else if (!isSuccess) {
- callback.fail && callback.fail.apply(null, args);
- }
- /*
- else
- Note, this case is intentionally not caught.
- this can happen if isSuccess is true, but callbackStatus is NO_RESULT
- which is used to remove a callback from the list without calling the callbacks
- typically keepCallback is false in this case
- */
- // Clear callback if not expecting any more results
- if (!keepCallback) {
- delete cordova.callbacks[callbackId];
- }
- }
- }
- catch (err) {
- var msg = "Error in " + (isSuccess ? "Success" : "Error") + " callbackId: " + callbackId + " : " + err;
- console && console.log && console.log(msg);
- cordova.fireWindowEvent("cordovacallbackerror", { 'message': msg });
- throw err;
- }
- },
- addConstructor: function(func) {
- channel.onCordovaReady.subscribe(function() {
- try {
- func();
- } catch(e) {
- console.log("Failed to run constructor: " + e);
- }
- });
- }
-};
-
-
-module.exports = cordova;
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/android/nativeapiprovider.js
-define("cordova/android/nativeapiprovider", function(require, exports, module) {
-
-/**
- * Exports the ExposedJsApi.java object if available, otherwise exports the PromptBasedNativeApi.
- */
-
-var nativeApi = this._cordovaNative || require('cordova/android/promptbasednativeapi');
-var currentApi = nativeApi;
-
-module.exports = {
- get: function() { return currentApi; },
- setPreferPrompt: function(value) {
- currentApi = value ? require('cordova/android/promptbasednativeapi') : nativeApi;
- },
- // Used only by tests.
- set: function(value) {
- currentApi = value;
- }
-};
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/android/promptbasednativeapi.js
-define("cordova/android/promptbasednativeapi", function(require, exports, module) {
-
-/**
- * Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
- * This is used pre-JellyBean, where addJavascriptInterface() is disabled.
- */
-
-module.exports = {
- exec: function(bridgeSecret, service, action, callbackId, argsJson) {
- return prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, service, action, callbackId]));
- },
- setNativeToJsBridgeMode: function(bridgeSecret, value) {
- prompt(value, 'gap_bridge_mode:' + bridgeSecret);
- },
- retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
- return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
- }
-};
-
-});
-
-// file: src/common/argscheck.js
-define("cordova/argscheck", function(require, exports, module) {
-
-var utils = require('cordova/utils');
-
-var moduleExports = module.exports;
-
-var typeMap = {
- 'A': 'Array',
- 'D': 'Date',
- 'N': 'Number',
- 'S': 'String',
- 'F': 'Function',
- 'O': 'Object'
-};
-
-function extractParamName(callee, argIndex) {
- return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
-}
-
-function checkArgs(spec, functionName, args, opt_callee) {
- if (!moduleExports.enableChecks) {
- return;
- }
- var errMsg = null;
- var typeName;
- for (var i = 0; i < spec.length; ++i) {
- var c = spec.charAt(i),
- cUpper = c.toUpperCase(),
- arg = args[i];
- // Asterix means allow anything.
- if (c == '*') {
- continue;
- }
- typeName = utils.typeName(arg);
- if ((arg === null || arg === undefined) && c == cUpper) {
- continue;
- }
- if (typeName != typeMap[cUpper]) {
- errMsg = 'Expected ' + typeMap[cUpper];
- break;
- }
- }
- if (errMsg) {
- errMsg += ', but got ' + typeName + '.';
- errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg;
- // Don't log when running unit tests.
- if (typeof jasmine == 'undefined') {
- console.error(errMsg);
- }
- throw TypeError(errMsg);
- }
-}
-
-function getValue(value, defaultValue) {
- return value === undefined ? defaultValue : value;
-}
-
-moduleExports.checkArgs = checkArgs;
-moduleExports.getValue = getValue;
-moduleExports.enableChecks = true;
-
-
-});
-
-// file: src/common/base64.js
-define("cordova/base64", function(require, exports, module) {
-
-var base64 = exports;
-
-base64.fromArrayBuffer = function(arrayBuffer) {
- var array = new Uint8Array(arrayBuffer);
- return uint8ToBase64(array);
-};
-
-base64.toArrayBuffer = function(str) {
- var decodedStr = typeof atob != 'undefined' ? atob(str) : new Buffer(str,'base64').toString('binary');
- var arrayBuffer = new ArrayBuffer(decodedStr.length);
- var array = new Uint8Array(arrayBuffer);
- for (var i=0, len=decodedStr.length; i < len; i++) {
- array[i] = decodedStr.charCodeAt(i);
- }
- return arrayBuffer;
-};
-
-//------------------------------------------------------------------------------
-
-/* This code is based on the performance tests at http://jsperf.com/b64tests
- * This 12-bit-at-a-time algorithm was the best performing version on all
- * platforms tested.
- */
-
-var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-var b64_12bit;
-
-var b64_12bitTable = function() {
- b64_12bit = [];
- for (var i=0; i<64; i++) {
- for (var j=0; j<64; j++) {
- b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j];
- }
- }
- b64_12bitTable = function() { return b64_12bit; };
- return b64_12bit;
-};
-
-function uint8ToBase64(rawData) {
- var numBytes = rawData.byteLength;
- var output="";
- var segment;
- var table = b64_12bitTable();
- for (var i=0;i<numBytes-2;i+=3) {
- segment = (rawData[i] << 16) + (rawData[i+1] << 8) + rawData[i+2];
- output += table[segment >> 12];
- output += table[segment & 0xfff];
- }
- if (numBytes - i == 2) {
- segment = (rawData[i] << 16) + (rawData[i+1] << 8);
- output += table[segment >> 12];
- output += b64_6bit[(segment & 0xfff) >> 6];
- output += '=';
- } else if (numBytes - i == 1) {
- segment = (rawData[i] << 16);
- output += table[segment >> 12];
- output += '==';
- }
- return output;
-}
-
-});
-
-// file: src/common/builder.js
-define("cordova/builder", function(require, exports, module) {
-
-var utils = require('cordova/utils');
-
-function each(objects, func, context) {
- for (var prop in objects) {
- if (objects.hasOwnProperty(prop)) {
- func.apply(context, [objects[prop], prop]);
- }
- }
-}
-
-function clobber(obj, key, value) {
- exports.replaceHookForTesting(obj, key);
- var needsProperty = false;
- try {
- obj[key] = value;
- } catch (e) {
- needsProperty = true;
- }
- // Getters can only be overridden by getters.
- if (needsProperty || obj[key] !== value) {
- utils.defineGetter(obj, key, function() {
- return value;
- });
- }
-}
-
-function assignOrWrapInDeprecateGetter(obj, key, value, message) {
- if (message) {
- utils.defineGetter(obj, key, function() {
- console.log(message);
- delete obj[key];
- clobber(obj, key, value);
- return value;
- });
- } else {
- clobber(obj, key, value);
- }
-}
-
-function include(parent, objects, clobber, merge) {
- each(objects, function (obj, key) {
- try {
- var result = obj.path ? require(obj.path) : {};
-
- if (clobber) {
- // Clobber if it doesn't exist.
- if (typeof parent[key] === 'undefined') {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- } else if (typeof obj.path !== 'undefined') {
- // If merging, merge properties onto parent, otherwise, clobber.
- if (merge) {
- recursiveMerge(parent[key], result);
- } else {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- }
- }
- result = parent[key];
- } else {
- // Overwrite if not currently defined.
- if (typeof parent[key] == 'undefined') {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- } else {
- // Set result to what already exists, so we can build children into it if they exist.
- result = parent[key];
- }
- }
-
- if (obj.children) {
- include(result, obj.children, clobber, merge);
- }
- } catch(e) {
- utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"');
- }
- });
-}
-
-/**
- * Merge properties from one object onto another recursively. Properties from
- * the src object will overwrite existing target property.
- *
- * @param target Object to merge properties into.
- * @param src Object to merge properties from.
- */
-function recursiveMerge(target, src) {
- for (var prop in src) {
- if (src.hasOwnProperty(prop)) {
- if (target.prototype && target.prototype.constructor === target) {
- // If the target object is a constructor override off prototype.
- clobber(target.prototype, prop, src[prop]);
- } else {
- if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {
- recursiveMerge(target[prop], src[prop]);
- } else {
- clobber(target, prop, src[prop]);
- }
- }
- }
- }
-}
-
-exports.buildIntoButDoNotClobber = function(objects, target) {
- include(target, objects, false, false);
-};
-exports.buildIntoAndClobber = function(objects, target) {
- include(target, objects, true, false);
-};
-exports.buildIntoAndMerge = function(objects, target) {
- include(target, objects, true, true);
-};
-exports.recursiveMerge = recursiveMerge;
-exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;
-exports.replaceHookForTesting = function() {};
-
-});
-
-// file: src/common/channel.js
-define("cordova/channel", function(require, exports, module) {
-
-var utils = require('cordova/utils'),
- nextGuid = 1;
-
-/**
- * Custom pub-sub "channel" that can have functions subscribed to it
- * This object is used to define and control firing of events for
- * cordova initialization, as well as for custom events thereafter.
- *
- * The order of events during page load and Cordova startup is as follows:
- *
- * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed.
- * onNativeReady* Internal event that indicates the Cordova native side is ready.
- * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created.
- * onDeviceReady* User event fired to indicate that Cordova is ready
- * onResume User event fired to indicate a start/resume lifecycle event
- * onPause User event fired to indicate a pause lifecycle event
- *
- * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.
- * All listeners that subscribe after the event is fired will be executed right away.
- *
- * The only Cordova events that user code should register for are:
- * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript
- * pause App has moved to background
- * resume App has returned to foreground
- *
- * Listeners can be registered as:
- * document.addEventListener("deviceready", myDeviceReadyListener, false);
- * document.addEventListener("resume", myResumeListener, false);
- * document.addEventListener("pause", myPauseListener, false);
- *
- * The DOM lifecycle events should be used for saving and restoring state
- * window.onload
- * window.onunload
- *
- */
-
-/**
- * Channel
- * @constructor
- * @param type String the channel name
- */
-var Channel = function(type, sticky) {
- this.type = type;
- // Map of guid -> function.
- this.handlers = {};
- // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.
- this.state = sticky ? 1 : 0;
- // Used in sticky mode to remember args passed to fire().
- this.fireArgs = null;
- // Used by onHasSubscribersChange to know if there are any listeners.
- this.numHandlers = 0;
- // Function that is called when the first listener is subscribed, or when
- // the last listener is unsubscribed.
- this.onHasSubscribersChange = null;
-},
- channel = {
- /**
- * Calls the provided function only after all of the channels specified
- * have been fired. All channels must be sticky channels.
- */
- join: function(h, c) {
- var len = c.length,
- i = len,
- f = function() {
- if (!(--i)) h();
- };
- for (var j=0; j<len; j++) {
- if (c[j].state === 0) {
- throw Error('Can only use join with sticky channels.');
- }
- c[j].subscribe(f);
- }
- if (!len) h();
- },
- create: function(type) {
- return channel[type] = new Channel(type, false);
- },
- createSticky: function(type) {
- return channel[type] = new Channel(type, true);
- },
-
- /**
- * cordova Channels that must fire before "deviceready" is fired.
- */
- deviceReadyChannelsArray: [],
- deviceReadyChannelsMap: {},
-
- /**
- * Indicate that a feature needs to be initialized before it is ready to be used.
- * This holds up Cordova's "deviceready" event until the feature has been initialized
- * and Cordova.initComplete(feature) is called.
- *
- * @param feature {String} The unique feature name
- */
- waitForInitialization: function(feature) {
- if (feature) {
- var c = channel[feature] || this.createSticky(feature);
- this.deviceReadyChannelsMap[feature] = c;
- this.deviceReadyChannelsArray.push(c);
- }
- },
-
- /**
- * Indicate that initialization code has completed and the feature is ready to be used.
- *
- * @param feature {String} The unique feature name
- */
- initializationComplete: function(feature) {
- var c = this.deviceReadyChannelsMap[feature];
- if (c) {
- c.fire();
- }
- }
- };
-
-function checkSubscriptionArgument(argument) {
- if (typeof argument !== "function" && typeof argument.handleEvent !== "function") {
- throw new Error(
- "Must provide a function or an EventListener object " +
- "implementing the handleEvent interface."
- );
- }
-}
-
-/**
- * Subscribes the given function to the channel. Any time that
- * Channel.fire is called so too will the function.
- * Optionally specify an execution context for the function
- * and a guid that can be used to stop subscribing to the channel.
- * Returns the guid.
- */
-Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) {
- checkSubscriptionArgument(eventListenerOrFunction);
- var handleEvent, guid;
-
- if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
- // Received an EventListener object implementing the handleEvent interface
- handleEvent = eventListenerOrFunction.handleEvent;
- eventListener = eventListenerOrFunction;
- } else {
- // Received a function to handle event
- handleEvent = eventListenerOrFunction;
- }
-
- if (this.state == 2) {
- handleEvent.apply(eventListener || this, this.fireArgs);
- return;
- }
-
- guid = eventListenerOrFunction.observer_guid;
- if (typeof eventListener === "object") {
- handleEvent = utils.close(eventListener, handleEvent);
- }
-
- if (!guid) {
- // First time any channel has seen this subscriber
- guid = '' + nextGuid++;
- }
- handleEvent.observer_guid = guid;
- eventListenerOrFunction.observer_guid = guid;
-
- // Don't add the same handler more than once.
- if (!this.handlers[guid]) {
- this.handlers[guid] = handleEvent;
- this.numHandlers++;
- if (this.numHandlers == 1) {
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-/**
- * Unsubscribes the function with the given guid from the channel.
- */
-Channel.prototype.unsubscribe = function(eventListenerOrFunction) {
- checkSubscriptionArgument(eventListenerOrFunction);
- var handleEvent, guid, handler;
-
- if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
- // Received an EventListener object implementing the handleEvent interface
- handleEvent = eventListenerOrFunction.handleEvent;
- } else {
- // Received a function to handle event
- handleEvent = eventListenerOrFunction;
- }
-
- guid = handleEvent.observer_guid;
- handler = this.handlers[guid];
- if (handler) {
- delete this.handlers[guid];
- this.numHandlers--;
- if (this.numHandlers === 0) {
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-/**
- * Calls all functions subscribed to this channel.
- */
-Channel.prototype.fire = function(e) {
- var fail = false,
- fireArgs = Array.prototype.slice.call(arguments);
- // Apply stickiness.
- if (this.state == 1) {
- this.state = 2;
- this.fireArgs = fireArgs;
- }
- if (this.numHandlers) {
- // Copy the values first so that it is safe to modify it from within
- // callbacks.
- var toCall = [];
- for (var item in this.handlers) {
- toCall.push(this.handlers[item]);
- }
- for (var i = 0; i < toCall.length; ++i) {
- toCall[i].apply(this, fireArgs);
- }
- if (this.state == 2 && this.numHandlers) {
- this.numHandlers = 0;
- this.handlers = {};
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-
-// defining them here so they are ready super fast!
-// DOM event that is received when the web page is loaded and parsed.
-channel.createSticky('onDOMContentLoaded');
-
-// Event to indicate the Cordova native side is ready.
-channel.createSticky('onNativeReady');
-
-// Event to indicate that all Cordova JavaScript objects have been created
-// and it's time to run plugin constructors.
-channel.createSticky('onCordovaReady');
-
-// Event to indicate that all automatically loaded JS plugins are loaded and ready.
-// FIXME remove this
-channel.createSticky('onPluginsReady');
-
-// Event to indicate that Cordova is ready
-channel.createSticky('onDeviceReady');
-
-// Event to indicate a resume lifecycle event
-channel.create('onResume');
-
-// Event to indicate a pause lifecycle event
-channel.create('onPause');
-
-// Channels that must fire before "deviceready" is fired.
-channel.waitForInitialization('onCordovaReady');
-channel.waitForInitialization('onDOMContentLoaded');
-
-module.exports = channel;
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/exec.js
-define("cordova/exec", function(require, exports, module) {
-
-/**
- * Execute a cordova command. It is up to the native side whether this action
- * is synchronous or asynchronous. The native side can return:
- * Synchronous: PluginResult object as a JSON string
- * Asynchronous: Empty string ""
- * If async, the native side will cordova.callbackSuccess or cordova.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success The success callback
- * @param {Function} fail The fail callback
- * @param {String} service The name of the service to use
- * @param {String} action Action to be run in cordova
- * @param {String[]} [args] Zero or more arguments to pass to the method
- */
-var cordova = require('cordova'),
- nativeApiProvider = require('cordova/android/nativeapiprovider'),
- utils = require('cordova/utils'),
- base64 = require('cordova/base64'),
- channel = require('cordova/channel'),
- jsToNativeModes = {
- PROMPT: 0,
- JS_OBJECT: 1
- },
- nativeToJsModes = {
- // Polls for messages using the JS->Native bridge.
- POLLING: 0,
- // For LOAD_URL to be viable, it would need to have a work-around for
- // the bug where the soft-keyboard gets dismissed when a message is sent.
- LOAD_URL: 1,
- // For the ONLINE_EVENT to be viable, it would need to intercept all event
- // listeners (both through addEventListener and window.ononline) as well
- // as set the navigator property itself.
- ONLINE_EVENT: 2,
- EVAL_BRIDGE: 3
- },
- jsToNativeBridgeMode, // Set lazily.
- nativeToJsBridgeMode = nativeToJsModes.EVAL_BRIDGE,
- pollEnabled = false,
- bridgeSecret = -1;
-
-var messagesFromNative = [];
-var isProcessing = false;
-var resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();
-var nextTick = resolvedPromise ? function(fn) { resolvedPromise.then(fn); } : function(fn) { setTimeout(fn); };
-
-function androidExec(success, fail, service, action, args) {
- if (bridgeSecret < 0) {
- // If we ever catch this firing, we'll need to queue up exec()s
- // and fire them once we get a secret. For now, I don't think
- // it's possible for exec() to be called since plugins are parsed but
- // not run until until after onNativeReady.
- throw new Error('exec() called without bridgeSecret');
- }
- // Set default bridge modes if they have not already been set.
- // By default, we use the failsafe, since addJavascriptInterface breaks too often
- if (jsToNativeBridgeMode === undefined) {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- }
-
- // If args is not provided, default to an empty array
- args = args || [];
-
- // Process any ArrayBuffers in the args into a string.
- for (var i = 0; i < args.length; i++) {
- if (utils.typeName(args[i]) == 'ArrayBuffer') {
- args[i] = base64.fromArrayBuffer(args[i]);
- }
- }
-
- var callbackId = service + cordova.callbackId++,
- argsJson = JSON.stringify(args);
- if (success || fail) {
- cordova.callbacks[callbackId] = {success:success, fail:fail};
- }
-
- var msgs = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);
- // If argsJson was received by Java as null, try again with the PROMPT bridge mode.
- // This happens in rare circumstances, such as when certain Unicode characters are passed over the bridge on a Galaxy S2. See CB-2666.
- if (jsToNativeBridgeMode == jsToNativeModes.JS_OBJECT && msgs === "@Null arguments.") {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.PROMPT);
- androidExec(success, fail, service, action, args);
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- } else if (msgs) {
- messagesFromNative.push(msgs);
- // Always process async to avoid exceptions messing up stack.
- nextTick(processMessages);
- }
-}
-
-androidExec.init = function() {
- //CB-11828
- //This failsafe checks the version of Android and if it's Jellybean, it switches it to
- //using the Online Event bridge for communicating from Native to JS
- //
- //It's ugly, but it's necessary.
- var check = navigator.userAgent.toLowerCase().match(/android\s[0-9].[0-9]/);
- var version_code = check && check[0].match(/4.[0-3].*/);
- if (version_code != null && nativeToJsBridgeMode == nativeToJsModes.EVAL_BRIDGE) {
- nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT;
- }
-
- bridgeSecret = +prompt('', 'gap_init:' + nativeToJsBridgeMode);
- channel.onNativeReady.fire();
-};
-
-function pollOnceFromOnlineEvent() {
- pollOnce(true);
-}
-
-function pollOnce(opt_fromOnlineEvent) {
- if (bridgeSecret < 0) {
- // This can happen when the NativeToJsMessageQueue resets the online state on page transitions.
- // We know there's nothing to retrieve, so no need to poll.
- return;
- }
- var msgs = nativeApiProvider.get().retrieveJsMessages(bridgeSecret, !!opt_fromOnlineEvent);
- if (msgs) {
- messagesFromNative.push(msgs);
- // Process sync since we know we're already top-of-stack.
- processMessages();
- }
-}
-
-function pollingTimerFunc() {
- if (pollEnabled) {
- pollOnce();
- setTimeout(pollingTimerFunc, 50);
- }
-}
-
-function hookOnlineApis() {
- function proxyEvent(e) {
- cordova.fireWindowEvent(e.type);
- }
- // The network module takes care of firing online and offline events.
- // It currently fires them only on document though, so we bridge them
- // to window here (while first listening for exec()-releated online/offline
- // events).
- window.addEventListener('online', pollOnceFromOnlineEvent, false);
- window.addEventListener('offline', pollOnceFromOnlineEvent, false);
- cordova.addWindowEventHandler('online');
- cordova.addWindowEventHandler('offline');
- document.addEventListener('online', proxyEvent, false);
- document.addEventListener('offline', proxyEvent, false);
-}
-
-hookOnlineApis();
-
-androidExec.jsToNativeModes = jsToNativeModes;
-androidExec.nativeToJsModes = nativeToJsModes;
-
-androidExec.setJsToNativeBridgeMode = function(mode) {
- if (mode == jsToNativeModes.JS_OBJECT && !window._cordovaNative) {
- mode = jsToNativeModes.PROMPT;
- }
- nativeApiProvider.setPreferPrompt(mode == jsToNativeModes.PROMPT);
- jsToNativeBridgeMode = mode;
-};
-
-androidExec.setNativeToJsBridgeMode = function(mode) {
- if (mode == nativeToJsBridgeMode) {
- return;
- }
- if (nativeToJsBridgeMode == nativeToJsModes.POLLING) {
- pollEnabled = false;
- }
-
- nativeToJsBridgeMode = mode;
- // Tell the native side to switch modes.
- // Otherwise, it will be set by androidExec.init()
- if (bridgeSecret >= 0) {
- nativeApiProvider.get().setNativeToJsBridgeMode(bridgeSecret, mode);
- }
-
- if (mode == nativeToJsModes.POLLING) {
- pollEnabled = true;
- setTimeout(pollingTimerFunc, 1);
- }
-};
-
-function buildPayload(payload, message) {
- var payloadKind = message.charAt(0);
- if (payloadKind == 's') {
- payload.push(message.slice(1));
- } else if (payloadKind == 't') {
- payload.push(true);
- } else if (payloadKind == 'f') {
- payload.push(false);
- } else if (payloadKind == 'N') {
- payload.push(null);
- } else if (payloadKind == 'n') {
- payload.push(+message.slice(1));
- } else if (payloadKind == 'A') {
- var data = message.slice(1);
- payload.push(base64.toArrayBuffer(data));
- } else if (payloadKind == 'S') {
- payload.push(window.atob(message.slice(1)));
- } else if (payloadKind == 'M') {
- var multipartMessages = message.slice(1);
- while (multipartMessages !== "") {
- var spaceIdx = multipartMessages.indexOf(' ');
- var msgLen = +multipartMessages.slice(0, spaceIdx);
- var multipartMessage = multipartMessages.substr(spaceIdx + 1, msgLen);
- multipartMessages = multipartMessages.slice(spaceIdx + msgLen + 1);
- buildPayload(payload, multipartMessage);
- }
- } else {
- payload.push(JSON.parse(message));
- }
-}
-
-// Processes a single message, as encoded by NativeToJsMessageQueue.java.
-function processMessage(message) {
- var firstChar = message.charAt(0);
- if (firstChar == 'J') {
- // This is deprecated on the .java side. It doesn't work with CSP enabled.
- eval(message.slice(1));
- } else if (firstChar == 'S' || firstChar == 'F') {
- var success = firstChar == 'S';
- var keepCallback = message.charAt(1) == '1';
- var spaceIdx = message.indexOf(' ', 2);
- var status = +message.slice(2, spaceIdx);
- var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
- var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
- var payloadMessage = message.slice(nextSpaceIdx + 1);
- var payload = [];
- buildPayload(payload, payloadMessage);
- cordova.callbackFromNative(callbackId, success, status, payload, keepCallback);
- } else {
- console.log("processMessage failed: invalid message: " + JSON.stringify(message));
- }
-}
-
-function processMessages() {
- // Check for the reentrant case.
- if (isProcessing) {
- return;
- }
- if (messagesFromNative.length === 0) {
- return;
- }
- isProcessing = true;
- try {
- var msg = popMessageFromQueue();
- // The Java side can send a * message to indicate that it
- // still has messages waiting to be retrieved.
- if (msg == '*' && messagesFromNative.length === 0) {
- nextTick(pollOnce);
- return;
- }
- processMessage(msg);
- } finally {
- isProcessing = false;
- if (messagesFromNative.length > 0) {
- nextTick(processMessages);
- }
- }
-}
-
-function popMessageFromQueue() {
- var messageBatch = messagesFromNative.shift();
- if (messageBatch == '*') {
- return '*';
- }
-
- var spaceIdx = messageBatch.indexOf(' ');
- var msgLen = +messageBatch.slice(0, spaceIdx);
- var message = messageBatch.substr(spaceIdx + 1, msgLen);
- messageBatch = messageBatch.slice(spaceIdx + msgLen + 1);
- if (messageBatch) {
- messagesFromNative.unshift(messageBatch);
- }
- return message;
-}
-
-module.exports = androidExec;
-
-});
-
-// file: src/common/exec/proxy.js
-define("cordova/exec/proxy", function(require, exports, module) {
-
-
-// internal map of proxy function
-var CommandProxyMap = {};
-
-module.exports = {
-
- // example: cordova.commandProxy.add("Accelerometer",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);
- add:function(id,proxyObj) {
- console.log("adding proxy for " + id);
- CommandProxyMap[id] = proxyObj;
- return proxyObj;
- },
-
- // cordova.commandProxy.remove("Accelerometer");
- remove:function(id) {
- var proxy = CommandProxyMap[id];
- delete CommandProxyMap[id];
- CommandProxyMap[id] = null;
- return proxy;
- },
-
- get:function(service,action) {
- return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
- }
-};
-});
-
-// file: src/common/init.js
-define("cordova/init", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var modulemapper = require('cordova/modulemapper');
-var platform = require('cordova/platform');
-var pluginloader = require('cordova/pluginloader');
-var utils = require('cordova/utils');
-
-var platformInitChannelsArray = [channel.onNativeReady, channel.onPluginsReady];
-
-function logUnfiredChannels(arr) {
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i].state != 2) {
- console.log('Channel not fired: ' + arr[i].type);
- }
- }
-}
-
-window.setTimeout(function() {
- if (channel.onDeviceReady.state != 2) {
- console.log('deviceready has not fired after 5 seconds.');
- logUnfiredChannels(platformInitChannelsArray);
- logUnfiredChannels(channel.deviceReadyChannelsArray);
- }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
- var CordovaNavigator = function() {};
- CordovaNavigator.prototype = origNavigator;
- var newNavigator = new CordovaNavigator();
- // This work-around really only applies to new APIs that are newer than Function.bind.
- // Without it, APIs such as getGamepads() break.
- if (CordovaNavigator.bind) {
- for (var key in origNavigator) {
- if (typeof origNavigator[key] == 'function') {
- newNavigator[key] = origNavigator[key].bind(origNavigator);
- }
- else {
- (function(k) {
- utils.defineGetterSetter(newNavigator,key,function() {
- return origNavigator[k];
- });
- })(key);
- }
- }
- }
- return newNavigator;
-}
-
-if (window.navigator) {
- window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
- window.console = {
- log: function(){}
- };
-}
-if (!window.console.warn) {
- window.console.warn = function(msg) {
- this.log("warn: " + msg);
- };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onActivated = cordova.addDocumentEventHandler('activated');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
- channel.onDOMContentLoaded.fire();
-} else {
- document.addEventListener('DOMContentLoaded', function() {
- channel.onDOMContentLoaded.fire();
- }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
- channel.onNativeReady.fire();
-}
-
-modulemapper.clobbers('cordova', 'cordova');
-modulemapper.clobbers('cordova/exec', 'cordova.exec');
-modulemapper.clobbers('cordova/exec', 'Cordova.exec');
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-// Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
-// The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
- pluginloader.load(function() {
- channel.onPluginsReady.fire();
- });
-}, 0);
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
- modulemapper.mapModules(window);
-
- platform.initialize && platform.initialize();
-
- // Fire event to notify that all objects are created
- channel.onCordovaReady.fire();
-
- // Fire onDeviceReady event once page has fully loaded, all
- // constructors have run and cordova info has been received from native
- // side.
- channel.join(function() {
- require('cordova').fireDocumentEvent('deviceready');
- }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-
-});
-
-// file: src/common/init_b.js
-define("cordova/init_b", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var modulemapper = require('cordova/modulemapper');
-var platform = require('cordova/platform');
-var pluginloader = require('cordova/pluginloader');
-var utils = require('cordova/utils');
-
-var platformInitChannelsArray = [channel.onDOMContentLoaded, channel.onNativeReady, channel.onPluginsReady];
-
-// setting exec
-cordova.exec = require('cordova/exec');
-
-function logUnfiredChannels(arr) {
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i].state != 2) {
- console.log('Channel not fired: ' + arr[i].type);
- }
- }
-}
-
-window.setTimeout(function() {
- if (channel.onDeviceReady.state != 2) {
- console.log('deviceready has not fired after 5 seconds.');
- logUnfiredChannels(platformInitChannelsArray);
- logUnfiredChannels(channel.deviceReadyChannelsArray);
- }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
- var CordovaNavigator = function() {};
- CordovaNavigator.prototype = origNavigator;
- var newNavigator = new CordovaNavigator();
- // This work-around really only applies to new APIs that are newer than Function.bind.
- // Without it, APIs such as getGamepads() break.
- if (CordovaNavigator.bind) {
- for (var key in origNavigator) {
- if (typeof origNavigator[key] == 'function') {
- newNavigator[key] = origNavigator[key].bind(origNavigator);
- }
- else {
- (function(k) {
- utils.defineGetterSetter(newNavigator,key,function() {
- return origNavigator[k];
- });
- })(key);
- }
- }
- }
- return newNavigator;
-}
-if (window.navigator) {
- window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
- window.console = {
- log: function(){}
- };
-}
-if (!window.console.warn) {
- window.console.warn = function(msg) {
- this.log("warn: " + msg);
- };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onActivated = cordova.addDocumentEventHandler('activated');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
- channel.onDOMContentLoaded.fire();
-} else {
- document.addEventListener('DOMContentLoaded', function() {
- channel.onDOMContentLoaded.fire();
- }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
- channel.onNativeReady.fire();
-}
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-// Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
-// The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
- pluginloader.load(function() {
- channel.onPluginsReady.fire();
- });
-}, 0);
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
- modulemapper.mapModules(window);
-
- platform.initialize && platform.initialize();
-
- // Fire event to notify that all objects are created
- channel.onCordovaReady.fire();
-
- // Fire onDeviceReady event once page has fully loaded, all
- // constructors have run and cordova info has been received from native
- // side.
- channel.join(function() {
- require('cordova').fireDocumentEvent('deviceready');
- }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-});
-
-// file: src/common/modulemapper.js
-define("cordova/modulemapper", function(require, exports, module) {
-
-var builder = require('cordova/builder'),
- moduleMap = define.moduleMap,
- symbolList,
- deprecationMap;
-
-exports.reset = function() {
- symbolList = [];
- deprecationMap = {};
-};
-
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
- if (!(moduleName in moduleMap)) {
- throw new Error('Module ' + moduleName + ' does not exist.');
- }
- symbolList.push(strategy, moduleName, symbolPath);
- if (opt_deprecationMessage) {
- deprecationMap[symbolPath] = opt_deprecationMessage;
- }
-}
-
-// Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.runs = function(moduleName) {
- addEntry('r', moduleName, null);
-};
-
-function prepareNamespace(symbolPath, context) {
- if (!symbolPath) {
- return context;
- }
- var parts = symbolPath.split('.');
- var cur = context;
- for (var i = 0, part; part = parts[i]; ++i) {
- cur = cur[part] = cur[part] || {};
- }
- return cur;
-}
-
-exports.mapModules = function(context) {
- var origSymbols = {};
- context.CDV_origSymbols = origSymbols;
- for (var i = 0, len = symbolList.length; i < len; i += 3) {
- var strategy = symbolList[i];
- var moduleName = symbolList[i + 1];
- var module = require(moduleName);
- // <runs/>
- if (strategy == 'r') {
- continue;
- }
- var symbolPath = symbolList[i + 2];
- var lastDot = symbolPath.lastIndexOf('.');
- var namespace = symbolPath.substr(0, lastDot);
- var lastName = symbolPath.substr(lastDot + 1);
-
- var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;
- var parentObj = prepareNamespace(namespace, context);
- var target = parentObj[lastName];
-
- if (strategy == 'm' && target) {
- builder.recursiveMerge(target, module);
- } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
- if (!(symbolPath in origSymbols)) {
- origSymbols[symbolPath] = target;
- }
- builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);
- }
- }
-};
-
-exports.getOriginalSymbol = function(context, symbolPath) {
- var origSymbols = context.CDV_origSymbols;
- if (origSymbols && (symbolPath in origSymbols)) {
- return origSymbols[symbolPath];
- }
- var parts = symbolPath.split('.');
- var obj = context;
- for (var i = 0; i < parts.length; ++i) {
- obj = obj && obj[parts[i]];
- }
- return obj;
-};
-
-exports.reset();
-
-
-});
-
-// file: src/common/modulemapper_b.js
-define("cordova/modulemapper_b", function(require, exports, module) {
-
-var builder = require('cordova/builder'),
- symbolList = [],
- deprecationMap;
-
-exports.reset = function() {
- symbolList = [];
- deprecationMap = {};
-};
-
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
- symbolList.push(strategy, moduleName, symbolPath);
- if (opt_deprecationMessage) {
- deprecationMap[symbolPath] = opt_deprecationMessage;
- }
-}
-
-// Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.runs = function(moduleName) {
- addEntry('r', moduleName, null);
-};
-
-function prepareNamespace(symbolPath, context) {
- if (!symbolPath) {
- return context;
- }
- var parts = symbolPath.split('.');
- var cur = context;
- for (var i = 0, part; part = parts[i]; ++i) {
- cur = cur[part] = cur[part] || {};
- }
- return cur;
-}
-
-exports.mapModules = function(context) {
- var origSymbols = {};
- context.CDV_origSymbols = origSymbols;
- for (var i = 0, len = symbolList.length; i < len; i += 3) {
- var strategy = symbolList[i];
- var moduleName = symbolList[i + 1];
- var module = require(moduleName);
- // <runs/>
- if (strategy == 'r') {
- continue;
- }
- var symbolPath = symbolList[i + 2];
- var lastDot = symbolPath.lastIndexOf('.');
- var namespace = symbolPath.substr(0, lastDot);
- var lastName = symbolPath.substr(lastDot + 1);
-
- var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;
- var parentObj = prepareNamespace(namespace, context);
- var target = parentObj[lastName];
-
- if (strategy == 'm' && target) {
- builder.recursiveMerge(target, module);
- } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
- if (!(symbolPath in origSymbols)) {
- origSymbols[symbolPath] = target;
- }
- builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);
- }
- }
-};
-
-exports.getOriginalSymbol = function(context, symbolPath) {
- var origSymbols = context.CDV_origSymbols;
- if (origSymbols && (symbolPath in origSymbols)) {
- return origSymbols[symbolPath];
- }
- var parts = symbolPath.split('.');
- var obj = context;
- for (var i = 0; i < parts.length; ++i) {
- obj = obj && obj[parts[i]];
- }
- return obj;
-};
-
-exports.reset();
-
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/platform.js
-define("cordova/platform", function(require, exports, module) {
-
-// The last resume event that was received that had the result of a plugin call.
-var lastResumeEvent = null;
-
-module.exports = {
- id: 'android',
- bootstrap: function() {
- var channel = require('cordova/channel'),
- cordova = require('cordova'),
- exec = require('cordova/exec'),
- modulemapper = require('cordova/modulemapper');
-
- // Get the shared secret needed to use the bridge.
- exec.init();
-
- // TODO: Extract this as a proper plugin.
- modulemapper.clobbers('cordova/plugin/android/app', 'navigator.app');
-
- var APP_PLUGIN_NAME = Number(cordova.platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
- // Inject a listener for the backbutton on the document.
- var backButtonChannel = cordova.addDocumentEventHandler('backbutton');
- backButtonChannel.onHasSubscribersChange = function() {
- // If we just attached the first handler or detached the last handler,
- // let native know we need to override the back button.
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [this.numHandlers == 1]);
- };
-
- // Add hardware MENU and SEARCH button handlers
- cordova.addDocumentEventHandler('menubutton');
- cordova.addDocumentEventHandler('searchbutton');
-
- function bindButtonChannel(buttonName) {
- // generic button bind used for volumeup/volumedown buttons
- var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
- volumeButtonChannel.onHasSubscribersChange = function() {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [buttonName, this.numHandlers == 1]);
- };
- }
- // Inject a listener for the volume buttons on the document.
- bindButtonChannel('volumeup');
- bindButtonChannel('volumedown');
-
- // The resume event is not "sticky", but it is possible that the event
- // will contain the result of a plugin call. We need to ensure that the
- // plugin result is delivered even after the event is fired (CB-10498)
- var cordovaAddEventListener = document.addEventListener;
-
- document.addEventListener = function(evt, handler, capture) {
- cordovaAddEventListener(evt, handler, capture);
-
- if (evt === 'resume' && lastResumeEvent) {
- handler(lastResumeEvent);
- }
- };
-
- // Let native code know we are all done on the JS side.
- // Native code will then un-hide the WebView.
- channel.onCordovaReady.subscribe(function() {
- exec(onMessageFromNative, null, APP_PLUGIN_NAME, 'messageChannel', []);
- exec(null, null, APP_PLUGIN_NAME, "show", []);
- });
- }
-};
-
-function onMessageFromNative(msg) {
- var cordova = require('cordova');
- var action = msg.action;
-
- switch (action)
- {
- // Button events
- case 'backbutton':
- case 'menubutton':
- case 'searchbutton':
- // App life cycle events
- case 'pause':
- // Volume events
- case 'volumedownbutton':
- case 'volumeupbutton':
- cordova.fireDocumentEvent(action);
- break;
- case 'resume':
- if(arguments.length > 1 && msg.pendingResult) {
- if(arguments.length === 2) {
- msg.pendingResult.result = arguments[1];
- } else {
- // The plugin returned a multipart message
- var res = [];
- for(var i = 1; i < arguments.length; i++) {
- res.push(arguments[i]);
- }
- msg.pendingResult.result = res;
- }
-
- // Save the plugin result so that it can be delivered to the js
- // even if they miss the initial firing of the event
- lastResumeEvent = msg;
- }
- cordova.fireDocumentEvent(action, msg);
- break;
- default:
- throw new Error('Unknown event action ' + action);
- }
-}
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/plugin/android/app.js
-define("cordova/plugin/android/app", function(require, exports, module) {
-
-var exec = require('cordova/exec');
-var APP_PLUGIN_NAME = Number(require('cordova').platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
-module.exports = {
- /**
- * Clear the resource cache.
- */
- clearCache:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearCache", []);
- },
-
- /**
- * Load the url into the webview or into new browser instance.
- *
- * @param url The URL to load
- * @param props Properties that can be passed in to the activity:
- * wait: int => wait msec before loading URL
- * loadingDialog: "Title,Message" => display a native loading dialog
- * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
- * clearHistory: boolean => clear webview history (default=false)
- * openExternal: boolean => open in a new browser (default=false)
- *
- * Example:
- * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
- loadUrl:function(url, props) {
- exec(null, null, APP_PLUGIN_NAME, "loadUrl", [url, props]);
- },
-
- /**
- * Cancel loadUrl that is waiting to be loaded.
- */
- cancelLoadUrl:function() {
- exec(null, null, APP_PLUGIN_NAME, "cancelLoadUrl", []);
- },
-
- /**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
- clearHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearHistory", []);
- },
-
- /**
- * Go to previous page displayed.
- * This is the same as pressing the backbutton on Android device.
- */
- backHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "backHistory", []);
- },
-
- /**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "backbutton" event, this is automatically done.
- *
- * @param override T=override, F=cancel override
- */
- overrideBackbutton:function(override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [override]);
- },
-
- /**
- * Override the default behavior of the Android volume button.
- * If overridden, when the volume button is pressed, the "volume[up|down]button"
- * JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "volume[up|down]button" event, this is automatically done.
- *
- * @param button volumeup, volumedown
- * @param override T=override, F=cancel override
- */
- overrideButton:function(button, override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [button, override]);
- },
-
- /**
- * Exit and terminate the application.
- */
- exitApp:function() {
- return exec(null, null, APP_PLUGIN_NAME, "exitApp", []);
- }
-};
-
-});
-
-// file: src/common/pluginloader.js
-define("cordova/pluginloader", function(require, exports, module) {
-
-var modulemapper = require('cordova/modulemapper');
-var urlutil = require('cordova/urlutil');
-
-// Helper function to inject a <script> tag.
-// Exported for testing.
-exports.injectScript = function(url, onload, onerror) {
- var script = document.createElement("script");
- // onload fires even when script fails loads with an error.
- script.onload = onload;
- // onerror fires for malformed URLs.
- script.onerror = onerror;
- script.src = url;
- document.head.appendChild(script);
-};
-
-function injectIfNecessary(id, url, onload, onerror) {
- onerror = onerror || onload;
- if (id in define.moduleMap) {
- onload();
- } else {
- exports.injectScript(url, function() {
- if (id in define.moduleMap) {
- onload();
- } else {
- onerror();
- }
- }, onerror);
- }
-}
-
-function onScriptLoadingComplete(moduleList, finishPluginLoading) {
- // Loop through all the plugins and then through their clobbers and merges.
- for (var i = 0, module; module = moduleList[i]; i++) {
- if (module.clobbers && module.clobbers.length) {
- for (var j = 0; j < module.clobbers.length; j++) {
- modulemapper.clobbers(module.id, module.clobbers[j]);
- }
- }
-
- if (module.merges && module.merges.length) {
- for (var k = 0; k < module.merges.length; k++) {
- modulemapper.merges(module.id, module.merges[k]);
- }
- }
-
- // Finally, if runs is truthy we want to simply require() the module.
- if (module.runs) {
- modulemapper.runs(module.id);
- }
- }
-
- finishPluginLoading();
-}
-
-// Handler for the cordova_plugins.js content.
-// See plugman's plugin_loader.js for the details of this object.
-// This function is only called if the really is a plugins array that isn't empty.
-// Otherwise the onerror response handler will just call finishPluginLoading().
-function handlePluginsObject(path, moduleList, finishPluginLoading) {
- // Now inject the scripts.
- var scriptCounter = moduleList.length;
-
- if (!scriptCounter) {
- finishPluginLoading();
- return;
- }
- function scriptLoadedCallback() {
- if (!--scriptCounter) {
- onScriptLoadingComplete(moduleList, finishPluginLoading);
- }
- }
-
- for (var i = 0; i < moduleList.length; i++) {
- injectIfNecessary(moduleList[i].id, path + moduleList[i].file, scriptLoadedCallback);
- }
-}
-
-function findCordovaPath() {
- var path = null;
- var scripts = document.getElementsByTagName('script');
- var term = '/cordova.js';
- for (var n = scripts.length-1; n>-1; n--) {
- var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007).
- if (src.indexOf(term) == (src.length - term.length)) {
- path = src.substring(0, src.length - term.length) + '/';
- break;
- }
- }
- return path;
-}
-
-// Tries to load all plugins' js-modules.
-// This is an async process, but onDeviceReady is blocked on onPluginsReady.
-// onPluginsReady is fired when there are no plugins to load, or they are all done.
-exports.load = function(callback) {
- var pathPrefix = findCordovaPath();
- if (pathPrefix === null) {
- console.log('Could not find cordova.js script tag. Plugin loading may fail.');
- pathPrefix = '';
- }
- injectIfNecessary('cordova/plugin_list', pathPrefix + 'cordova_plugins.js', function() {
- var moduleList = require("cordova/plugin_list");
- handlePluginsObject(pathPrefix, moduleList, callback);
- }, callback);
-};
-
-
-});
-
-// file: src/common/pluginloader_b.js
-define("cordova/pluginloader_b", function(require, exports, module) {
-
-var modulemapper = require('cordova/modulemapper');
-
-// Handler for the cordova_plugins.js content.
-// See plugman's plugin_loader.js for the details of this object.
-function handlePluginsObject(moduleList) {
- // if moduleList is not defined or empty, we've nothing to do
- if (!moduleList || !moduleList.length) {
- return;
- }
-
- // Loop through all the modules and then through their clobbers and merges.
- for (var i = 0, module; module = moduleList[i]; i++) {
- if (module.clobbers && module.clobbers.length) {
- for (var j = 0; j < module.clobbers.length; j++) {
- modulemapper.clobbers(module.id, module.clobbers[j]);
- }
- }
-
- if (module.merges && module.merges.length) {
- for (var k = 0; k < module.merges.length; k++) {
- modulemapper.merges(module.id, module.merges[k]);
- }
- }
-
- // Finally, if runs is truthy we want to simply require() the module.
- if (module.runs) {
- modulemapper.runs(module.id);
- }
- }
-}
-
-// Loads all plugins' js-modules. Plugin loading is syncronous in browserified bundle
-// but the method accepts callback to be compatible with non-browserify flow.
-// onDeviceReady is blocked on onPluginsReady. onPluginsReady is fired when there are
-// no plugins to load, or they are all done.
-exports.load = function(callback) {
- var moduleList = require("cordova/plugin_list");
- handlePluginsObject(moduleList);
-
- callback();
-};
-
-
-});
-
-// file: src/common/urlutil.js
-define("cordova/urlutil", function(require, exports, module) {
-
-
-/**
- * For already absolute URLs, returns what is passed in.
- * For relative URLs, converts them to absolute ones.
- */
-exports.makeAbsolute = function makeAbsolute(url) {
- var anchorEl = document.createElement('a');
- anchorEl.href = url;
- return anchorEl.href;
-};
-
-
-});
-
-// file: src/common/utils.js
-define("cordova/utils", function(require, exports, module) {
-
-var utils = exports;
-
-/**
- * Defines a property getter / setter for obj[key].
- */
-utils.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) {
- if (Object.defineProperty) {
- var desc = {
- get: getFunc,
- configurable: true
- };
- if (opt_setFunc) {
- desc.set = opt_setFunc;
- }
- Object.defineProperty(obj, key, desc);
- } else {
- obj.__defineGetter__(key, getFunc);
- if (opt_setFunc) {
- obj.__defineSetter__(key, opt_setFunc);
- }
- }
-};
-
-/**
- * Defines a property getter for obj[key].
- */
-utils.defineGetter = utils.defineGetterSetter;
-
-utils.arrayIndexOf = function(a, item) {
- if (a.indexOf) {
- return a.indexOf(item);
- }
- var len = a.length;
- for (var i = 0; i < len; ++i) {
- if (a[i] == item) {
- return i;
- }
- }
- return -1;
-};
-
-/**
- * Returns whether the item was found in the array.
- */
-utils.arrayRemove = function(a, item) {
- var index = utils.arrayIndexOf(a, item);
- if (index != -1) {
- a.splice(index, 1);
- }
- return index != -1;
-};
-
-utils.typeName = function(val) {
- return Object.prototype.toString.call(val).slice(8, -1);
-};
-
-/**
- * Returns an indication of whether the argument is an array or not
- */
-utils.isArray = Array.isArray ||
- function(a) {return utils.typeName(a) == 'Array';};
-
-/**
- * Returns an indication of whether the argument is a Date or not
- */
-utils.isDate = function(d) {
- return (d instanceof Date);
-};
-
-/**
- * Does a deep clone of the object.
- */
-utils.clone = function(obj) {
- if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') {
- return obj;
- }
-
- var retVal, i;
-
- if(utils.isArray(obj)){
- retVal = [];
- for(i = 0; i < obj.length; ++i){
- retVal.push(utils.clone(obj[i]));
- }
- return retVal;
- }
-
- retVal = {};
- for(i in obj){
- // https://issues.apache.org/jira/browse/CB-11522 'unknown' type may be returned in
- // custom protocol activation case on Windows Phone 8.1 causing "No such interface supported" exception
- // on cloning.
- if((!(i in retVal) || retVal[i] != obj[i]) && typeof obj[i] != 'undefined' && typeof obj[i] != 'unknown') {
- retVal[i] = utils.clone(obj[i]);
- }
- }
- return retVal;
-};
-
-/**
- * Returns a wrapped version of the function
- */
-utils.close = function(context, func, params) {
- return function() {
- var args = params || arguments;
- return func.apply(context, args);
- };
-};
-
-//------------------------------------------------------------------------------
-function UUIDcreatePart(length) {
- var uuidpart = "";
- for (var i=0; i<length; i++) {
- var uuidchar = parseInt((Math.random() * 256), 10).toString(16);
- if (uuidchar.length == 1) {
- uuidchar = "0" + uuidchar;
- }
- uuidpart += uuidchar;
- }
- return uuidpart;
-}
-
-/**
- * Create a UUID
- */
-utils.createUUID = function() {
- return UUIDcreatePart(4) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(6);
-};
-
-
-/**
- * Extends a child object from a parent object using classical inheritance
- * pattern.
- */
-utils.extend = (function() {
- // proxy used to establish prototype chain
- var F = function() {};
- // extend Child from Parent
- return function(Child, Parent) {
-
- F.prototype = Parent.prototype;
- Child.prototype = new F();
- Child.__super__ = Parent.prototype;
- Child.prototype.constructor = Child;
- };
-}());
-
-/**
- * Alerts a message in any available way: alert or console.log.
- */
-utils.alert = function(msg) {
- if (window.alert) {
- window.alert(msg);
- } else if (console && console.log) {
- console.log(msg);
- }
-};
-
-
-
-
-
-});
-
-window.cordova = require('cordova');
-// file: src/scripts/bootstrap.js
-
-require('cordova/init');
-
-})(); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/cordova_plugins.js b/StoneIsland/platforms/android/assets/www/cordova_plugins.js
deleted file mode 100755
index 2b01e07f..00000000
--- a/StoneIsland/platforms/android/assets/www/cordova_plugins.js
+++ /dev/null
@@ -1,170 +0,0 @@
-cordova.define('cordova/plugin_list', function(require, exports, module) {
-module.exports = [
- {
- "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
- "id": "cordova-plugin-inappbrowser.inappbrowser",
- "pluginId": "cordova-plugin-inappbrowser",
- "clobbers": [
- "cordova.InAppBrowser.open",
- "window.open"
- ]
- },
- {
- "file": "plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js",
- "id": "cordova-plugin-x-socialsharing.SocialSharing",
- "pluginId": "cordova-plugin-x-socialsharing",
- "clobbers": [
- "window.plugins.socialsharing"
- ]
- },
- {
- "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
- "id": "cordova-plugin-customurlscheme.LaunchMyApp",
- "pluginId": "cordova-plugin-customurlscheme",
- "clobbers": [
- "window.plugins.launchmyapp"
- ]
- },
- {
- "file": "plugins/cordova-plugin-device/www/device.js",
- "id": "cordova-plugin-device.device",
- "pluginId": "cordova-plugin-device",
- "clobbers": [
- "device"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/network.js",
- "id": "cordova-plugin-network-information.network",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "navigator.connection",
- "navigator.network.connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/Connection.js",
- "id": "cordova-plugin-network-information.Connection",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "Connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/notification.js",
- "id": "cordova-plugin-dialogs.notification",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/android/notification.js",
- "id": "cordova-plugin-dialogs.notification_android",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
- "id": "cordova-plugin-geolocation.geolocation",
- "pluginId": "cordova-plugin-geolocation",
- "clobbers": [
- "navigator.geolocation"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/PositionError.js",
- "id": "cordova-plugin-geolocation.PositionError",
- "pluginId": "cordova-plugin-geolocation",
- "runs": true
- },
- {
- "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js",
- "id": "ionic-plugin-keyboard.keyboard",
- "pluginId": "ionic-plugin-keyboard",
- "clobbers": [
- "cordova.plugins.Keyboard"
- ],
- "runs": true
- },
- {
- "id": "cordova-plugin-statusbar.statusbar",
- "file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
- "pluginId": "cordova-plugin-statusbar",
- "clobbers": [
- "window.StatusBar"
- ]
- },
- {
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
- "id": "phonegap-plugin-push.PushNotification",
- "file": "plugins/phonegap-plugin-push/www/push.js",
- "pluginId": "phonegap-plugin-push",
- "clobbers": [
- "PushNotification"
- ]
- },
- {
- "id": "cordova-plugin-sim.Sim",
- "file": "plugins/cordova-plugin-sim/www/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "cordova-plugin-sim.SimAndroid",
- "file": "plugins/cordova-plugin-sim/www/android/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.mobile-accessibility",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "window.MobileAccessibility"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "MobileAccessibilityNotifications"
- ]
- }
-];
-module.exports.metadata =
-// TOP OF METADATA
-{
- "cordova-plugin-inappbrowser": "1.5.0",
- "cordova-plugin-x-socialsharing": "5.1.3",
- "cordova-plugin-customurlscheme": "4.2.0",
- "cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-device": "1.1.3",
- "cordova-plugin-network-information": "1.3.0",
- "cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-compat": "1.1.0",
- "cordova-plugin-geolocation": "2.4.0",
- "ionic-plugin-keyboard": "2.2.1",
- "cordova-plugin-statusbar": "2.2.3",
- "cordova-plugin-app-name": "1.0.4",
- "cordova-plugin-splashscreen": "4.0.3",
- "phonegap-plugin-push": "1.9.2",
- "cordova-plugin-sim": "1.3.3",
- "phonegap-plugin-mobile-accessibility": "1.0.5-dev"
-};
-// BOTTOM OF METADATA
-}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/css/account.css b/StoneIsland/platforms/android/assets/www/css/account.css
deleted file mode 100755
index 998b6eac..00000000
--- a/StoneIsland/platforms/android/assets/www/css/account.css
+++ /dev/null
@@ -1,576 +0,0 @@
-.login #login { display: block }
-#login {
- display: none;
-}
-
-
-.logout #logout { display: block }
-#logout {
- display: none;
-}
-
-
-.signup #signup { display: block }
-#signup {
- display: none;
-}
-
-
-.profile #profile { display: block }
-#profile {
- display: none;
-}
-
-
-.payment #payment { display: block }
-#payment {
- display: none;
-}
-
-
-.shipping #shipping { display: block }
-#shipping {
- display: none;
-}
-
-
-.orders #orders { display: block }
-#orders {
- display: none;
-}
-#orders #order_list {
- display: block;
-}
-#orders #single_order {
- display: none;
-}
-#orders.single #order_list {
- display: none;
-}
-#orders.single #single_order {
- display: block;
-}
-
-#order_list {
- width: calc(100vw - 40px);
- position:relative;
- margin:0 auto;
- box-sizing:border-box;
-}
-
-#order_list .list {
- padding:15px 0;
- position:relative;
-}
-
-.images:after {
- content:'';
- width:calc(100% + 100px);
- height:1px;
- background:#666;
- position:absolute;
- bottom:0;
- left:-50px;
-}
-
-.details-container {
- position:relative;
- font-weight:bold;
- letter-spacing:0.2px;
- font-size: 0.688rem;
- margin-bottom:10px;
- width:100%;
- box-sizing:border-box;
-}
-
-.details-container .details {
- position:absolute;
- display:block;
- bottom:0;
- right:0;
- box-sizing:border-box;
-}
-
-.details-container .txt {
- position:relative;
- display:block;
- bottom:0;
- left:0;
- box-sizing:border-box;
-}
-
-.details-container .txt span {
- display:block;
- box-sizing:border-box;
-}
-
-#orders .item img {
- max-width:120px;
- box-sizing:border-box;
-}
-
-.settings #settings { display: block }
-#settings {
- display: none;
-}
-
-
-
-
-
-.form h2 {
- text-align: center;
- margin: 0;
- padding: 20px 10px 8px 10px;
- font-size: 1rem;
- color: #000;
- letter-spacing: 1px;
- font-weight: bold;
-}
-
-label {
- display: flex;
- align-items: center;
- justify-content: center;
- text-align: center;
- font-size: 1rem;
- color: #000;
- letter-spacing:1px;
- text-transform:uppercase;
- height: 48px;
-}
-input[type=text], input[type=password], input[type=number], input[type=date], input[type=email] {
- font-family:pfd, sans-serif;
- font-size: 0.875rem;
- outline:none!important;
- color:#000;
- letter-spacing:1px;
- text-transform:uppercase;
- height: 48px;
- text-align:center;
- margin: 0px auto;
- display:block;
- margin-top: 0px;
- width: calc(100vw - 10px);
- border:1px solid #696969;
- padding: 0;
- border-radius: 0;
-}
-
-input[type=text], input[type=password], input[type=number], input[type=email] {
- -webkit-appearance: none;
-}
-input[type=text]:focus, input[type=password]:focus, input[type=number]:focus, input[type=email] {
- border-width: 2px;
-}
-.half-input {
- margin: 0px auto;
- display: flex;
- flex-direction: row;
- justify-content: flex-start;
- align-items: center;
- margin-top: 4px;
- width: calc(100vw - 10px);
- overflow: auto;
-}
-
-.half-input label {
- width: 50%;
-}
-.half-input input, .half-input select {
- position: relative;
- margin: 0;
- border:none;
- box-sizing: border-box;
- float: left;
- border: 1px solid #696969;
- width: 50%;
-}
-
-.half-input > input:first-child {
- border-right: 1px solid #696969;
-}
-
-#signup .toggle-container, #profile .toggle-container {
- margin: 0px auto;
- display: table;
- margin-top: 0px;
- width: calc(100vw - 10px);
- box-sizing: border-box;
- padding:0px 18px 2px;
- font-size: 1rem;
-}
-
-#settings .toggle-container {
- margin: 0px auto;
- display: table;
- margin-top: 10px;
- width: calc(100vw - 10px);
- box-sizing: border-box;
- padding:10px 18px 2px;
- font-size: 1rem;
-}
-
-.toggle-row {
- display:block;
- padding-bottom:16px;
-}
-
-.toggle-container .caption {
- display:table-cell;
- vertical-align:middle;
- width:100%;
-}
-
-.toggle-container .toggle {
- display: table-cell;
- vertical-align: middle;
- text-align: right;
- position: relative;
- right: 12px;
-}
-
-.toggle-container h3 {
- margin:0;
-}
-
-input.switch {
- height: 50px;
- width: 50px;
- opacity: 0;
- z-index: 9999999;
- position: relative;
-}
-
-input.switch + label {
- display: inline-block;
- box-shadow: inset 0 0 0px 1px rgba(0,0,0,.7);
- text-indent: -5000px;
- height: 30px;
- width: 50px;
- border-radius: 15px;
- position: absolute;
- top: 50%;
- left: 25px;
- transform: translateX(-50%) translateY(-50%);
-}
-
-input.switch + label:before {
- content: "";
- position: absolute;
- display: block;
- height: 30px;
- width: 30px;
- top: 0;
- left: 0;
- border-radius: 15px;
- background: rgba(19, 191, 17, 0);
- -moz-transition: .25s ease-in-out;
- -webkit-transition: .25s ease-in-out;
- transition: .25s ease-in-out;
-}
-
-input.switch + label:after {
- content: "";
- position: absolute;
- display: block;
- height: 30px;
- width: 30px;
- top: 0;
- left: 0px;
- border-radius: 15px;
- background: white;
- box-shadow: inset 0 0 0 1px rgba(0,0,0,.7);
- -moz-transition: .25s ease-in-out;
- -webkit-transition: .25s ease-in-out;
- transition: .25s ease-in-out;
-}
-
-input.switch:checked + label:before {
- width: 50px;
- background: #136f11;
-}
-
-input.switch:checked + label:after {
- left: 20px;
- box-shadow: inset 0 0 0 1px rgba(0,0,0,.7);
-}
-
-.container {
- position:relative;
- min-height:calc(100vh - 154px);
- width:100vw;
- box-sizing:border-box;
- display: flex;
- flex-direction: column;
- margin:0;
- left:0;
- right:0;
- top: 0;
-}
-
-.container-row {
- box-sizing:border-box;
-}
-
-.container-fill {
- min-height:80px;
- display: flex;
- flex: 1;
- align-items: center;
- justify-content: center;
- position:relative;
- flex-direction: column;
-}
-
-.container-fill-condensed {
- min-height:38px!important;
-}
-
-#cart .container-fill,
-#shipping .container-fill {
- margin-bottom: 50vh;
-}
-
-.container-row .container-message {
- color:#000;
- text-align:center;
- width:calc(100vw - 10px);
- box-sizing:border-box;
- margin:10px auto 0;
- position:relative;
-}
-
-.container-row .container-message-condensed {
- margin: 2px auto!important
-}
-.container-fill .container-message {
- font-size: 0.875rem;
- letter-spacing:0.5px;
- text-align:center;
- display: flex;
- align-items: center;
- justify-content: center;
- width:100%;
- min-height: 48px;
- color:#000;
-}
-
-.billing-container a {
- text-decoration: none;
-}
-
-.premessage {
- top:calc(50% - 20px)!important;
-}
-
-.submessage {
- top:75%!important;
-}
-
-.alert-notice {
- color:red!important
-}
-
-.checkbox-container {
- font-size: 0.875rem;
- width:calc(100vw - 10px);
- display:table;
- box-sizing:border-box;
- margin:0 auto;
-}
-
-#signup .checkbox-container {
- margin-top:12px!important
-}
-
-.checkbox-toggle {
- display:table-cell;
- box-sizing:border-box;
- padding-right:0px;
- position:relative;
-}
-
-.checkbox-toggle input {
- width: 45px;
- height: 35px;
- opacity: 0;
- z-index: 99999;
- position: relative;
-}
-
-.checkbox-caption {
- vertical-align:middle;
- display:table-cell;
- box-sizing:border-box;
- text-align: left;
-}
-
-.billing-container .checkbox-caption {
- text-transform: uppercase;
-}
-
-.checkbox-row {
- margin:6px 0 0;
- box-sizing:border-box;
-}
-
-.checkbox-row:first-child {
- margin:0;
-}
-
-
-.checkbox-toggle label {
- position:absolute;
- top:50%;
- transform:translateY(-50%);
- cursor: pointer;
- width: 36px;
- height: 36px;
- left: 0;
- background: #fff;
- border:1px solid #000;
- box-sizing:border-box;
-}
-
-.checkbox-toggle label:after {
- opacity: 0;
- content: "";
- top:50%;
- position:absolute;
- left:50%;
- transform:translateX(-50%) translateY(-50%) rotate(45deg);
- width:2px;
- height:36px;
- background:black;
- transition: opacity .2s;
-}
-
-.checkbox-toggle label:before {
- opacity: 0;
- content: "";
- top:50%;
- position:absolute;
- left:50%;
- transform:translateX(-50%) translateY(-50%) rotate(-45deg);
- width:2px;
- height:36px;
- background:black;
- transition: opacity .2s;
-}
-
-.checkbox-toggle input[type=checkbox]:checked + label:after, .checkbox-toggle input[type=checkbox]:checked + label:before,
-.checkbox-toggle input[type=radio]:checked + label:after, .checkbox-toggle input[type=radio]:checked + label:before {
- opacity: 1;
-}
-
-.privacy-msg {
- padding-top: 15px;
- padding-bottom: 80px;
-}
-.privacy-msg a {
- color: black;
-}
-
-.select-wrapper {
- position: relative;
- text-align: center;
-
- overflow: hidden;
- font-size: 0.875rem;
- outline: none !important;
- color: #000;
- letter-spacing: 1px;
- text-transform: uppercase;
- height: 48px;
- text-align: center;
- margin: 0px auto;
- display: block;
- margin-top: 4px;
- width: calc(100vw - 10px);
- border: 1px solid #696969;
-}
-.date-wrapper span {
- display: block;
-}
-.half-input .select-wrapper {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 50%;
- border: 0;
- margin-top: 0px;
- float: left;
- box-sizing: border-box;
- border: 1px solid #696969;
-}
-.half-input .select-wrapper:nth-child(2) {
- border-left: 0px;
-}
-
-.half-input .select-wrapper span {
- color: #aaa;
- top: 0;
-}
-.select-wrapper [type=date] {
- opacity: 0;
- width: 100%;
- height: 48px;
- line-height: 48px;
- position: absolute;
- top: -5px;
- left: -1px;
-}
-.select-wrapper select {
- opacity: 0;
- width: 100%;
- height: 48px;
- line-height: 48px;
- position: absolute;
- top: 0; left: 0;
- box-sizing: border-box;
- -moz-box-sizing: border-box;
- -webkit-box-sizing: border-box;
- border: 10px solid;
-}
-.select-wrapper span {
- position: relative;
- top: 15px;
- color: #666;
-}
-.select-wrapper.picked span {
- color: #000;
-}
-
-.country-wrapper-static {
- text-align: center;
- color: #696969;
- border: 1px solid;
- border-left: 0;
- font-size: 0.875rem;
- height: 48px;
- box-sizing: border-box;
- width: 50%;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-
-.container-row .half-input input {
- margin-top:0px;
-}
-
-.newuser {
- display:inline-block;
- padding:18px;
- text-decoration:underline
- border: 1px solid black;
- margin: 0 8px 0 0;
-}
-
-.forgotpassword {
- padding:18px;
- text-decoration:underline
- border: 1px solid black;
- margin: 0 0 0 8px;
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/blogs.css b/StoneIsland/platforms/android/assets/www/css/blogs.css
deleted file mode 100755
index ee54a31f..00000000
--- a/StoneIsland/platforms/android/assets/www/css/blogs.css
+++ /dev/null
@@ -1,427 +0,0 @@
-.story #story { display: block }
-#story {
- display: none;
-}
-#story .links {
- margin: 15px 0 0;
- text-align: center;
- text-transform:uppercase;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- flex-wrap: wrap;
-}
-#story .links li {
- display: block;
- list-style-type: none;
- font-size: 1rem;
-}
-#story .links li div {
- display: flex;
- justify-content: center;
- align-items: center;
- height: 48px;
- padding: 0 15px;
-}
-.accessible #story .links {
- flex-wrap: wrap;
-}
-.accessible #story .links li {
- border: 1px solid black;
- margin: 5px;
-}
-#story .links li.active {
- font-weight: bold;
- text-decoration: underline;
-}
-#story .content > div {
- display:none;
-}
-#story .content div.active {
- display:block;
- animation: mfadein 0.6s;
-}
-
-.hub #hub { display: block }
-#hub {
- display: none;
-}
-
-.archive #archive { display: block }
-#archive {
- display: none;
-}
-
-/* FAQ */
-
-.privacy #privacy { display: block }
-.account_terms #account_terms { display: block }
-.terms #terms { display: block }
-.returns #returns { display: block }
-.care #care { display: block }
-.page {
- display: none;
-}
-
-.page .content {
- padding: 10px;
-}
-
-#hub .content .body, #story .content .body {
- letter-spacing:0.35px;
- font-size: 1rem;
- width:calc(100vw - 40px);
- box-sizing:border-box;
- margin:10px auto 20px;
- clear:both
-}
-
-#hub .content .body:last-child {
- margin:20px auto 100px;
-}
-
-#story .content .body:last-child {
- margin:10px auto 50px;
-}
-
-.hub_item {
- position: relative;
-}
-
-.content-header {
- width:calc(100vw - 40px);
- box-sizing:border-box;
- margin:20px auto 0px;
-}
-
-.content-header .title, .content-header .subtitle {
- display:block;
- font-weight:bold;
- font-size: 1rem;
- text-transform:uppercase
-}
-
-.content-header .title {
- margin:0;
- padding:0;
- line-height:1.4em;
-}
-
-.content-header .subtitle {
- padding-bottom:10px
-}
-
-.content-share {
- border:1px solid black;
- padding: 0 12px;
- height: 48px;
- font-size: 1rem;
- display: flex;
- justify-content: center;
- align-items: center;
- float:right
-}
-
-.content-header span.date, .content-header span.store {
- font-size: 1rem;
-}
-
-/* NOTE: optional arrows */
-
-.gallery-left {
- border:1px solid black;
- background:rgba(255,255,255,1);
- background-image:url(../img/left-arrow.png);
- background-size:5px 10px;
- background-repeat:no-repeat;
- background-position:center;
- width:24px;
- height:48px;
- top:26vh;
- content:'';
- transform:translateY(-50%);
- transform-origin:top right;
- left:20px;
- font-size: 1.125rem;
- padding:3px 3px 3px 1px;
- z-index:2;
- position:absolute;
- display:block;
-}
-.gallery-right {
- border:1px solid black;
- background:rgba(255,255,255,1);
- background-image:url(../img/right-arrow.png);
- background-size:5px 10px;
- background-repeat:no-repeat;
- background-position:center;
- width:24px;
- height:48px;
- top:26vh;
- content:'';
- transform:translateY(-50%);
- transform-origin:top right;
- right:20px;
- font-size: 1.125rem;
- padding:3px 1px 3px 3px;
- z-index:2;
- position:absolute;
- display:block;
-}
-.accessible .gallery-left,
-.accessible .gallery-right {
- width: 48px;
-}
-
-@-webkit-keyframes gallery-fade {
- 0%{opacity:0}
- 20%{opacity:1}
- 78% {opacity:1}
- 100% {opacity:0}
-}
-/* NOTE: not sure if this down arrow is necessary.. the fade
- might do..? what do you think? it can be removed
- with javascript when the body hits the bottom of
- the page */
-
-.fade-cover {
- background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- position:fixed;
- bottom:0;
- width:100vw;
- height:100px;
- box-sizing:border-box
-}
-.vscroll .fade-cover {
- display: none;
-}
-
-/*
-.fade-cover::before {
- border:1px solid black;
- top:50%;
- left:50%;
- margin-left:-24px;
- transform:scale(1,.5) translateY(-50%);
- transform-origin:bottom right;
- content:'\25BC';
- font-size: 1.063rem;
- padding:9px 11px;
- z-index:999;
- position:absolute;
- display:block;
- background:rgba(255,255,255,1);
-}
-*/
-
-#story img {
- box-sizing:border-box;
- width:calc(100vw + 150px);
- max-height:100vw;
- position:relative;
- left:-75px;
-}
-
-ul.links {
- -webkit-padding-start: 0px!important
-}
-
-.archive h1 {
- font-size: 1.625rem;
- border-bottom:0;
- margin-top: 8px;
- padding-bottom:0;
- line-height: 1;
-}
-
-.archive .subtitle {
- box-sizing:border-box;
- width:calc(100vw - 10px);
- position:relative;
- text-align:center;
- margin:0 0 12px;
- padding:0;
- font-weight:bold;
- font-size: 1rem;
-}
-
-
-.archive h2 {
- font-size: 1.563rem;
- font-weight: normal;
-}
-.archive h2 b {
- font-size: 1.75rem;
-}
-.archive .body {
- font-size: 0.875rem;
- line-height: 1.4rem;
- font-weight: 100;
-}
-
-#archive .heading {
- position: absolute;
- top: 0; left: 0;
- width: 100%;
- pointer-events: none;
-}
-#archive .menu .items {
- position: absolute;
- top: 50%; left: 50%;
- transform-origin: 50% 50%;
- transform: translateZ(0) translateX(-50%) translateY(-50%);
-}
-#archive .row .image {
- position: absolute;
- top: 10%; left: 50%;
- transform-origin: 50% 50%;
- transform: translateZ(0) translateX(-50%) translateY(0%);
-}
-#archive .row .text {
- display: flex;
- justify-content: center;
- align-items: center;
- min-height: 80vh;
- padding: 16px 0;
-}
-#archive .menu {
- position: fixed;
- display: none;
-}
-#archive.menu .menu {
- display: block;
-}
-
-.accessible #archive .row .image,
-.accessible #archive .row .text {
- position: relative;
- top: auto;
- left: auto;
- transform: translateZ(0);
-}
-
-#archive .menu .items {
- border-top: 1px solid transparent;
-}
-
-#archive.menu .menu {
- opacity: 1;
- pointer-events: auto;
-}
-#archive .menu {
- background: rgba(255,255,255,0.8);
- position: absolute;
- top: 0; left: 0;
- height: 100%;
- width: 100%;
- opacity: 0;
- pointer-events: none;
- transition: opacity 0.2s;
-}
-#archive .menu .items {
- width: 100%;
-}
-#archive .menu .item:first-of-type {
- border-top: 1px solid black;
-}
-#archive .menu .item {
- width: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- border-bottom: 1px solid black;
- background: white;
- padding:0;
- height: 48px;
- font-size: 1rem;
- letter-spacing:0.7px
-}
-
-#archive .scroll {
- top: 0; left: 0;
- height: calc(100% - 125px);
-}
-#archive .row:first-of-type {
- margin-top: 7em;
-}
-#archive .row:last-of-type {
- margin-bottom: 150px;
-}
-#archive .row {
- position: relative;
- min-height: 80vh;
- -webkit-perspective: 500px;
- perspective: 500px;
- margin-bottom: 5em;
-}
-#archive .row .image {
- width: 100%; height: 100%;
- max-height: 80vh;
- background-repeat: no-repeat;
- background-size: contain;
- background-position: center center;
-}
-#archive .row.loading .image {
- background-repeat: no-repeat;
- background-size: auto auto;
- background-position: center center;
- background-image: url('../img/spinner.gif') !important;
-}
-#archive .row .text > div {
- width: 80%;
-}
-.accessible #archive .row .image {
- display: block;
- height: 50vh;
- opacity: 1 !important;
-}
-.accessible #archive .row .text {
- display: block;
- margin: 0 auto;
- opacity: 1 !important;
- width: 90%;
-}
-
-.gallery-target {
- display: none;
-}
-.accessible .gallery-target {
- display: block;
- position: absolute;
- top: 0; left: 0;
- width: 100vw;
- height: 52vh;
-}
-.gallery-video-post {
- position:relative;
-}
-
-.gallery-video-post .play {
- width:60px;
- height:60px;
- border-radius:100px;
- background:white;
- box-shadow:0px 0px 2px #000;
- position:absolute;
- transform:translateY(-50%) translateX(-50%);
- top:50%;
- left:50%;
-}
-
-.gallery-video-post .play:before {
- content:'';
- width: 0;
- height: 0;
- border-top: 8px solid transparent;
- border-bottom: 8px solid transparent;
- border-left: 8px solid black;
- position:absolute;
- top:50%;
- left:50%;
- transform:translateY(-50%) translateX(-50%);
-}
-
-#archive {
- box-sizing:border-box
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/cart.css b/StoneIsland/platforms/android/assets/www/css/cart.css
deleted file mode 100755
index 36a446a7..00000000
--- a/StoneIsland/platforms/android/assets/www/css/cart.css
+++ /dev/null
@@ -1,385 +0,0 @@
-
-.cart #cart { display: block; }
-#cart {
- display: none;
-}
-
-#cart .steps {
- width: 100%;
- border-bottom: 1px solid #666;
- font-size: 0;
- display: flex;
- flex-direction: row;
-}
-#cart .steps span {
- display: flex;
- font-size: 1rem;
- text-align: center;
- color: #666;
- width: 33%;
- position:relative;
- height: 48px;
- justify-content: center;
- align-items: center;
-}
-.summary_step, .shipping_step {
- border-right: 1px solid #666;
-}
-
-#cart.summary .summary_step,
-#cart.payment .payment_step,
-#cart.shipping .shipping_step {
- color: #000;
-}
-
-#cart_summary,
-#cart_shipping,
-#cart_payment,
-#cart_confirm,
-#cart_thanks,
-#cart_error {
- height: calc(100vh - 187px);
- overflow: hidden;
- position: relative;
-}
-
-#cart.summary #cart_summary { display: block }
-#cart_summary {
- display: none;
-}
-
-.full .cart_body { display: block; }
-.empty .cart_empty { display: block; }
-#cart h1 .full_msg,
-#cart h1 .empty_msg { display: none }
-.cart_body {
- display: none;
-}
-.cart_empty {
- display: none;
- text-align: center;
- margin: 0;
-}
-
-#cart.payment #cart_payment { display: block }
-#cart_payment {
- display: none;
-}
-
-#cart.shipping #cart_shipping { display: block }
-#cart_shipping {
- display: none;
-}
-
-#cart.confirm #cart_confirm { display: block }
-#cart_confirm {
- display: none;
-}
-
-#cart_confirm .shipping_address,
-#cart_confirm .shipping_method,
-#cart_confirm .payment_name,
-#cart_confirm .payment_method {
- width: calc(100vw - 30px);
- margin: 0 auto;
-}
-#cart_thanks {
- display: none;
-}
-#cart_error {
- display: none;
-}
-#cart.thanks #cart_thanks,
-#cart.error #cart_error {
- display: flex;
- align-items: center;
- justify-content: center;
-}
-#cart .copy {
- min-height:50px;
- max-width: 50%;
- text-align: center;
- font-size: 1.125rem;
-}
-
-.summary-container {
- top:0px;
-}
-
-.billing-container {
- min-height:calc(100vh - 210px);
- top:16px;
-}
-
-#cart h3 {
- padding-left: 5px;
- height: 48px;
- display: flex;
- justify-content: flex-start;
- align-items: center;
- font-size: 1rem;
-}
-
-.cart_item_row {
-display:table;
-position:relative;
-width:calc(100vw - 30px);
-margin:0 auto;
-box-sizing:border-box;
-padding-top:20px;
-}
-
-.cart_item_info, .cart_item_price {
-display:table-cell;
-vertical-align:bottom;
-box-sizing:border-box
-}
-
-.cart_item_image {
-display:table-cell;
-vertical-align:middle;
-box-sizing:border-box
-}
-
-.cart_item_image img {
-max-width:calc(33vw - 25px);
-padding-right:30px;
-}
-
-.cart_item_info {
-padding-bottom:5px;
-position:relative;
-width:100%
-}
-
-.cart_item_price {
-text-align:right;
-position:relative;
-padding-bottom:5px;
-padding-left:5px;
-}
-
-.cart_item_price .remove {
-display:block;
-width:48px;
-height:48px;
-border:1px solid #b2b2b2;
-float:right;
-margin-bottom:10px;
-position:relative;
-}
-
-.cart_item_price .remove:after {
-content:'';
-width:1px;
-height:48px;
-background:#333;
-position:absolute;
-top:50%;
-left:50%;
-z-index:3;
-transform-origin:top left;
-transform:rotate(45deg) translateX(-50%) translateY(-50%)
-}
-
-.cart_item_price .remove:before {
- content:'';
- width:1px;
- height:48px;
- background:#333;
- position:absolute;
- top:50%;
- left:50%;
- z-index:3;
- transform-origin:top left;
- transform:rotate(-45deg) translateX(-50%) translateY(-50%)
-}
-
-.cart_item_price .price {
- font-size: 1rem;
- font-weight:bold;
- display:block
-}
-
-.cart_item_info .sku {
- font-size: 1rem;
- font-weight:bold;
- display:block;
-}
-
-.cart_item_info .title {
- font-size: 1rem;
- font-weight:bold;
- display:block;
- line-height:1.4em;
- text-transform:uppercase;
-}
-
-.cart_item_info .type {
- font-size: 1rem;
- font-weight:bold;
- display:block;
- text-transform:capitalize;
-}
-
-.cart_item_info .meta {
- padding-top:5px;
- letter-spacing: 0.047rem;
- font-size:0.875rem;
-}
-
-.order_section .rows {
- width:calc(100vw - 30px);
- margin:0 auto;
-}
-
-.order_section h2 {
- width:calc(100vw - 30px);
- margin:15px auto;
- text-decoration:underline;
- font-size: 0.688rem;
-}
-
-.order_section_container {
- width:calc(100vw - 30px);
- margin:15px auto 2px;
-}
-
-.cart-summary {
- width:calc(100vw - 30px);
- margin:0 auto;
- display:table;
- color:#666;
- font-size: 1rem;
-}
-
-.cart-summary-row {
- display:table-row;
-}
-
-.cart-summary span {
- display:table-cell;
- padding-top:20px;
- vertical-align:bottom;
-}
-
-.order_section .cart-summary-row span {
- padding-top:1px;
-}
-
-.order_section .cart-summary {
- padding-top:15px;
-}
-
-.order_section .cart-summary-row:last-child > span {
- padding-top:15px!important;
- font-weight:bold!important;
-}
-
-.order_section .cart-summary .cart-summary-row span:nth-of-type(2) {
- color:#000;
-}
-
-#orders .order_section {
- padding-bottom: 16px;
- border-bottom: 1px solid #666;
-}
-
-
-.cart-summary-row span:not(.label) {
-text-align:right
-}
-
-.cart-summary-row .label {
-font-weight:bold
-}
-
-.cart-summary-row:last-child {
-color:#000;
-}
-
-.dropdown-wrapper {
- position:relative;
- text-align:right;
- width:calc(100vw - 10px);
- margin:0 auto 20px 0;
- box-sizing:border-box;
- display: flex;
- flex-direction: column;
-}
-
-.dropdown-wrapper .add_edit {
- padding:10px;
- letter-spacing:0.5px;
- font-size: 0.75rem;
- color:#a9a9a9;
- box-sizing:border-box;
-}
-
-.dropdown-wrapper .dropdown {
- font-size: 1rem;
- box-sizing:border-box;
- display: flex;
- justify-content: center;
- align-items: center;
- text-align: center;
- height: 48px;
- margin-left: 3px;
- padding:0;
- border:1px solid #a9a9a9;
- position:relative;
-}
-
-.dropdown-wrapper .dropdown::before {
- content:'';
- box-sizing:border-box;
- right:25px;
- width:1px;
- top:50%;
- transform:translateY(-50%) rotate(45deg);
- height:12px;
- background:#a9a9a9;
- position:absolute;
- z-index:999;
- transform-origin:bottom left;
-}
-
-.dropdown-wrapper .dropdown::after {
- content:'';
- box-sizing:border-box;
- right:25px;
- width:1px;
- top:50%;
- transform:translateY(-50%) rotate(-45deg);
- transform-origin:bottom right;
- height:12px;
- background:#a9a9a9;
- position:absolute;
- z-index:999;
-}
-#cart_shipping .address {
- display: none;
-}
-.address .save_as_default {
- display: none;
-}
-
-#cart_shipping h3 {
- margin-left:5px;
- margin-bottom:6px;
-}
-#cart .cc_confirm h3 {
- justify-content: center
-}
-
-#cart_shipping input:first-child {
- margin-top:10px
-}
-
-#cart_shipping .half-input input {
- margin-top:0px
-}
-
-#cart .scroll, #payment .scroll, #shipping .scroll, #signup .scroll {
- min-height:calc(100% + 250px)
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.ttf b/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.ttf
deleted file mode 100755
index e766a6e1..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.ttf
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.woff b/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.woff
deleted file mode 100755
index 9b0372de..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/andale_mono.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/fonts.css b/StoneIsland/platforms/android/assets/www/css/fonts/fonts.css
deleted file mode 100755
index 8ddce654..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/fonts.css
+++ /dev/null
@@ -1,37 +0,0 @@
-@font-face {
- font-family: andale;
- src: url(andale_mono.woff);
- font-style: normal;
- font-weight: normal;
-}
-
-@font-face {
- font-family: pfd;
- src: url(pfdintextpro-regular-webfont.woff);
- font-style: normal;
- font-weight: normal;
-}
-@font-face {
- font-family: pfd;
- src: url(pfdintextpro-bold-webfont.woff);
- font-style: normal;
- font-weight: bold;
-}
-@font-face {
- font-family: pfd;
- src: url(pfdintextpro-medium-webfont.woff);
- font-style: normal;
- font-weight: 300;
-}
-@font-face {
- font-family: pfd;
- src: url(pfdintextpro-light-webfont.woff);
- font-style: normal;
- font-weight: 100;
-}
-@font-face {
- font-family: pfd;
- src: url(pfdintextpro-italic-webfont.woff);
- font-style: italic;
- font-weight: normal;
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.css b/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.css
deleted file mode 100755
index 885aa6bd..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.css
+++ /dev/null
@@ -1,1480 +0,0 @@
-@charset "UTF-8";
-/*!
- Ionicons, v2.0.0
- Created by Ben Sperry for the Ionic Framework, http://ionicons.com/
- https://twitter.com/benjsperry https://twitter.com/ionicframework
- MIT License: https://github.com/driftyco/ionicons
-
- Android-style icons originally built by Google’s
- Material Design Icons: https://github.com/google/material-design-icons
- used under CC BY http://creativecommons.org/licenses/by/4.0/
- Modified icons to fit ionicon’s grid from original.
-*/
-@font-face { font-family: "Ionicons"; src: url("../fonts/ionicons.eot?v=2.0.0"); src: url("../fonts/ionicons.eot?v=2.0.0#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.0") format("truetype"), url("../fonts/ionicons.woff?v=2.0.0") format("woff"), url("../fonts/ionicons.svg?v=2.0.0#Ionicons") format("svg"); font-weight: normal; font-style: normal; }
-.ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
-
-.ion-alert:before { content: "\f101"; }
-
-.ion-alert-circled:before { content: "\f100"; }
-
-.ion-android-add:before { content: "\f2c7"; }
-
-.ion-android-add-circle:before { content: "\f359"; }
-
-.ion-android-alarm-clock:before { content: "\f35a"; }
-
-.ion-android-alert:before { content: "\f35b"; }
-
-.ion-android-apps:before { content: "\f35c"; }
-
-.ion-android-archive:before { content: "\f2c9"; }
-
-.ion-android-arrow-back:before { content: "\f2ca"; }
-
-.ion-android-arrow-down:before { content: "\f35d"; }
-
-.ion-android-arrow-dropdown:before { content: "\f35f"; }
-
-.ion-android-arrow-dropdown-circle:before { content: "\f35e"; }
-
-.ion-android-arrow-dropleft:before { content: "\f361"; }
-
-.ion-android-arrow-dropleft-circle:before { content: "\f360"; }
-
-.ion-android-arrow-dropright:before { content: "\f363"; }
-
-.ion-android-arrow-dropright-circle:before { content: "\f362"; }
-
-.ion-android-arrow-dropup:before { content: "\f365"; }
-
-.ion-android-arrow-dropup-circle:before { content: "\f364"; }
-
-.ion-android-arrow-forward:before { content: "\f30f"; }
-
-.ion-android-arrow-up:before { content: "\f366"; }
-
-.ion-android-attach:before { content: "\f367"; }
-
-.ion-android-bar:before { content: "\f368"; }
-
-.ion-android-bicycle:before { content: "\f369"; }
-
-.ion-android-boat:before { content: "\f36a"; }
-
-.ion-android-bookmark:before { content: "\f36b"; }
-
-.ion-android-bulb:before { content: "\f36c"; }
-
-.ion-android-bus:before { content: "\f36d"; }
-
-.ion-android-calendar:before { content: "\f2d1"; }
-
-.ion-android-call:before { content: "\f2d2"; }
-
-.ion-android-camera:before { content: "\f2d3"; }
-
-.ion-android-cancel:before { content: "\f36e"; }
-
-.ion-android-car:before { content: "\f36f"; }
-
-.ion-android-cart:before { content: "\f370"; }
-
-.ion-android-chat:before { content: "\f2d4"; }
-
-.ion-android-checkbox:before { content: "\f374"; }
-
-.ion-android-checkbox-blank:before { content: "\f371"; }
-
-.ion-android-checkbox-outline:before { content: "\f373"; }
-
-.ion-android-checkbox-outline-blank:before { content: "\f372"; }
-
-.ion-android-checkmark-circle:before { content: "\f375"; }
-
-.ion-android-clipboard:before { content: "\f376"; }
-
-.ion-android-close:before { content: "\f2d7"; }
-
-.ion-android-cloud:before { content: "\f37a"; }
-
-.ion-android-cloud-circle:before { content: "\f377"; }
-
-.ion-android-cloud-done:before { content: "\f378"; }
-
-.ion-android-cloud-outline:before { content: "\f379"; }
-
-.ion-android-color-palette:before { content: "\f37b"; }
-
-.ion-android-compass:before { content: "\f37c"; }
-
-.ion-android-contact:before { content: "\f2d8"; }
-
-.ion-android-contacts:before { content: "\f2d9"; }
-
-.ion-android-contract:before { content: "\f37d"; }
-
-.ion-android-create:before { content: "\f37e"; }
-
-.ion-android-delete:before { content: "\f37f"; }
-
-.ion-android-desktop:before { content: "\f380"; }
-
-.ion-android-document:before { content: "\f381"; }
-
-.ion-android-done:before { content: "\f383"; }
-
-.ion-android-done-all:before { content: "\f382"; }
-
-.ion-android-download:before { content: "\f2dd"; }
-
-.ion-android-drafts:before { content: "\f384"; }
-
-.ion-android-exit:before { content: "\f385"; }
-
-.ion-android-expand:before { content: "\f386"; }
-
-.ion-android-favorite:before { content: "\f388"; }
-
-.ion-android-favorite-outline:before { content: "\f387"; }
-
-.ion-android-film:before { content: "\f389"; }
-
-.ion-android-folder:before { content: "\f2e0"; }
-
-.ion-android-folder-open:before { content: "\f38a"; }
-
-.ion-android-funnel:before { content: "\f38b"; }
-
-.ion-android-globe:before { content: "\f38c"; }
-
-.ion-android-hand:before { content: "\f2e3"; }
-
-.ion-android-hangout:before { content: "\f38d"; }
-
-.ion-android-happy:before { content: "\f38e"; }
-
-.ion-android-home:before { content: "\f38f"; }
-
-.ion-android-image:before { content: "\f2e4"; }
-
-.ion-android-laptop:before { content: "\f390"; }
-
-.ion-android-list:before { content: "\f391"; }
-
-.ion-android-locate:before { content: "\f2e9"; }
-
-.ion-android-lock:before { content: "\f392"; }
-
-.ion-android-mail:before { content: "\f2eb"; }
-
-.ion-android-map:before { content: "\f393"; }
-
-.ion-android-menu:before { content: "\f394"; }
-
-.ion-android-microphone:before { content: "\f2ec"; }
-
-.ion-android-microphone-off:before { content: "\f395"; }
-
-.ion-android-more-horizontal:before { content: "\f396"; }
-
-.ion-android-more-vertical:before { content: "\f397"; }
-
-.ion-android-navigate:before { content: "\f398"; }
-
-.ion-android-notifications:before { content: "\f39b"; }
-
-.ion-android-notifications-none:before { content: "\f399"; }
-
-.ion-android-notifications-off:before { content: "\f39a"; }
-
-.ion-android-open:before { content: "\f39c"; }
-
-.ion-android-options:before { content: "\f39d"; }
-
-.ion-android-people:before { content: "\f39e"; }
-
-.ion-android-person:before { content: "\f3a0"; }
-
-.ion-android-person-add:before { content: "\f39f"; }
-
-.ion-android-phone-landscape:before { content: "\f3a1"; }
-
-.ion-android-phone-portrait:before { content: "\f3a2"; }
-
-.ion-android-pin:before { content: "\f3a3"; }
-
-.ion-android-plane:before { content: "\f3a4"; }
-
-.ion-android-playstore:before { content: "\f2f0"; }
-
-.ion-android-print:before { content: "\f3a5"; }
-
-.ion-android-radio-button-off:before { content: "\f3a6"; }
-
-.ion-android-radio-button-on:before { content: "\f3a7"; }
-
-.ion-android-refresh:before { content: "\f3a8"; }
-
-.ion-android-remove:before { content: "\f2f4"; }
-
-.ion-android-remove-circle:before { content: "\f3a9"; }
-
-.ion-android-restaurant:before { content: "\f3aa"; }
-
-.ion-android-sad:before { content: "\f3ab"; }
-
-.ion-android-search:before { content: "\f2f5"; }
-
-.ion-android-send:before { content: "\f2f6"; }
-
-.ion-android-settings:before { content: "\f2f7"; }
-
-.ion-android-share:before { content: "\f2f8"; }
-
-.ion-android-share-alt:before { content: "\f3ac"; }
-
-.ion-android-star:before { content: "\f2fc"; }
-
-.ion-android-star-half:before { content: "\f3ad"; }
-
-.ion-android-star-outline:before { content: "\f3ae"; }
-
-.ion-android-stopwatch:before { content: "\f2fd"; }
-
-.ion-android-subway:before { content: "\f3af"; }
-
-.ion-android-sunny:before { content: "\f3b0"; }
-
-.ion-android-sync:before { content: "\f3b1"; }
-
-.ion-android-textsms:before { content: "\f3b2"; }
-
-.ion-android-time:before { content: "\f3b3"; }
-
-.ion-android-train:before { content: "\f3b4"; }
-
-.ion-android-unlock:before { content: "\f3b5"; }
-
-.ion-android-upload:before { content: "\f3b6"; }
-
-.ion-android-volume-down:before { content: "\f3b7"; }
-
-.ion-android-volume-mute:before { content: "\f3b8"; }
-
-.ion-android-volume-off:before { content: "\f3b9"; }
-
-.ion-android-volume-up:before { content: "\f3ba"; }
-
-.ion-android-walk:before { content: "\f3bb"; }
-
-.ion-android-warning:before { content: "\f3bc"; }
-
-.ion-android-watch:before { content: "\f3bd"; }
-
-.ion-android-wifi:before { content: "\f305"; }
-
-.ion-aperture:before { content: "\f313"; }
-
-.ion-archive:before { content: "\f102"; }
-
-.ion-arrow-down-a:before { content: "\f103"; }
-
-.ion-arrow-down-b:before { content: "\f104"; }
-
-.ion-arrow-down-c:before { content: "\f105"; }
-
-.ion-arrow-expand:before { content: "\f25e"; }
-
-.ion-arrow-graph-down-left:before { content: "\f25f"; }
-
-.ion-arrow-graph-down-right:before { content: "\f260"; }
-
-.ion-arrow-graph-up-left:before { content: "\f261"; }
-
-.ion-arrow-graph-up-right:before { content: "\f262"; }
-
-.ion-arrow-left-a:before { content: "\f106"; }
-
-.ion-arrow-left-b:before { content: "\f107"; }
-
-.ion-arrow-left-c:before { content: "\f108"; }
-
-.ion-arrow-move:before { content: "\f263"; }
-
-.ion-arrow-resize:before { content: "\f264"; }
-
-.ion-arrow-return-left:before { content: "\f265"; }
-
-.ion-arrow-return-right:before { content: "\f266"; }
-
-.ion-arrow-right-a:before { content: "\f109"; }
-
-.ion-arrow-right-b:before { content: "\f10a"; }
-
-.ion-arrow-right-c:before { content: "\f10b"; }
-
-.ion-arrow-shrink:before { content: "\f267"; }
-
-.ion-arrow-swap:before { content: "\f268"; }
-
-.ion-arrow-up-a:before { content: "\f10c"; }
-
-.ion-arrow-up-b:before { content: "\f10d"; }
-
-.ion-arrow-up-c:before { content: "\f10e"; }
-
-.ion-asterisk:before { content: "\f314"; }
-
-.ion-at:before { content: "\f10f"; }
-
-.ion-backspace:before { content: "\f3bf"; }
-
-.ion-backspace-outline:before { content: "\f3be"; }
-
-.ion-bag:before { content: "\f110"; }
-
-.ion-battery-charging:before { content: "\f111"; }
-
-.ion-battery-empty:before { content: "\f112"; }
-
-.ion-battery-full:before { content: "\f113"; }
-
-.ion-battery-half:before { content: "\f114"; }
-
-.ion-battery-low:before { content: "\f115"; }
-
-.ion-beaker:before { content: "\f269"; }
-
-.ion-beer:before { content: "\f26a"; }
-
-.ion-bluetooth:before { content: "\f116"; }
-
-.ion-bonfire:before { content: "\f315"; }
-
-.ion-bookmark:before { content: "\f26b"; }
-
-.ion-bowtie:before { content: "\f3c0"; }
-
-.ion-briefcase:before { content: "\f26c"; }
-
-.ion-bug:before { content: "\f2be"; }
-
-.ion-calculator:before { content: "\f26d"; }
-
-.ion-calendar:before { content: "\f117"; }
-
-.ion-camera:before { content: "\f118"; }
-
-.ion-card:before { content: "\f119"; }
-
-.ion-cash:before { content: "\f316"; }
-
-.ion-chatbox:before { content: "\f11b"; }
-
-.ion-chatbox-working:before { content: "\f11a"; }
-
-.ion-chatboxes:before { content: "\f11c"; }
-
-.ion-chatbubble:before { content: "\f11e"; }
-
-.ion-chatbubble-working:before { content: "\f11d"; }
-
-.ion-chatbubbles:before { content: "\f11f"; }
-
-.ion-checkmark:before { content: "\f122"; }
-
-.ion-checkmark-circled:before { content: "\f120"; }
-
-.ion-checkmark-round:before { content: "\f121"; }
-
-.ion-chevron-down:before { content: "\f123"; }
-
-.ion-chevron-left:before { content: "\f124"; }
-
-.ion-chevron-right:before { content: "\f125"; }
-
-.ion-chevron-up:before { content: "\f126"; }
-
-.ion-clipboard:before { content: "\f127"; }
-
-.ion-clock:before { content: "\f26e"; }
-
-.ion-close:before { content: "\f12a"; }
-
-.ion-close-circled:before { content: "\f128"; }
-
-.ion-close-round:before { content: "\f129"; }
-
-.ion-closed-captioning:before { content: "\f317"; }
-
-.ion-cloud:before { content: "\f12b"; }
-
-.ion-code:before { content: "\f271"; }
-
-.ion-code-download:before { content: "\f26f"; }
-
-.ion-code-working:before { content: "\f270"; }
-
-.ion-coffee:before { content: "\f272"; }
-
-.ion-compass:before { content: "\f273"; }
-
-.ion-compose:before { content: "\f12c"; }
-
-.ion-connection-bars:before { content: "\f274"; }
-
-.ion-contrast:before { content: "\f275"; }
-
-.ion-crop:before { content: "\f3c1"; }
-
-.ion-cube:before { content: "\f318"; }
-
-.ion-disc:before { content: "\f12d"; }
-
-.ion-document:before { content: "\f12f"; }
-
-.ion-document-text:before { content: "\f12e"; }
-
-.ion-drag:before { content: "\f130"; }
-
-.ion-earth:before { content: "\f276"; }
-
-.ion-easel:before { content: "\f3c2"; }
-
-.ion-edit:before { content: "\f2bf"; }
-
-.ion-egg:before { content: "\f277"; }
-
-.ion-eject:before { content: "\f131"; }
-
-.ion-email:before { content: "\f132"; }
-
-.ion-email-unread:before { content: "\f3c3"; }
-
-.ion-erlenmeyer-flask:before { content: "\f3c5"; }
-
-.ion-erlenmeyer-flask-bubbles:before { content: "\f3c4"; }
-
-.ion-eye:before { content: "\f133"; }
-
-.ion-eye-disabled:before { content: "\f306"; }
-
-.ion-female:before { content: "\f278"; }
-
-.ion-filing:before { content: "\f134"; }
-
-.ion-film-marker:before { content: "\f135"; }
-
-.ion-fireball:before { content: "\f319"; }
-
-.ion-flag:before { content: "\f279"; }
-
-.ion-flame:before { content: "\f31a"; }
-
-.ion-flash:before { content: "\f137"; }
-
-.ion-flash-off:before { content: "\f136"; }
-
-.ion-folder:before { content: "\f139"; }
-
-.ion-fork:before { content: "\f27a"; }
-
-.ion-fork-repo:before { content: "\f2c0"; }
-
-.ion-forward:before { content: "\f13a"; }
-
-.ion-funnel:before { content: "\f31b"; }
-
-.ion-gear-a:before { content: "\f13d"; }
-
-.ion-gear-b:before { content: "\f13e"; }
-
-.ion-grid:before { content: "\f13f"; }
-
-.ion-hammer:before { content: "\f27b"; }
-
-.ion-happy:before { content: "\f31c"; }
-
-.ion-happy-outline:before { content: "\f3c6"; }
-
-.ion-headphone:before { content: "\f140"; }
-
-.ion-heart:before { content: "\f141"; }
-
-.ion-heart-broken:before { content: "\f31d"; }
-
-.ion-help:before { content: "\f143"; }
-
-.ion-help-buoy:before { content: "\f27c"; }
-
-.ion-help-circled:before { content: "\f142"; }
-
-.ion-home:before { content: "\f144"; }
-
-.ion-icecream:before { content: "\f27d"; }
-
-.ion-image:before { content: "\f147"; }
-
-.ion-images:before { content: "\f148"; }
-
-.ion-information:before { content: "\f14a"; }
-
-.ion-information-circled:before { content: "\f149"; }
-
-.ion-ionic:before { content: "\f14b"; }
-
-.ion-ios-alarm:before { content: "\f3c8"; }
-
-.ion-ios-alarm-outline:before { content: "\f3c7"; }
-
-.ion-ios-albums:before { content: "\f3ca"; }
-
-.ion-ios-albums-outline:before { content: "\f3c9"; }
-
-.ion-ios-americanfootball:before { content: "\f3cc"; }
-
-.ion-ios-americanfootball-outline:before { content: "\f3cb"; }
-
-.ion-ios-analytics:before { content: "\f3ce"; }
-
-.ion-ios-analytics-outline:before { content: "\f3cd"; }
-
-.ion-ios-arrow-back:before { content: "\f3cf"; }
-
-.ion-ios-arrow-down:before { content: "\f3d0"; }
-
-.ion-ios-arrow-forward:before { content: "\f3d1"; }
-
-.ion-ios-arrow-left:before { content: "\f3d2"; }
-
-.ion-ios-arrow-right:before { content: "\f3d3"; }
-
-.ion-ios-arrow-thin-down:before { content: "\f3d4"; }
-
-.ion-ios-arrow-thin-left:before { content: "\f3d5"; }
-
-.ion-ios-arrow-thin-right:before { content: "\f3d6"; }
-
-.ion-ios-arrow-thin-up:before { content: "\f3d7"; }
-
-.ion-ios-arrow-up:before { content: "\f3d8"; }
-
-.ion-ios-at:before { content: "\f3da"; }
-
-.ion-ios-at-outline:before { content: "\f3d9"; }
-
-.ion-ios-barcode:before { content: "\f3dc"; }
-
-.ion-ios-barcode-outline:before { content: "\f3db"; }
-
-.ion-ios-baseball:before { content: "\f3de"; }
-
-.ion-ios-baseball-outline:before { content: "\f3dd"; }
-
-.ion-ios-basketball:before { content: "\f3e0"; }
-
-.ion-ios-basketball-outline:before { content: "\f3df"; }
-
-.ion-ios-bell:before { content: "\f3e2"; }
-
-.ion-ios-bell-outline:before { content: "\f3e1"; }
-
-.ion-ios-body:before { content: "\f3e4"; }
-
-.ion-ios-body-outline:before { content: "\f3e3"; }
-
-.ion-ios-bolt:before { content: "\f3e6"; }
-
-.ion-ios-bolt-outline:before { content: "\f3e5"; }
-
-.ion-ios-book:before { content: "\f3e8"; }
-
-.ion-ios-book-outline:before { content: "\f3e7"; }
-
-.ion-ios-bookmarks:before { content: "\f3ea"; }
-
-.ion-ios-bookmarks-outline:before { content: "\f3e9"; }
-
-.ion-ios-box:before { content: "\f3ec"; }
-
-.ion-ios-box-outline:before { content: "\f3eb"; }
-
-.ion-ios-briefcase:before { content: "\f3ee"; }
-
-.ion-ios-briefcase-outline:before { content: "\f3ed"; }
-
-.ion-ios-browsers:before { content: "\f3f0"; }
-
-.ion-ios-browsers-outline:before { content: "\f3ef"; }
-
-.ion-ios-calculator:before { content: "\f3f2"; }
-
-.ion-ios-calculator-outline:before { content: "\f3f1"; }
-
-.ion-ios-calendar:before { content: "\f3f4"; }
-
-.ion-ios-calendar-outline:before { content: "\f3f3"; }
-
-.ion-ios-camera:before { content: "\f3f6"; }
-
-.ion-ios-camera-outline:before { content: "\f3f5"; }
-
-.ion-ios-cart:before { content: "\f3f8"; }
-
-.ion-ios-cart-outline:before { content: "\f3f7"; }
-
-.ion-ios-chatboxes:before { content: "\f3fa"; }
-
-.ion-ios-chatboxes-outline:before { content: "\f3f9"; }
-
-.ion-ios-chatbubble:before { content: "\f3fc"; }
-
-.ion-ios-chatbubble-outline:before { content: "\f3fb"; }
-
-.ion-ios-checkmark:before { content: "\f3ff"; }
-
-.ion-ios-checkmark-empty:before { content: "\f3fd"; }
-
-.ion-ios-checkmark-outline:before { content: "\f3fe"; }
-
-.ion-ios-circle-filled:before { content: "\f400"; }
-
-.ion-ios-circle-outline:before { content: "\f401"; }
-
-.ion-ios-clock:before { content: "\f403"; }
-
-.ion-ios-clock-outline:before { content: "\f402"; }
-
-.ion-ios-close:before { content: "\f406"; }
-
-.ion-ios-close-empty:before { content: "\f404"; }
-
-.ion-ios-close-outline:before { content: "\f405"; }
-
-.ion-ios-cloud:before { content: "\f40c"; }
-
-.ion-ios-cloud-download:before { content: "\f408"; }
-
-.ion-ios-cloud-download-outline:before { content: "\f407"; }
-
-.ion-ios-cloud-outline:before { content: "\f409"; }
-
-.ion-ios-cloud-upload:before { content: "\f40b"; }
-
-.ion-ios-cloud-upload-outline:before { content: "\f40a"; }
-
-.ion-ios-cloudy:before { content: "\f410"; }
-
-.ion-ios-cloudy-night:before { content: "\f40e"; }
-
-.ion-ios-cloudy-night-outline:before { content: "\f40d"; }
-
-.ion-ios-cloudy-outline:before { content: "\f40f"; }
-
-.ion-ios-cog:before { content: "\f412"; }
-
-.ion-ios-cog-outline:before { content: "\f411"; }
-
-.ion-ios-color-filter:before { content: "\f414"; }
-
-.ion-ios-color-filter-outline:before { content: "\f413"; }
-
-.ion-ios-color-wand:before { content: "\f416"; }
-
-.ion-ios-color-wand-outline:before { content: "\f415"; }
-
-.ion-ios-compose:before { content: "\f418"; }
-
-.ion-ios-compose-outline:before { content: "\f417"; }
-
-.ion-ios-contact:before { content: "\f41a"; }
-
-.ion-ios-contact-outline:before { content: "\f419"; }
-
-.ion-ios-copy:before { content: "\f41c"; }
-
-.ion-ios-copy-outline:before { content: "\f41b"; }
-
-.ion-ios-crop:before { content: "\f41e"; }
-
-.ion-ios-crop-strong:before { content: "\f41d"; }
-
-.ion-ios-download:before { content: "\f420"; }
-
-.ion-ios-download-outline:before { content: "\f41f"; }
-
-.ion-ios-drag:before { content: "\f421"; }
-
-.ion-ios-email:before { content: "\f423"; }
-
-.ion-ios-email-outline:before { content: "\f422"; }
-
-.ion-ios-eye:before { content: "\f425"; }
-
-.ion-ios-eye-outline:before { content: "\f424"; }
-
-.ion-ios-fastforward:before { content: "\f427"; }
-
-.ion-ios-fastforward-outline:before { content: "\f426"; }
-
-.ion-ios-filing:before { content: "\f429"; }
-
-.ion-ios-filing-outline:before { content: "\f428"; }
-
-.ion-ios-film:before { content: "\f42b"; }
-
-.ion-ios-film-outline:before { content: "\f42a"; }
-
-.ion-ios-flag:before { content: "\f42d"; }
-
-.ion-ios-flag-outline:before { content: "\f42c"; }
-
-.ion-ios-flame:before { content: "\f42f"; }
-
-.ion-ios-flame-outline:before { content: "\f42e"; }
-
-.ion-ios-flask:before { content: "\f431"; }
-
-.ion-ios-flask-outline:before { content: "\f430"; }
-
-.ion-ios-flower:before { content: "\f433"; }
-
-.ion-ios-flower-outline:before { content: "\f432"; }
-
-.ion-ios-folder:before { content: "\f435"; }
-
-.ion-ios-folder-outline:before { content: "\f434"; }
-
-.ion-ios-football:before { content: "\f437"; }
-
-.ion-ios-football-outline:before { content: "\f436"; }
-
-.ion-ios-game-controller-a:before { content: "\f439"; }
-
-.ion-ios-game-controller-a-outline:before { content: "\f438"; }
-
-.ion-ios-game-controller-b:before { content: "\f43b"; }
-
-.ion-ios-game-controller-b-outline:before { content: "\f43a"; }
-
-.ion-ios-gear:before { content: "\f43d"; }
-
-.ion-ios-gear-outline:before { content: "\f43c"; }
-
-.ion-ios-glasses:before { content: "\f43f"; }
-
-.ion-ios-glasses-outline:before { content: "\f43e"; }
-
-.ion-ios-grid-view:before { content: "\f441"; }
-
-.ion-ios-grid-view-outline:before { content: "\f440"; }
-
-.ion-ios-heart:before { content: "\f443"; }
-
-.ion-ios-heart-outline:before { content: "\f442"; }
-
-.ion-ios-help:before { content: "\f446"; }
-
-.ion-ios-help-empty:before { content: "\f444"; }
-
-.ion-ios-help-outline:before { content: "\f445"; }
-
-.ion-ios-home:before { content: "\f448"; }
-
-.ion-ios-home-outline:before { content: "\f447"; }
-
-.ion-ios-infinite:before { content: "\f44a"; }
-
-.ion-ios-infinite-outline:before { content: "\f449"; }
-
-.ion-ios-information:before { content: "\f44d"; }
-
-.ion-ios-information-empty:before { content: "\f44b"; }
-
-.ion-ios-information-outline:before { content: "\f44c"; }
-
-.ion-ios-ionic-outline:before { content: "\f44e"; }
-
-.ion-ios-keypad:before { content: "\f450"; }
-
-.ion-ios-keypad-outline:before { content: "\f44f"; }
-
-.ion-ios-lightbulb:before { content: "\f452"; }
-
-.ion-ios-lightbulb-outline:before { content: "\f451"; }
-
-.ion-ios-list:before { content: "\f454"; }
-
-.ion-ios-list-outline:before { content: "\f453"; }
-
-.ion-ios-location:before { content: "\f456"; }
-
-.ion-ios-location-outline:before { content: "\f455"; }
-
-.ion-ios-locked:before { content: "\f458"; }
-
-.ion-ios-locked-outline:before { content: "\f457"; }
-
-.ion-ios-loop:before { content: "\f45a"; }
-
-.ion-ios-loop-strong:before { content: "\f459"; }
-
-.ion-ios-medical:before { content: "\f45c"; }
-
-.ion-ios-medical-outline:before { content: "\f45b"; }
-
-.ion-ios-medkit:before { content: "\f45e"; }
-
-.ion-ios-medkit-outline:before { content: "\f45d"; }
-
-.ion-ios-mic:before { content: "\f461"; }
-
-.ion-ios-mic-off:before { content: "\f45f"; }
-
-.ion-ios-mic-outline:before { content: "\f460"; }
-
-.ion-ios-minus:before { content: "\f464"; }
-
-.ion-ios-minus-empty:before { content: "\f462"; }
-
-.ion-ios-minus-outline:before { content: "\f463"; }
-
-.ion-ios-monitor:before { content: "\f466"; }
-
-.ion-ios-monitor-outline:before { content: "\f465"; }
-
-.ion-ios-moon:before { content: "\f468"; }
-
-.ion-ios-moon-outline:before { content: "\f467"; }
-
-.ion-ios-more:before { content: "\f46a"; }
-
-.ion-ios-more-outline:before { content: "\f469"; }
-
-.ion-ios-musical-note:before { content: "\f46b"; }
-
-.ion-ios-musical-notes:before { content: "\f46c"; }
-
-.ion-ios-navigate:before { content: "\f46e"; }
-
-.ion-ios-navigate-outline:before { content: "\f46d"; }
-
-.ion-ios-nutrition:before { content: "\f470"; }
-
-.ion-ios-nutrition-outline:before { content: "\f46f"; }
-
-.ion-ios-paper:before { content: "\f472"; }
-
-.ion-ios-paper-outline:before { content: "\f471"; }
-
-.ion-ios-paperplane:before { content: "\f474"; }
-
-.ion-ios-paperplane-outline:before { content: "\f473"; }
-
-.ion-ios-partlysunny:before { content: "\f476"; }
-
-.ion-ios-partlysunny-outline:before { content: "\f475"; }
-
-.ion-ios-pause:before { content: "\f478"; }
-
-.ion-ios-pause-outline:before { content: "\f477"; }
-
-.ion-ios-paw:before { content: "\f47a"; }
-
-.ion-ios-paw-outline:before { content: "\f479"; }
-
-.ion-ios-people:before { content: "\f47c"; }
-
-.ion-ios-people-outline:before { content: "\f47b"; }
-
-.ion-ios-person:before { content: "\f47e"; }
-
-.ion-ios-person-outline:before { content: "\f47d"; }
-
-.ion-ios-personadd:before { content: "\f480"; }
-
-.ion-ios-personadd-outline:before { content: "\f47f"; }
-
-.ion-ios-photos:before { content: "\f482"; }
-
-.ion-ios-photos-outline:before { content: "\f481"; }
-
-.ion-ios-pie:before { content: "\f484"; }
-
-.ion-ios-pie-outline:before { content: "\f483"; }
-
-.ion-ios-pint:before { content: "\f486"; }
-
-.ion-ios-pint-outline:before { content: "\f485"; }
-
-.ion-ios-play:before { content: "\f488"; }
-
-.ion-ios-play-outline:before { content: "\f487"; }
-
-.ion-ios-plus:before { content: "\f48b"; }
-
-.ion-ios-plus-empty:before { content: "\f489"; }
-
-.ion-ios-plus-outline:before { content: "\f48a"; }
-
-.ion-ios-pricetag:before { content: "\f48d"; }
-
-.ion-ios-pricetag-outline:before { content: "\f48c"; }
-
-.ion-ios-pricetags:before { content: "\f48f"; }
-
-.ion-ios-pricetags-outline:before { content: "\f48e"; }
-
-.ion-ios-printer:before { content: "\f491"; }
-
-.ion-ios-printer-outline:before { content: "\f490"; }
-
-.ion-ios-pulse:before { content: "\f493"; }
-
-.ion-ios-pulse-strong:before { content: "\f492"; }
-
-.ion-ios-rainy:before { content: "\f495"; }
-
-.ion-ios-rainy-outline:before { content: "\f494"; }
-
-.ion-ios-recording:before { content: "\f497"; }
-
-.ion-ios-recording-outline:before { content: "\f496"; }
-
-.ion-ios-redo:before { content: "\f499"; }
-
-.ion-ios-redo-outline:before { content: "\f498"; }
-
-.ion-ios-refresh:before { content: "\f49c"; }
-
-.ion-ios-refresh-empty:before { content: "\f49a"; }
-
-.ion-ios-refresh-outline:before { content: "\f49b"; }
-
-.ion-ios-reload:before { content: "\f49d"; }
-
-.ion-ios-reverse-camera:before { content: "\f49f"; }
-
-.ion-ios-reverse-camera-outline:before { content: "\f49e"; }
-
-.ion-ios-rewind:before { content: "\f4a1"; }
-
-.ion-ios-rewind-outline:before { content: "\f4a0"; }
-
-.ion-ios-rose:before { content: "\f4a3"; }
-
-.ion-ios-rose-outline:before { content: "\f4a2"; }
-
-.ion-ios-search:before { content: "\f4a5"; }
-
-.ion-ios-search-strong:before { content: "\f4a4"; }
-
-.ion-ios-settings:before { content: "\f4a7"; }
-
-.ion-ios-settings-strong:before { content: "\f4a6"; }
-
-.ion-ios-shuffle:before { content: "\f4a9"; }
-
-.ion-ios-shuffle-strong:before { content: "\f4a8"; }
-
-.ion-ios-skipbackward:before { content: "\f4ab"; }
-
-.ion-ios-skipbackward-outline:before { content: "\f4aa"; }
-
-.ion-ios-skipforward:before { content: "\f4ad"; }
-
-.ion-ios-skipforward-outline:before { content: "\f4ac"; }
-
-.ion-ios-snowy:before { content: "\f4ae"; }
-
-.ion-ios-speedometer:before { content: "\f4b0"; }
-
-.ion-ios-speedometer-outline:before { content: "\f4af"; }
-
-.ion-ios-star:before { content: "\f4b3"; }
-
-.ion-ios-star-half:before { content: "\f4b1"; }
-
-.ion-ios-star-outline:before { content: "\f4b2"; }
-
-.ion-ios-stopwatch:before { content: "\f4b5"; }
-
-.ion-ios-stopwatch-outline:before { content: "\f4b4"; }
-
-.ion-ios-sunny:before { content: "\f4b7"; }
-
-.ion-ios-sunny-outline:before { content: "\f4b6"; }
-
-.ion-ios-telephone:before { content: "\f4b9"; }
-
-.ion-ios-telephone-outline:before { content: "\f4b8"; }
-
-.ion-ios-tennisball:before { content: "\f4bb"; }
-
-.ion-ios-tennisball-outline:before { content: "\f4ba"; }
-
-.ion-ios-thunderstorm:before { content: "\f4bd"; }
-
-.ion-ios-thunderstorm-outline:before { content: "\f4bc"; }
-
-.ion-ios-time:before { content: "\f4bf"; }
-
-.ion-ios-time-outline:before { content: "\f4be"; }
-
-.ion-ios-timer:before { content: "\f4c1"; }
-
-.ion-ios-timer-outline:before { content: "\f4c0"; }
-
-.ion-ios-toggle:before { content: "\f4c3"; }
-
-.ion-ios-toggle-outline:before { content: "\f4c2"; }
-
-.ion-ios-trash:before { content: "\f4c5"; }
-
-.ion-ios-trash-outline:before { content: "\f4c4"; }
-
-.ion-ios-undo:before { content: "\f4c7"; }
-
-.ion-ios-undo-outline:before { content: "\f4c6"; }
-
-.ion-ios-unlocked:before { content: "\f4c9"; }
-
-.ion-ios-unlocked-outline:before { content: "\f4c8"; }
-
-.ion-ios-upload:before { content: "\f4cb"; }
-
-.ion-ios-upload-outline:before { content: "\f4ca"; }
-
-.ion-ios-videocam:before { content: "\f4cd"; }
-
-.ion-ios-videocam-outline:before { content: "\f4cc"; }
-
-.ion-ios-volume-high:before { content: "\f4ce"; }
-
-.ion-ios-volume-low:before { content: "\f4cf"; }
-
-.ion-ios-wineglass:before { content: "\f4d1"; }
-
-.ion-ios-wineglass-outline:before { content: "\f4d0"; }
-
-.ion-ios-world:before { content: "\f4d3"; }
-
-.ion-ios-world-outline:before { content: "\f4d2"; }
-
-.ion-ipad:before { content: "\f1f9"; }
-
-.ion-iphone:before { content: "\f1fa"; }
-
-.ion-ipod:before { content: "\f1fb"; }
-
-.ion-jet:before { content: "\f295"; }
-
-.ion-key:before { content: "\f296"; }
-
-.ion-knife:before { content: "\f297"; }
-
-.ion-laptop:before { content: "\f1fc"; }
-
-.ion-leaf:before { content: "\f1fd"; }
-
-.ion-levels:before { content: "\f298"; }
-
-.ion-lightbulb:before { content: "\f299"; }
-
-.ion-link:before { content: "\f1fe"; }
-
-.ion-load-a:before { content: "\f29a"; }
-
-.ion-load-b:before { content: "\f29b"; }
-
-.ion-load-c:before { content: "\f29c"; }
-
-.ion-load-d:before { content: "\f29d"; }
-
-.ion-location:before { content: "\f1ff"; }
-
-.ion-lock-combination:before { content: "\f4d4"; }
-
-.ion-locked:before { content: "\f200"; }
-
-.ion-log-in:before { content: "\f29e"; }
-
-.ion-log-out:before { content: "\f29f"; }
-
-.ion-loop:before { content: "\f201"; }
-
-.ion-magnet:before { content: "\f2a0"; }
-
-.ion-male:before { content: "\f2a1"; }
-
-.ion-man:before { content: "\f202"; }
-
-.ion-map:before { content: "\f203"; }
-
-.ion-medkit:before { content: "\f2a2"; }
-
-.ion-merge:before { content: "\f33f"; }
-
-.ion-mic-a:before { content: "\f204"; }
-
-.ion-mic-b:before { content: "\f205"; }
-
-.ion-mic-c:before { content: "\f206"; }
-
-.ion-minus:before { content: "\f209"; }
-
-.ion-minus-circled:before { content: "\f207"; }
-
-.ion-minus-round:before { content: "\f208"; }
-
-.ion-model-s:before { content: "\f2c1"; }
-
-.ion-monitor:before { content: "\f20a"; }
-
-.ion-more:before { content: "\f20b"; }
-
-.ion-mouse:before { content: "\f340"; }
-
-.ion-music-note:before { content: "\f20c"; }
-
-.ion-navicon:before { content: "\f20e"; }
-
-.ion-navicon-round:before { content: "\f20d"; }
-
-.ion-navigate:before { content: "\f2a3"; }
-
-.ion-network:before { content: "\f341"; }
-
-.ion-no-smoking:before { content: "\f2c2"; }
-
-.ion-nuclear:before { content: "\f2a4"; }
-
-.ion-outlet:before { content: "\f342"; }
-
-.ion-paintbrush:before { content: "\f4d5"; }
-
-.ion-paintbucket:before { content: "\f4d6"; }
-
-.ion-paper-airplane:before { content: "\f2c3"; }
-
-.ion-paperclip:before { content: "\f20f"; }
-
-.ion-pause:before { content: "\f210"; }
-
-.ion-person:before { content: "\f213"; }
-
-.ion-person-add:before { content: "\f211"; }
-
-.ion-person-stalker:before { content: "\f212"; }
-
-.ion-pie-graph:before { content: "\f2a5"; }
-
-.ion-pin:before { content: "\f2a6"; }
-
-.ion-pinpoint:before { content: "\f2a7"; }
-
-.ion-pizza:before { content: "\f2a8"; }
-
-.ion-plane:before { content: "\f214"; }
-
-.ion-planet:before { content: "\f343"; }
-
-.ion-play:before { content: "\f215"; }
-
-.ion-playstation:before { content: "\f30a"; }
-
-.ion-plus:before { content: "\f218"; }
-
-.ion-plus-circled:before { content: "\f216"; }
-
-.ion-plus-round:before { content: "\f217"; }
-
-.ion-podium:before { content: "\f344"; }
-
-.ion-pound:before { content: "\f219"; }
-
-.ion-power:before { content: "\f2a9"; }
-
-.ion-pricetag:before { content: "\f2aa"; }
-
-.ion-pricetags:before { content: "\f2ab"; }
-
-.ion-printer:before { content: "\f21a"; }
-
-.ion-pull-request:before { content: "\f345"; }
-
-.ion-qr-scanner:before { content: "\f346"; }
-
-.ion-quote:before { content: "\f347"; }
-
-.ion-radio-waves:before { content: "\f2ac"; }
-
-.ion-record:before { content: "\f21b"; }
-
-.ion-refresh:before { content: "\f21c"; }
-
-.ion-reply:before { content: "\f21e"; }
-
-.ion-reply-all:before { content: "\f21d"; }
-
-.ion-ribbon-a:before { content: "\f348"; }
-
-.ion-ribbon-b:before { content: "\f349"; }
-
-.ion-sad:before { content: "\f34a"; }
-
-.ion-sad-outline:before { content: "\f4d7"; }
-
-.ion-scissors:before { content: "\f34b"; }
-
-.ion-search:before { content: "\f21f"; }
-
-.ion-settings:before { content: "\f2ad"; }
-
-.ion-share:before { content: "\f220"; }
-
-.ion-shuffle:before { content: "\f221"; }
-
-.ion-skip-backward:before { content: "\f222"; }
-
-.ion-skip-forward:before { content: "\f223"; }
-
-.ion-social-android:before { content: "\f225"; }
-
-.ion-social-android-outline:before { content: "\f224"; }
-
-.ion-social-angular:before { content: "\f4d9"; }
-
-.ion-social-angular-outline:before { content: "\f4d8"; }
-
-.ion-social-apple:before { content: "\f227"; }
-
-.ion-social-apple-outline:before { content: "\f226"; }
-
-.ion-social-bitcoin:before { content: "\f2af"; }
-
-.ion-social-bitcoin-outline:before { content: "\f2ae"; }
-
-.ion-social-buffer:before { content: "\f229"; }
-
-.ion-social-buffer-outline:before { content: "\f228"; }
-
-.ion-social-chrome:before { content: "\f4db"; }
-
-.ion-social-chrome-outline:before { content: "\f4da"; }
-
-.ion-social-codepen:before { content: "\f4dd"; }
-
-.ion-social-codepen-outline:before { content: "\f4dc"; }
-
-.ion-social-css3:before { content: "\f4df"; }
-
-.ion-social-css3-outline:before { content: "\f4de"; }
-
-.ion-social-designernews:before { content: "\f22b"; }
-
-.ion-social-designernews-outline:before { content: "\f22a"; }
-
-.ion-social-dribbble:before { content: "\f22d"; }
-
-.ion-social-dribbble-outline:before { content: "\f22c"; }
-
-.ion-social-dropbox:before { content: "\f22f"; }
-
-.ion-social-dropbox-outline:before { content: "\f22e"; }
-
-.ion-social-euro:before { content: "\f4e1"; }
-
-.ion-social-euro-outline:before { content: "\f4e0"; }
-
-.ion-social-facebook:before { content: "\f231"; }
-
-.ion-social-facebook-outline:before { content: "\f230"; }
-
-.ion-social-foursquare:before { content: "\f34d"; }
-
-.ion-social-foursquare-outline:before { content: "\f34c"; }
-
-.ion-social-freebsd-devil:before { content: "\f2c4"; }
-
-.ion-social-github:before { content: "\f233"; }
-
-.ion-social-github-outline:before { content: "\f232"; }
-
-.ion-social-google:before { content: "\f34f"; }
-
-.ion-social-google-outline:before { content: "\f34e"; }
-
-.ion-social-googleplus:before { content: "\f235"; }
-
-.ion-social-googleplus-outline:before { content: "\f234"; }
-
-.ion-social-hackernews:before { content: "\f237"; }
-
-.ion-social-hackernews-outline:before { content: "\f236"; }
-
-.ion-social-html5:before { content: "\f4e3"; }
-
-.ion-social-html5-outline:before { content: "\f4e2"; }
-
-.ion-social-instagram:before { content: "\f351"; }
-
-.ion-social-instagram-outline:before { content: "\f350"; }
-
-.ion-social-javascript:before { content: "\f4e5"; }
-
-.ion-social-javascript-outline:before { content: "\f4e4"; }
-
-.ion-social-linkedin:before { content: "\f239"; }
-
-.ion-social-linkedin-outline:before { content: "\f238"; }
-
-.ion-social-markdown:before { content: "\f4e6"; }
-
-.ion-social-nodejs:before { content: "\f4e7"; }
-
-.ion-social-octocat:before { content: "\f4e8"; }
-
-.ion-social-pinterest:before { content: "\f2b1"; }
-
-.ion-social-pinterest-outline:before { content: "\f2b0"; }
-
-.ion-social-python:before { content: "\f4e9"; }
-
-.ion-social-reddit:before { content: "\f23b"; }
-
-.ion-social-reddit-outline:before { content: "\f23a"; }
-
-.ion-social-rss:before { content: "\f23d"; }
-
-.ion-social-rss-outline:before { content: "\f23c"; }
-
-.ion-social-sass:before { content: "\f4ea"; }
-
-.ion-social-skype:before { content: "\f23f"; }
-
-.ion-social-skype-outline:before { content: "\f23e"; }
-
-.ion-social-snapchat:before { content: "\f4ec"; }
-
-.ion-social-snapchat-outline:before { content: "\f4eb"; }
-
-.ion-social-tumblr:before { content: "\f241"; }
-
-.ion-social-tumblr-outline:before { content: "\f240"; }
-
-.ion-social-tux:before { content: "\f2c5"; }
-
-.ion-social-twitch:before { content: "\f4ee"; }
-
-.ion-social-twitch-outline:before { content: "\f4ed"; }
-
-.ion-social-twitter:before { content: "\f243"; }
-
-.ion-social-twitter-outline:before { content: "\f242"; }
-
-.ion-social-usd:before { content: "\f353"; }
-
-.ion-social-usd-outline:before { content: "\f352"; }
-
-.ion-social-vimeo:before { content: "\f245"; }
-
-.ion-social-vimeo-outline:before { content: "\f244"; }
-
-.ion-social-whatsapp:before { content: "\f4f0"; }
-
-.ion-social-whatsapp-outline:before { content: "\f4ef"; }
-
-.ion-social-windows:before { content: "\f247"; }
-
-.ion-social-windows-outline:before { content: "\f246"; }
-
-.ion-social-wordpress:before { content: "\f249"; }
-
-.ion-social-wordpress-outline:before { content: "\f248"; }
-
-.ion-social-yahoo:before { content: "\f24b"; }
-
-.ion-social-yahoo-outline:before { content: "\f24a"; }
-
-.ion-social-yen:before { content: "\f4f2"; }
-
-.ion-social-yen-outline:before { content: "\f4f1"; }
-
-.ion-social-youtube:before { content: "\f24d"; }
-
-.ion-social-youtube-outline:before { content: "\f24c"; }
-
-.ion-soup-can:before { content: "\f4f4"; }
-
-.ion-soup-can-outline:before { content: "\f4f3"; }
-
-.ion-speakerphone:before { content: "\f2b2"; }
-
-.ion-speedometer:before { content: "\f2b3"; }
-
-.ion-spoon:before { content: "\f2b4"; }
-
-.ion-star:before { content: "\f24e"; }
-
-.ion-stats-bars:before { content: "\f2b5"; }
-
-.ion-steam:before { content: "\f30b"; }
-
-.ion-stop:before { content: "\f24f"; }
-
-.ion-thermometer:before { content: "\f2b6"; }
-
-.ion-thumbsdown:before { content: "\f250"; }
-
-.ion-thumbsup:before { content: "\f251"; }
-
-.ion-toggle:before { content: "\f355"; }
-
-.ion-toggle-filled:before { content: "\f354"; }
-
-.ion-transgender:before { content: "\f4f5"; }
-
-.ion-trash-a:before { content: "\f252"; }
-
-.ion-trash-b:before { content: "\f253"; }
-
-.ion-trophy:before { content: "\f356"; }
-
-.ion-tshirt:before { content: "\f4f7"; }
-
-.ion-tshirt-outline:before { content: "\f4f6"; }
-
-.ion-umbrella:before { content: "\f2b7"; }
-
-.ion-university:before { content: "\f357"; }
-
-.ion-unlocked:before { content: "\f254"; }
-
-.ion-upload:before { content: "\f255"; }
-
-.ion-usb:before { content: "\f2b8"; }
-
-.ion-videocamera:before { content: "\f256"; }
-
-.ion-volume-high:before { content: "\f257"; }
-
-.ion-volume-low:before { content: "\f258"; }
-
-.ion-volume-medium:before { content: "\f259"; }
-
-.ion-volume-mute:before { content: "\f25a"; }
-
-.ion-wand:before { content: "\f358"; }
-
-.ion-waterdrop:before { content: "\f25b"; }
-
-.ion-wifi:before { content: "\f25c"; }
-
-.ion-wineglass:before { content: "\f2b9"; }
-
-.ion-woman:before { content: "\f25d"; }
-
-.ion-wrench:before { content: "\f2ba"; }
-
-.ion-xbox:before { content: "\f30c"; }
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.eot b/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.eot
deleted file mode 100755
index 92a3f20a..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.eot
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.svg b/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.svg
deleted file mode 100755
index 49fc8f36..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.svg
+++ /dev/null
@@ -1,2230 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<!--
-2014-12-4: Created.
--->
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata>
-Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014
- By Adam Bradley
-Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net)
-</metadata>
-<defs>
-<font id="Ionicons" horiz-adv-x="448" >
- <font-face
- font-family="Ionicons"
- font-weight="500"
- font-stretch="normal"
- units-per-em="512"
- panose-1="2 0 6 3 0 0 0 0 0 0"
- ascent="448"
- descent="-64"
- bbox="-0.54049 -64 512.487 448"
- underline-thickness="25.6"
- underline-position="-51.2"
- unicode-range="U+F100-F4F7"
- />
- <missing-glyph />
- <glyph glyph-name="ion-alert-circled" unicode="&#xf100;"
-d="M445 26c3 -5 5 -13 2 -18s-8 -8 -14 -8h-418c-6 0 -11 3 -14 8s-1 13 2 18l207 349c3 5 8 9 14 9s11 -4 14 -9zM256 48v48h-64v-48h64zM256 128v144h-64v-144h64z" />
- <glyph glyph-name="ion-alert" unicode="&#xf101;" horiz-adv-x="128"
-d="M128 -32h-128v96h128v-96zM112 128h-96l-16 288h128z" />
- <glyph glyph-name="ion-android-add-circle" unicode="&#xf359;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-86v86h-42v-86h-86v-42h86v-86h42v86h86z" />
- <glyph glyph-name="ion-android-add" unicode="&#xf2c7;" horiz-adv-x="320"
-d="M320 171h-139v-139h-42v139h-139v42h139v139h42v-139h139v-42z" />
- <glyph glyph-name="ion-android-alarm-clock" unicode="&#xf35a;" horiz-adv-x="428"
-d="M428 323l-28 -33l-98 82l28 33zM125 373l-97 -83l-28 33l97 83zM225 275v0v-111l85 -50l-16 -27l-101 61v127h32zM214 360c106 0 193 -86 193 -191s-87 -191 -193 -191c-107 0 -193 86 -193 191s86 191 193 191zM214 20c82 0 150 66 150 149c0 82 -68 149 -150 149
-s-150 -67 -150 -149s68 -149 150 -149z" />
- <glyph glyph-name="ion-android-alert" unicode="&#xf35b;" horiz-adv-x="416"
-d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM232 88v40h-48v-40h48zM232 176v128h-48v-128h48z" />
- <glyph glyph-name="ion-android-apps" unicode="&#xf35c;" horiz-adv-x="320"
-d="M0 272v80h80v-80h-80zM120 32v80h80v-80h-80zM0 32v80h80v-80h-80zM0 152v80h80v-80h-80zM120 152v80h80v-80h-80zM240 352h80v-80h-80v80zM120 272v80h80v-80h-80zM240 152v80h80v-80h-80zM240 32v80h80v-80h-80z" />
- <glyph glyph-name="ion-android-archive" unicode="&#xf2c9;" horiz-adv-x="416"
-d="M406 348c7 -7 10 -17 10 -29v-289c0 -25 -21 -46 -46 -46h-324c-25 0 -46 21 -46 46v289c0 12 3 22 10 29l33 39c6 8 16 13 26 13h278c10 0 20 -5 26 -13zM208 65l127 127h-81v46h-92v-46h-81zM49 354h317l-22 23h-277z" />
- <glyph glyph-name="ion-android-arrow-back" unicode="&#xf2ca;" horiz-adv-x="342"
-d="M342 213v-42h-260l119 -120l-30 -30l-171 171l171 171l31 -30l-120 -120h260z" />
- <glyph glyph-name="ion-android-arrow-down" unicode="&#xf35d;" horiz-adv-x="342"
-d="M192 363v-260l120 120l30 -31l-171 -171l-171 171l30 30l120 -119v260h42z" />
- <glyph glyph-name="ion-android-arrow-dropdown-circle" unicode="&#xf35e;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 128l96 96h-192z" />
- <glyph glyph-name="ion-android-arrow-dropdown" unicode="&#xf35f;" horiz-adv-x="256"
-d="M0 256h256l-128 -128z" />
- <glyph glyph-name="ion-android-arrow-dropleft-circle" unicode="&#xf360;" horiz-adv-x="416"
-d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM144 192l96 -96v192z" />
- <glyph glyph-name="ion-android-arrow-dropleft" unicode="&#xf361;" horiz-adv-x="128"
-d="M128 320v-256l-128 128z" />
- <glyph glyph-name="ion-android-arrow-dropright-circle" unicode="&#xf362;" horiz-adv-x="416"
-d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208zM176 96l96 96l-96 96v-192z" />
- <glyph glyph-name="ion-android-arrow-dropright" unicode="&#xf363;" horiz-adv-x="128"
-d="M0 320l128 -128l-128 -128v256z" />
- <glyph glyph-name="ion-android-arrow-dropup-circle" unicode="&#xf364;" horiz-adv-x="416"
-d="M416 192c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208s208 -93 208 -208zM304 160l-96 96l-96 -96h192z" />
- <glyph glyph-name="ion-android-arrow-dropup" unicode="&#xf365;" horiz-adv-x="256"
-d="M0 128l128 128l128 -128h-256z" />
- <glyph glyph-name="ion-android-arrow-forward" unicode="&#xf30f;" horiz-adv-x="342"
-d="M0 171v42h260l-119 120l30 30l171 -171l-171 -171l-31 30l120 120h-260z" />
- <glyph glyph-name="ion-android-arrow-up" unicode="&#xf366;" horiz-adv-x="342"
-d="M192 21h-42v260l-120 -119l-30 30l171 171l171 -171l-30 -31l-120 120v-260z" />
- <glyph glyph-name="ion-android-attach" unicode="&#xf367;" horiz-adv-x="235"
-d="M203 320h32v-235c0 -65 -53 -117 -118 -117s-117 52 -117 117v246c0 47 38 85 85 85s86 -38 86 -85v-246c0 -30 -24 -53 -54 -53s-53 23 -53 53v203h32v-203c0 -12 9 -21 21 -21s22 9 22 21v246c0 30 -24 53 -54 53s-53 -23 -53 -53v-246c0 -47 38 -85 85 -85
-s86 38 86 85v235z" />
- <glyph glyph-name="ion-android-bar" unicode="&#xf368;" horiz-adv-x="384"
-d="M171 171l-171 170v43h384v-43l-171 -170v-131h107v-40h-256v40h107v131zM96 299h192l43 42h-278z" />
- <glyph glyph-name="ion-android-bicycle" unicode="&#xf369;"
-d="M299 317c-19 0 -34 14 -34 33s15 34 34 34s33 -15 33 -34s-14 -33 -33 -33zM355 187c51 0 93 -43 93 -94s-42 -93 -93 -93s-94 42 -94 93s43 94 94 94zM355 28c36 0 65 29 65 65s-29 66 -65 66s-66 -30 -66 -66s30 -65 66 -65zM274 224l-30 45l-43 -45l39 -32v-112h-32
-v86l-61 38c-9 6 -19 15 -19 27c0 8 3 17 9 23l72 69c6 6 14 9 22 9c11 0 22 -7 28 -16l34 -60h59v-32h-78zM93 187c51 0 94 -43 94 -94s-43 -93 -94 -93s-93 42 -93 93s42 94 93 94zM93 28c36 0 66 29 66 65s-30 66 -66 66s-65 -30 -65 -66s29 -65 65 -65z" />
- <glyph glyph-name="ion-android-boat" unicode="&#xf36a;"
-d="M52 35l-51 139c-2 6 -1 12 1 17s8 8 13 10l38 13v98c0 23 20 43 43 43h64l16 53h96l16 -53h64c23 0 43 -20 43 -43v-98l38 -13c5 -2 11 -5 13 -10s3 -12 1 -17l-51 -139h-1c-34 0 -65 20 -86 43c-21 -23 -51 -43 -85 -43s-64 19 -85 42c-21 -23 -52 -42 -86 -42h-1z
-M96 312v-84l128 41l128 -41v84h-256zM309 40c0 0 59 -64 107 -64h-21c-30 0 -59 12 -86 26c-53 -28 -117 -28 -170 0c-27 -14 -56 -26 -86 -26h-21c49 0 107 64 107 64c52 -36 118 -36 170 0z" />
- <glyph glyph-name="ion-android-bookmark" unicode="&#xf36b;" horiz-adv-x="288"
-d="M248 384c22 0 40 -18 40 -40v-344l-144 64l-144 -64v344c0 22 18 40 40 40h208z" />
- <glyph glyph-name="ion-android-bulb" unicode="&#xf36c;"
-d="M224 278c-25 0 -50 -10 -68 -28s-28 -43 -28 -68c0 -34 18 -66 48 -83l16 -10v-18v-71h64v71v18l16 10c15 8 27 20 35 34c9 15 13 31 13 49c0 25 -10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 362v0l30 -30l-38 -38l-30 30zM74 362v0l38 -38l-30 -30
-l-38 38zM224 310v0c70 0 128 -58 128 -128c0 -48 -26 -89 -64 -111v-103h-128v103c-38 22 -64 64 -64 111c0 70 58 128 128 128zM448 203v0v-42h-64v42h64zM64 203v0v-42h-64v42h64z" />
- <glyph glyph-name="ion-android-bus" unicode="&#xf36d;" horiz-adv-x="352"
-d="M0 96v204c0 75 82 84 176 84s176 -9 176 -84v-204c0 -18 -14 -24 -27 -36v-39c0 -12 -9 -21 -21 -21h-21c-12 0 -22 9 -22 21v22h-170v-22c0 -12 -10 -21 -22 -21h-21c-12 0 -21 9 -21 21v39c-13 12 -27 17 -27 36zM80 80c18 0 32 14 32 32s-14 32 -32 32
-s-32 -14 -32 -32s14 -32 32 -32zM272 80c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 203v106h-256v-106h256z" />
- <glyph glyph-name="ion-android-calendar" unicode="&#xf2d1;" horiz-adv-x="384"
-d="M304 176v-96h-96v96h96zM272 384h48v-32h24c22 0 40 -18 40 -40v-272c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v272c0 22 18 40 40 40h24v32h48v-32h160v32zM344 40v212h-304v-212h304z" />
- <glyph glyph-name="ion-android-call" unicode="&#xf2d2;" horiz-adv-x="384"
-d="M363 117c12 0 21 -9 21 -21v-75c0 -12 -9 -21 -21 -21c-201 0 -363 162 -363 363c0 12 9 21 21 21h75c12 0 21 -9 21 -21c0 -27 4 -52 13 -77c2 -7 0 -16 -5 -21l-47 -47c31 -61 80 -110 141 -141l47 47c5 6 14 7 21 5c23 -7 49 -12 76 -12z" />
- <glyph glyph-name="ion-android-camera" unicode="&#xf2d3;"
-d="M161 168c0 42 21 63 63 63s63 -21 63 -63s-21 -63 -63 -63s-63 21 -63 63zM408 352c11 0 20 -4 28 -12s12 -17 12 -28v-272c0 -11 -4 -20 -12 -28s-17 -12 -28 -12h-368c-11 0 -20 4 -28 12s-12 17 -12 28v272c0 11 4 20 12 28s17 12 28 12h88l32 32h128l32 -32h88z
-M224 56c31 0 57 11 79 33s33 48 33 79s-11 57 -33 79s-48 33 -79 33s-57 -11 -79 -33s-33 -48 -33 -79s11 -57 33 -79s48 -33 79 -33z" />
- <glyph glyph-name="ion-android-cancel" unicode="&#xf36e;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM312 117l-75 75l75 75l-29 29l-75 -75l-75 75l-29 -29l75 -75l-75 -75l29 -29l75 75l75 -75z" />
- <glyph glyph-name="ion-android-car" unicode="&#xf36f;" horiz-adv-x="384"
-d="M339 331l45 -118v-160c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v11h-256v-11c0 -12 -9 -21 -21 -21h-22c-12 0 -21 9 -21 21v160l45 118c4 13 16 21 30 21h234c14 0 26 -8 30 -21zM75 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 128
-c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM43 235h298l-32 85h-234z" />
- <glyph glyph-name="ion-android-cart" unicode="&#xf370;" horiz-adv-x="416"
-d="M122 70c23 0 41 -18 41 -41s-18 -42 -41 -42s-42 19 -42 42s19 41 42 41zM0 397h68l19 -42h308c11 0 21 -9 21 -20c0 -4 -1 -8 -2 -10l-75 -129c-7 -14 -20 -22 -36 -22h-155l-21 -32s-2 -5 -2 -6c0 -3 2 -5 5 -5h238v-40h-243c-26 0 -45 14 -45 42c0 7 2 15 5 20l31 51
-l-74 151h-42v42zM326 70c23 0 42 -18 42 -41s-19 -42 -42 -42s-41 19 -41 42s18 41 41 41z" />
- <glyph glyph-name="ion-android-chat" unicode="&#xf2d4;" horiz-adv-x="416"
-d="M344 384c4 0 7 -4 7 -8v-214c0 -4 -3 -9 -7 -9h-187l-90 -89v89h-57c-4 0 -10 5 -10 9v214c0 4 6 8 10 8h334zM408 321c4 0 8 -5 8 -9v-214c0 -4 -4 -9 -8 -9h-57v-89l-90 89h-130l39 39h181c18 0 25 10 25 26v167h32z" />
- <glyph glyph-name="ion-android-checkbox-blank" unicode="&#xf371;" horiz-adv-x="384"
-d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" />
- <glyph glyph-name="ion-android-checkbox-outline-blank" unicode="&#xf372;" horiz-adv-x="384"
-d="M341 341h-298v-298h298v298zM341 384v0c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298z" />
- <glyph glyph-name="ion-android-checkbox-outline" unicode="&#xf373;" horiz-adv-x="384"
-d="M105 233l66 -66l183 183l30 -30l-213 -213l-96 96zM341 43v170h43v-170c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h213v-43h-213v-298h298z" />
- <glyph glyph-name="ion-android-checkbox" unicode="&#xf374;" horiz-adv-x="384"
-d="M341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298zM149 85l192 192l-30 30l-162 -162l-76 77l-30 -30z" />
- <glyph glyph-name="ion-android-checkmark-circle" unicode="&#xf375;" horiz-adv-x="416"
-d="M123 232l64 -64l179 178l29 -29l-208 -208l-93 93zM374 192h42c0 -114 -94 -208 -208 -208s-208 94 -208 208s94 208 208 208c28 0 54 -6 78 -16l-32 -32c-15 4 -30 6 -46 6c-92 0 -166 -74 -166 -166s74 -166 166 -166s166 74 166 166z" />
- <glyph glyph-name="ion-android-clipboard" unicode="&#xf376;" horiz-adv-x="384"
-d="M341 368c23 0 43 -20 43 -43v-314c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v314c0 23 20 43 43 43h87c7 28 32 48 62 48s55 -20 62 -48h87zM192 368c-12 0 -21 -9 -21 -21s9 -22 21 -22s21 10 21 22s-9 21 -21 21zM344 8v320h-40v-72h-224v72h-40v-320h304z" />
- <glyph glyph-name="ion-android-close" unicode="&#xf2d7;" horiz-adv-x="298"
-d="M298 311l-119 -119l119 -119l-30 -30l-119 119l-119 -119l-30 30l119 119l-119 119l30 30l119 -119l119 119z" />
- <glyph glyph-name="ion-android-cloud-circle" unicode="&#xf377;" horiz-adv-x="416"
-d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM302 109c29 0 52 23 52 52s-23 52 -52 52h-11c0 46 -37 83 -83 83c-38 0 -71 -26 -80 -62h-3c-34 0 -63 -29 -63 -63s29 -62 63 -62h177z" />
- <glyph glyph-name="ion-android-cloud-done" unicode="&#xf378;" horiz-adv-x="480"
-d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM197 85l141 141l-30 30l-111 -111l-44 45l-30 -30z" />
- <glyph glyph-name="ion-android-cloud-outline" unicode="&#xf379;" horiz-adv-x="480"
-d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM380 72c33 0 60 27 60 60s-27 60 -60 60h-30v10c0 61 -49 110 -110 110c-51 0 -93 -34 -106 -80h-14
-c-44 0 -80 -36 -80 -80s36 -80 80 -80h260z" />
- <glyph glyph-name="ion-android-cloud" unicode="&#xf37a;" horiz-adv-x="480"
-d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121z" />
- <glyph glyph-name="ion-android-color-palette" unicode="&#xf37b;" horiz-adv-x="384"
-d="M192 384c106 0 192 -77 192 -171c0 -59 -48 -106 -107 -106h-38c-18 0 -32 -14 -32 -32c0 -9 3 -17 8 -22s9 -12 9 -21c0 -18 -14 -32 -32 -32c-106 0 -192 86 -192 192s86 192 192 192zM75 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM139 277
-c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM245 277c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM309 192c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-android-compass" unicode="&#xf37c;"
-d="M224 217c13 0 25 -12 25 -25s-12 -25 -25 -25s-25 12 -25 25s12 25 25 25zM224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM273 143l85 183l-183 -85l-85 -183z" />
- <glyph glyph-name="ion-android-contact" unicode="&#xf2d8;" horiz-adv-x="384"
-d="M267 110c59 -18 104 -58 117 -110h-384c13 52 58 92 117 110c22 -13 48 -20 75 -20s53 7 75 20zM192 384c73 0 132 -59 132 -132s-59 -132 -132 -132s-132 59 -132 132s59 132 132 132zM192 153c42 0 78 26 92 63h-184c14 -37 50 -63 92 -63z" />
- <glyph glyph-name="ion-android-contacts" unicode="&#xf2d9;"
-d="M207 104c47 -14 76 -62 87 -104h-294c11 42 40 90 87 104c18 -10 38 -16 60 -16s42 6 60 16zM147 328c58 0 106 -48 106 -106s-48 -106 -106 -106s-106 48 -106 106s48 106 106 106zM147 141c34 0 62 23 74 51h-148c12 -28 40 -51 74 -51zM291 64c-13 20 -34 43 -60 53
-c11 9 21 23 28 35c13 -5 27 -8 42 -8c22 0 42 6 60 16c47 -14 76 -54 87 -96h-157zM275 248c-8 37 -31 69 -63 87c19 29 52 49 89 49c58 0 106 -48 106 -106s-48 -106 -106 -106c-11 0 -22 2 -32 5c3 8 6 16 7 25c8 -3 16 -4 25 -4c34 0 62 22 74 50h-100z" />
- <glyph glyph-name="ion-android-contract" unicode="&#xf37d;" horiz-adv-x="384"
-d="M0 77v51h128v-128h-51v77h-77zM77 307v77h51v-128h-128v51h77zM256 0v128h128v-51h-77v-77h-51zM307 307h77v-51h-128v128h51v-77z" />
- <glyph glyph-name="ion-android-create" unicode="&#xf37e;" horiz-adv-x="384"
-d="M0 80l236 236l80 -80l-236 -236h-80v80zM378 298l-40 -40l-80 80l40 40c9 9 20 9 29 0l51 -51c9 -9 9 -20 0 -29z" />
- <glyph glyph-name="ion-android-delete" unicode="&#xf37f;" horiz-adv-x="320"
-d="M32 43v245h256v-245c0 -23 -20 -43 -43 -43h-170c-23 0 -43 20 -43 43zM320 352v-32h-320v32h80l27 32h106l27 -32h80z" />
- <glyph glyph-name="ion-android-desktop" unicode="&#xf380;"
-d="M405 416c23 0 43 -20 43 -43v-282c0 -23 -20 -43 -43 -43h-138l42 -48v-32h-170v32l42 48h-138c-23 0 -43 20 -43 43v282c0 23 20 43 43 43h362zM405 128v245h-362v-245h362z" />
- <glyph glyph-name="ion-android-document" unicode="&#xf381;" horiz-adv-x="320"
-d="M192 400l128 -128v-248c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v336c0 22 18 40 40 40h152zM176 256h112l-112 112v-112z" />
- <glyph glyph-name="ion-android-done-all" unicode="&#xf382;" horiz-adv-x="512"
-d="M388 308l-140 -139l-31 31l140 139zM481 339l31 -31l-264 -263l-122 123l30 31l92 -91zM0 168l32 31l122 -123l-31 -31z" />
- <glyph glyph-name="ion-android-done" unicode="&#xf383;" horiz-adv-x="384"
-d="M122 108l230 230l32 -31l-262 -261l-122 122l32 31z" />
- <glyph glyph-name="ion-android-download" unicode="&#xf2dd;" horiz-adv-x="480"
-d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM208 180h-68l100 -100l100 100h-68v76h-64v-76z" />
- <glyph glyph-name="ion-android-drafts" unicode="&#xf384;"
-d="M448 246v-203c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v203c0 15 8 30 20 37l204 101l204 -101c13 -7 20 -22 20 -37zM224 144l171 112l-171 85l-171 -85z" />
- <glyph glyph-name="ion-android-exit" unicode="&#xf385;" horiz-adv-x="384"
-d="M151 115l55 56h-206v42h207l-56 56l30 30l107 -107l-107 -107zM341 384c23 0 43 -20 43 -43v-298c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v85h43v-85h298v298h-298v-85h-43v85c0 23 20 43 43 43h298z" />
- <glyph glyph-name="ion-android-expand" unicode="&#xf386;" horiz-adv-x="384"
-d="M333 51v77h51v-128h-128v51h77zM333 333h-77v51h128v-128h-51v77zM51 333v-77h-51v128h128v-51h-77zM51 51h77v-51h-128v128h51v-77z" />
- <glyph glyph-name="ion-android-favorite-outline" unicode="&#xf387;" horiz-adv-x="416"
-d="M302 384c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242l-30 -27l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44zM221 55c50 46 94 86 123 122c28 35 40 63 40 92c0 23 -9 44 -24 59s-35 24 -58 24
-c-26 0 -53 -13 -70 -33l-24 -29l-24 29c-17 20 -44 33 -70 33c-23 0 -43 -9 -58 -24s-24 -36 -24 -59c0 -29 12 -57 40 -92c29 -36 73 -76 123 -122l4 -4l9 -8l9 8z" />
- <glyph glyph-name="ion-android-favorite" unicode="&#xf388;" horiz-adv-x="416"
-d="M208 0l-30 27c-107 98 -178 162 -178 242c0 65 50 115 114 115c36 0 71 -17 94 -44c23 27 58 44 94 44c64 0 114 -50 114 -115c0 -80 -71 -144 -178 -242z" />
- <glyph glyph-name="ion-android-film" unicode="&#xf389;" horiz-adv-x="320"
-d="M280 384h40v-384h-40v43h-40v-43h-160v43h-40v-43h-40v384h40v-43h40v43h160v-43h40v43zM80 85v43h-40v-43h40zM80 171v42h-40v-42h40zM80 256v43h-40v-43h40zM280 85v43h-40v-43h40zM280 171v42h-40v-42h40zM280 256v43h-40v-43h40z" />
- <glyph glyph-name="ion-android-folder-open" unicode="&#xf38a;"
-d="M405 304c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138l43 -48h181zM416 75v186c0 6 -5 11 -11 11h-373v-197c0 -6 5 -11 11 -11h362c6 0 11 5 11 11z" />
- <glyph glyph-name="ion-android-folder" unicode="&#xf2e0;"
-d="M181 352l43 -48h181c23 0 43 -20 43 -43v-186c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v234c0 23 20 43 43 43h138z" />
- <glyph glyph-name="ion-android-funnel" unicode="&#xf38b;"
-d="M176 48v48h96v-48h-96zM0 336h448v-48h-448v48zM80 167v50h288v-50h-288z" />
- <glyph glyph-name="ion-android-globe" unicode="&#xf38c;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM186 15c6 15 21 29 8 39c-8 7 -16 14 -23 21c-2 2 -11 20 -9 23c5 9 6 14 8 24c3 12 -3 16 -13 22c-15 10 -29 23 -43 34c-7 5 -17 10 -20 19s-5 20 -10 28c-14 20 -12 34 -10 58
-c0 7 -1 16 -2 25c-28 -32 -42 -73 -42 -116c0 -48 18 -92 52 -126c29 -29 65 -46 104 -51zM334 66c23 23 39 51 47 82c-8 -1 -19 2 -19 2s-21 24 -23 45c-2 22 0 39 -3 57c-3 16 -20 31 -27 46c-7 14 -13 28 -20 42c2 -1 5 -2 7 -3c5 1 10 2 14 2c-23 16 -49 25 -76 29v-8
-l4 -9l-14 -13l-9 3l-10 10l-10 12l-14 5c-16 -2 -31 -7 -45 -13v-7c7 3 16 5 23 8c3 1 13 -7 16 -9c-4 -5 -21 -15 -22 -21c0 -2 7 -6 7 -10c0 -6 -1 -11 -1 -17c3 3 20 21 22 21c13 3 35 -19 37 -26s-22 -24 -33 -34c-8 -8 -25 -12 -20 -24c2 -4 10 -20 5 -24
-c-6 -5 -14 9 -17 12c-8 10 -26 7 -38 7c0 -17 -1 -31 15 -43c15 -11 30 -25 47 -33c13 -6 36 7 47 -1c16 -11 29 -21 47 -29c8 -3 33 -20 26 -31c-5 -8 -10 -15 -14 -23s-13 -20 -20 -25c-8 -6 -16 -17 -21 -29c35 7 66 23 92 49z" />
- <glyph glyph-name="ion-android-hand" unicode="&#xf2e3;" horiz-adv-x="414"
-d="M401 174c15 -15 18 -36 3 -51c0 0 -96 -103 -126 -121v0c-28 -21 -65 -34 -100 -34c-55 0 -101 36 -117 85v0v1c0 1 -1 2 -1 3l-58 189c-5 15 2 32 17 37s30 -3 35 -18l34 -88c1 -4 2 -2 2 1l-22 161c-3 15 7 30 22 33s30 -8 33 -23l25 -138c0 -2 2 -2 2 0v177
-c0 15 13 28 28 28s28 -13 28 -28l8 -175c0 -5 3 -4 4 -1l23 135c2 15 16 27 31 25s27 -17 25 -32l-21 -172c-1 -12 -3 -30 2 -36c8 -9 20 -9 31 2l42 42c15 15 35 13 50 -2z" />
- <glyph glyph-name="ion-android-hangout" unicode="&#xf38d;" horiz-adv-x="352"
-d="M176 400c97 0 176 -77 176 -172c0 -91 -76 -196 -176 -244v71c-97 0 -176 78 -176 173s79 172 176 172zM166 217v61h-62v-61h31l-21 -40h31zM248 217v61h-62v-61h31l-20 -40h31z" />
- <glyph glyph-name="ion-android-happy" unicode="&#xf38e;" horiz-adv-x="416"
-d="M208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213
-c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM208 78c-49 0 -89 29 -106 72h212c-17 -43 -57 -72 -106 -72z" />
- <glyph glyph-name="ion-android-home" unicode="&#xf38f;" horiz-adv-x="416"
-d="M160 0h-98v192h-62l208 192l208 -192h-62v-192h-98v128h-96v-128z" />
- <glyph glyph-name="ion-android-image" unicode="&#xf2e4;" horiz-adv-x="384"
-d="M384 43c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h298c23 0 43 -20 43 -43v-298zM117 160l-74 -96h298l-96 128l-74 -96z" />
- <glyph glyph-name="ion-android-laptop" unicode="&#xf390;" horiz-adv-x="512"
-d="M437 32h75c0 -23 -64 -32 -96 -32h-320c-32 0 -96 9 -96 32h75c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43zM75 341v-272h362v272h-362zM256 13c12 0 21 10 21 22s-9 21 -21 21s-21 -9 -21 -21s9 -22 21 -22z" />
- <glyph glyph-name="ion-android-list" unicode="&#xf391;" horiz-adv-x="384"
-d="M344 384c22 0 40 -18 40 -40v-304c0 -22 -18 -40 -40 -40h-304c-22 0 -40 18 -40 40v304c0 22 18 40 40 40h304zM240 80v48h-160v-48h160zM304 168v48h-224v-48h224zM304 256v48h-224v-48h224z" />
- <glyph glyph-name="ion-android-locate" unicode="&#xf2e9;"
-d="M224 272c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80zM415 213h33v-42h-33c-10 -89 -81 -160 -170 -170v-33h-42v33c-89 10 -160 81 -170 170h-33v42h33c10 89 81 160 170 170v33h42v-33c89 -10 160 -81 170 -170zM224 43c82 0 149 67 149 149
-s-67 149 -149 149s-149 -67 -149 -149s67 -149 149 -149z" />
- <glyph glyph-name="ion-android-lock" unicode="&#xf392;" horiz-adv-x="320"
-d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h20v40c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM222 262v40c0 34 -28 62 -62 62
-s-62 -28 -62 -62v-40h124z" />
- <glyph glyph-name="ion-android-mail" unicode="&#xf2eb;"
-d="M405 368c23 0 43 -20 43 -43v-266c0 -23 -20 -43 -43 -43h-362c-23 0 -43 20 -43 43v266c0 23 20 43 43 43h362zM400 277v43l-176 -117l-176 117v-43l176 -117z" />
- <glyph glyph-name="ion-android-map" unicode="&#xf393;" horiz-adv-x="384"
-d="M373 384c6 0 11 -5 11 -11v-322c0 -5 -3 -9 -7 -10l-121 -41l-128 45s-105 -41 -108 -42s-7 -3 -9 -3c-6 0 -11 5 -11 11v322c0 5 3 9 7 10l121 41l128 -45s103 40 108 42s7 3 9 3zM256 43v254l-128 44v-254z" />
- <glyph glyph-name="ion-android-menu" unicode="&#xf394;" horiz-adv-x="384"
-d="M0 64v43h384v-43h-384zM0 171v42h384v-42h-384zM0 320h384v-43h-384v43z" />
- <glyph glyph-name="ion-android-microphone-off" unicode="&#xf395;" horiz-adv-x="408"
-d="M316 93l58 -58l-58 58l58 -58l34 -33l-24 -24l-95 95c-19 -11 -40 -20 -62 -23v-82h-46v82c-75 10 -137 76 -137 153h39c0 -68 58 -117 121 -117c20 0 40 5 57 14l-32 33c-8 -3 -16 -5 -25 -5c-38 0 -69 31 -69 69v29l-135 134l24 24l111 -110v0l140 -140l5 -5l9 -9z
-M273 197c0 -4 0 -8 -1 -12l-137 137v25c0 38 31 69 69 69s69 -31 69 -69v-150zM365 203c0 -31 -10 -60 -27 -84l-27 28c9 17 15 36 15 56h39zM408 2v0l-34 33z" />
- <glyph glyph-name="ion-android-microphone" unicode="&#xf2ec;" horiz-adv-x="320"
-d="M160 128c-38 0 -69 31 -69 69v150c0 38 31 69 69 69s69 -31 69 -69v-150c0 -38 -31 -69 -69 -69zM281 203h39c0 -78 -62 -142 -137 -153v-82h-46v82c-75 10 -137 75 -137 153h39c0 -69 58 -116 121 -116s121 47 121 116z" />
- <glyph glyph-name="ion-android-more-horizontal" unicode="&#xf396;" horiz-adv-x="320"
-d="M40 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM280 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40zM160 232c22 0 40 -18 40 -40s-18 -40 -40 -40s-40 18 -40 40s18 40 40 40z" />
- <glyph glyph-name="ion-android-more-vertical" unicode="&#xf397;" horiz-adv-x="80"
-d="M80 312c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 72c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40zM80 192c0 -22 -18 -40 -40 -40s-40 18 -40 40s18 40 40 40s40 -18 40 -40z" />
- <glyph glyph-name="ion-android-navigate" unicode="&#xf398;" horiz-adv-x="320"
-d="M160 384l160 -369l-15 -15l-145 64l-145 -64l-15 15z" />
- <glyph glyph-name="ion-android-notifications-none" unicode="&#xf399;" horiz-adv-x="352"
-d="M177 328h-2c-6 0 -24 -5 -24 -5c-46 -10 -78 -53 -78 -100v-114v-13l-9 -10l-8 -8h240l-8 8l-9 10v13v114c0 47 -32 90 -78 100c0 0 -17 5 -24 5zM176 400v0c18 0 31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15
-c0 18 13 31 31 31zM217 26v0c0 -23 -18 -42 -41 -42s-41 19 -41 42h82z" />
- <glyph glyph-name="ion-android-notifications-off" unicode="&#xf39a;" horiz-adv-x="364"
-d="M182 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM57 341l295 -295v0l12 -12l-24 -24l-36 36h-298v21l41 41v115c0 23 6 44 16 63l-63 64l24 24l33 -33v0zM317 223v-94l-208 207c13 8 27 15 42 18v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -67 104 -131
-z" />
- <glyph glyph-name="ion-android-notifications" unicode="&#xf39b;" horiz-adv-x="352"
-d="M176 -16c-23 0 -41 19 -41 42h82c0 -23 -18 -42 -41 -42zM311 109l41 -42v-21h-352v21l41 42v114c0 63 45 117 104 131v15c0 18 13 31 31 31s31 -13 31 -31v-15c59 -14 104 -68 104 -131v-114z" />
- <glyph glyph-name="ion-android-open" unicode="&#xf39c;" horiz-adv-x="384"
-d="M341 43v133h43v-133c0 -23 -20 -43 -43 -43h-298c-23 0 -43 20 -43 43v298c0 23 20 43 43 43h133v-43h-133v-298h298zM224 384h160v-160h-43v87l-215 -215l-30 30l215 215h-87v43z" />
- <glyph glyph-name="ion-android-options" unicode="&#xf39d;"
-d="M0 32v32h272v-32h-272zM368 32v32h80v-32h-80zM352 0c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 176v32h80v-32h-80zM176 176v32h272v-32h-272zM160 144c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96
-c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM0 320v32h272v-32h-272zM368 320v32h80v-32h-80zM352 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96z" />
- <glyph glyph-name="ion-android-people" unicode="&#xf39e;"
-d="M305 216c-34 0 -61 27 -61 60s27 60 61 60s62 -27 62 -60s-28 -60 -62 -60zM143 216c-34 0 -62 27 -62 60s28 60 62 60s61 -27 61 -60s-27 -60 -61 -60zM143 172c48 0 145 -23 145 -70v-54h-288v54c0 47 95 70 143 70zM305 161c48 0 143 -12 143 -59v-54h-128v54
-c0 30 -9 41 -32 58c7 1 11 1 17 1z" />
- <glyph glyph-name="ion-android-person-add" unicode="&#xf39f;" horiz-adv-x="480"
-d="M288 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM288 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96zM96 224h64v-32h-64v-64h-32v64h-64v32h64v64h32v-64z" />
- <glyph glyph-name="ion-android-person" unicode="&#xf3a0;" horiz-adv-x="384"
-d="M192 192c-53 0 -96 43 -96 96s43 96 96 96s96 -43 96 -96s-43 -96 -96 -96zM192 144c64 0 192 -32 192 -96v-48h-384v48c0 64 128 96 192 96z" />
- <glyph glyph-name="ion-android-phone-landscape" unicode="&#xf3a1;"
-d="M448 89c0 -23 -19 -41 -41 -41h-366c-22 0 -41 18 -41 41v206c0 23 19 41 41 41h366c22 0 41 -18 41 -41v-206zM80 84h288v216h-288v-216z" />
- <glyph glyph-name="ion-android-phone-portrait" unicode="&#xf3a2;" horiz-adv-x="288"
-d="M247 416c23 0 41 -19 41 -41v-366c0 -22 -18 -41 -41 -41h-206c-23 0 -41 19 -41 41v366c0 22 18 41 41 41h206zM252 48v288h-216v-288h216z" />
- <glyph glyph-name="ion-android-pin" unicode="&#xf3a3;" horiz-adv-x="320"
-d="M160 416c88 0 160 -71 160 -157c0 -118 -160 -291 -160 -291s-160 173 -160 291c0 86 72 157 160 157zM160 203c32 0 57 25 57 56s-25 56 -57 56s-57 -25 -57 -56s25 -56 57 -56z" />
- <glyph glyph-name="ion-android-plane" unicode="&#xf3a4;" horiz-adv-x="384"
-d="M384 112l-160 48v-114l48 -31v-31l-80 16l-80 -16v31l48 31v114l-160 -48v40l160 104v113c0 18 15 31 32 31s32 -13 32 -31v-113l160 -104v-40z" />
- <glyph glyph-name="ion-android-playstore" unicode="&#xf2f0;" horiz-adv-x="416"
-d="M416 296c-19 -214 -13 -312 -13 -312h-390s6 96 -13 312h104c0 57 47 104 104 104s104 -47 104 -104h104zM208 374c-43 0 -78 -35 -78 -78h156c0 43 -35 78 -78 78zM156 50l143 85l-143 84v-169z" />
- <glyph glyph-name="ion-android-print" unicode="&#xf3a5;" horiz-adv-x="416"
-d="M352 288c35 0 64 -29 64 -64v-139h-80v-85h-256v85h-80v139c0 35 29 64 64 64h288zM304 32v128h-192v-128h192zM336 384v0v-80h-256v80h256z" />
- <glyph glyph-name="ion-android-radio-button-off" unicode="&#xf3a6;" horiz-adv-x="416"
-d="M208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" />
- <glyph glyph-name="ion-android-radio-button-on" unicode="&#xf3a7;" horiz-adv-x="416"
-d="M208 296c57 0 104 -47 104 -104s-47 -104 -104 -104s-104 47 -104 104s47 104 104 104zM208 400c114 0 208 -94 208 -208s-94 -208 -208 -208s-208 94 -208 208s94 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166z" />
- <glyph glyph-name="ion-android-refresh" unicode="&#xf3a8;" horiz-adv-x="352"
-d="M176 60c56 0 104 34 123 84h46c-21 -74 -88 -128 -169 -128c-98 0 -176 79 -176 176s79 176 176 176c48 0 92 -20 124 -52l52 52v-154h-154l70 70c-23 24 -56 40 -92 40c-73 0 -132 -59 -132 -132s59 -132 132 -132z" />
- <glyph glyph-name="ion-android-remove-circle" unicode="&#xf3a9;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM315 171v42h-214v-42h214z" />
- <glyph glyph-name="ion-android-remove" unicode="&#xf2f4;" horiz-adv-x="320"
-d="M0 171v42h320v-42h-320z" />
- <glyph glyph-name="ion-android-restaurant" unicode="&#xf3aa;" horiz-adv-x="415"
-d="M116 168l-91 89c-34 33 -34 86 0 119l153 -148zM264 206l-33 -31l150 -145l-30 -30l-150 146l-150 -146l-30 30s163 159 211 207c-15 32 -4 77 31 111c41 40 101 49 132 17c33 -31 24 -89 -17 -129c-34 -34 -80 -45 -114 -30z" />
- <glyph glyph-name="ion-android-sad" unicode="&#xf3ab;" horiz-adv-x="416"
-d="M208 160c45 0 83 -26 102 -64h-204c19 38 57 64 102 64zM208 400c114 0 208 -94 208 -208s-93 -208 -208 -208s-208 94 -208 208s93 208 208 208zM208 26c92 0 166 74 166 166s-74 166 -166 166s-166 -74 -166 -166s74 -166 166 -166zM281 213c-18 0 -31 13 -31 31
-s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31zM135 213c-18 0 -31 13 -31 31s13 31 31 31s31 -13 31 -31s-13 -31 -31 -31z" />
- <glyph glyph-name="ion-android-search" unicode="&#xf2f5;" horiz-adv-x="384"
-d="M274 143l110 -110l-33 -33l-109 110v17l-7 6c-25 -21 -58 -34 -93 -34c-79 0 -142 63 -142 142s63 143 141 143c79 0 142 -64 142 -143c0 -36 -13 -68 -34 -93l7 -5h18zM142 143c55 0 99 43 99 98s-44 99 -99 99s-98 -44 -98 -99s43 -98 98 -98z" />
- <glyph glyph-name="ion-android-send" unicode="&#xf2f6;" horiz-adv-x="416"
-d="M0 0v149l298 43l-298 43v149l416 -192z" />
- <glyph glyph-name="ion-android-settings" unicode="&#xf2f7;" horiz-adv-x="416"
-d="M366 171l47 -34c3 -3 4 -10 2 -14l-43 -71c-2 -4 -7 -7 -12 -5l-54 21c-12 -8 -23 -16 -36 -21l-8 -55c-1 -4 -6 -8 -11 -8h-85c-5 0 -10 3 -11 8l-8 55c-13 5 -25 13 -36 21l-54 -21c-4 -2 -10 1 -12 5l-43 71c-3 5 -2 11 2 14l45 34c0 7 -1 14 -1 21s1 14 1 21l-46 34
-c-3 3 -4 10 -2 14l43 71c2 4 7 7 12 5l54 -21c12 8 23 16 36 21l8 55c1 4 6 8 11 8h85c5 0 10 -4 11 -8l7 -55c13 -5 25 -13 36 -21l53 21c4 2 11 -1 13 -5l43 -71c3 -5 2 -11 -2 -14l-45 -34c0 -7 1 -14 1 -21s0 -15 -1 -21zM207 119c41 0 75 32 75 73s-34 73 -75 73
-s-74 -32 -74 -73s33 -73 74 -73z" />
- <glyph glyph-name="ion-android-share-alt" unicode="&#xf3ac;" horiz-adv-x="384"
-d="M320 104c34 0 62 -28 62 -62s-28 -62 -62 -62s-62 28 -62 62c0 5 1 10 2 14l-152 88c-12 -11 -27 -17 -44 -17c-35 0 -64 29 -64 64s28 64 63 64c17 0 32 -6 44 -17l151 87c-1 5 -2 10 -2 15c0 35 29 64 64 64s64 -29 64 -64s-29 -64 -64 -64c-17 0 -32 6 -44 17
-l-151 -87c1 -5 2 -10 2 -15s-1 -10 -2 -15l153 -88c11 11 26 16 42 16z" />
- <glyph glyph-name="ion-android-share" unicode="&#xf2f8;" horiz-adv-x="384"
-d="M384 200l-160 -147v88c-107 0 -171 -34 -224 -109c21 107 75 214 224 235v85z" />
- <glyph glyph-name="ion-android-star-half" unicode="&#xf3ad;" horiz-adv-x="404"
-d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64v-189z" />
- <glyph glyph-name="ion-android-star-outline" unicode="&#xf3ae;" horiz-adv-x="404"
-d="M404 238l-110 -96l33 -142l-125 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134zM219 103l60 -36l-16 68l-5 19l15 12l53 46l-70 6l-19 2l-8 18l-27 64l-27 -64l-8 -18l-19 -2l-70 -6l53 -46l15 -12l-5 -19l-16 -68l60 36l17 10z" />
- <glyph glyph-name="ion-android-star" unicode="&#xf2fc;" horiz-adv-x="404"
-d="M202 75l-125 -75l33 142l-110 96l145 12l57 134l57 -134l145 -12l-110 -96l33 -142z" />
- <glyph glyph-name="ion-android-stopwatch" unicode="&#xf2fd;" horiz-adv-x="384"
-d="M168 141v131h48v-131h-48zM344 278c25 -33 40 -74 40 -118c0 -106 -86 -192 -192 -192s-192 86 -192 192s86 192 192 192c44 0 85 -15 118 -40l31 30l33 -33zM298 54c28 28 44 66 44 106s-16 78 -44 106s-66 44 -106 44s-78 -16 -106 -44s-44 -66 -44 -106
-s16 -78 44 -106s66 -44 106 -44s78 16 106 44zM128 368v48h128v-48h-128z" />
- <glyph glyph-name="ion-android-subway" unicode="&#xf3af;" horiz-adv-x="352"
-d="M176 400c94 0 176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74v214c0 75 82 85 176 85zM80 64c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM160 208v96h-112v-96h112zM272 64c18 0 32 14 32 32
-s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 208v96h-112v-96h112z" />
- <glyph glyph-name="ion-android-sunny" unicode="&#xf3b0;"
-d="M224 288c-25 0 -50 -10 -68 -28s-28 -43 -28 -68s10 -50 28 -68s43 -28 68 -28s50 10 68 28s28 43 28 68s-10 50 -28 68s-43 28 -68 28zM245 416v0v-64h-42v64h42zM374 372v0l30 -30l-38 -38l-30 30zM74 372v0l38 -38l-30 -30l-38 38zM224 320v0c70 0 128 -58 128 -128
-s-58 -128 -128 -128s-128 58 -128 128s58 128 128 128zM448 213v0v-42h-64v42h64zM64 213v0v-42h-64v42h64zM366 80v0l38 -38l-30 -30l-38 38zM82 80v0l30 -30l-38 -38l-30 30zM245 32v0v-64h-42v64h42z" />
- <glyph glyph-name="ion-android-sync" unicode="&#xf3b1;" horiz-adv-x="320"
-d="M160 355c88 0 160 -73 160 -163c0 -32 -9 -62 -25 -87l-29 30c9 17 14 37 14 57c0 67 -54 122 -120 122v-61l-80 82l80 81v-61zM160 70v61l80 -82l-80 -81v61c-88 0 -160 73 -160 163c0 32 9 63 25 87l29 -30c-9 -17 -14 -37 -14 -57c0 -67 54 -122 120 -122z" />
- <glyph glyph-name="ion-android-textsms" unicode="&#xf3b2;" horiz-adv-x="384"
-d="M344 384c22 0 40 -18 40 -40v-240c0 -22 -18 -40 -40 -40h-280l-64 -64v344c0 22 10 40 32 40h312zM134 206v40h-38v-40h38zM211 206v40h-38v-40h38zM288 206v40h-38v-40h38z" />
- <glyph glyph-name="ion-android-time" unicode="&#xf3b3;" horiz-adv-x="426"
-d="M213 405c117 0 213 -96 213 -213s-95 -213 -213 -213s-213 96 -213 213s95 213 213 213zM213 22c94 0 170 76 170 170s-76 170 -170 170s-170 -76 -170 -170s76 -170 170 -170zM224 298v-111l96 -57l-16 -26l-112 67v127h32z" />
- <glyph glyph-name="ion-android-train" unicode="&#xf3b4;" horiz-adv-x="352"
-d="M0 101v214c0 75 82 85 176 85s176 -10 176 -85v-214c0 -42 -33 -74 -75 -74l27 -27v-16h-256v16l27 27c-42 0 -75 32 -75 74zM176 72c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM304 224v96h-256v-96h256z" />
- <glyph glyph-name="ion-android-unlock" unicode="&#xf3b5;" horiz-adv-x="320"
-d="M280 262c22 0 40 -18 40 -40v-200c0 -22 -18 -40 -40 -40h-240c-22 0 -40 18 -40 40v200c0 22 18 40 40 40h182v40v0c0 34 -28 62 -62 62s-62 -28 -62 -62h-38c0 55 45 100 100 100s100 -45 100 -100v-40h20zM160 80c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40
-s18 -40 40 -40z" />
- <glyph glyph-name="ion-android-upload" unicode="&#xf3b6;" horiz-adv-x="480"
-d="M387 231c52 -3 93 -46 93 -99c0 -55 -45 -100 -100 -100h-260c-66 0 -120 54 -120 120c0 62 47 113 107 119c25 48 75 81 133 81c73 0 133 -52 147 -121zM272 172h68l-100 100l-100 -100h68v-76h64v76z" />
- <glyph glyph-name="ion-android-volume-down" unicode="&#xf3b7;" horiz-adv-x="288"
-d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89z" />
- <glyph glyph-name="ion-android-volume-mute" unicode="&#xf3b8;" horiz-adv-x="192"
-d="M0 256h85l107 112v-352l-107 112h-85v128z" />
- <glyph glyph-name="ion-android-volume-off" unicode="&#xf3b9;" horiz-adv-x="384"
-d="M342 192c0 69 -45 128 -107 147v45c85 -20 149 -99 149 -192c0 -35 -8 -68 -24 -96l-32 32c9 19 14 41 14 64zM192 368v-104l-51 51zM357 51v0l24 -24l-24 -24l-40 40c-23 -21 -51 -36 -82 -43v45c19 6 37 15 52 28l-95 95v-152l-107 112h-85v128h85l9 10l-91 91l24 24z
-M288 192c0 -7 0 -15 -2 -22l-51 51v60c32 -16 53 -51 53 -89z" />
- <glyph glyph-name="ion-android-volume-up" unicode="&#xf3ba;" horiz-adv-x="384"
-d="M0 256h85l107 112v-352l-107 112h-85v128zM288 192c0 -38 -21 -73 -53 -88v177c32 -16 53 -51 53 -89zM235 384c85 -20 149 -99 149 -192s-64 -172 -149 -192v45c62 19 106 78 106 147s-44 128 -106 147v45z" />
- <glyph glyph-name="ion-android-walk" unicode="&#xf3bb;" horiz-adv-x="272"
-d="M168 336c-22 0 -40 18 -40 40s18 40 40 40s40 -18 40 -40s-18 -40 -40 -40zM168 216l-20 38l-20 -62l57 -96v-128h-38v96l-50 68l-57 -164h-40l81 320l-41 -16v-80h-40v112l111 38c4 1 10 1 13 1c13 0 23 -6 31 -18l45 -69h72v-40h-104z" />
- <glyph glyph-name="ion-android-warning" unicode="&#xf3bc;"
-d="M0 -16l224 416l224 -416h-448zM248 48v48h-48v-48h48zM248 128v96h-48v-96h48z" />
- <glyph glyph-name="ion-android-watch" unicode="&#xf3bd;" horiz-adv-x="320"
-d="M320 192c0 -51 -24 -96 -61 -125l-19 -115h-160l-19 115c-37 29 -61 74 -61 125s24 96 61 125l19 115h160l19 -115c37 -29 61 -74 61 -125zM40 192c0 -66 54 -120 120 -120s120 54 120 120s-54 120 -120 120s-120 -54 -120 -120z" />
- <glyph glyph-name="ion-android-wifi" unicode="&#xf305;" horiz-adv-x="416"
-d="M208 219c23 0 42 -18 42 -41s-19 -41 -42 -41s-42 18 -42 41s19 41 42 41zM333 178c0 -45 -26 -85 -63 -107l-20 36c25 14 41 40 41 71c0 45 -37 82 -83 82s-83 -37 -83 -82c0 -31 16 -57 41 -71l-20 -36c-37 22 -63 62 -63 107c0 68 56 124 125 124s125 -56 125 -124z
-M208 384c114 0 208 -93 208 -206c0 -76 -42 -142 -104 -178l-21 36c50 28 83 81 83 142c0 91 -74 165 -166 165s-166 -74 -166 -165c0 -61 33 -113 83 -142l-21 -36c-62 36 -104 102 -104 178c0 113 94 206 208 206z" />
- <glyph glyph-name="ion-aperture" unicode="&#xf313;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM168 342l56 -86h-147
-c17 40 50 71 91 86zM381 160h-102l72 129c21 -27 33 -60 33 -97c0 -11 -1 -22 -3 -32zM328 314l-49 -90l-78 126c8 1 15 2 23 2c40 0 76 -14 104 -38zM67 224h102l-72 -129c-21 27 -33 60 -33 97c0 11 1 22 3 32zM280 42l-56 86h147c-17 -40 -50 -71 -91 -86zM120 70l49 90
-l78 -126c-8 -1 -15 -2 -23 -2c-40 0 -76 14 -104 38z" />
- <glyph glyph-name="ion-archive" unicode="&#xf102;"
-d="M224 140l-128 116h80v96h96v-96h80zM433 151c11 -6 17 -19 15 -32l-9 -67c-2 -13 -9 -20 -28 -20h-374c-18 0 -26 7 -28 20l-9 67c-2 13 3 26 14 32l72 55h42l-62 -62h50c2 0 5 -1 6 -3l18 -45h168l18 45c1 2 3 3 5 3h51l-62 62h42z" />
- <glyph glyph-name="ion-arrow-down-a" unicode="&#xf103;" horiz-adv-x="384"
-d="M192 -0l-192 192h112v192h160v-192h112z" />
- <glyph glyph-name="ion-arrow-down-b" unicode="&#xf104;" horiz-adv-x="320"
-d="M3 263c-2 2 -3 6 -3 9c0 9 8 16 17 16v0h286v0c9 0 17 -7 17 -16c0 -3 -1 -6 -3 -8l-2 -3l-136 -156c-5 -5 -11 -9 -19 -9s-14 4 -19 9l-136 156z" />
- <glyph glyph-name="ion-arrow-down-c" unicode="&#xf105;" horiz-adv-x="274"
-d="M265 125l-105 -100c-6 -6 -14 -9 -23 -9s-16 3 -22 9l-106 100c-12 12 -12 31 0 43s34 12 46 0l50 -48v217c0 17 14 31 32 31s32 -14 32 -31v-217l50 48c12 12 34 12 46 0s12 -31 0 -43z" />
- <glyph glyph-name="ion-arrow-expand" unicode="&#xf25e;" horiz-adv-x="320"
-d="M178 238l64 64l-50 50h128v-128l-50 50l-64 -64zM178 146l28 28l64 -64l50 50v-128h-128l50 50zM142 146l-64 -64l50 -50h-128v128l50 -50l64 64zM142 238l-28 -28l-64 64l-50 -50v128h128l-50 -50z" />
- <glyph glyph-name="ion-arrow-graph-down-left" unicode="&#xf25f;"
-d="M0 64v160l61 -61l131 141l107 -112l149 128l-149 -203l-107 107l-94 -98l62 -62h-160z" />
- <glyph glyph-name="ion-arrow-graph-down-right" unicode="&#xf260;"
-d="M288 64l62 62l-94 98l-107 -107l-149 203l149 -128l107 112l131 -141l61 61v-160h-160z" />
- <glyph glyph-name="ion-arrow-graph-up-left" unicode="&#xf261;"
-d="M160 320l-62 -62l94 -98l107 107l149 -203l-149 128l-107 -112l-131 141l-61 -61v160h160z" />
- <glyph glyph-name="ion-arrow-graph-up-right" unicode="&#xf262;"
-d="M288 320h160v-160l-61 61l-131 -141l-107 112l-149 -128l149 203l107 -107l94 98z" />
- <glyph glyph-name="ion-arrow-left-a" unicode="&#xf106;" horiz-adv-x="384"
-d="M0 192l192 192v-112h192v-160h-192v-112z" />
- <glyph glyph-name="ion-arrow-left-b" unicode="&#xf107;" horiz-adv-x="192"
-d="M167 349c2 2 6 3 9 3c9 0 16 -8 16 -17v0v-286v0c0 -9 -7 -17 -16 -17c-3 0 -7 1 -9 3l-2 2l-156 136c-5 5 -9 11 -9 19s4 14 9 19l156 136z" />
- <glyph glyph-name="ion-arrow-left-c" unicode="&#xf108;" horiz-adv-x="352"
-d="M109 320c12 12 32 12 44 0s12 -34 0 -46l-49 -50h217c17 0 31 -14 31 -32s-14 -32 -31 -32h-217l48 -50c12 -12 12 -34 0 -46s-31 -12 -43 0l-100 106c-6 6 -9 13 -9 22s3 17 9 23z" />
- <glyph glyph-name="ion-arrow-move" unicode="&#xf263;"
-d="M448 192l-96 -96v76h-109l1 -108h76l-96 -96l-96 96h76v108h-108v-76l-96 96l96 96v-76h108v108h-76l96 96l96 -96h-76v-108h108v76z" />
- <glyph glyph-name="ion-arrow-resize" unicode="&#xf264;" horiz-adv-x="320"
-d="M192 352h128v-128l-50 50l-9 -9l-183 -183l50 -50h-128v128l50 -50l128 128v0l64 64z" />
- <glyph glyph-name="ion-arrow-return-left" unicode="&#xf265;" horiz-adv-x="384"
-d="M128 352v-64h248c4 0 8 -4 8 -8v-240c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v48c0 4 4 8 8 8h248v128h-192v-64l-128 96z" />
- <glyph glyph-name="ion-arrow-return-right" unicode="&#xf266;" horiz-adv-x="384"
-d="M384 256l-128 -96v64h-192v-128h248c4 0 8 -4 8 -8v-48c0 -4 -4 -8 -8 -8h-304c-4 0 -8 4 -8 8v240c0 4 4 8 8 8h248v64z" />
- <glyph glyph-name="ion-arrow-right-a" unicode="&#xf109;" horiz-adv-x="384"
-d="M384 192l-192 -192v112h-192v160h192v112z" />
- <glyph glyph-name="ion-arrow-right-b" unicode="&#xf10a;" horiz-adv-x="192"
-d="M25 35c-2 -2 -6 -3 -9 -3c-9 0 -16 8 -16 17v0v286v0c0 9 7 17 16 17c3 0 6 -1 8 -3l3 -2l156 -136c5 -5 9 -11 9 -19s-4 -14 -9 -19l-156 -136z" />
- <glyph glyph-name="ion-arrow-right-c" unicode="&#xf10b;" horiz-adv-x="352"
-d="M243 320l100 -105c6 -6 9 -14 9 -23s-3 -16 -9 -22l-100 -106c-12 -12 -31 -12 -43 0s-12 34 0 46l48 50h-217c-17 0 -31 14 -31 32s14 32 31 32h217l-49 50c-12 12 -12 34 0 46s32 12 44 0z" />
- <glyph glyph-name="ion-arrow-shrink" unicode="&#xf267;" horiz-adv-x="384"
-d="M384 356l-82 -82l50 -50h-128v128l50 -50l82 82zM384 28l-28 -28l-82 82l-50 -50v128h128l-50 -50zM0 28l82 82l-50 50h128v-128l-50 50l-82 -82zM0 356l28 28l82 -82l50 50v-128h-128l50 50z" />
- <glyph glyph-name="ion-arrow-swap" unicode="&#xf268;" horiz-adv-x="384"
-d="M0 120c0 4 4 8 8 8h248v64l128 -96l-128 -96v64h-248c-4 0 -8 4 -8 8v48zM384 264c0 -4 -4 -8 -8 -8h-248v-64l-128 96l128 96v-64h248c4 0 8 -4 8 -8v-48z" />
- <glyph glyph-name="ion-arrow-up-a" unicode="&#xf10c;" horiz-adv-x="384"
-d="M192 384l192 -192h-112v-192h-160v192h-112z" />
- <glyph glyph-name="ion-arrow-up-b" unicode="&#xf10d;" horiz-adv-x="320"
-d="M317 121c2 -2 3 -6 3 -9c0 -9 -8 -16 -17 -16v0h-286v0c-9 0 -17 7 -17 16c0 3 1 6 3 8l2 3l136 156c5 5 11 9 19 9s14 -4 19 -9l136 -156z" />
- <glyph glyph-name="ion-arrow-up-c" unicode="&#xf10e;" horiz-adv-x="274"
-d="M9 259l105 100c6 6 14 9 23 9s16 -3 22 -9l106 -100c12 -12 12 -31 0 -43s-34 -12 -46 0l-50 48v-217c0 -17 -14 -31 -32 -31s-32 14 -32 31v217l-50 -49c-12 -12 -34 -12 -46 0s-12 32 0 44z" />
- <glyph glyph-name="ion-asterisk" unicode="&#xf314;"
-d="M448 224v-64l-186 10l104 -170l-56 -32l-86 176l-86 -176l-56 32l104 170l-186 -10v64l187 -7l-109 167l60 32l86 -176l86 176l60 -32l-109 -167z" />
- <glyph glyph-name="ion-at" unicode="&#xf10f;"
-d="M422 41c-24 -25 -52 -43 -85 -55s-69 -18 -105 -18c-35 0 -66 6 -95 17s-53 26 -73 46s-36 43 -47 71s-17 58 -17 90s6 62 18 89s29 51 50 71s46 35 74 47c28 11 58 17 90 17c28 0 55 -4 81 -12s49 -20 69 -36s36 -36 48 -60s18 -53 18 -85c0 -24 -3 -46 -10 -64
-s-16 -34 -27 -46s-24 -22 -38 -28s-29 -10 -45 -10s-29 4 -39 12s-15 17 -15 29h-3c-6 -10 -15 -19 -28 -28s-28 -13 -46 -13c-28 0 -49 9 -64 27s-23 42 -23 71c0 17 3 34 9 50s14 31 24 44s23 23 38 31s31 12 49 12c15 0 27 -4 38 -10c10 -6 18 -15 21 -24h1l5 24h54
-l-24 -113c-1 -6 -2 -12 -3 -19s-2 -13 -2 -19c0 -7 1 -13 4 -18s7 -7 15 -7c16 0 29 9 39 26s16 40 16 68c0 24 -4 45 -12 64s-20 34 -34 47s-32 23 -52 29s-41 9 -65 9c-26 0 -49 -4 -70 -13s-39 -22 -54 -38s-27 -34 -35 -56c-8 -21 -13 -44 -13 -69c0 -26 4 -51 13 -72
-s21 -39 37 -54s35 -27 57 -35s46 -12 72 -12c33 0 61 6 85 16s45 25 65 43zM231 260c-10 0 -18 -2 -25 -8s-14 -13 -19 -22s-8 -18 -11 -28s-4 -20 -4 -30c0 -5 0 -10 1 -16c1 -5 3 -10 6 -15s7 -8 12 -11s11 -5 19 -5c11 0 20 3 28 8s14 13 19 21s9 16 11 26s3 19 3 27
-c0 6 0 13 -1 19s-4 12 -7 17s-7 9 -12 12s-12 5 -20 5z" />
- <glyph glyph-name="ion-backspace-outline" unicode="&#xf3be;" horiz-adv-x="512"
-d="M413 116c2 -2 3 -4 3 -6s-1 -4 -3 -6l-21 -22c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-76 77l-76 -77c-2 -2 -4 -2 -6 -2s-4 0 -6 2l-21 22c-2 2 -3 4 -3 6s1 4 3 6l76 76l-77 76c-3 3 -3 9 0 12l22 22c2 2 4 2 6 2s4 0 6 -2l76 -76l76 76c2 2 4 2 6 2s4 0 6 -2l22 -22
-c3 -3 3 -9 0 -12l-77 -76zM499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM480 65v256c0 9 -5 15 -14 15h-298c-11 0 -22 -3 -32 -16l-96 -128
-l96 -128c8 -10 17 -16 32 -16h298c9 0 14 8 14 17z" />
- <glyph glyph-name="ion-backspace" unicode="&#xf3bf;" horiz-adv-x="512"
-d="M499 354c9 -9 13 -20 13 -33v-256c0 -27 -20 -49 -46 -49h-298c-13 0 -24 3 -34 9c-9 5 -16 11 -23 20v0l-1 1l-110 146l110 148c14 19 34 28 58 28h298c13 0 24 -5 33 -14zM413 116l-76 76l77 76c3 3 3 9 0 12l-22 22c-2 2 -4 2 -6 2s-4 0 -6 -2l-76 -76l-76 76
-c-2 2 -4 2 -6 2s-4 0 -6 -2l-22 -22c-3 -3 -3 -9 0 -12l77 -76l-76 -76c-2 -2 -3 -4 -3 -6s1 -4 3 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l76 77l76 -77c2 -2 4 -2 6 -2s4 0 6 2l21 22c2 2 3 4 3 6s-1 4 -3 6z" />
- <glyph glyph-name="ion-bag" unicode="&#xf110;"
-d="M416 288l32 -320h-448l32 320h64v4c0 68 56 124 124 124h8c68 0 124 -56 124 -124v-4h64zM128 292v-4h192v4c0 51 -41 92 -92 92v0h-8c-51 0 -92 -41 -92 -92zM36 0h376l-25 256h-35v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36
-h-192v-36c10 -6 16 -16 16 -28c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 12 6 22 16 28v36h-35z" />
- <glyph glyph-name="ion-battery-charging" unicode="&#xf111;"
-d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM225 288l-100 -111h61l-27 -81l100 111h-61z" />
- <glyph glyph-name="ion-battery-empty" unicode="&#xf112;"
-d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-337v-192h337v32v32h32h15z" />
- <glyph glyph-name="ion-battery-full" unicode="&#xf113;"
-d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37z" />
- <glyph glyph-name="ion-battery-half" unicode="&#xf114;"
-d="M438 256c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37zM416 160v64h-15h-32v32v32h-81l32 -192h49v32v32h32h15z" />
- <glyph glyph-name="ion-battery-low" unicode="&#xf115;"
-d="M10 64c-6 0 -10 4 -10 10v236c0 6 4 10 10 10h381c6 0 10 -4 10 -10v-54h37c6 0 10 -4 10 -10v-108c0 -6 -4 -10 -10 -10h-37v-54c0 -6 -4 -10 -10 -10h-381zM369 288h-209l32 -192h177v32v32h32h15v64h-15h-32v32v32z" />
- <glyph glyph-name="ion-beaker" unicode="&#xf269;" horiz-adv-x="384"
-d="M80 256h240v-224c0 -9 -7 -16 -16 -16h-208c-9 0 -16 7 -16 16v224zM296 104v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -4 4 -8 8 -8s8 4 8 8zM288 176c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM381 416c3 0 3 -2 3 -3s-2 -3 -3 -5s-13 -20 -13 -40v-336
-c0 -35 -29 -64 -64 -64h-208c-35 0 -64 29 -64 64v307c0 32 -2 33 -32 37c0 12 11 40 65 40h316zM336 368c0 5 0 16 1 16h-273c-1 0 -3 0 -4 -1c5 -7 4 -32 4 -44v-307c0 -18 14 -32 32 -32h210c17 0 30 14 30 32v336z" />
- <glyph glyph-name="ion-beer" unicode="&#xf26a;"
-d="M384 288c35 0 64 -29 64 -64v-96c0 -35 -29 -64 -64 -64h-32v-80c0 -9 -7 -16 -16 -16h-256c-9 0 -16 7 -16 16v223c-26 0 -48 22 -48 48v54v1c-10 11 -16 26 -16 42c0 35 29 64 64 64c18 0 34 -8 46 -20c10 12 26 20 43 20c14 0 27 -6 37 -14c12 9 26 14 42 14
-c17 0 34 -6 46 -16c11 10 26 16 42 16c35 0 64 -29 64 -64c0 -24 -18 -44 -32 -48v-16h32zM296 144c4 0 8 3 8 8v0v48c0 4 -4 8 -8 8s-8 -4 -8 -8v-48c0 -3 2 -6 4 -7c1 -1 2 -1 4 -1zM303 220c1 2 1 4 1 6s-1 4 -3 5s-4 1 -6 1s-4 -2 -5 -4s-2 -4 -2 -6s2 -4 4 -5
-s4 -1 6 -1s4 2 5 4zM320 288v32h-20c-3 -8 -7 -16 -13 -23c-13 -16 -33 -25 -55 -25c-26 0 -48 13 -61 33c-6 -2 -12 -3 -18 -3c-12 0 -23 4 -32 10c-2 1 -3 3 -5 4c-1 -2 -2 -3 -3 -5c-5 -6 -11 -10 -17 -14v-32v-9h80c0 4 4 8 8 8s8 -4 8 -8h128v32zM351 343c1 3 1 6 1 9
-c0 18 -14 32 -32 32c-9 0 -17 -4 -23 -10c-2 -2 -6 -5 -16 -6h-8c-6 1 -12 3 -14 5c-7 7 -16 11 -27 11c-9 0 -18 -4 -25 -9l-7 -7c0 -1 0 -1 -1 -2c-3 -3 -7 -5 -11 -5c-5 0 -8 3 -11 6c-1 2 -2 3 -3 5s-3 4 -5 6c-4 4 -10 6 -16 6c-10 0 -18 -9 -25 -16
-c-7 -8 -27 -8 -34 0s-18 16 -30 16c-18 0 -32 -14 -32 -32c0 -2 1 -5 1 -7c2 -9 7 -17 15 -21v-34v-35c0 -9 7 -16 16 -16v26v23v32c10 0 18 4 24 11c2 2 3 4 4 6c0 0 6 10 12 11s20 6 30 -5c4 -5 11 -9 19 -9c3 0 5 1 7 2c3 1 7 2 9 4v0c3 2 6 4 10 4c7 0 12 -4 14 -10
-c0 0 1 -1 1 -2c1 -3 1 -5 3 -8c7 -12 20 -20 35 -20c13 0 25 6 32 16c5 7 8 15 8 24s9 8 9 8h7h48c6 0 13 -3 15 -9zM416 128v96c0 18 -14 32 -32 32h-32v-160h32c18 0 32 14 32 32zM128 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM288 280c0 5 3 8 8 8s8 -3 8 -8
-s-3 -8 -8 -8s-8 3 -8 8z" />
- <glyph glyph-name="ion-bluetooth" unicode="&#xf116;" horiz-adv-x="256"
-d="M12 304c16 16 18 13 19 12l68 -65v0v0c2 -2 10 -10 10 -3v156v0v2c0 6 6 10 12 10c4 0 7 -2 9 -4v0s117 -113 122 -117s5 -10 1 -14l-84 -81s-4 -4 -4 -8s4 -8 4 -8l84 -81c4 -4 4 -10 -1 -14s-122 -117 -122 -117v0c-2 -2 -5 -4 -9 -4c-6 0 -12 4 -12 10v2v0v156
-s-8 -1 -10 -3v0v-1l-68 -64c-1 -1 -3 -4 -19 12s-12 17 -11 18s90 86 90 86s4 3 4 8v0c0 5 -4 8 -4 8s-89 85 -90 86s-5 2 11 18zM152 328v-79c0 -8 8 -1 10 1l30 30s3 5 3 7s-1 5 -3 7l-30 30c-2 2 -10 11 -10 4zM152 135v-79s8 2 10 4l30 30c2 2 3 5 3 7s-1 5 -3 7l-30 30
-c-2 2 -10 9 -10 1z" />
- <glyph glyph-name="ion-bonfire" unicode="&#xf315;" horiz-adv-x="384"
-d="M207 97l15 -89c1 -3 1 -5 1 -8c0 -18 -14 -32 -32 -32s-32 14 -32 32c0 2 0 5 1 7l15 92v0c2 7 8 13 16 13s15 -7 16 -15zM242 93v0v0v0zM329 58c9 -8 10 -25 0 -35s-27 -9 -35 0c-1 1 -2 3 -3 4l-49 66c-3 5 -2 11 2 15c5 5 10 5 16 1l64 -47c2 -1 3 -3 5 -4zM309 113v0
-v0v0zM371 126c9 -1 13 -7 13 -19c0 -9 -10 -14 -18 -12l-57 18v0v0c-3 2 -6 5 -5 9s4 7 8 6zM75 113v0v0v0zM75 113v0l-58 -18c-8 -2 -17 3 -17 12c0 12 3 18 12 19l60 2c4 1 7 -2 8 -6s-2 -7 -5 -9v0zM124 109c5 4 11 4 16 -1c4 -4 5 -10 2 -15l-49 -66c-1 -1 -2 -3 -3 -4
-c-10 -10 -25 -10 -35 0s-10 25 0 35c2 2 3 3 5 4zM288 320c0 -32 -9 -58 -50 -86c-37 -26 -94 -46 -110 -106c0 0 -58 24 -48 96s124 106 112 192c24 0 96 -35 96 -96zM288 192c-16 -50 -44 -64 -80 -64c-15 0 -32 9 -43 26c12 15 28 26 47 37c9 5 20 10 29 16
-c21 14 38 31 47 49c5 -15 5 -48 0 -64zM88 288c-6 4 -9 14 -8 27c2 22 34 39 32 69c14 2 31 -3 42 -24c-5 -11 -15 -21 -28 -34s-26 -22 -38 -38z" />
- <glyph glyph-name="ion-bookmark" unicode="&#xf26b;" horiz-adv-x="192"
-d="M184 384c4 0 8 -4 8 -8v-56h-192v56c0 4 4 8 8 8h176zM0 0v304h192v-304l-96 96z" />
- <glyph glyph-name="ion-bowtie" unicode="&#xf3c0;"
-d="M192 236c0 0 8 5 20 7c21 4 39 5 47 -9c10 -17 19 -53 17 -85c-1 -17 -5 -22 -5 -22s-15 -10 -47 -7c-35 3 -40 15 -40 15s5 12 8 43s0 58 0 58zM152 163c-17 -4 -38 -10 -38 -10s45 4 64 9c-4 -21 -10 -34 -10 -34s-83 -80 -116 -80c-28 0 -52 68 -52 144s26 144 52 144
-c35 0 106 -57 128 -97c0 0 3 -16 2 -32c-10 5 -24 10 -44 14c-28 6 -42 3 -42 3s18 -4 57 -17c15 -5 22 -8 29 -10c0 -3 -1 -7 -1 -10c0 -5 0 -10 -1 -15c-5 -2 -15 -6 -28 -9zM396 336c26 0 52 -68 52 -144s-24 -144 -52 -144c-37 0 -104 68 -112 79c0 0 4 5 5 22v9
-c16 -7 70 -13 70 -13s-21 6 -40 11c-13 4 -25 8 -30 10c-1 11 -2 23 -4 33c17 11 69 34 69 34s-15 -2 -35 -9c-14 -5 -29 -11 -37 -14c-3 10 -7 18 -10 24c0 1 -1 4 -1 4v1c22 40 89 97 125 97z" />
- <glyph glyph-name="ion-briefcase" unicode="&#xf26c;"
-d="M240 176v8h208v-176c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v176h208v-8h32zM440 304c4 0 8 -4 8 -8v-96h-208v8h-32v-8h-208v96c0 4 4 8 8 8h120v31c1 28 22 49 51 49h90c30 0 50 -21 51 -49v-31h120zM288 332v1c0 10 -9 19 -19 19h-90c-10 0 -19 -9 -19 -19v-1v-1v-27
-h128v27v1z" />
- <glyph glyph-name="ion-bug" unicode="&#xf2be;"
-d="M343 321c-6 -16 -16 -31 -28 -43c-24 -24 -57 -37 -91 -37s-67 13 -91 37c-12 12 -22 27 -28 43c29 39 72 63 119 63s90 -24 119 -63zM95 305c22 -45 68 -77 121 -80v-225c-40 2 -77 22 -104 54c-7 -6 -10 -9 -13 -15c8 -9 7 -22 -1 -31c-9 -10 -24 -11 -34 -2
-s-11 24 -2 34l3 3s2 1 2 1c4 13 13 25 27 36c-15 26 -26 57 -29 90c-7 0 -12 -2 -17 -3c-1 -13 -11 -23 -24 -23s-24 11 -24 24s11 24 24 24h3c4 2 8 5 12 6c7 2 14 4 25 4c1 23 6 45 13 65c-6 4 -11 7 -15 11c-6 5 -11 13 -14 19c-1 0 -3 1 -4 2c-12 6 -15 21 -9 33
-s21 15 33 9c11 -6 15 -20 10 -31c2 -3 3 -7 4 -8c2 -2 5 -3 8 -5c2 3 3 5 5 8zM424 192c13 0 24 -11 24 -24s-11 -24 -24 -24s-23 10 -24 23c-5 1 -10 3 -17 3c-3 -33 -14 -64 -29 -90c14 -11 23 -23 27 -36c0 0 1 0 2 -1l3 -3c9 -10 8 -25 -2 -34s-25 -8 -34 2
-c-8 9 -9 22 -1 31c-3 6 -6 9 -13 15c-27 -32 -64 -52 -104 -54v225c53 3 99 35 121 80c2 -3 3 -5 5 -8c3 2 6 3 8 5c1 1 2 5 4 8c-5 11 -1 25 10 31c12 6 27 3 33 -9s3 -27 -9 -33c-1 -1 -3 -2 -4 -2c-3 -6 -8 -14 -14 -19c-4 -4 -9 -7 -15 -11c7 -20 12 -42 13 -65
-c11 0 18 -2 25 -4c4 -1 8 -4 12 -6h3z" />
- <glyph glyph-name="ion-calculator" unicode="&#xf26d;" horiz-adv-x="320"
-d="M304 416c9 0 16 -7 16 -16v-416c0 -9 -7 -16 -16 -16h-288c-9 0 -16 7 -16 16v416c0 9 7 16 16 16h288zM48 240v-32h32v32h-32zM48 176v-32h32v32h-32zM48 112v-32h32v32h-32zM144 16v32h-96v-32h96zM144 80v32h-32v-32h32zM144 144v32h-32v-32h32zM144 208v32h-32v-32
-h32zM208 16v32h-32v-32h32zM208 80v32h-32v-32h32zM208 144v32h-32v-32h32zM208 208v32h-32v-32h32zM272 16v96h-32v-96h32zM272 144v32h-32v-32h32zM272 208v32h-32v-32h32zM272 288v80h-224v-80h224z" />
- <glyph glyph-name="ion-calendar" unicode="&#xf117;"
-d="M112 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM336 320c-18 0 -32 14 -32 32v32c0 18 14 32 32 32s32 -14 32 -32v-32c0 -18 -14 -32 -32 -32zM440 384c4 0 8 -4 8 -8v-400c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v400
-c0 4 4 8 8 8h56v-41c0 -22 24 -39 48 -39s48 17 48 39v41h128v-41c0 -22 25 -39 49 -39s47 17 47 39v41h56zM400 16v256h-352v-256h352z" />
- <glyph glyph-name="ion-camera" unicode="&#xf118;" horiz-adv-x="416"
-d="M382 301c18 0 34 -14 34 -33v-202c0 -19 -16 -34 -34 -34h-348c-19 0 -34 15 -34 34v202c0 19 15 33 34 33h69l39 40v0c6 7 15 11 25 11h84c9 0 17 -4 23 -10v0v0v0l41 -41h67zM208 82c51 0 92 42 92 93s-41 93 -92 93s-92 -42 -92 -93s41 -93 92 -93zM376 248
-c8 0 14 6 14 14s-6 14 -14 14s-14 -6 -14 -14s6 -14 14 -14zM208 245c38 0 70 -31 70 -70s-32 -70 -70 -70c-39 0 -70 31 -70 70s31 70 70 70z" />
- <glyph glyph-name="ion-card" unicode="&#xf119;"
-d="M420 352c16 0 28 -12 28 -28v0v-264v0c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v0v0v264v0v0c0 16 12 28 28 28h392zM45 320c-7 0 -12 -5 -13 -12v-20h384v20c-1 7 -6 12 -13 12h-358zM403 64c7 0 12 5 13 12v116h-384v-116c1 -7 6 -12 13 -12h358zM64 128v16
-h192v-16h-192zM64 96v16h96v-16h-96zM320 96v48h64v-48h-64z" />
- <glyph glyph-name="ion-cash" unicode="&#xf316;" horiz-adv-x="512"
-d="M0 352h512v-256h-512v256zM193 128c-20 23 -33 58 -33 96s13 73 33 96h-97c0 -35 -29 -64 -64 -64v-80c27 0 48 -21 48 -48h113zM298 187c3 4 4 9 4 15c0 3 0 5 -1 8s-2 6 -4 8s-4 4 -7 6s-6 4 -10 5c-1 0 -4 1 -7 2s-5 0 -8 1v31c2 -1 5 -2 7 -3c4 -3 6 -7 7 -13h20
-c0 5 -2 9 -4 13s-5 8 -9 11s-9 5 -14 6c-2 1 -5 2 -7 2v9h-18v-9c-2 0 -4 -1 -6 -2c-5 -1 -10 -2 -14 -5s-7 -6 -9 -10s-4 -9 -4 -14c0 -3 0 -5 1 -8s2 -5 4 -7s5 -5 8 -7s7 -4 12 -5c3 -1 6 0 8 -1v-35c-3 1 -6 2 -9 4s-5 4 -6 7s-2 6 -2 9h-20c0 -5 2 -11 4 -16
-c3 -5 6 -8 10 -11s9 -6 15 -7c3 -1 5 -2 8 -2v-9h18v9c3 0 6 1 9 2c5 1 10 2 14 5s7 7 10 11zM480 176v80c-35 0 -64 29 -64 64h-97c20 -23 33 -58 33 -96s-13 -73 -33 -96h113c0 27 22 48 48 48zM64 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z
-M384 224c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32zM273 213c2 -1 4 -2 6 -4s3 -5 3 -9c0 -2 0 -4 -1 -6s-2 -4 -4 -5s-5 -3 -8 -4c-1 0 -2 -1 -4 -1v31c3 -1 6 -1 8 -2zM236 257c1 2 3 3 5 4s4 2 6 2v-26c-4 1 -7 3 -9 5s-4 4 -4 8c0 3 1 5 2 7zM0 32
-v32h512v-32h-512z" />
- <glyph glyph-name="ion-chatbox-working" unicode="&#xf11a;" horiz-adv-x="416"
-d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153zM304 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 256c-18 0 -32 -14 -32 -32s14 -32 32 -32
-s32 14 32 32s-14 32 -32 32zM112 256c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" />
- <glyph glyph-name="ion-chatbox" unicode="&#xf11b;" horiz-adv-x="416"
-d="M76 48c-42 0 -76 31 -76 71v209c0 40 34 72 76 72h264c42 0 76 -32 76 -72v-209c0 -40 -34 -71 -76 -71h-4v-64s-79 54 -86 59s-7 5 -21 5h-153z" />
- <glyph glyph-name="ion-chatboxes" unicode="&#xf11c;" horiz-adv-x="416"
-d="M246 82l26 -18c-4 -21 -29 -32 -52 -32h-90c-8 0 -11 -2 -13 -3l-53 -45v48h-16c-26 0 -48 16 -48 41v129c0 25 20 45 46 45h2v-101c0 -33 29 -59 64 -59h117c10 0 14 -3 17 -5zM353 400c35 0 63 -27 63 -60v-168c0 -33 -28 -60 -63 -60h-17v-64l-75 60c-2 2 -7 4 -17 4
-h-101c-35 0 -63 27 -63 60v98v70c0 33 21 60 56 60h217z" />
- <glyph glyph-name="ion-chatbubble-working" unicode="&#xf11d;" horiz-adv-x="416"
-d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15zM304 224c-18 0 -32 -14 -32 -32
-s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM208 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM112 224c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32z" />
- <glyph glyph-name="ion-chatbubble" unicode="&#xf11e;" horiz-adv-x="416"
-d="M208 -1c-115 0 -208 89 -208 200s93 201 208 201s208 -90 208 -201c0 -40 -12 -77 -33 -108c-1 -1 -2 -3 -3 -4v0c-2 -4 -4 -10 -4 -15l22 -88l-84 31c-4 2 -8 2 -12 2s-7 -1 -11 -2v0c-1 0 -1 -1 -2 -1c-25 -10 -52 -15 -81 -15z" />
- <glyph glyph-name="ion-chatbubbles" unicode="&#xf11f;" horiz-adv-x="416"
-d="M25 57c-1 1 0 2 -1 3c-15 22 -24 49 -24 77c0 42 19 80 49 106c-2 -11 -4 -22 -4 -34c0 -92 78 -168 174 -168c15 0 30 2 44 6c-27 -32 -69 -53 -115 -53c-20 0 -40 5 -58 12h-1v0c-2 1 -5 2 -8 2s-6 -1 -9 -2l-56 -22l12 63c0 4 -1 7 -3 10v0zM242 400
-c96 0 174 -76 174 -168c0 -33 -11 -64 -28 -90c-1 -1 -1 -2 -2 -3v0c-2 -4 -3 -8 -3 -12l17 -74l-69 26c-3 1 -6 2 -10 2c-3 0 -6 -1 -9 -2v0l-2 -1c-8 -3 -16 -5 -24 -7c-14 -4 -29 -6 -44 -6c-96 0 -173 75 -173 167c0 12 1 24 3 35c16 76 86 133 170 133z" />
- <glyph glyph-name="ion-checkmark-circled" unicode="&#xf120;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM339 267c1 1 1 2 1 3s0 3 -1 4l-31 24c-1 1 -3 1 -4 1s-2 0 -3 -1l-111 -143s-44 42 -45 43s-4 3 -6 3s-3 -2 -4 -3l-25 -25l-1 -1c-1 -1 -1 -3 -1 -4s0 -2 1 -3l2 -1
-s78 -75 79 -76s3 -3 5 -3s4 2 5 3z" />
- <glyph glyph-name="ion-checkmark-round" unicode="&#xf121;" horiz-adv-x="416"
-d="M400 376c17 -13 22 -39 9 -57l-207 -302c-13 -18 -37 -22 -54 -9s-137 147 -137 147c-15 16 -15 42 1 58s40 15 55 -2l99 -107l180 263c13 18 37 22 54 9z" />
- <glyph glyph-name="ion-checkmark" unicode="&#xf122;" horiz-adv-x="416"
-d="M414 338c1 -2 2 -4 2 -6s-1 -4 -2 -6l-249 -320c-2 -2 -5 -6 -9 -6s-8 3 -10 5s-141 136 -141 136l-3 3c-1 2 -2 4 -2 6s1 3 2 5l2 2c14 15 42 44 44 46s4 6 8 6s8 -4 10 -6s80 -78 80 -78l200 257c2 2 4 2 6 2s5 -1 7 -2z" />
- <glyph glyph-name="ion-chevron-down" unicode="&#xf123;"
-d="M224 150v0v0l174 167c4 4 12 4 16 0l31 -30c4 -4 4 -12 0 -16l-213 -204c-2 -2 -5 -3 -8 -3s-6 1 -8 3l-213 204c-4 4 -4 12 0 16l31 30c4 4 12 4 16 0z" />
- <glyph glyph-name="ion-chevron-left" unicode="&#xf124;" horiz-adv-x="256"
-d="M86 192l167 -174c4 -4 4 -12 0 -16l-30 -31c-4 -4 -12 -4 -16 0l-204 213c-2 2 -3 5 -3 8s1 6 3 8l204 213c4 4 12 3 16 -1l30 -30c4 -4 4 -12 0 -16l-167 -174v0v0z" />
- <glyph glyph-name="ion-chevron-right" unicode="&#xf125;" horiz-adv-x="256"
-d="M170 192v0v0l-167 174c-4 4 -4 12 0 16l30 30c4 4 12 5 16 1l204 -213c2 -2 3 -5 3 -8s-1 -6 -3 -8l-204 -213c-4 -4 -12 -4 -16 0l-30 31c-4 4 -4 12 0 16z" />
- <glyph glyph-name="ion-chevron-up" unicode="&#xf126;"
-d="M224 234l-174 -167c-4 -4 -12 -4 -16 0l-31 30c-4 4 -4 12 0 16l213 204c2 2 5 3 8 3s6 -1 8 -3l213 -204c4 -4 4 -12 0 -16l-31 -30c-4 -4 -12 -4 -16 0l-174 167v0v0z" />
- <glyph glyph-name="ion-clipboard" unicode="&#xf127;" horiz-adv-x="352"
-d="M80 288c2 20 10 35 28 40l1 1c12 3 21 7 21 20v21c0 26 21 46 46 46s46 -20 46 -46v-21c0 -13 9 -18 21 -21h2c18 -5 25 -20 27 -40h-192zM176 384c-8 0 -13 -6 -13 -14s5 -14 13 -14s14 6 14 14s-6 14 -14 14zM325 384c15 0 27 -12 27 -28v-360c0 -16 -12 -28 -27 -28
-h-149h-148c-15 0 -28 12 -28 28v360c0 16 13 28 28 28h73v-13c0 -11 -9 -19 -19 -19h-37c-7 0 -12 -6 -12 -13v-327c0 -6 5 -12 11 -12h265c6 0 11 6 11 12v327c0 7 -5 13 -12 13h-37c-10 0 -20 8 -20 19v13h74zM64 224v32h112v-32h-112zM64 32v32h160v-32h-160zM64 96v32
-h129v-32h-129zM64 160v32h208v-32h-208z" />
- <glyph glyph-name="ion-clock" unicode="&#xf26e;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c10 10 19 21 26 33l-27 16l8 14l27 -16c13 25 21 52 22 81h-32v16h32c-1 29 -9 56 -22 81l-27 -16l-8 14l27 16c-7 12 -16 23 -26 33s-21 19 -33 26l-16 -27l-14 8
-l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -7 -23 -16 -33 -26s-19 -21 -26 -33l27 -16l-8 -14l-27 16c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -29 9 -56 22 -81l27 16l8 -14l-27 -16c7 -12 16 -23 26 -33s21 -19 33 -26
-l16 27l14 -8l-16 -27c25 -13 52 -21 81 -22v32h16v-32c29 1 56 9 81 22l-16 27l14 8l16 -27c12 7 23 16 33 26zM368 207v-32h-117c-6 -9 -16 -15 -27 -15c-18 0 -32 14 -32 32c0 12 6 22 16 28v68h32v-68c5 -3 9 -8 12 -13h116z" />
- <glyph glyph-name="ion-close-circled" unicode="&#xf128;"
-d="M224 415c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM332 116l-75 75l76 75c3 3 3 9 0 12l-22 21c-2 2 -4 3 -6 3s-3 -1 -5 -3l-76 -74l-76 74c-2 2 -3 3 -5 3s-4 -1 -6 -3l-21 -21c-3 -3 -3 -9 0 -12l76 -75l-76 -76
-c-2 -1 -2 -3 -2 -5s0 -4 2 -6l21 -22c2 -2 4 -2 6 -2s4 0 6 2l75 76l76 -75c2 -2 3 -3 5 -3s4 1 6 3l21 21c2 1 3 4 3 6s-1 4 -3 6z" />
- <glyph glyph-name="ion-close-round" unicode="&#xf129;" horiz-adv-x="384"
-d="M374 61c14 -14 14 -37 0 -51s-37 -14 -51 0l-131 131l-131 -131c-14 -14 -36 -14 -50 0s-14 37 0 51l130 131l-130 131c-14 14 -14 37 0 51s36 14 50 0l131 -131l131 131c14 14 37 14 51 0s14 -37 0 -51l-131 -131z" />
- <glyph glyph-name="ion-close" unicode="&#xf12a;" horiz-adv-x="384"
-d="M380 61c3 -3 4 -6 4 -10s-1 -7 -4 -10l-38 -37c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-131 131l-131 -131c-3 -3 -5 -4 -9 -4s-7 1 -10 4l-38 37c-3 3 -4 6 -4 10s1 7 4 10l132 131l-132 130c-5 5 -5 15 0 20l37 38c3 2 6 4 10 4s7 -1 10 -4l131 -130l131 130c3 2 6 4 10 4
-s7 -1 10 -4l37 -38c5 -5 5 -14 0 -19l-132 -130z" />
- <glyph glyph-name="ion-closed-captioning" unicode="&#xf317;" horiz-adv-x="512"
-d="M0 384h512v-384h-512v384zM464 192c0 27 0 44 -4 80s-23 56 -59 60s-91 4 -138 4h-7h-7c-47 0 -102 0 -138 -4s-55 -24 -59 -60s-4 -53 -4 -80s2 -47 4 -80s19 -56 59 -60s96 -4 145 -4s105 0 145 4s57 27 59 60s4 53 4 80zM372 164v4h53c0 -27 -7 -48 -19 -62
-s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28c1 -17 12 -29 27 -29s27 10 27 29v1z
-M195 164v4h53c0 -27 -7 -48 -19 -62s-32 -21 -61 -21c-14 0 -26 2 -36 5s-18 9 -25 17s-12 19 -15 33s-5 30 -5 51s3 39 7 53s9 25 17 33s17 14 27 17s22 5 34 5c25 0 44 -7 57 -21s19 -37 19 -62h-52v1c0 20 -12 33 -27 33s-25 -11 -28 -30c0 0 -2 -11 -2 -29s2 -28 2 -28
-c1 -17 12 -29 27 -29s27 10 27 29v1z" />
- <glyph glyph-name="ion-cloud" unicode="&#xf12b;"
-d="M366 215c45 0 82 -38 82 -84s-37 -83 -82 -83v0h-276c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" />
- <glyph glyph-name="ion-code-download" unicode="&#xf26f;"
-d="M299 164l-63 -63v0l-1 -1v0l-2 -1v0l-1 -1v0l-2 -1v0h-1v0h-1c-1 0 -3 -1 -4 -1s-3 1 -4 1h-1v0h-1v0l-2 1v0l-1 1v0c-1 1 -2 1 -3 2v0l-63 63c-6 6 -6 17 0 23s18 6 24 0l35 -34v118c0 9 7 17 16 17s16 -8 16 -17v-118l35 34c6 6 18 6 24 0s6 -17 0 -23zM136 56
-c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112
-c-5 -5 -11 -7 -17 -7z" />
- <glyph glyph-name="ion-code-working" unicode="&#xf270;"
-d="M128 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM200 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM272 192c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM136 56c-7 0 -12 2 -17 7l-112 112c-5 5 -7 10 -7 17
-s2 12 7 17l112 112c5 5 10 7 17 7s12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17l-95 -95l95 -95c5 -5 7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7zM312 56c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17l95 95l-95 95c-5 5 -7 10 -7 17s2 12 7 17s10 7 17 7s12 -2 17 -7l112 -112
-c5 -5 7 -10 7 -17s-2 -12 -7 -17l-112 -112c-5 -5 -10 -7 -17 -7z" />
- <glyph glyph-name="ion-code" unicode="&#xf271;"
-d="M136 56c-6 0 -12 2 -17 7l-112 112c-9 9 -9 25 0 34l112 112c9 9 25 9 34 0s9 -25 0 -34l-95 -95l95 -95c9 -9 9 -25 0 -34c-5 -5 -11 -7 -17 -7zM312 56c-6 0 -12 2 -17 7c-9 9 -9 25 0 34l95 95l-95 95c-9 9 -9 25 0 34s25 9 34 0l112 -112c9 -9 9 -25 0 -34l-112 -112
-c-5 -5 -11 -7 -17 -7z" />
- <glyph glyph-name="ion-coffee" unicode="&#xf272;" horiz-adv-x="384"
-d="M319 191c37 -7 65 -40 65 -79c0 -20 -8 -39 -21 -54c-15 -17 -37 -26 -61 -26c-8 0 -17 1 -25 3c-6 1 -10 3 -15 5c-11 -15 -23 -25 -32 -33v0c-5 -5 -12 -7 -19 -7h-102c-7 0 -14 2 -19 7v0c-17 15 -41 36 -62 86s-28 91 -28 111s3 20 16 20h101c-5 17 -37 19 -37 46
-c0 17 15 32 28 37c-2 -8 -3 -14 -3 -21c0 -19 39 -30 39 -53c0 -3 0 -6 -1 -9h56c1 5 2 10 2 14c0 36 -56 36 -56 84c0 28 21 55 47 62c-4 -14 -9 -23 -9 -35c0 -32 57 -50 57 -88c0 -13 -5 -25 -12 -37h76c13 0 16 0 16 -20c0 -4 0 -8 -1 -13zM302 64c33 0 50 25 50 48
-s-17 43 -39 47c-4 -19 -11 -42 -21 -66c-4 -9 -8 -17 -12 -25c6 -3 13 -4 22 -4z" />
- <glyph glyph-name="ion-compass" unicode="&#xf273;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224c0 39 10 76 27 108c-16 12 -27 30 -27 52c0 35 29 64 64 64c22 0 40 -11 52 -27c32 17 69 27 108 27zM32 352c0 -10 5 -20 13 -26c13 17 28 32 45 45c-6 8 -16 13 -26 13c-18 0 -32 -14 -32 -32z
-M360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM320 320c0 0 -54 -130 -72 -152s-120 -104 -120 -104s54 132 72 152s120 104 120 104z" />
- <glyph glyph-name="ion-compose" unicode="&#xf12c;" horiz-adv-x="384"
-d="M379 348c7 -7 7 -18 0 -25l-32 -31l-55 55l31 32c7 7 18 7 25 0zM282 338l55 -55l-177 -173l-64 -14l14 64zM320 192l32 32v-201c0 -13 -10 -23 -23 -23h-306c-13 0 -23 10 -23 23v306c0 13 10 23 23 23h201l-32 -32h-149c-6 0 -11 -5 -11 -10v-268s4 -10 10 -10h269
-s9 5 9 10v150z" />
- <glyph glyph-name="ion-connection-bars" unicode="&#xf274;" horiz-adv-x="352"
-d="M0 32v64h64v-64h-64zM96 32v128h64v-128h-64zM192 32v224h64v-224h-64zM288 32v320h64v-320h-64z" />
- <glyph glyph-name="ion-contrast" unicode="&#xf275;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56v-384c51 0 100 20 136 56z" />
- <glyph glyph-name="ion-crop" unicode="&#xf3c1;"
-d="M320 -32v48h64v-48h-64zM384 96h64v-64h-384v256h-64v64h64v64h64v-320h192v192h-176v64h240v-256z" />
- <glyph glyph-name="ion-cube" unicode="&#xf318;"
-d="M435 280c7 0 13 -6 13 -12v-183c0 -9 -6 -17 -14 -22v-1l-175 -92v-1c-2 -1 -4 -1 -6 -1c-7 0 -13 6 -13 12v185c0 9 5 17 13 22v0l3 2l172 89l2 1c2 1 3 1 5 1zM422 329c0 0 8 -3 8 -9c0 -7 -8 -11 -8 -11l-183 -97l-2 -1c-4 -2 -8 -3 -13 -3s-9 1 -13 3l-2 1l-183 96
-s-8 5 -8 12c0 6 8 9 8 9l181 82s11 5 17 5s17 -5 17 -5zM195 187c8 -5 13 -13 13 -22v-185c0 -6 -6 -12 -13 -12c-2 0 -4 1 -6 2v0l-175 92v1c-8 5 -14 13 -14 22v183c0 6 6 12 13 12c2 0 4 0 5 -1l2 -1l171 -89z" />
- <glyph glyph-name="ion-disc" unicode="&#xf12d;"
-d="M224 289c54 0 97 -43 97 -97s-43 -97 -97 -97s-97 43 -97 97s43 97 97 97zM224 148c24 0 44 20 44 44s-20 44 -44 44s-44 -20 -44 -44s20 -44 44 -44zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 69
-c68 0 123 55 123 123s-55 123 -123 123s-123 -55 -123 -123s55 -123 123 -123z" />
- <glyph glyph-name="ion-document-text" unicode="&#xf12e;" horiz-adv-x="288"
-d="M286 279c1 -3 2 -6 2 -10v-245c0 -13 -10 -24 -22 -24h-243c-12 0 -23 11 -23 24v336c0 13 11 24 23 24h160c3 0 6 0 9 -2c2 -1 5 -3 7 -5l84 -92c2 -2 2 -4 3 -6zM48 269v-10c0 -1 1 -3 3 -3h71c2 0 3 2 3 3v10c0 2 -1 3 -3 3h-71c-2 0 -3 -1 -3 -3zM48 141v-10
-c0 -1 1 -3 3 -3h123c2 0 2 2 2 3v10c0 2 0 3 -2 3h-123c-2 0 -3 -1 -3 -3zM208 67v10c0 2 0 3 -2 3h-155c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h155c2 0 2 2 2 3zM240 195v10c0 2 0 3 -2 3h-187c-2 0 -3 -1 -3 -3v-10c0 -1 1 -3 3 -3h187c2 0 2 2 2 3zM193 270h60l-71 78
-v-66c0 -6 5 -12 11 -12z" />
- <glyph glyph-name="ion-document" unicode="&#xf12f;" horiz-adv-x="288"
-d="M287 279c1 -3 1 -5 1 -9v-244c0 -13 -9 -26 -21 -26h-243c-12 0 -24 13 -24 26v335c0 13 12 23 24 23h160c3 0 6 0 9 -2c2 -1 5 -2 7 -4l83 -92c2 -2 3 -4 4 -7zM193 337v-63h58zM32 32h224v210h-67c-15 0 -28 13 -28 28v82h-129v-320z" />
- <glyph glyph-name="ion-drag" unicode="&#xf130;" horiz-adv-x="512"
-d="M0 272v32h512v-32h-512zM0 176v32h512v-32h-512zM0 80v32h512v-32h-512z" />
- <glyph glyph-name="ion-earth" unicode="&#xf276;"
-d="M325 322c2 -4 7 -12 3 -15c-3 -2 -10 -2 -13 5s0 11 -5 9s-7 3 -6 4c1 2 3 3 5 4c0 2 -4 8 2 7c4 -1 12 -10 14 -14zM344 277v0v0zM403 251c0 0 -2 0 0 0v0zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM141 19l8 -4
-c3 -1 6 -2 10 -3c14 -5 28 -8 43 -10c28 -3 56 -1 83 8c15 5 30 11 43 20c6 4 6 16 10 24c8 16 -2 33 12 47c12 14 4 19 4 34c0 10 8 18 4 29c-1 4 -7 -3 -9 1c-5 7 -21 1 -28 2c-13 2 -24 14 -33 23c-5 5 0 20 1 26c4 15 0 33 19 38c5 1 5 9 10 11c5 1 10 3 15 4
-c9 1 17 -2 26 -2c10 0 14 -5 22 -11c7 -6 13 -3 22 -5c7 0 0 5 -2 8c-3 2 -6 2 -8 2c-16 4 -23 22 -36 30c-6 3 -9 2 -11 0c-1 -1 1 -12 1 -12c-1 -3 -10 -4 -13 -5c-9 -2 -29 17 -15 22c4 1 27 5 24 15c-3 6 2 13 -5 14c-8 1 -7 7 -15 8c-5 1 -5 11 -5 14c0 9 2 6 9 7
-c-17 11 -37 19 -57 24c-1 -3 -5 -12 -8 -12c-5 -1 -6 0 -9 -3c-9 -10 -16 -28 -25 -7c-4 11 5 19 2 28h-6h-3c6 -12 -5 -18 -8 -19c-8 0 -10 5 -17 4c-4 -1 -7 4 -11 2s-13 -8 -14 -12c-3 -12 6 -13 14 -6c6 6 17 12 25 6c6 -5 5 -9 5 -14s-1 -18 -9 -16c-4 1 -7 6 -11 3
-c-8 -7 -18 -6 -29 -9c-10 -2 -16 -6 -25 -9c-8 -3 -11 -4 -12 -12c0 -2 0 -14 -3 -15c-5 -2 -8 22 -22 20c-12 -1 -30 -13 -25 -28c2 -5 28 -3 10 -14c-2 -1 2 -17 2 -20c1 -8 13 -18 21 -10c6 6 6 5 14 2c15 -8 33 -15 45 -27c6 -6 9 -24 17 -28c9 -5 19 -5 26 -14
-c6 -7 -2 -19 -8 -23c-4 -2 -12 -24 -16 -29c-2 -4 -12 -6 -16 -7c-3 0 -7 -9 -9 -11c-7 -7 -8 -13 -17 -19c-18 -12 -22 -23 -18 -44c2 -8 5 -13 11 -16zM100 46l2 -2c7 -6 15 -11 23 -16c-21 21 -23 49 -21 78l3 24c1 3 -4 7 -4 11c0 10 0 5 -8 13c-4 4 -10 11 -12 17
-c-7 16 1 30 10 43c9 14 -7 20 -10 32c-1 6 -7 6 -6 12c1 7 -4 5 -9 9c-12 8 -1 20 -7 26c-43 -70 -36 -162 16 -224c1 -1 0 -1 1 -2h1c3 -4 6 -8 9 -11s7 -6 10 -9z" />
- <glyph glyph-name="ion-easel" unicode="&#xf3c2;"
-d="M48 112v192h352v-192h-352zM432 352c9 0 16 -7 16 -16v-256c0 -9 -7 -16 -16 -16h-416c-9 0 -16 7 -16 16v256c0 9 7 16 16 16h416zM416 96v224h-384v-224h384zM48 -32l29 80h31l-28 -80h-32zM239 416l17 -48h-64l17 48h30zM340 48h31l29 -80h-32zM208 0v48h32v-48h-32z
-" />
- <glyph glyph-name="ion-edit" unicode="&#xf2bf;"
-d="M381 259l-250 -251l-91 91l251 250zM440 360c12 -12 11 -32 -2 -45l-45 -45l-91 91l45 45c13 13 33 14 45 2zM32 85l85 -85l-117 -32z" />
- <glyph glyph-name="ion-egg" unicode="&#xf277;" horiz-adv-x="320"
-d="M160 416c64 0 160 -133 160 -257s-64 -191 -160 -191s-160 67 -160 191s96 257 160 257z" />
- <glyph glyph-name="ion-eject" unicode="&#xf131;" horiz-adv-x="320"
-d="M303 128h-286v0c-10 0 -17 7 -17 16c0 3 1 5 3 8l138 191c5 5 11 9 19 9s14 -4 19 -9l138 -190c2 -3 3 -6 3 -9c0 -9 -7 -16 -17 -16v0zM308 96c7 0 12 -5 12 -12v-40c0 -7 -5 -12 -12 -12h-296c-7 0 -12 5 -12 12v40c0 7 5 12 12 12h296z" />
- <glyph glyph-name="ion-email-unread" unicode="&#xf3c3;" horiz-adv-x="480"
-d="M352 288c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM209 288h127c0 -17 5 -33 15 -47c-6 -3 -14 -8 -22 -12s-16 -8 -23 -12s-14 -8 -22 -12s-15 -8 -21 -11s-11 -6 -16 -9s-9 -5 -12 -7s-4 -3 -5 -3c-6 -3 -13 -4 -21 -4s-15 1 -21 4
-c-1 1 -15 8 -42 23s-54 29 -81 44s-43 23 -46 25c-7 4 -12 8 -13 11c-1 4 -1 6 1 8s6 2 11 2h191zM277 175c18 11 45 30 83 56c16 -15 34 -23 56 -23v-155c0 -2 -1 -4 -2 -7s-3 -5 -5 -7s-4 -4 -7 -5s-6 -2 -8 -2h-185h-185c-5 0 -11 2 -16 7s-8 9 -8 14v205c0 6 3 8 9 5
-c2 -1 11 -7 26 -17s32 -22 53 -36s39 -26 53 -35l-83 -93c-2 -2 -2 -4 -1 -5c2 -1 4 -1 6 1l98 83c16 -10 25 -16 27 -17c6 -3 13 -4 21 -4s15 1 21 4c2 1 11 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5z" />
- <glyph glyph-name="ion-email" unicode="&#xf132;" horiz-adv-x="416"
-d="M19 299c-4 2 -11 7 -13 11c-3 8 1 10 12 10h191h191c11 0 15 -2 12 -10c-2 -4 -9 -9 -13 -11c-11 -6 -163 -89 -169 -92s-12 -4 -21 -4s-15 1 -21 4s-158 86 -169 92zM408 295c9 4 8 -1 8 -5v-205c0 -9 -12 -21 -22 -21h-185h-185c-10 0 -24 12 -24 21v205s0 9 9 5
-c8 -4 83 -56 132 -88l-83 -93c-2 -2 -2 -4 -1 -5s4 -1 6 1l98 83c15 -10 25 -16 27 -17c8 -4 14 -4 21 -4s13 0 21 4c2 1 12 7 27 17l98 -83c2 -2 5 -2 6 -1s0 3 -2 5l-82 93c49 32 123 84 131 88z" />
- <glyph glyph-name="ion-erlenmeyer-flask-bubbles" unicode="&#xf3c4;" horiz-adv-x="384"
-d="M382 21c2 -4 3 -10 0 -14s-8 -7 -13 -7h-177h-178c-5 0 -9 3 -12 7s-2 10 0 14l118 199v150c0 8 6 14 14 14s15 -6 15 -14v-80c4 3 10 5 16 5c15 0 27 -12 27 -27s-12 -26 -27 -26c-6 0 -12 2 -16 5v-31c0 -2 -1 -4 -2 -6l-35 -59h72c-15 6 -26 20 -26 37
-c0 23 19 42 43 42c15 0 27 -8 35 -19c-1 2 -1 3 -1 5v154c0 8 6 14 14 14s15 -6 15 -14v-150zM218 151h53l-31 54c2 -5 3 -11 3 -17c0 -17 -10 -31 -25 -37zM201 319c-12 0 -22 9 -22 21s10 21 22 21s22 -9 22 -21s-10 -21 -22 -21z" />
- <glyph glyph-name="ion-erlenmeyer-flask" unicode="&#xf3c5;" horiz-adv-x="384"
-d="M375 52c6 -9 9 -20 9 -32c0 -28 -16 -52 -63 -52h-258c-47 0 -63 24 -63 52c0 12 3 23 9 32l49 73l49 77c13 20 21 44 21 70v92s-14 34 -16 43c-2 8 1 9 17 9h126c16 0 18 -1 16 -9c-2 -9 -15 -22 -15 -42v-93c0 -26 6 -50 19 -70zM345 7c3 3 7 8 7 14c0 5 -2 10 -4 14
-l-101 150c-16 26 -23 56 -23 87v112h-64v-112c0 -32 -9 -62 -25 -87l-99 -150c-2 -4 -4 -9 -4 -14c0 -6 3 -11 6 -14c4 -4 12 -7 25 -7h258c13 0 20 3 24 7zM325 37c1 -2 3 -6 3 -8c0 -7 -6 -15 -14 -15h-244c-7 0 -14 6 -14 14c0 3 1 6 3 8l81 124h103l82 -124v1zM238 106
-c2 -1 4 -2 6 -2s3 0 5 2c1 2 3 4 3 6s-1 4 -3 6c-1 2 -3 2 -5 2s-4 0 -6 -2c-1 -2 -2 -4 -2 -6s0 -4 2 -6zM285 47c4 2 4 7 2 11l-23 36c-1 2 -4 4 -7 4c-2 0 -3 0 -4 -1c-4 -2 -4 -7 -2 -11l23 -36c1 -2 5 -4 7 -4c1 0 3 0 4 1z" />
- <glyph glyph-name="ion-eye-disabled" unicode="&#xf306;"
-d="M344 290c41 -27 76 -66 104 -100c-51 -54 -124 -135 -224 -135c-36 0 -65 8 -92 22l-77 -77l-23 23l71 71c-36 25 -68 61 -103 98c78 85 142 137 224 137c34 0 64 -9 92 -23l77 78l23 -23zM134 192c0 -19 6 -36 16 -51l27 27c-4 7 -5 15 -5 24c0 29 23 53 52 53h8
-c-5 -6 -8 -13 -8 -21c0 -3 0 -5 1 -8l51 50c-15 11 -33 17 -52 17c-49 0 -90 -41 -90 -91zM224 101c49 0 90 41 90 91c0 19 -6 37 -16 52l-50 -51c3 -1 5 -1 8 -1c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53c-9 0 -17 2 -24 6l-28 -27c15 -11 33 -17 52 -17z" />
- <glyph glyph-name="ion-eye" unicode="&#xf133;"
-d="M224 320c99 0 172 -70 224 -129c-51 -50 -124 -127 -224 -127s-157 60 -224 128c78 79 142 128 224 128zM224 101c49 0 90 41 90 91s-41 91 -90 91s-90 -41 -90 -91s41 -91 90 -91zM224 224c0 -18 14 -32 32 -32c8 0 14 3 20 7v-7c0 -29 -23 -53 -52 -53s-52 24 -52 53
-s23 53 52 53h8c-5 -6 -8 -13 -8 -21z" />
- <glyph glyph-name="ion-female" unicode="&#xf278;" horiz-adv-x="256"
-d="M160 164v-68h64v-64h-64v-64h-64v64h-64v64h64v68c-55 14 -96 64 -96 124c0 71 57 128 128 128s128 -57 128 -128c0 -60 -41 -110 -96 -124zM128 208c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
- <glyph glyph-name="ion-filing" unicode="&#xf134;" horiz-adv-x="384"
-d="M317 319c12 0 19 0 19 -20v-28h-288v28c0 20 8 20 20 20h249zM269 352c13 0 19 -1 19 -19h-192c0 18 7 19 20 19h153zM368 278c13 -8 17 -17 15 -41l-17 -184c-4 -21 -16 -21 -24 -21h-300c-8 0 -20 0 -24 21l-17 185c-3 26 1 31 15 40l15 10v-32h321v32z" />
- <glyph glyph-name="ion-film-marker" unicode="&#xf135;" horiz-adv-x="416"
-d="M400 240c9 0 16 -7 16 -15v-210c0 -8 -7 -15 -16 -15h-384c-9 0 -16 7 -16 15v210c0 8 6 14 13 15c-2 2 -3 4 -4 7l-9 45c-2 8 5 16 13 18l370 74c8 2 16 -4 18 -12l9 -46c2 -8 -4 -16 -12 -18l-342 -68h344zM257 46l-20 58l51 36h-62l-20 58l-19 -58h-63l51 -36l-19 -58
-l50 36z" />
- <glyph glyph-name="ion-fireball" unicode="&#xf319;" horiz-adv-x="320"
-d="M297 210c14 -24 23 -52 23 -82c0 -33 -10 -63 -26 -88v0v0c-29 -43 -78 -72 -134 -72c-17 0 -32 1 -46 7s-25 13 -33 25c-11 16 -17 28 -21 52c-6 -25 2 -48 9 -60c-43 26 -69 71 -69 125v4c5 78 65 109 90 151c8 14 13 30 10 48c11 -9 15 -25 15 -39
-c0 -16 -3 -29 -3 -29c4 8 7 18 9 31c6 35 2 85 -37 132l-1 1s7 0 18 -3c95 -16 169 -91 184 -186c2 -12 3 -23 3 -35c0 -16 -2 -32 -5 -47c10 23 13 43 14 55v10z" />
- <glyph glyph-name="ion-flag" unicode="&#xf279;" horiz-adv-x="384"
-d="M362 266c0 0 12 2 22 6c0 -16 -7 -32 -9 -36c-28 -50 -99 -123 -181 -84c-65 31 -92 30 -117 24c-1 0 -2 -1 -3 -1c-3 -1 -15 -5 -26 -1v197c0 16 14 31 33 35c39 7 106 5 148 -74c39 -74 97 -72 133 -66zM24 416c4 0 8 -4 8 -8v-432c0 -4 -4 -8 -8 -8h-16
-c-4 0 -8 4 -8 8v432c0 4 4 8 8 8h16z" />
- <glyph glyph-name="ion-flame" unicode="&#xf31a;" horiz-adv-x="256"
-d="M1 128c-11 109 72 224 159 288c-26 -145 97 -142 96 -288c-1 -120 -105 -160 -128 -160s-114 26 -127 160zM88 80c0 -44 40 -80 40 -80s41 36 41 80s-41 80 -41 80s-40 -36 -40 -80z" />
- <glyph glyph-name="ion-flash-off" unicode="&#xf136;"
-d="M115 -4c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2c12 -4 24 -9 35 -15v0c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 8 -35 14zM86 291c-20 -28 -32 -62 -32 -99
-c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2c37 0 71 12 99 32l-52 53l36 40l55 -54c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -72 -12 -100 -32
-l53 -52l-36 -41zM178 58l38 113h-85l139 155l-38 -113h85z" />
- <glyph glyph-name="ion-flash" unicode="&#xf137;" horiz-adv-x="320"
-d="M0 160l224 256l-51 -192h147l-224 -256l51 192h-147z" />
- <glyph glyph-name="ion-folder" unicode="&#xf139;" horiz-adv-x="384"
-d="M366 256c18 0 19 -7 18 -18l-12 -186c-1 -11 -3 -20 -21 -20h-317c-18 0 -20 9 -21 20l-13 184c-1 11 0 20 18 20h348zM362 305l2 -33h-344c0 6 4 46 6 63c2 18 8 17 25 17h75c28 0 23 0 37 -15c16 -18 19 -17 41 -17h143c11 0 15 -3 15 -15z" />
- <glyph glyph-name="ion-fork-repo" unicode="&#xf2c0;" horiz-adv-x="320"
-d="M320 368v-64h-48v-48h-64v48h-48v64h48v48h64v-48h48zM208 208h64v-5v0c0 -43 -7 -70 -38 -95c-23 -19 -51 -20 -75 -22c-9 -1 -18 -2 -26 -3c-6 -1 -13 -5 -20 -10c9 -11 15 -25 15 -41c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55
-c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-160c8 4 18 7 27 9c11 2 21 2 31 3c17 1 33 3 40 9c10 8 14 11 14 50zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32
-s14 -32 32 -32z" />
- <glyph glyph-name="ion-fork" unicode="&#xf27a;" horiz-adv-x="128"
-d="M78 299v0v0v0zM128 282c0 -26 -15 -48 -37 -58c-12 -6 -11 -11 -11 -11s16 -200 16 -213s-3 -18 -9 -24s-15 -8 -23 -8v0v0c-8 0 -16 2 -22 8s-10 13 -10 24s16 213 16 213s0 6 -11 11c-22 10 -37 32 -37 58c0 43 15 93 24 134h8v-117c0 -6 3 -11 9 -11s9 4 10 10v1
-l9 117h8l10 -117v-1c1 -6 3 -10 9 -10s9 5 9 11v117h8v0c9 -40 24 -91 24 -134z" />
- <glyph glyph-name="ion-forward" unicode="&#xf13a;" horiz-adv-x="384"
-d="M224 150c-102 0 -171 -9 -224 -102c0 0 37 208 224 208v80l160 -144l-160 -134v92z" />
- <glyph glyph-name="ion-funnel" unicode="&#xf31b;"
-d="M224 416c124 0 224 -36 224 -80c0 -8 -3 -15 -9 -22v0c-35 -43 -151 -179 -151 -218v-4v-83v0c0 -23 -29 -41 -64 -41s-64 18 -64 41v0v87c0 39 -117 177 -149 216v0c-7 8 -11 16 -11 24c0 44 100 80 224 80zM224 288c92 0 176 22 176 48s-83 48 -176 48
-s-176 -22 -176 -48s84 -48 176 -48z" />
- <glyph glyph-name="ion-gear-a" unicode="&#xf13d;" horiz-adv-x="384"
-d="M347 192c0 -24 15 -43 37 -56c-4 -13 -10 -26 -16 -38c-25 6 -45 -3 -62 -20s-22 -37 -16 -62c-12 -6 -25 -12 -38 -16c-13 22 -36 37 -60 37s-47 -15 -60 -37c-13 4 -27 10 -39 16c6 25 2 45 -15 62s-37 21 -62 15c-6 12 -12 26 -16 39c22 13 37 36 37 60s-15 43 -37 56
-c4 13 9 26 16 38c25 -6 45 3 62 20s21 37 15 62c12 6 26 12 39 16c13 -22 36 -37 60 -37s47 15 60 37c13 -4 27 -10 39 -16c-6 -25 -2 -45 15 -62s37 -26 62 -20c6 -12 12 -25 16 -38c-22 -13 -37 -32 -37 -56zM192 94c54 0 98 44 98 98s-44 98 -98 98s-98 -44 -98 -98
-s44 -98 98 -98z" />
- <glyph glyph-name="ion-gear-b" unicode="&#xf13e;" horiz-adv-x="384"
-d="M384 154h-44c-4 -14 -10 -27 -17 -39l32 -32l-54 -54l-33 32c-12 -7 -24 -11 -38 -15v-46h-76v46c-13 4 -26 8 -38 15l-33 -32l-54 54l32 32c-7 12 -13 25 -17 39h-44v76h43c4 14 9 29 16 41l-30 30l54 54l29 -29c13 8 27 13 42 17v41h76v-41c15 -4 29 -9 42 -17l29 29
-l54 -54l-30 -30c7 -12 13 -27 16 -41h43v-76zM192 138c30 0 54 24 54 54s-24 54 -54 54s-54 -24 -54 -54s24 -54 54 -54z" />
- <glyph glyph-name="ion-grid" unicode="&#xf13f;" horiz-adv-x="320"
-d="M64 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 295c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 167
-c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 167c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM64 39
-c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM192 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50zM320 39c0 -4 -3 -7 -7 -7h-50c-4 0 -7 3 -7 7v50c0 4 3 7 7 7h50c4 0 7 -3 7 -7v-50z" />
- <glyph glyph-name="ion-hammer" unicode="&#xf27b;" horiz-adv-x="320"
-d="M314 416c3 0 6 -3 6 -6v-84c0 -3 -3 -6 -6 -6h-52c-3 0 -6 3 -6 6v14c-6 5 -16 9 -22 7c-7 -2 -23 -13 -30 -25s-6 -28 -6 -66l8 -2c5 -1 7 -6 7 -9v-70c0 -95 11 -201 11 -201c0 -3 -3 -6 -6 -6h-84c-3 0 -6 3 -6 6c0 0 11 106 11 201v70c0 3 3 8 7 9l7 2
-c0 43 -5 58 -22 74c-18 16 -41 19 -63 17s-51 -35 -58 -45s-10 2 -10 11c1 16 22 60 72 81s91 22 102 22s27 -1 38 -3s16 -18 26 -18c7 0 14 5 18 9v6c0 3 3 6 6 6h52z" />
- <glyph glyph-name="ion-happy-outline" unicode="&#xf3c6;"
-d="M355 158c8 -4 11 -13 7 -21c-24 -46 -78 -73 -138 -73c-62 0 -118 29 -139 74c-4 8 0 17 8 21c2 1 5 1 7 1c6 0 11 -3 14 -9c16 -34 60 -55 110 -55c49 0 92 21 110 56c3 5 8 8 14 8c3 0 5 -1 7 -2zM381 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6
-s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22c11 14 23 23 44 23s35 -9 45 -23zM157 217c5 -7 4 -17 -4 -22c-3 -2 -6 -3 -10 -3c-5 0 -11 2 -14 6s-7 10 -17 10s-14 -6 -17 -10s-9 -6 -14 -6c-4 0 -7 1 -10 3c-8 6 -9 15 -3 22
-c11 14 23 23 44 23s35 -9 45 -23zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56
-s100 20 136 56z" />
- <glyph glyph-name="ion-happy" unicode="&#xf31c;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM71 195c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23c-6 -7 -5 -16 3 -22zM362 137
-c4 8 1 17 -7 21c-2 1 -4 2 -7 2c-6 0 -11 -3 -14 -8c-18 -35 -61 -56 -110 -56c-50 0 -94 21 -110 55c-3 6 -8 9 -14 9c-2 0 -5 0 -7 -1c-8 -4 -12 -13 -8 -21c21 -45 77 -74 139 -74c60 0 114 27 138 73zM377 195c8 5 9 15 4 22c-10 14 -24 23 -45 23s-33 -9 -44 -23
-c-6 -7 -5 -16 3 -22c3 -2 6 -3 10 -3c5 0 11 2 14 6s7 10 17 10s14 -6 17 -10s9 -6 14 -6c4 0 7 1 10 3z" />
- <glyph glyph-name="ion-headphone" unicode="&#xf140;" horiz-adv-x="384"
-d="M383 210c3 -51 -3 -130 -13 -162c-20 -67 -40 -80 -72 -80s-58 27 -58 59v106c0 33 23 59 53 59c18 0 34 -9 44 -24c0 0 11 7 13 22s4 34 -5 64s-21 19 -36 38c-2 3 -5 7 -8 10l-10 10c-2 2 -3 3 -5 4c-11 9 -21 17 -34 23c-19 9 -39 13 -60 13s-42 -4 -61 -13
-c-13 -6 -22 -14 -33 -23c-2 -1 -3 -2 -5 -4l-10 -10s-6 -7 -8 -10c-15 -19 -27 -8 -36 -38c-9 -31 -7 -49 -5 -64s13 -22 13 -22c10 15 26 24 44 24c30 0 53 -27 53 -59v-106c0 -32 -26 -59 -58 -59s-52 13 -72 80c-10 32 -16 111 -13 162c3 60 22 108 56 145v0
-c8 8 15 16 24 23s19 13 29 18c25 13 53 20 82 20s57 -7 82 -20c10 -5 19 -11 28 -18s17 -15 25 -23v0c34 -37 53 -85 56 -145z" />
- <glyph glyph-name="ion-heart-broken" unicode="&#xf31d;" horiz-adv-x="416"
-d="M181 160c0 -36 -2 -71 4 -107c2 -10 2 -20 2 -31l-153 159c-45 47 -45 124 0 171c40 41 103 43 144 3c-2 -15 -3 -31 -3 -46c-18 -14 -40 -21 -56 -39l11 7c17 11 15 8 35 14c3 1 8 3 11 5c0 -1 -1 -5 -1 -6c1 -20 11 -39 15 -60c0 -5 1 -10 -1 -15c-8 -17 -7 -37 -8 -55
-zM274 147c8 -18 23 -29 38 -39l-104 -108l-17 18c0 13 -4 26 -4 38c-2 48 10 94 21 142v0c1 -1 2 -1 3 -1c30 -6 52 -24 63 -50zM382 352c46 -47 46 -124 0 -171l-68 -70c-28 24 -42 54 -65 81c-12 13 -26 23 -41 32c-3 13 -8 26 -11 39c-3 12 14 21 16 31c3 12 3 26 3 39
-l19 19c40 42 107 42 147 0z" />
- <glyph glyph-name="ion-heart" unicode="&#xf141;" horiz-adv-x="416"
-d="M382 352c46 -47 46 -124 0 -171l-174 -181l-174 181c-46 47 -46 124 0 171c40 42 107 42 147 0l27 -28l28 28c40 42 106 42 146 0z" />
- <glyph glyph-name="ion-help-buoy" unicode="&#xf27c;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM402 264c-10 24 -23 45 -42 64s-41 32 -65 42l-19 -61c14 -6 27 -15 38 -26s21 -24 27 -38zM224 96c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM88 328
-c-19 -19 -32 -41 -42 -65l61 -19c6 14 15 27 26 38s24 21 38 27l-19 61c-24 -10 -45 -23 -64 -42zM46 120c10 -24 23 -45 42 -64s41 -32 65 -42l19 61c-14 6 -27 15 -38 26s-21 24 -27 38zM360 56c19 19 32 41 42 65l-61 19c-6 -14 -15 -27 -26 -38s-24 -21 -38 -27l19 -61
-c24 10 45 23 64 42z" />
- <glyph glyph-name="ion-help-circled" unicode="&#xf142;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM244 89c1 18 -12 31 -29 31c-16 0 -30 -11 -30 -29s12 -30 28 -30c17 0 31 10 31 28zM293 217c7 10 12 22 12 36c0 23 -9 40 -25 52c-17 13 -37 18 -62 18
-c-19 0 -34 -4 -47 -13c-19 -13 -28 -34 -28 -68h49c0 9 -1 19 4 27s13 15 26 15s19 -3 25 -11c5 -7 8 -15 8 -23c0 -7 -4 -14 -8 -20c-2 -4 -6 -7 -10 -10c0 0 -26 -15 -35 -30c-7 -11 -9 -24 -10 -41c0 -1 0 -4 4 -4h39s5 3 5 4c0 6 1 15 2 19c2 7 6 12 12 17l14 9
-c12 9 21 17 25 23z" />
- <glyph glyph-name="ion-help" unicode="&#xf143;" horiz-adv-x="256"
-d="M217 371c25 -19 39 -46 39 -83c0 -22 -8 -42 -19 -57c-7 -9 -21 -21 -40 -36l-21 -14c-10 -8 -17 -18 -20 -28c-2 -6 -3 -19 -3 -29c0 -2 -1 -6 -7 -6h-62c-7 0 -7 3 -7 5c1 26 4 49 15 66c15 23 57 48 57 48c6 5 11 9 15 15c7 10 12 21 12 32c0 13 -3 26 -11 36
-c-10 12 -21 18 -41 18s-32 -11 -40 -24s-7 -29 -7 -43h-77c0 54 14 88 44 108c20 14 45 20 75 20c39 0 70 -7 98 -28zM114 78c27 -1 47 -20 46 -48s-22 -46 -49 -45c-26 1 -46 19 -45 47s22 47 48 46z" />
- <glyph glyph-name="ion-home" unicode="&#xf144;" horiz-adv-x="384"
-d="M384 160h-48v-160h-96v128h-96v-128h-96v160h-48l192 224z" />
- <glyph glyph-name="ion-icecream" unicode="&#xf27d;" horiz-adv-x="320"
-d="M32 192h256l-128 -224zM307 275c8 -5 13 -13 13 -23c0 -16 -14 -28 -30 -28h-4h-252h-4c-16 0 -30 13 -30 28c0 10 6 18 14 23c1 0 1 2 2 2c4 3 7 7 8 12v1c-2 6 -2 12 -2 18c0 42 34 76 76 76c8 0 16 -2 23 -4c-3 -12 -4 -31 -4 -31c2 15 11 29 11 29c18 23 46 38 77 38
-c53 0 96 -43 96 -96c0 -11 -2 -21 -5 -30v-1c0 -4 4 -9 8 -12c1 0 2 -2 3 -2z" />
- <glyph glyph-name="ion-image" unicode="&#xf147;"
-d="M336 224c-26 0 -48 22 -48 48s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM420 384c16 0 28 -12 28 -28v-328c0 -16 -12 -28 -28 -28h-392c-16 0 -28 12 -28 28v328c0 16 12 28 28 28h392zM317 186l99 -106v260c0 7 -6 12 -13 12h-358c-7 0 -12 -5 -13 -12v-260l126 152
-c4 4 10 8 17 8s13 -2 17 -7l54 -59l4 -4c3 -2 7 -4 11 -4s8 2 12 5l18 16c4 3 8 5 13 5s10 -2 13 -6z" />
- <glyph glyph-name="ion-images" unicode="&#xf148;"
-d="M426 308c13 -1 23 -12 22 -24l-14 -263c-1 -13 -12 -22 -25 -21l-330 16c-13 1 -23 10 -22 23l2 46l-15 -1c-12 -1 -22 7 -23 18l-21 236c-1 11 7 21 19 22l296 24c12 1 22 -7 23 -18l5 -54zM71 302c1 12 11 22 24 22l219 -11l-2 31h-1v1c-1 5 -5 8 -10 8l-261 -22
-c-5 0 -10 -4 -10 -9v0v-1l16 -178l18 25zM405 66l10 198v1v0c0 6 -5 10 -11 10l-58 3l-29 2l-204 9c-6 0 -11 -4 -12 -9v0v-1l-3 -63l-7 -128v-7l6 7l102 109c4 4 8 6 14 6s11 -3 14 -7l43 -49l3 -3c2 -2 6 -4 10 -4s5 1 9 3l17 12c4 3 7 4 11 4s9 -2 11 -5l27 -33zM341 186
-c-20 0 -35 15 -35 35s16 35 35 35c20 0 35 -16 35 -35s-16 -35 -35 -35z" />
- <glyph glyph-name="ion-information-circled" unicode="&#xf149;"
-d="M448 195c2 -124 -97 -225 -221 -227s-225 97 -227 221s97 225 221 227s225 -97 227 -221zM224 336c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM268 53v11h-22v172h-66v-12h22v-160h-22v-11h88z" />
- <glyph glyph-name="ion-information" unicode="&#xf14a;" horiz-adv-x="128"
-d="M96 0h32v-16h-128v16h32v240h-32v16h96v-256zM64 304c-27 0 -48 21 -48 48s21 48 48 48s48 -21 48 -48s-21 -48 -48 -48z" />
- <glyph glyph-name="ion-ionic" unicode="&#xf14b;" horiz-adv-x="416"
-d="M376 315c25 -34 40 -77 40 -123c0 -115 -93 -208 -208 -208s-208 93 -208 208s93 208 208 208c46 0 89 -15 123 -40c5 3 11 5 18 5c18 0 32 -14 32 -32c0 -7 -2 -13 -5 -18zM344 56c18 18 31 38 41 61c10 24 15 49 15 75s-5 51 -15 75c-6 13 -13 26 -21 38
-c-4 -2 -10 -4 -15 -4c-18 0 -32 14 -32 32c0 5 2 11 4 15c-12 8 -25 15 -38 21c-24 10 -49 15 -75 15s-51 -5 -75 -15c-23 -10 -43 -23 -61 -41s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75s5 -51 15 -75c10 -23 23 -43 41 -61s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15
-c23 10 43 23 61 41zM112 192c0 64 32 96 96 96s96 -32 96 -96s-32 -96 -96 -96s-96 32 -96 96z" />
- <glyph glyph-name="ion-ios-alarm-outline" unicode="&#xf3c7;" horiz-adv-x="404"
-d="M384 256l-54 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l36 -45l-12 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 71 -43 115c0 51 22 97 57 129l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82
-h5c20 0 39 -7 54 -18l-54 -52l11 -11c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -8 -38 -20 -52zM22 280l91 89c-9 5 -19 7 -32 6c-37 -2 -65 -32 -65 -67c0 -10 2 -19 6 -28z
-M362 172c0 88 -72 158 -160 158s-160 -70 -160 -158s72 -158 160 -158s160 70 160 158zM291 369l91 -89c4 9 6 18 6 28c0 35 -28 65 -65 67c-13 1 -23 -1 -32 -6zM202 288h16v-144h-112v16h96v128z" />
- <glyph glyph-name="ion-ios-alarm" unicode="&#xf3c8;" horiz-adv-x="404"
-d="M385 256l-55 52l-9 -9c35 -32 57 -79 57 -130c0 -44 -16 -83 -43 -114l37 -45l-13 -10l-35 43c-32 -30 -75 -49 -122 -49v0v0c-47 0 -90 19 -122 49l-35 -43l-12 10l36 45c-27 31 -43 70 -43 114c0 51 22 98 57 130l-9 9l-54 -52c-12 14 -20 32 -20 52c0 44 35 80 80 82
-h5c20 0 39 -7 54 -18l-54 -53l11 -10c26 19 56 32 90 35v0c0 8 8 16 16 16s15 -8 15 -16v0c34 -3 65 -16 91 -35l11 11l-54 52c15 11 34 18 54 18h5c45 -2 80 -38 80 -82c0 -20 -7 -38 -19 -52zM218 144v144h-16v-128h-96v-16h112z" />
- <glyph glyph-name="ion-ios-albums-outline" unicode="&#xf3c9;"
-d="M432 304h-416v-288h416v288zM448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" />
- <glyph glyph-name="ion-ios-albums" unicode="&#xf3ca;"
-d="M448 320v0v-320h-448v320h448zM40 336v16h368v-16h-368zM72 368v16h304v-16h-304z" />
- <glyph glyph-name="ion-ios-americanfootball-outline" unicode="&#xf3cb;" horiz-adv-x="416"
-d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM17 383c-2 -19 -5 -60 0 -107c1 -8 2 -16 3 -23l127 127c-25 3 -51 5 -78 5v0v0c-22 0 -41 -1 -52 -2zM96 80c30 -30 72 -53 124 -66
-c10 -3 20 -5 31 -7l142 142c-4 22 -10 44 -17 63c-14 37 -32 68 -56 92c-30 30 -72 53 -124 66c-10 3 -20 5 -31 7l-142 -142c4 -22 10 -44 17 -63c14 -37 32 -68 56 -92zM399 1c2 19 5 60 0 107c-1 8 -2 16 -3 23l-127 -127c25 -3 51 -5 78 -5c22 0 41 1 52 2zM259 130
-l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-23 23l-28 -29l-12 12l29 28l-22 23l-29 -29l-11 12l67 67l12 -11l-29 -29l23 -22l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l23 -23l28 29l12 -12l-29 -28l22 -23l29 29l12 -12
-l-29 -28l22 -23l29 29l11 -12l-67 -67l-12 11l29 29z" />
- <glyph glyph-name="ion-ios-americanfootball" unicode="&#xf3cc;" horiz-adv-x="416"
-d="M331 315c112 -112 81 -327 81 -327s-26 -4 -65 -4c-73 0 -189 12 -262 85c-112 112 -81 327 -81 327s26 4 65 4c73 0 189 -12 262 -85zM20 253l3 -18l142 142l-18 3zM219 113l12 -12l28 29l23 -22l-29 -29l12 -11l67 67l-11 12l-29 -29l-22 23l29 28l-12 12l-28 -29
-l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 23l29 28l-12 12l-28 -29l-23 22l29 29l-12 11l-67 -67l11 -12l29 29l22 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23l-29 -28l12 -12l28 29l23 -23zM269 4l127 127l-3 18l-142 -142z" />
- <glyph glyph-name="ion-ios-analytics-outline" unicode="&#xf3cd;"
-d="M224 400c-28 0 -55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45s35 41 45 66c11 26 16 53 16 81s-5 55 -16 81
-c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM76 128c-25 0 -41 18 -42 19c-3 3 -2 9 1 12s8 2 11 -1c1 -1 15 -17 36 -14c12 2 27 26 38 42c4 6 9 12 12 16
-c17 21 34 23 45 21c24 -3 45 -28 54 -50c7 -18 18 -28 32 -29c15 -1 31 11 43 30c1 2 3 4 4 7c9 17 24 43 52 43c31 0 52 -35 53 -36c2 -4 1 -9 -3 -11s-9 -1 -11 3c0 0 -5 8 -12 15c-6 6 -16 13 -27 13c-18 0 -29 -19 -38 -35c-1 -3 -3 -5 -4 -7c-15 -25 -36 -40 -58 -38
-c-20 1 -36 15 -46 39s-28 39 -41 41c-11 1 -21 -4 -31 -16c-3 -4 -6 -9 -10 -15c-14 -20 -31 -45 -50 -48c-3 0 -5 -1 -8 -1z" />
- <glyph glyph-name="ion-ios-analytics" unicode="&#xf3ce;"
-d="M224 416c124 0 224 -100 224 -224c0 -13 -1 -25 -3 -37c-1 -6 -2 -12 -3 -17c-24 -98 -113 -170 -218 -170c-122 0 -221 98 -224 219v5c0 9 1 17 2 26c13 111 107 198 222 198zM431 168c1 8 1 16 1 24c0 28 -5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45
-c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81v0c14 -21 29 -34 29 -34h1v-1c1 -1 15 -16 36 -13c12 2 27 26 38 42c4 6 9 12 12 16c17 21 34 23 45 21c24 -3 45 -27 54 -50c7 -18 18 -28 32 -29c15 -1 31 9 43 29
-c1 2 3 4 4 7c9 17 24 44 52 44c31 0 52 -35 53 -36c3 -4 9 -12 16 -20z" />
- <glyph glyph-name="ion-ios-arrow-back" unicode="&#xf3cf;" horiz-adv-x="192"
-d="M192 320l-127 -128l127 -128l-32 -32l-160 160v0v0l160 160z" />
- <glyph glyph-name="ion-ios-arrow-down" unicode="&#xf3d0;" horiz-adv-x="320"
-d="M301 288l19 -21l-160 -171l-160 171l19 21l141 -150z" />
- <glyph glyph-name="ion-ios-arrow-forward" unicode="&#xf3d1;" horiz-adv-x="192"
-d="M0 320l32 32l160 -160v0v0l-160 -160l-32 32l127 128z" />
- <glyph glyph-name="ion-ios-arrow-left" unicode="&#xf3d2;" horiz-adv-x="192"
-d="M192 333l-150 -141l150 -141l-21 -19l-171 160l171 160z" />
- <glyph glyph-name="ion-ios-arrow-right" unicode="&#xf3d3;" horiz-adv-x="192"
-d="M0 333l21 19l171 -160l-171 -160l-21 19l150 141z" />
- <glyph glyph-name="ion-ios-arrow-thin-down" unicode="&#xf3d4;" horiz-adv-x="192"
-d="M190 126c2 -2 2 -4 2 -6s0 -4 -2 -6c0 0 -87 -79 -88 -80s-3 -2 -6 -2s-5 1 -6 2s-88 80 -88 80c-3 3 -3 9 0 12s9 3 12 0l74 -67v285c0 4 4 8 8 8s8 -4 8 -8v-285l74 67c3 3 9 3 12 0z" />
- <glyph glyph-name="ion-ios-arrow-thin-left" unicode="&#xf3d5;" horiz-adv-x="320"
-d="M94 98c-2 -2 -4 -2 -6 -2s-4 0 -6 2c0 0 -79 87 -80 88s-2 3 -2 6s1 5 2 6s80 88 80 88c3 3 9 3 12 0s3 -9 0 -12l-67 -74h285c4 0 8 -4 8 -8s-4 -8 -8 -8h-285l67 -74c3 -3 3 -9 0 -12z" />
- <glyph glyph-name="ion-ios-arrow-thin-right" unicode="&#xf3d6;" horiz-adv-x="320"
-d="M226 98c-3 3 -3 9 0 12l67 74h-285c-4 0 -8 4 -8 8s4 8 8 8h285l-67 74c-3 3 -3 9 0 12s9 3 12 0c0 0 79 -87 80 -88s2 -3 2 -6s-1 -5 -2 -6s-80 -88 -80 -88c-2 -2 -4 -2 -6 -2s-4 0 -6 2z" />
- <glyph glyph-name="ion-ios-arrow-thin-up" unicode="&#xf3d7;" horiz-adv-x="192"
-d="M190 258c-3 -3 -9 -3 -12 0l-74 67v-285c0 -4 -4 -8 -8 -8s-8 4 -8 8v285l-74 -67c-3 -3 -9 -3 -12 0s-3 9 0 12c0 0 87 79 88 80s3 2 6 2s5 -1 6 -2s88 -80 88 -80c2 -2 2 -4 2 -6s0 -4 -2 -6z" />
- <glyph glyph-name="ion-ios-arrow-up" unicode="&#xf3d8;" horiz-adv-x="320"
-d="M301 96l-141 150l-141 -150l-19 21l160 171l160 -171z" />
- <glyph glyph-name="ion-ios-at-outline" unicode="&#xf3d9;" horiz-adv-x="255"
-d="M236 127v1h19l-3 -6c-3 -6 -13 -19 -22 -27s-18 -14 -28 -20s-21 -10 -32 -13s-23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 11 -26 29 -34 46c-7 16 -10 33 -10 58c0 18 4 38 11 55c7 16 17 30 29 42s27 21 43 28c15 6 33 9 53 9c16 0 32 -3 46 -8
-c15 -5 28 -12 39 -22s17 -21 24 -35c6 -13 8 -26 8 -44c0 -14 -2 -28 -7 -40s-9 -20 -17 -30c-8 -9 -13 -15 -23 -21c-11 -6 -20 -9 -29 -9c-8 0 -15 2 -20 7c-3 2 -5 6 -6 9c-6 -6 -11 -10 -17 -12c-10 -3 -18 -4 -26 -4s-15 1 -21 4s-12 7 -17 12s-8 11 -11 18
-s-5 14 -5 22c0 12 3 24 7 36v2c4 11 5 16 13 26c8 11 17 19 28 26s24 11 38 11c12 0 21 -3 31 -9c7 -4 12 -10 16 -16l6 17h18l-38 -102c-2 -5 -4 -10 -5 -14s-1 -7 -1 -10c0 -2 1 -4 3 -5s4 -2 8 -2c6 0 11 2 20 7c8 4 12 9 19 17c6 8 10 14 14 25s6 23 6 35
-c0 15 -2 25 -7 36c-6 13 -10 22 -19 30s-20 15 -33 20s-27 7 -42 7c-19 0 -35 -3 -48 -9c-15 -6 -27 -14 -37 -24c-11 -10 -19 -23 -25 -37c-6 -15 -10 -32 -10 -48c0 -22 2 -36 8 -49c6 -15 17 -31 28 -41s24 -18 38 -23s30 -7 46 -7c10 0 20 1 30 4s18 6 27 11
-s17 11 24 18s14 13 19 21zM147 154c4 5 8 12 11 20l21 57c-2 5 -4 10 -7 13c-3 4 -6 6 -10 8c-1 0 -1 1 -2 1c-3 2 -5 3 -9 4c-5 1 -9 2 -13 2c-10 0 -19 -3 -28 -9s-17 -13 -23 -22c-5 -8 -7 -11 -10 -20c0 -1 -1 -3 -1 -4c-4 -11 -5 -20 -5 -30c0 -6 1 -11 3 -16
-s5 -9 8 -13s7 -6 12 -8s9 -3 15 -3c4 0 9 1 14 2c4 1 8 2 12 5s8 7 12 13z" />
- <glyph glyph-name="ion-ios-at" unicode="&#xf3da;" horiz-adv-x="256"
-d="M228 128v0h28c-1 -1 -2 -4 -3 -6c-4 -6 -14 -19 -23 -27s-18 -14 -28 -20s-20 -10 -32 -13c-11 -3 -23 -5 -34 -5c-16 0 -33 3 -49 8s-30 13 -43 24c-12 10 -26 28 -34 46c-7 16 -10 33 -10 58c0 19 4 39 11 55s17 30 29 42s28 21 44 28c15 6 32 9 52 9c16 0 31 -3 46 -8
-s28 -12 39 -22s18 -22 25 -36c6 -14 8 -26 8 -44c0 -14 -2 -28 -7 -40c-4 -11 -9 -20 -17 -30c-7 -9 -14 -16 -24 -22c-12 -6 -21 -9 -30 -9s-16 2 -22 8c-2 1 -3 3 -4 5c-4 -4 -9 -6 -14 -8c-10 -3 -18 -5 -27 -5c-8 0 -16 2 -23 5s-12 7 -17 12s-9 12 -12 19s-4 14 -4 22
-c0 12 2 25 6 37l1 1c4 10 5 17 13 27c8 11 17 20 28 27c12 7 24 10 38 10c12 0 22 -3 33 -9c5 -3 8 -6 12 -10l5 12h25l-39 -104c-2 -5 -3 -9 -4 -13c-1 -3 -1 -7 -1 -9s0 -3 1 -3c0 0 1 -1 5 -1c5 0 11 2 19 7c7 4 10 8 16 16s9 13 13 23s6 20 6 32c0 14 -1 24 -6 34
-c-5 12 -10 21 -18 28c-9 8 -19 14 -31 18s-26 7 -40 7c-18 0 -32 -3 -44 -8c-14 -6 -25 -13 -35 -23s-18 -22 -24 -35c-6 -14 -9 -30 -9 -45c0 -21 3 -34 8 -46c6 -14 16 -30 26 -39s22 -16 35 -21c14 -5 28 -7 43 -7c10 0 20 2 29 4s18 6 26 11s28 20 38 33zM144 157
-c4 5 7 12 10 19l20 55c-1 4 -3 7 -5 9c-3 3 -6 6 -9 8h-1h-1v1c-3 2 -5 2 -8 3c-4 1 -8 1 -12 1c-9 0 -17 -2 -25 -7c-10 -6 -17 -14 -21 -21c-5 -8 -6 -11 -9 -19c0 -1 -1 -2 -1 -3c-3 -10 -6 -19 -6 -28c0 -5 1 -10 3 -14s4 -8 7 -11s7 -6 11 -8s8 -2 13 -2c4 0 8 0 12 1
-v0c4 1 7 2 11 5c3 2 7 5 11 11z" />
- <glyph glyph-name="ion-ios-barcode-outline" unicode="&#xf3db;" horiz-adv-x="416"
-d="M0 64v256h80v-16h-64v-224h64v-16h-80zM336 320h80v-256h-80v16h64v224h-64v16zM64 128v128h16v-128h-16zM336 128v128h16v-128h-16zM272 96v192h16v-192h-16zM128 96v192h16v-192h-16zM199 112v160h16v-160h-16z" />
- <glyph glyph-name="ion-ios-barcode" unicode="&#xf3dc;" horiz-adv-x="416"
-d="M0 320h416v-256h-416v256zM80 128v128h-16v-128h16zM144 96v192h-16v-192h16zM215 112v160h-16v-160h16zM288 96v192h-16v-192h16zM352 128v128h-16v-128h16z" />
- <glyph glyph-name="ion-ios-baseball-outline" unicode="&#xf3dd;" horiz-adv-x="416"
-d="M415 169v-1v0c-11 -97 -90 -174 -187 -183v0h-2c-2 0 -3 -1 -5 -1h-1h-3h-1h-8c-115 0 -208 93 -208 208v8v1v3v1c0 2 1 3 1 5v2v0c9 97 86 176 183 187v0v0c8 1 16 1 24 1c115 0 208 -93 208 -208c0 -7 0 -14 -1 -20v0v-3zM399 192c0 105 -86 191 -191 191
-c-3 0 -5 -1 -8 -1c0 -11 2 -21 4 -31l20 6l5 -15l-21 -7c2 -7 4 -14 7 -21c2 -5 5 -11 8 -16l17 12l9 -13l-19 -13c7 -12 16 -23 26 -33l14 15l12 -12l-15 -15c11 -10 22 -18 34 -25l12 18l14 -9l-12 -17c5 -2 10 -5 15 -7c7 -3 14 -5 22 -7l7 20l15 -5l-6 -19
-c10 -2 20 -4 30 -4c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 9 -1 17 -3 26l-22 -7l-5 16l23 7c-2 8 -5 16 -8 24c-2 5 -4 9 -6 14l-20 -13l-9 13l21 14c-7 12 -16 24 -26 35l-17 -17l-11 11l17 17c-10 10 -22 18 -34 25l-14 -21l-14 9l14 20c-5 2 -10 5 -15 7
-c-7 3 -15 6 -23 8l-8 -24l-15 5l7 23c-9 2 -18 2 -27 3v-4zM228 2c88 9 158 78 169 166c-11 1 -23 3 -34 5l-9 -27l-15 5l8 25c-14 4 -28 10 -41 17l-15 -23l-13 9l14 21c-13 8 -26 17 -37 28l-19 -19l-11 11l19 19c-10 11 -19 23 -27 36l-21 -14l-9 13l22 15
-c-7 13 -12 27 -16 41l-25 -8l-5 16l26 8c-2 12 -4 23 -5 35c-88 -11 -157 -81 -166 -169c10 -1 21 -2 31 -4l8 23l15 -5l-7 -22c14 -4 28 -9 42 -16l13 19l14 -9l-13 -18c13 -8 25 -17 36 -28l17 17l11 -11l-17 -17c11 -12 20 -24 28 -37l19 13l9 -14l-20 -13
-c7 -14 12 -28 16 -42l23 7l5 -15l-24 -8c2 -10 3 -20 4 -30z" />
- <glyph glyph-name="ion-ios-baseball" unicode="&#xf3de;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-12 -104 -100 -184 -207 -184c-115 0 -208 93 -208 208c0 107 80 195 184 207v0v0c8 1 16 1 24 1zM212 1c5 0 11 0 16 1c-1 10 -2 20 -4 30l24 8l-5 15l-23 -7c-4 14 -9 28 -16 42l20 13l-9 14l-19 -13
-c-8 13 -17 25 -28 37l17 17l-11 11l-17 -17c-11 11 -23 20 -36 28l13 18l-14 9l-13 -19c-14 7 -28 12 -42 16l7 22l-15 5l-8 -23c-10 2 -21 3 -31 4c-1 -5 -1 -11 -1 -16c9 -1 18 -1 27 -3l-7 -23l15 -5l8 24c8 -2 16 -5 23 -8c5 -2 10 -5 15 -7l-14 -20l14 -9l14 21
-c12 -7 24 -15 34 -25l-17 -17l11 -11l17 17c10 -11 19 -23 26 -35l-21 -14l9 -13l20 13c2 -5 4 -9 6 -14c3 -8 6 -16 8 -24l-23 -7l5 -16l22 7c2 -8 2 -17 3 -26zM363 173c11 -2 23 -4 34 -5c1 5 1 11 1 16c-10 1 -20 2 -30 4l6 19l-15 5l-7 -20c-8 2 -15 4 -22 7
-c-5 2 -10 5 -15 7l12 17l-14 9l-12 -18c-12 7 -23 15 -34 25l15 15l-12 12l-15 -15c-10 10 -18 21 -25 33l19 13l-9 13l-17 -12c-3 5 -6 11 -8 16c-3 7 -5 14 -7 21l21 7l-5 15l-20 -6c-2 10 -3 20 -4 31c-5 0 -11 0 -16 -1c1 -12 3 -23 5 -35l-26 -8l5 -16l25 8
-c4 -14 9 -28 16 -41l-22 -15l9 -13l21 14c8 -13 17 -25 27 -36l-19 -19l11 -11l19 19c11 -11 24 -20 37 -28l-14 -21l13 -9l15 23c13 -7 27 -13 41 -17l-8 -25l15 -5z" />
- <glyph glyph-name="ion-ios-basketball-outline" unicode="&#xf3df;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM399 192c0 55 -24 105 -62 140c-14 -34 -31 -65 -52 -95c15 -12 31 -21 49 -29c21 -9 43 -14 65 -16v0zM325 343c-32 25 -73 40 -117 40v0c2 -22 6 -44 15 -65
-c10 -25 26 -47 45 -66c2 -1 2 -3 4 -4c20 29 38 60 52 93c0 1 1 1 1 2zM192 382c-51 -4 -96 -29 -128 -65c64 -28 121 -69 169 -119c11 12 21 24 30 37c-40 37 -67 89 -71 147zM233 174c-15 -16 -31 -30 -48 -44c28 -35 45 -79 47 -127c33 4 63 17 88 35
-c-22 50 -51 95 -87 136zM214 178l8 8l-10 10c-46 46 -99 82 -158 108c-18 -25 -31 -55 -35 -88c62 -3 116 -31 155 -74c14 11 27 23 40 36zM18 200c0 -3 -1 -5 -1 -8c0 -45 16 -87 43 -120c36 16 71 36 102 60l-7 7c-19 19 -41 35 -66 45c-22 9 -46 15 -71 16zM71 59
-c35 -36 83 -58 137 -58c3 0 5 1 8 1c-1 25 -6 48 -16 71c-7 17 -17 33 -28 47c-31 -24 -65 -45 -101 -61zM333 48c37 32 61 77 65 128c-46 3 -89 21 -123 48c-10 -13 -20 -26 -31 -38c36 -41 67 -87 89 -138z" />
- <glyph glyph-name="ion-ios-basketball" unicode="&#xf3e0;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM333 48c-22 51 -53 97 -89 138c11 12 21 25 31 38c34 -27 77 -45 123 -48c0 5 1 11 1 16c-22 2 -44 7 -65 16c-18 8 -34 17 -49 29c21 30 38 61 52 95c-4 4 -8 8 -12 11
-c0 -1 -1 -1 -1 -2c-14 -33 -32 -64 -52 -93c-2 1 -2 2 -4 4c-19 19 -35 41 -45 66c-9 21 -13 43 -15 65c-5 0 -11 -1 -16 -1c4 -58 31 -110 71 -147c-9 -13 -19 -25 -30 -37c-48 50 -105 91 -169 119c-4 -4 -7 -9 -10 -13c59 -26 112 -62 158 -108l10 -10l-8 -8
-c-13 -13 -26 -25 -40 -36c-39 43 -93 71 -155 74c-1 -5 -1 -11 -1 -16c25 -1 49 -7 71 -16c25 -10 47 -26 66 -45l7 -7c-31 -24 -66 -44 -102 -60c4 -4 7 -9 11 -13c36 16 70 37 101 61c11 -14 21 -30 28 -47c10 -23 15 -46 16 -71c5 0 11 0 16 1c-2 48 -19 92 -47 127
-c17 14 33 28 48 44c36 -41 65 -86 87 -136c4 3 9 6 13 10z" />
- <glyph glyph-name="ion-ios-bell-outline" unicode="&#xf3e1;" horiz-adv-x="384"
-d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM43 80h298c-25 25 -40 58 -40 142c0 46 -13 80 -37 101c-23 19 -52 23 -72 23s-49 -4 -72 -23c-25 -21 -37 -55 -37 -101
-c0 -51 -5 -85 -17 -110c-6 -13 -14 -23 -23 -32zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" />
- <glyph glyph-name="ion-ios-bell" unicode="&#xf3e2;" horiz-adv-x="384"
-d="M318 222c0 -114 28 -126 66 -158h-384c38 32 66 44 66 158c0 98 53 130 102 138v2c0 12 11 22 24 22s24 -10 24 -22v-2c49 -7 102 -40 102 -138zM192 0c-27 0 -49 20 -52 43h104c-3 -23 -25 -43 -52 -43z" />
- <glyph glyph-name="ion-ios-body-outline" unicode="&#xf3e3;" horiz-adv-x="384"
-d="M192 400c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 416v0c27 0 48 -21 48 -48s-21 -48 -48 -48s-48 21 -48 48s21 48 48 48zM360 304c13 0 24 -11 24 -24s-11 -24 -24 -24h-100c-5 0 -14 -5 -18 -15c-5 -12 -2 -33 1 -51l4 -21v-1v0l32 -172
-c2 -13 -6 -26 -19 -28h-5c-11 0 -22 8 -24 20l-21 120v0s-5 31 -17 31h-2c-12 0 -19 -31 -19 -31v0l-21 -120c-2 -12 -11 -20 -22 -20h-5c-13 2 -21 15 -19 28l32 172v1l4 21c3 18 6 39 1 51c-4 10 -12 15 -18 15h-100c-13 0 -24 11 -24 24s11 24 24 24h336zM24 272
-c-4 0 -8 4 -8 8s4 8 8 8h336c4 0 8 -4 8 -8s-4 -8 -8 -8h-102c-16 0 -26 -15 -30 -24c-5 -13 -6 -32 -1 -61v0v0l3 -19l1 -3l32 -172c0 -3 0 -5 -1 -6s-2 -2 -5 -3h-2c-4 0 -7 2 -8 6l-21 120v0c0 2 -2 10 -5 19c-2 6 -5 11 -8 15c-7 9 -14 11 -20 11h-2
-c-5 0 -13 -2 -20 -11c-3 -4 -6 -9 -8 -15c-4 -9 -6 -17 -6 -18v-1l-21 -120c-1 -4 -3 -6 -7 -6h-2c-3 0 -4 2 -5 3s-2 3 -1 6l32 172v0v1l4 21v0v0c5 29 5 48 0 61c-4 9 -14 24 -32 24z" />
- <glyph glyph-name="ion-ios-body" unicode="&#xf3e4;" horiz-adv-x="384"
-d="M144 368c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM360 304c7 0 12 -2 17 -7s7 -10 7 -17s-2 -12 -7 -17s-10 -7 -17 -7h-98c-8 -2 -15 -6 -18 -14c-4 -9 -3 -27 1 -52l4 -21v-1v0l30 -172c1 -7 0 -13 -4 -18s-8 -9 -15 -10s-13 0 -18 4
-s-9 9 -10 16l-21 120v-1l-2 9c-1 5 -3 11 -6 16s-6 8 -10 8h-2c-8 0 -14 -11 -18 -33v1l-21 -120c-1 -7 -5 -12 -10 -16s-11 -5 -18 -4s-11 5 -15 10s-5 11 -4 18l30 172v0v1l4 21c4 25 5 43 1 52c-3 8 -10 12 -18 14h-98c-7 0 -12 2 -17 7s-7 10 -7 17s2 12 7 17s10 7 17 7
-h336z" />
- <glyph glyph-name="ion-ios-bolt-outline" unicode="&#xf3e5;" horiz-adv-x="226"
-d="M131 316l-100 -140h65h19l-3 -19l-17 -89l100 140h-65h-19l3 19zM160 384v0l-30 -160h96l-160 -224l30 160h-96z" />
- <glyph glyph-name="ion-ios-bolt" unicode="&#xf3e6;" horiz-adv-x="226"
-d="M160 384v0l-30 -160h96l-160 -224l30 160h-96z" />
- <glyph glyph-name="ion-ios-book-outline" unicode="&#xf3e7;" horiz-adv-x="384"
-d="M284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-20c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79c41 0 78 -14 92 -44c12 30 51 44 92 44zM184 37v254v13v2
-c-1 43 -39 62 -84 62c-44 0 -81 -19 -84 -61v-1v0v-262h1c19 26 48 36 83 36s66 -17 84 -43zM368 300v14v1c-3 42 -40 53 -84 53c-46 0 -84 -20 -84 -64v-1v-266c18 26 49 43 84 43s66 -10 84 -36v256z" />
- <glyph glyph-name="ion-ios-book" unicode="&#xf3e8;" horiz-adv-x="384"
-d="M100 384c35 0 67 -10 84 -31v-353h-2c-8 36 -42 64 -82 64c-34 0 -65 -16 -78 -42h-5h-11h-6v9v264v9v1c0 53 45 79 100 79zM284 384c55 0 100 -26 100 -79v-1v-4v-261v-17h-6h-11h-5c-17 30 -44 42 -78 42c-40 0 -74 -28 -82 -64h-2v353c17 21 50 31 84 31z" />
- <glyph glyph-name="ion-ios-bookmarks-outline" unicode="&#xf3e9;" horiz-adv-x="418"
-d="M385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150c10 0 20 -5 26 -12v0v0c6 7 16 12 26 12h150zM201 37v309c0 9 -12 22 -25 22h-143
-c-9 0 -16 -7 -16 -16v-286c0 -9 7 -18 16 -18h144c10 0 19 -3 24 -11zM273 368v-100l23 14l9 6l9 -6l23 -14v100h-64zM401 66v286c0 9 -7 16 -16 16h-32v-131l-48 32l-48 -32v131h-15c-13 0 -25 -13 -25 -22v-309c5 9 14 11 24 11h144c9 0 16 9 16 18z" />
- <glyph glyph-name="ion-ios-bookmarks" unicode="&#xf3ea;" horiz-adv-x="418"
-d="M296 283l-23 -15v116h64v-116l-23 15l-9 6zM385 384c19 0 33 -13 33 -32v-286c0 -19 -14 -34 -33 -34h-143s-25 -4 -25 -19v-13h-8h-8v13c0 15 -11 19 -25 19h-143c-19 0 -33 15 -33 34v286c0 19 14 32 33 32h150s18 -8 18 -15v-329l8 -6l8 6v329s10 15 18 15h22v-146
-l48 32l48 -32v146h32z" />
- <glyph glyph-name="ion-ios-box-outline" unicode="&#xf3eb;" horiz-adv-x="320"
-d="M192 208h-1h-63c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16zM192 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-64c-18 0 -32 14 -32 32s14 32 32 32h64zM320 336v-80h-16v-208h-288v208h-16v80h320zM288 64v192h-256v-192h256zM304 272v48h-288
-v-48h288z" />
- <glyph glyph-name="ion-ios-box" unicode="&#xf3ec;" horiz-adv-x="320"
-d="M16 48v192h288v-192h-288zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16h64c9 0 16 7 16 16s-7 16 -16 16h-64zM0 336h320v-80h-16h-288h-16v80z" />
- <glyph glyph-name="ion-ios-briefcase-outline" unicode="&#xf3ed;" horiz-adv-x="416"
-d="M368 320h48v-320h-416v320h48v16h32v-16h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v16h32v-16zM144 320v0h128v0v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30zM400 16v224h-384v-224h384zM400 256v48h-32v-16h-32v16h-256v-16h-32v16h-32v-48
-h384z" />
- <glyph glyph-name="ion-ios-briefcase" unicode="&#xf3ee;" horiz-adv-x="416"
-d="M48 320v16h32v-16h-32zM0 0v240h416v-240h-416zM336 320v16h32v-16h-32zM368 320h48v-64h-416v64h48v-32h32v32h48v30v2c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-2v-30h48v-32h32v32zM272 320v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18v-30v0h128v0z" />
- <glyph glyph-name="ion-ios-browsers-outline" unicode="&#xf3ef;" horiz-adv-x="384"
-d="M0 304h304v-304h-304v304zM288 16v272h-272v-272h272zM384 384v-304h-64v16h48v272h-272v-48h-16v64h304z" />
- <glyph glyph-name="ion-ios-browsers" unicode="&#xf3f0;" horiz-adv-x="384"
-d="M0 304h304v-304h-304v304zM80 384h304v-304h-64v240h-240v64z" />
- <glyph glyph-name="ion-ios-calculator-outline" unicode="&#xf3f1;" horiz-adv-x="288"
-d="M32 288v64h224v-64h-224zM48 336v-32h192v32h-192zM256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM272 32v320c0 9 -7 16 -16 16h-224c-9 0 -16 -7 -16 -16v-320c0 -9 7 -16 16 -16h224c9 0 16 7 16 16z
-M48 208h32h16v-16h-64v64h16v-16v-32zM48 128h32h16v-16h-64v64h16v-16v-32zM48 48h32h16v-16h-64v64h16v-16v-32zM128 208h32h16v-16h-64v64h16v-16v-32zM208 208h32h16v-16h-64v64h16v-16v-32zM128 128h32h16v-16h-64v64h16v-16v-32zM128 48h32h16v-16h-64v64h16v-16v-32z
-M208 48h32h16v-16h-64v144h16v-96v-32z" />
- <glyph glyph-name="ion-ios-calculator" unicode="&#xf3f2;" horiz-adv-x="288"
-d="M256 384c18 0 32 -14 32 -32v-320c0 -18 -14 -32 -32 -32h-224c-18 0 -32 14 -32 32v320c0 18 14 32 32 32h224zM248 168h-48v-128h48v128zM248 248h-48v-48h48v48zM168 88h-48v-48h48v48zM168 168h-48v-48h48v48zM168 248h-48v-48h48v48zM88 88h-48v-48h48v48zM88 168
-h-48v-48h48v48zM88 248h-48v-48h48v48zM40 296h208v48h-208v-48z" />
- <glyph glyph-name="ion-ios-calendar-outline" unicode="&#xf3f3;" horiz-adv-x="384"
-d="M16 336v-64h352v64zM288 352h96v-352h-384v352h96v32h16v-32h160v32h16v-32zM368 16v240h-352v-240h352zM368 272v64h-80v-32h-16v32h-160v-32h-16v32h-80v-64h352z" />
- <glyph glyph-name="ion-ios-calendar" unicode="&#xf3f4;" horiz-adv-x="384"
-d="M0 0v256h384v-256h-384zM384 352v-80h-384v80h96v-48h16v48h160v-48h16v48h96zM96 352v32h16v-32h-16zM272 352v32h16v-32h-16z" />
- <glyph glyph-name="ion-ios-camera-outline" unicode="&#xf3f5;" horiz-adv-x="384"
-d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-7l-5 3c-3 4 -7 8 -10 11c-12 13 -20 24 -26 30
-c-5 5 -7 4 -7 4h-88s-2 0 -7 -4c-6 -5 -14 -14 -25 -27c-3 -4 -7 -10 -11 -14l-5 -3h-7h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17zM192 258c47 0 86 -38 86 -85s-39 -85 -86 -85s-86 38 -86 85s39 85 86 85zM192 104c38 0 70 31 70 69
-s-32 69 -70 69s-70 -31 -70 -69s32 -69 70 -69zM288 239v17h17v-17h-17zM160 173c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z" />
- <glyph glyph-name="ion-ios-camera" unicode="&#xf3f6;" horiz-adv-x="384"
-d="M354 288c18 0 30 -13 30 -31v-176c0 -18 -12 -33 -30 -33h-320c-18 0 -34 15 -34 33v176c0 18 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM192 88c47 0 86 38 86 85s-39 85 -86 85s-86 -38 -86 -85s39 -85 86 -85zM305 239v17h-17v-17h17
-zM192 242c38 0 70 -31 70 -69s-32 -69 -70 -69s-70 31 -70 69s32 69 70 69zM192 141c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-ios-cart-outline" unicode="&#xf3f7;" horiz-adv-x="384"
-d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM96 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 16c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM384 320
-l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21zM355 206l11 99l-304 31l32 -176z" />
- <glyph glyph-name="ion-ios-cart" unicode="&#xf3f8;" horiz-adv-x="384"
-d="M96 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM320 48c13 0 24 -11 24 -24s-11 -24 -24 -24s-24 11 -24 24s11 24 24 24zM384 320l-16 -128l-271 -48l5 -30c7 -34 21 -34 26 -34h240v-16h-240c-11 0 -21 5 -28 14c-6 8 -11 19 -13 33l-43 234v0
-c-2 8 -3 12 -7 16c-6 5 -18 7 -37 7v16c23 0 38 -4 47 -11c7 -6 10 -14 12 -21z" />
- <glyph glyph-name="ion-ios-chatboxes-outline" unicode="&#xf3f9;" horiz-adv-x="416"
-d="M16 384v-192h96v-16h-112v224h288v-112h-16v96h-256zM128 272h288v-224h-48v-64h-13l-64 64h-163v224zM400 64v192h-256v-192h153l55 -55v55h48z" />
- <glyph glyph-name="ion-ios-chatboxes" unicode="&#xf3fa;" horiz-adv-x="416"
-d="M288 400v-112h-176v-112h-112v224h288zM128 272h288v-224h-48v-64h-13l-64 64h-163v224z" />
- <glyph glyph-name="ion-ios-chatbubble-outline" unicode="&#xf3fb;" horiz-adv-x="384"
-d="M192 336c-97 0 -176 -62 -176 -138c0 -26 10 -51 27 -73c0 -1 0 -2 1 -3s2 -1 2 -2c4 -6 6 -13 6 -20c0 -3 1 -3 -13 -47l39 17v0c2 1 10 4 11 4h1v0c5 2 10 3 16 3c5 0 9 -1 14 -2l1 -1h2c19 -6 41 -10 70 -10c48 0 92 15 125 40c32 25 50 58 50 94
-c0 76 -79 138 -176 138zM192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84
-c0 85 86 154 192 154z" />
- <glyph glyph-name="ion-ios-chatbubble" unicode="&#xf3fc;" horiz-adv-x="384"
-d="M192 352v0c106 0 192 -69 192 -154s-85 -150 -191 -150c-27 0 -52 3 -75 11h-2v0c-3 1 -6 2 -10 2s-9 -1 -12 -2h1h-1c-1 0 -9 -4 -10 -4l-50 -22l-2 -1h-3h-3c-6 1 -8 6 -7 10v0s17 57 17 58c0 4 -1 8 -3 11v0v0v0l1 -1l-4 4c-19 24 -30 53 -30 84c0 85 86 154 192 154z
-" />
- <glyph glyph-name="ion-ios-checkmark-empty" unicode="&#xf3fd;" horiz-adv-x="207"
-d="M74 118c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47l125 126l17 -18z" />
- <glyph glyph-name="ion-ios-checkmark-outline" unicode="&#xf3fe;" horiz-adv-x="416"
-d="M292 271l18 -18l-134 -135c-2 -2 -6 -4 -9 -4s-7 2 -9 4l-56 56l18 18l47 -47zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
- <glyph glyph-name="ion-ios-checkmark" unicode="&#xf3ff;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM176 118l134 135l-18 18l-125 -126l-47 47l-18 -18l56 -56c2 -2 6 -4 9 -4s7 2 9 4z" />
- <glyph glyph-name="ion-ios-circle-filled" unicode="&#xf400;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 352c88 0 160 -72 160 -160s-72 -160 -160 -160s-160 72 -160 160s72 160 160 160z" />
- <glyph glyph-name="ion-ios-circle-outline" unicode="&#xf401;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
- <glyph glyph-name="ion-ios-clock-outline" unicode="&#xf402;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM208 192v128h17v-145h-113v17h96z" />
- <glyph glyph-name="ion-ios-clock" unicode="&#xf403;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM225 175v145h-17v-128h-96v-17h113z" />
- <glyph glyph-name="ion-ios-close-empty" unicode="&#xf404;" horiz-adv-x="192"
-d="M180 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" />
- <glyph glyph-name="ion-ios-close-outline" unicode="&#xf405;" horiz-adv-x="416"
-d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM343 57c74 74 74 196 0 270s-196 74 -270 0s-74 -196 0 -270s196 -74 270 0zM292 288l12 -12l-84 -84l84 -84l-12 -12l-84 84l-84 -84l-12 12l84 84l-84 84l12 12l84 -84z" />
- <glyph glyph-name="ion-ios-close" unicode="&#xf406;" horiz-adv-x="416"
-d="M355 339c81 -81 81 -213 0 -294s-213 -81 -294 0s-81 213 0 294s213 81 294 0zM304 108l-84 84l84 84l-12 12l-84 -84l-84 84l-12 -12l84 -84l-84 -84l12 -12l84 84l84 -84z" />
- <glyph glyph-name="ion-ios-cloud-download-outline" unicode="&#xf407;"
-d="M161 67l55 -54v242h16v-242l55 54l12 -12l-75 -73l-74 73zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82v0h-101v16h97h4c37 0 66 30 66 66s-29 67 -66 67h-15v20c0 55 -46 97 -101 97c-38 0 -73 -22 -90 -56l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -18 -44 -39l-1 -9
-l-9 -3c-30 -10 -50 -36 -50 -67c0 -40 33 -74 74 -74h91v-16h-91c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115c0 -1 -1 -2 -1 -3z" />
- <glyph glyph-name="ion-ios-cloud-download" unicode="&#xf408;"
-d="M216 13v107h16v-107l55 54l12 -12l-75 -73l-74 73l11 12zM367 284c45 0 81 -37 81 -82s-37 -82 -82 -82h-134v135h-16v-135h-35h-21h-70c-50 0 -90 40 -90 89c0 39 26 71 61 83c5 28 29 51 59 51c10 0 18 -2 26 -6c19 39 59 65 105 65c64 0 117 -51 117 -115
-c0 -1 -1 -2 -1 -3z" />
- <glyph glyph-name="ion-ios-cloud-outline" unicode="&#xf409;"
-d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4zM366 64c37 0 66 32 66 69s-29 67 -66 67h-15v21c0 56 -46 99 -101 99
-c-38 0 -73 -23 -90 -58l-6 -14l-14 7c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39l-1 -9l-9 -3c-30 -10 -50 -37 -50 -69c0 -41 33 -76 74 -76h272h4z" />
- <glyph glyph-name="ion-ios-cloud-upload-outline" unicode="&#xf40a;"
-d="M161 188l-11 11l74 75l75 -75l-12 -11l-55 54v-242h-16v242zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83v0h-101v16h97h4c37 0 66 30 66 67s-29 70 -66 70l-15 1v20c0 56 -46 99 -101 99c-38 0 -73 -23 -90 -58l-6 -13l-14 6c-6 3 -13 5 -20 5c-22 0 -40 -17 -44 -39
-l-1 -9l-9 -3c-30 -10 -50 -39 -50 -71c0 -41 33 -75 74 -75h91v-16h-91c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116c0 -1 -1 -3 -1 -4z" />
- <glyph glyph-name="ion-ios-cloud-upload" unicode="&#xf40b;"
-d="M216 0v96h16v-96h-16zM367 264c45 0 81 -39 81 -85s-37 -83 -82 -83h-134v146l55 -54l12 11l-75 75l-74 -75l11 -11l55 54v-146h-35h-31h-60c-50 0 -90 40 -90 90c0 40 26 74 61 86c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 66 105 66c64 0 117 -52 117 -116
-c0 -1 -1 -3 -1 -4z" />
- <glyph glyph-name="ion-ios-cloud" unicode="&#xf40c;"
-d="M367 215c45 0 81 -37 81 -83c0 -45 -37 -84 -82 -84h-276c-50 0 -90 42 -90 92c0 40 26 71 61 83c5 28 29 52 59 52c10 0 18 -2 26 -6c19 39 59 67 105 67c64 0 117 -53 117 -117c0 -1 -1 -3 -1 -4z" />
- <glyph glyph-name="ion-ios-cloudy-night-outline" unicode="&#xf40d;" horiz-adv-x="384"
-d="M125 224c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 240v0c37 0 68 -26 76 -61
-h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78zM361 142c8 0 15 2 23 4c-4 -7 -9 -14 -14 -20c-21 -24 -50 -41 -84 -45c4 6 6 12 8 19c19 4 36 13 50 25c-18 1 -35 6 -50 13c-23 11 -42 29 -56 51
-c-14 21 -22 48 -22 75c0 15 2 30 7 44c-24 -12 -43 -33 -53 -59c-5 2 -12 4 -18 5c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52c0 -32 12 -63 35 -86s54 -36 86 -36h6z" />
- <glyph glyph-name="ion-ios-cloudy-night" unicode="&#xf40e;" horiz-adv-x="384"
-d="M361 142c8 0 15 2 23 4c-4 -7 -9 -15 -14 -21c-21 -24 -50 -40 -84 -44h-3c4 10 7 21 7 32c0 22 -9 43 -24 58c-14 15 -33 23 -53 24c-6 16 -16 29 -29 40c-10 8 -20 13 -32 17v2c14 36 45 65 82 77c8 2 16 4 24 5c-5 -6 -9 -13 -12 -20c-8 -16 -12 -34 -12 -52
-c0 -32 12 -63 35 -86s54 -36 86 -36h6zM125 239v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v7c0 43 35 79 78 79z" />
- <glyph glyph-name="ion-ios-cloudy-outline" unicode="&#xf40f;" horiz-adv-x="274"
-d="M125 272c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-6 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 14 -39 14zM125 288v0c37 0 68 -26 76 -61
-h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
- <glyph glyph-name="ion-ios-cloudy" unicode="&#xf410;" horiz-adv-x="274"
-d="M125 288v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
- <glyph glyph-name="ion-ios-cog-outline" unicode="&#xf411;" horiz-adv-x="384"
-d="M384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12l-29 22l12 30l36 -5
-l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM356 127l-26 20l6 33l32 8v7l-32 8l-6 33l26 19l-3 7l-32 -5l-19 27l17 28l-5 6l-28 -17l-28 18
-l5 34l-6 2l-20 -26l-32 6l-8 33h-7l-9 -33l-32 -6l-20 27l-7 -3l5 -34l-28 -18l-9 6l-21 12l-5 -5l18 -30l-18 -27l-33 5l-3 -7l27 -20l-6 -32l-33 -8v-7l33 -9l6 -32l-27 -20l3 -6l33 4l18 -27l-17 -29l5 -6l29 18l28 -18l-5 -33l7 -3l19 27l33 -7l8 -31h8l7 31l33 7
-l20 -26l7 3l-5 32l26 18l28 -16l5 5l-16 27l19 28l32 -4zM192 320c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM80 192c0 -7 1 -15 2 -22l104 28l28 104c-7 1 -15 2 -22 2c-30 0 -58 -12 -79 -33s-33 -49 -33 -79zM192 80c27 0 53 10 73 27
-l-75 75l-104 -28c6 -15 15 -29 27 -41c21 -21 49 -33 79 -33zM276 118c18 20 28 47 28 74c0 30 -12 58 -33 79c-12 12 -26 22 -42 27l-28 -105z" />
- <glyph glyph-name="ion-ios-cog" unicode="&#xf412;" horiz-adv-x="384"
-d="M229 298c16 -5 30 -15 42 -27c21 -21 33 -49 33 -79c0 -27 -10 -54 -28 -74l-75 75zM214 302l-28 -104l-104 -28c-1 7 -2 15 -2 22c0 30 12 58 33 79s49 33 79 33c7 0 15 -1 22 -2zM86 154l104 28l75 -75c-20 -17 -46 -27 -73 -27c-30 0 -58 12 -79 33
-c-12 12 -21 26 -27 41zM384 175l-33 -8l-3 -14l27 -20l-12 -30l-34 5l-8 -11l17 -29l-23 -23l-29 17l-10 -7l5 -34l-29 -12l-21 27l-14 -3l-8 -33h-32l-9 33l-13 3l-21 -28l-29 12l4 34l-11 8l-30 -19l-23 23l18 31l-7 11l-35 -5l-12 29l28 22l-2 12l-35 9v32l35 9l2 12
-l-29 22l12 30l36 -5l7 10l-19 32l22 22l32 -19l11 8l-4 35l29 13l22 -29l12 2l9 35h32l9 -35l12 -2l22 28l29 -12l-5 -35l11 -8l30 18l22 -23l-17 -30l7 -10l35 5l12 -30l-28 -21l3 -13l33 -9v-32zM192 64c71 0 128 57 128 128s-57 128 -128 128s-128 -57 -128 -128
-s57 -128 128 -128z" />
- <glyph glyph-name="ion-ios-color-filter-outline" unicode="&#xf413;" horiz-adv-x="384"
-d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM96 256c0 -6 0 -12 1 -17
-c5 1 10 1 15 1c31 0 60 -13 80 -34c20 21 49 34 80 34c5 0 10 0 15 -1c1 5 1 11 1 17c0 53 -43 96 -96 96s-96 -43 -96 -96zM208 128c0 6 0 12 -1 17c-5 -1 -10 -1 -15 -1s-10 0 -15 1c-1 -5 -1 -11 -1 -17c0 -20 6 -38 16 -53c10 15 16 33 16 53zM192 160c3 0 7 1 10 1
-c-3 7 -6 14 -10 20c-4 -6 -7 -13 -10 -20c3 0 7 -1 10 -1zM166 164c4 11 9 21 16 30c-18 18 -43 30 -70 30c-3 0 -7 -1 -10 -1c10 -29 34 -51 64 -59zM202 194c7 -9 12 -19 16 -30c30 8 54 30 64 59c-3 0 -7 1 -10 1c-27 0 -52 -12 -70 -30zM112 32c27 0 52 12 70 30
-c-14 19 -22 41 -22 66c0 7 1 13 2 20c-36 10 -64 37 -76 72c-40 -11 -70 -48 -70 -92c0 -53 43 -96 96 -96zM272 32c53 0 96 43 96 96c0 44 -30 81 -70 92c-12 -35 -40 -62 -76 -72c1 -7 2 -13 2 -20c0 -25 -8 -47 -22 -66c18 -18 43 -30 70 -30z" />
- <glyph glyph-name="ion-ios-color-filter" unicode="&#xf414;" horiz-adv-x="384"
-d="M302 236c47 -13 82 -57 82 -108c0 -62 -50 -112 -112 -112c-31 0 -60 13 -80 34c-20 -21 -49 -34 -80 -34c-62 0 -112 50 -112 112c0 51 35 95 82 108c-1 7 -2 13 -2 20c0 62 50 112 112 112s112 -50 112 -112c0 -7 -1 -13 -2 -20zM192 53l1 -2c3 3 6 7 9 11
-c14 19 22 41 22 66c0 7 -1 13 -2 20c36 10 64 37 76 72c2 5 3 10 4 15c-1 0 -2 1 -3 1v1c-4 1 -8 1 -12 2c-5 1 -10 1 -15 1c-31 0 -60 -13 -80 -34c-20 21 -49 34 -80 34c-5 0 -10 0 -15 -1c-4 -1 -8 -1 -12 -2v-1c-1 0 -2 -1 -3 -1c1 -5 2 -10 4 -15c12 -35 40 -62 76 -72
-c-1 -7 -2 -13 -2 -20c0 -25 8 -47 22 -66c3 -4 6 -8 9 -11zM207 145c1 -5 1 -11 1 -17c0 -20 -6 -38 -16 -53c-10 15 -16 33 -16 53c0 6 0 12 1 17c5 -1 10 -1 15 -1s10 0 15 1zM282 223c-10 -29 -34 -51 -64 -59c-4 11 -9 21 -16 30c18 18 43 30 70 30c3 0 7 -1 10 -1z
-M202 161c-3 0 -7 -1 -10 -1s-7 1 -10 1c3 7 6 14 10 20c4 -6 7 -13 10 -20zM112 224c27 0 52 -12 70 -30c-7 -9 -12 -19 -16 -30c-30 8 -54 30 -64 59c3 0 7 1 10 1z" />
- <glyph glyph-name="ion-ios-color-wand-outline" unicode="&#xf415;" horiz-adv-x="384"
-d="M128 298l256 -256l-34 -34l-256 256zM149 232l201 -201l11 11l-201 202zM120 344v40h16v-40h-16zM120 140v40h16v-40h-16zM216 256v16h40v-16h-40zM0 256v16h40v-16h-40zM47 354l29 -29l-12 -11l-28 28zM76 198l-29 -28l-11 11l28 28zM220 342l-28 -28l-12 11l29 29z" />
- <glyph glyph-name="ion-ios-color-wand" unicode="&#xf416;" horiz-adv-x="396"
-d="M140 289l256 -257l-34 -34l-256 257zM124 322v64h32v-64h-32zM124 118v64h32v-64h-32zM216 238v32h64v-32h-64zM246 336l-45 -45l-23 22l45 46zM34 336l23 23l45 -46l-23 -22zM34 169l45 45l23 -22l-45 -46zM0 238v32h64v-32h-64z" />
- <glyph glyph-name="ion-ios-compose-outline" unicode="&#xf417;" horiz-adv-x="384"
-d="M304 32v208l16 16v-240h-320v304h256l-16 -16h-224v-272h288zM174 164l171 171l11 -11l-180 -180h-32v32l180 180l11 -11l-171 -171zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" />
- <glyph glyph-name="ion-ios-compose" unicode="&#xf418;" horiz-adv-x="384"
-d="M192 128l128 128v-240h-320v304h256l-128 -128v-64h64zM324 356l32 -32l-180 -180h-32v32zM380 368c2 -3 4 -6 4 -10s-2 -7 -4 -10l-12 -12l-21 21l-11 11v0l12 12c3 2 6 4 10 4s7 -2 10 -4z" />
- <glyph glyph-name="ion-ios-contact-outline" unicode="&#xf419;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 383c-105 0 -191 -86 -191 -191c0 -47 17 -89 45 -122c18 8 62 24 90 32c2 1 3 0 3 10c0 11 -1 18 -4 24c-4 8 -7 20 -9 31c-4 5 -10 15 -14 33c-3 16 -1 22 1 28v2
-c1 4 0 23 -3 38c-2 10 1 34 15 52c9 12 27 26 58 28h18c32 -2 49 -16 58 -28c14 -18 17 -42 15 -52c-3 -15 -4 -34 -3 -38c0 0 1 -1 1 -2c2 -6 3 -12 0 -28c-4 -18 -10 -27 -14 -32c-2 -11 -5 -24 -9 -32c-3 -7 -6 -15 -6 -23c0 -10 0 -10 2 -11c27 -8 73 -24 93 -32
-c28 33 45 76 45 122c0 105 -86 191 -191 191z" />
- <glyph glyph-name="ion-ios-contact" unicode="&#xf41a;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c59 0 111 27 146 69c-20 8 -66 24 -93 32c-2 1 -3 1 -3 11c0 8 4 16 7 23c4 8 7 21 9 32c4 5 10 14 14 32c3 16 2 22 0 28c0 0 -1 1 -1 2c-1 4 0 23 3 38c2 10 -1 34 -15 52
-c-9 12 -26 26 -58 28h-18c-31 -2 -49 -16 -58 -28c-14 -18 -17 -42 -15 -52c3 -15 4 -34 3 -38v-2c-2 -6 -4 -12 -1 -28c4 -18 10 -28 14 -33c2 -11 5 -23 9 -31c3 -6 4 -13 4 -24c0 -10 -1 -9 -3 -10c-28 -8 -72 -24 -90 -32c35 -42 87 -69 146 -69z" />
- <glyph glyph-name="ion-ios-copy-outline" unicode="&#xf41b;" horiz-adv-x="288"
-d="M192 352v-64h64v-16h-80v80h16zM213 384l75 -75v-261h-48v-48h-240v336h48v48h165zM224 16v32h-176v272h-32v-304h208zM272 64v238l-65 66h-143v-304h208z" />
- <glyph glyph-name="ion-ios-copy" unicode="&#xf41c;" horiz-adv-x="288"
-d="M32 32h16h192v-32h-240v336h32v-288v-16zM213 384l75 -75v-261h-48h-192v288v48h165zM256 272v16h-64v64h-16v-80h80z" />
- <glyph glyph-name="ion-ios-crop-strong" unicode="&#xf41d;" horiz-adv-x="384"
-d="M64 336v48h32v-48h-32zM96 96h176v-32h-208v208h32v-176zM336 64v32h48v-32h-48zM0 320h320v-320h-32v288h-288v32z" />
- <glyph glyph-name="ion-ios-crop" unicode="&#xf41e;" horiz-adv-x="384"
-d="M64 336v48h16v-48h-16zM80 80h208v-16h-224v224h16v-208zM336 64v16h48v-16h-48zM0 320h320v-320h-16v304h-304v16z" />
- <glyph glyph-name="ion-ios-download-outline" unicode="&#xf41f;" horiz-adv-x="320"
-d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 196l55 -55v243h16v-243l55 55l11 -12l-74 -74l-74 74z" />
- <glyph glyph-name="ion-ios-download" unicode="&#xf420;" horiz-adv-x="320"
-d="M168 304h152v-304h-320v304h152v-163l-55 55l-11 -12l74 -74l74 74l-11 12l-55 -55v163zM152 304v80h16v-80h-16z" />
- <glyph glyph-name="ion-ios-drag" unicode="&#xf421;" horiz-adv-x="352"
-d="M0 128v16h352v-16h-352zM0 184v16h352v-16h-352zM0 240v16h352v-16h-352z" />
- <glyph glyph-name="ion-ios-email-outline" unicode="&#xf422;" horiz-adv-x="384"
-d="M0 320h384v-256h-384v256zM192 180l163 124h-326zM16 80h352v214l-115 -88l68 -77l-2 -2l-79 70l-48 -37l-48 37l-79 -70l-2 2l68 77l-115 88v-214z" />
- <glyph glyph-name="ion-ios-email" unicode="&#xf423;" horiz-adv-x="384"
-d="M384 64h-384v242l131 -100l-68 -77l2 -2l79 70l48 -37l48 37l79 -70l2 2l-68 77l131 100v-242zM376 320l-184 -140l-184 140h368z" />
- <glyph glyph-name="ion-ios-eye-outline" unicode="&#xf424;" horiz-adv-x="384"
-d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 288c-62 0 -111 -36 -170 -96c24 -24 48 -50 76 -68c30 -20 60 -28 94 -28
-c75 0 133 56 171 95c-26 29 -50 50 -74 66c-32 21 -64 31 -97 31zM192 112c-44 0 -80 36 -80 80s36 80 80 80s80 -36 80 -80s-36 -80 -80 -80zM192 256c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64zM224 192h16v0c0 -26 -22 -48 -48 -48s-48 21 -48 48
-s22 48 48 48v-16c-16 0 -32 -13 -32 -31s15 -33 32 -33s32 14 32 32v0z" />
- <glyph glyph-name="ion-ios-eye" unicode="&#xf425;" horiz-adv-x="384"
-d="M383 192l1 -1l-6 -6c-21 -21 -47 -48 -78 -69c-36 -24 -72 -36 -108 -36c-83 0 -130 49 -185 105l-7 7l1 1c39 40 67 64 94 81c32 20 63 30 97 30c83 0 146 -60 191 -112zM192 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM186 221
-c0 -19 16 -35 35 -35c7 0 14 2 19 6v0c0 -27 -22 -48 -48 -48s-48 21 -48 48s22 48 48 48c-4 -5 -6 -12 -6 -19z" />
- <glyph glyph-name="ion-ios-fastforward-outline" unicode="&#xf426;"
-d="M16 293v-202l184 101zM240 292v0v-78v-27v-95l176 100zM224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" />
- <glyph glyph-name="ion-ios-fastforward" unicode="&#xf427;"
-d="M224 320v0l224 -128l-224 -128v123l-224 -123v256l224 -123v123z" />
- <glyph glyph-name="ion-ios-filing-outline" unicode="&#xf428;" horiz-adv-x="352"
-d="M288 320l64 -96v-160h-176h-176v160l64 96h224zM333 224l-45 68v-68h45zM80 304v-80h48c0 -26 22 -48 48 -48s48 22 48 48h48v80h-192zM64 292l-45 -68h45v68zM336 80v128h-98c-7 -28 -32 -48 -62 -48s-55 20 -62 48h-98v-128h160h160z" />
- <glyph glyph-name="ion-ios-filing" unicode="&#xf429;" horiz-adv-x="352"
-d="M176 160c30 0 55 20 62 48h114v-144h-176h-176v144h114c7 -28 32 -48 62 -48zM64 224h-7h-57l64 96v0v-80h16v80h192v-80h16v80v0l64 -96h-56h-8h-16h-8h-40c0 -26 -22 -48 -48 -48s-48 22 -48 48h-39h-9h-16z" />
- <glyph glyph-name="ion-ios-film-outline" unicode="&#xf42a;" horiz-adv-x="400"
-d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 40v144h-224v-144h224zM312 200v144h-224v-144h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48
-h56zM384 232v48h-56v-48h56zM384 296v48h-56v-48h56z" />
- <glyph glyph-name="ion-ios-film" unicode="&#xf42b;" horiz-adv-x="400"
-d="M0 360h400v-336h-400v336zM72 40v48h-56v-48h56zM72 104v48h-56v-48h56zM72 168v48h-56v-48h56zM72 232v48h-56v-48h56zM72 296v48h-56v-48h56zM312 184v16h-224v-16h224zM384 40v48h-56v-48h56zM384 104v48h-56v-48h56zM384 168v48h-56v-48h56zM384 232v48h-56v-48h56z
-M384 296v48h-56v-48h56z" />
- <glyph glyph-name="ion-ios-flag-outline" unicode="&#xf42c;" horiz-adv-x="256"
-d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4zM240 179v0v141c-11 -1 -25 -4 -40 -4
-c-25 0 -46 6 -68 11s-42 9 -64 9c-30 0 -46 -5 -52 -7v-137c10 3 26 6 52 6c24 0 45 -8 67 -13c21 -4 43 -9 66 -9c15 0 28 2 39 3z" />
- <glyph glyph-name="ion-ios-flag" unicode="&#xf42d;" horiz-adv-x="256"
-d="M240 336c6 1 11 1 16 2v-16v-157c-5 -1 -10 -1 -16 -2c-11 -1 -24 -3 -39 -3c-25 0 -47 4 -69 9s-42 13 -64 13c-30 0 -46 -5 -52 -7v-143h-16v142v162v2l3 3c2 1 18 11 65 11c24 0 45 -4 67 -9c21 -4 42 -11 65 -11c15 0 29 3 40 4z" />
- <glyph glyph-name="ion-ios-flame-outline" unicode="&#xf42e;" horiz-adv-x="256"
-d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80zM239 130c5 47 -10 99 -41 151c-22 36 -50 70 -83 99c0 -57 -24 -91 -49 -123
-c-26 -34 -50 -65 -50 -129c0 -25 5 -48 15 -68c8 -17 20 -32 35 -45c8 -7 16 -12 23 -16c-9 16 -18 35 -18 57c0 51 44 90 46 92l11 9l11 -9c2 -2 45 -41 45 -92c0 -23 -9 -44 -19 -60c7 4 13 8 20 14c14 12 25 27 34 44c11 21 17 47 20 76z" />
- <glyph glyph-name="ion-ios-flame" unicode="&#xf42f;" horiz-adv-x="256"
-d="M96 416c87 -64 170 -179 159 -288c-13 -134 -104 -160 -127 -160s-127 40 -128 160c-1 146 122 143 96 288zM128 -24c0 0 40 36 40 80s-40 80 -40 80s-41 -36 -41 -80s41 -80 41 -80z" />
- <glyph glyph-name="ion-ios-flask-outline" unicode="&#xf430;" horiz-adv-x="384"
-d="M373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16v16h16h16v-16v-16h48v-16h-48v-32h32v-16h-32v-32h48v-16h-48v-3l-2 -4l-15 -25h49v-16h-58l-92 -154c-13 -25 -14 -43 -2 -63c9 -14 23 -23 41 -23h256
-c17 0 33 8 41 22c5 8 6 17 6 26c0 12 -2 25 -9 38l-116 195l-3 4v131v16h16h16v-16h-16v-127zM44 73l72 119h153l72 -119c7 -11 10 -24 10 -33c-1 -24 -16 -40 -46 -40h-226c-30 0 -46 12 -46 40c0 9 4 22 11 33zM260 176h-135l-67 -111v0v0c-5 -8 -9 -19 -9 -25
-c0 -13 5 -17 6 -18c4 -4 13 -6 24 -6h226c10 0 18 3 23 7c4 4 7 10 7 18c0 6 -3 16 -8 24v0v0z" />
- <glyph glyph-name="ion-ios-flask" unicode="&#xf431;" horiz-adv-x="384"
-d="M327 65v0c5 -8 8 -18 8 -24c0 -8 -3 -14 -7 -18c-5 -4 -13 -7 -23 -7h-226c-11 0 -20 2 -24 6c-1 1 -6 5 -6 18c0 6 4 17 9 25v0v0l67 111h135l67 -111v0zM373 78c8 -16 11 -32 11 -46c-1 -36 -27 -64 -63 -64h-256c-36 0 -64 27 -65 64c0 14 4 30 12 46l116 195v127h-16
-v16h160v-16h-16v-127zM144 384v-16h48v16h-48zM144 336v-16h32v16h-32zM144 288v-16h48v16h-48zM127 240l-9 -16h58v16h-49zM351 40c0 9 -3 22 -10 33l-72 119h-154l-71 -119c-7 -11 -11 -24 -11 -33c0 -28 16 -40 46 -40h226c30 0 45 16 46 40z" />
- <glyph glyph-name="ion-ios-flower-outline" unicode="&#xf432;"
-d="M363 164c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80c-3 -3 -7 -4 -12 -4c-15 0 -38 15 -68 45c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93
-c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-30 -30 -53 -45 -68 -45c-5 0 -9 1 -12 4c-12 12 1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55
-c-40 40 -53 68 -41 80c3 3 7 4 12 4c15 0 38 -14 68 -44c20 -20 41 -51 56 -76c3 2 7 3 10 4c-7 28 -15 64 -15 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -8 -65 -15 -93c3 -1 7 -2 10 -4c15 25 36 56 56 76c30 30 53 44 68 44c5 0 9 -1 12 -4c12 -12 -1 -40 -41 -80
-c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15c56 0 85 -12 85 -28s-29 -28 -85 -28zM288 193v-3c30 -7 56 -10 75 -10c21 0 39 2 52 5c10 3 14 6 16 7c-2 1 -6 4 -16 7c-13 3 -31 5 -52 5c-19 0 -45 -4 -75 -11zM314 299c-14 -14 -30 -35 -46 -61l2 -2
-c26 16 47 32 61 46c15 15 26 28 33 40c5 9 7 14 7 16c-4 0 -22 -4 -57 -39zM178 236l2 2c-16 26 -32 47 -46 61c-35 35 -53 39 -57 39c0 -2 2 -7 7 -16c7 -12 18 -25 33 -40c14 -14 35 -30 61 -46zM85 180c19 0 45 3 75 10v3c-30 7 -56 11 -75 11c-21 0 -39 -2 -52 -5
-c-10 -3 -14 -6 -16 -7c2 -1 5 -4 15 -7c13 -3 32 -5 53 -5zM134 85c14 14 30 35 46 61l-2 2c-26 -16 -47 -32 -61 -46c-15 -15 -26 -29 -33 -41c-5 -9 -7 -14 -7 -16c4 0 22 5 57 40zM270 148l-2 -2c16 -26 32 -47 46 -61c35 -35 53 -40 57 -40c0 2 -2 7 -7 16
-c-7 12 -18 26 -33 41c-14 14 -35 30 -61 46zM217 383c-3 -13 -5 -31 -5 -52c0 -19 4 -45 11 -75h2c7 30 11 56 11 75c0 21 -2 39 -5 52c-3 10 -6 14 -7 16c-1 -2 -4 -6 -7 -16zM231 0c3 13 5 32 5 53c0 19 -4 45 -11 75h-2c-7 -30 -11 -56 -11 -75c0 -21 2 -40 5 -53
-c3 -10 6 -13 7 -15c1 2 4 5 7 15zM224 160c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM313 42c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76s24 -34 49 -52zM302 -1c1 4 2 14 -3 34c-5 4 -10 9 -15 14
-c0 -9 0 -17 -1 -25c10 -16 16 -22 19 -23zM182 365c-6 -35 1 -75 1 -75s-27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36zM164 337c0 9 0 17 1 25c-10 16 -16 21 -19 22c-1 -4 -2 -14 3 -34c5 -4 10 -8 15 -13zM50 149c35 -4 76 2 76 2s-34 -24 -51 -48
-c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11c-5 11 7 25 34 41zM66 117c4 5 8 10 13 15c-9 0 -17 0 -25 1c-16 -10 -21 -16 -22 -19c1 0 4 -1 8 -1c7 0 16 1 26 4zM432 276c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2s33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10zM394 250
-c16 10 21 16 22 19c-1 0 -4 1 -8 1c-7 0 -16 -1 -26 -4c-4 -5 -8 -9 -13 -14c9 0 17 -1 25 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM143 1c4 2 12 8 22 26c0 6 -1 13 -1 20c-6 -6 -13 -12 -19 -17
-c-4 -18 -3 -26 -2 -29zM312 398c11 -5 13 -22 5 -54c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1zM303 353c5 18 3 27 2 30c-4 -2 -12 -8 -22 -26c0 -6 1 -14 1 -21c6 6 13 12 19 17zM71 285c18 -24 55 -53 55 -53s-40 7 -70 3c-28 15 -43 32 -38 44
-c3 7 10 11 22 11c8 0 21 -1 31 -5zM33 273c2 -4 8 -12 26 -22c6 0 13 1 20 1c-6 6 -12 12 -17 18c-8 2 -16 4 -22 4c-4 0 -6 -1 -7 -1zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5c-20 27 -55 52 -55 52s45 -8 70 -2zM408 110c4 0 6 1 7 1
-c-2 4 -8 12 -26 22c-6 0 -13 -1 -20 -1c6 -6 12 -13 17 -19c8 -2 16 -3 22 -3z" />
- <glyph glyph-name="ion-ios-flower" unicode="&#xf433;"
-d="M363 220c56 0 85 -12 85 -28s-29 -28 -85 -28c-29 0 -65 7 -93 14c-1 -3 -2 -6 -4 -9c25 -15 56 -36 76 -56c40 -40 53 -68 41 -80s-40 1 -80 41c-20 20 -41 51 -56 76c-3 -2 -7 -3 -10 -4c7 -28 15 -64 15 -93c0 -56 -12 -85 -28 -85s-28 29 -28 85c0 29 8 65 15 93
-c-3 1 -7 2 -10 4c-15 -25 -36 -56 -56 -76c-40 -40 -68 -53 -80 -41s1 40 41 80c20 20 51 41 76 56c-2 3 -3 6 -4 9c-28 -7 -64 -14 -93 -14c-56 0 -85 12 -85 28s29 28 85 28c29 0 65 -8 93 -15c1 3 2 7 4 10c-25 15 -56 35 -76 55c-40 40 -53 68 -41 80s40 0 80 -40
-c20 -20 41 -51 56 -76c3 2 6 3 9 4c-7 28 -14 64 -14 93c0 56 12 85 28 85s28 -29 28 -85c0 -29 -7 -65 -14 -93c3 -1 6 -2 9 -4c15 25 36 56 56 76c40 40 68 52 80 40s-1 -40 -41 -80c-20 -20 -51 -40 -76 -55c2 -3 3 -7 4 -10c28 7 64 15 93 15zM264 94c0 0 24 -34 49 -52
-c10 -34 7 -53 -5 -58c-2 -1 -3 -1 -5 -1c-11 0 -25 13 -37 35c5 35 -2 76 -2 76zM183 290c0 0 -27 35 -48 51c-10 35 -7 54 5 59c2 1 3 1 5 1c11 0 24 -12 37 -36c-6 -35 1 -75 1 -75zM126 151c0 0 -34 -24 -51 -48c-12 -4 -26 -6 -35 -6c-13 0 -21 4 -24 11
-c-5 11 7 25 34 41c35 -4 76 2 76 2zM322 232c0 0 33 25 51 49c13 4 26 5 35 5c13 0 21 -3 24 -10c5 -11 -7 -26 -34 -42c-35 5 -76 -2 -76 -2zM131 39c31 24 53 55 53 55s-7 -39 -3 -71c-15 -26 -28 -39 -39 -39c-2 0 -4 0 -6 1c-11 5 -13 24 -5 54zM317 344
-c-29 -21 -53 -55 -53 -55s8 48 3 71c13 25 28 39 39 39c2 0 4 0 6 -1c11 -5 13 -22 5 -54zM56 235c-28 15 -43 32 -38 44c3 7 10 11 22 11c8 0 21 -1 31 -5c18 -24 55 -53 55 -53s-40 7 -70 3zM392 149c30 -17 43 -33 38 -45c-3 -7 -10 -10 -22 -10c-8 0 -19 1 -31 5
-c-20 27 -55 52 -55 52s45 -8 70 -2z" />
- <glyph glyph-name="ion-ios-folder-outline" unicode="&#xf434;"
-d="M425 352c13 0 23 -10 23 -23v-304c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v336c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242zM25 368c-4 0 -9 -3 -9 -7v-74c3 1 5 1 8 1h400c3 0 5 0 8 -1v42c0 4 -3 7 -7 7h-242c-7 0 -12 2 -17 7
-l-23 23c-2 2 -3 2 -6 2h-112zM432 25v239c0 4 -4 8 -8 8h-400c-4 0 -8 -4 -8 -8v-239c0 -4 5 -9 9 -9h400c4 0 7 5 7 9z" />
- <glyph glyph-name="ion-ios-folder" unicode="&#xf435;"
-d="M440 272c4 0 8 -4 8 -8v-239c0 -14 -10 -25 -23 -25h-400c-13 0 -25 12 -25 25v239c0 4 4 8 8 8h432zM425 352c13 0 23 -10 23 -23v-42c-3 1 -5 1 -8 1h-432c-3 0 -5 0 -8 -1v74c0 13 11 23 25 23h112c8 0 12 -2 17 -7v0l23 -23c2 -2 3 -2 6 -2h242z" />
- <glyph glyph-name="ion-ios-football-outline" unicode="&#xf436;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM41 284c-15 -27 -23 -57 -24 -89l43 37v0zM142 371
-c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58zM277 201l-70 58l-69 -58v-1l18 -72h104l18 72zM399 195c-1 32 -9 63 -24 90l-19 -53v0zM364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22z
-M295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77zM207 345l47 32c-15 4 -30 6 -46 6s-32 -2 -47 -6zM118 66l-54 1c20 -23 46 -42 75 -53l-20 50zM277 14c29 11 55 30 75 53l-56 -1l-2 -3z" />
- <glyph glyph-name="ion-ios-football" unicode="&#xf437;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM249 6c3 1 5 1 8 2l24 64l-20 39v1h-106l-20 -39l25 -65c2 -1 5 -1 7 -2c12 -3 25 -5 38 -5c14 0 30 2 44 5zM142 371c-36 -14 -68 -38 -90 -69l22 -64l5 -2l49 -23l71 60v58z
-M364 302c-22 31 -54 56 -90 69l-58 -40v-58l71 -60l54 24zM18 175c3 -34 15 -66 33 -92l70 -1l21 39l-20 77l-1 1l-49 22zM295 82l70 1c18 26 30 58 33 92l-54 46l-50 -23l-20 -77z" />
- <glyph glyph-name="ion-ios-game-controller-a-outline" unicode="&#xf438;"
-d="M163 208c3 0 5 -2 5 -5v-22c0 -3 -2 -5 -5 -5h-35v-35c0 -3 -3 -5 -6 -5h-21c-3 0 -5 2 -5 5v35h-35c-3 0 -5 3 -5 6v21c0 3 2 5 5 5h35v35c0 3 2 5 5 5h22c3 0 5 -2 5 -5v-35h35zM330 169c11 0 20 -8 20 -19s-9 -19 -20 -19s-19 8 -19 19s8 19 19 19zM288 211
-c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM373 211c11 0 19 -8 19 -19s-8 -19 -19 -19s-20 8 -20 19s9 19 20 19zM330 253c11 0 20 -8 20 -19s-9 -20 -20 -20s-19 9 -19 20s8 19 19 19zM337 286h-226c-26 0 -49 -9 -67 -26s-28 -41 -28 -67s10 -51 28 -68
-s41 -27 67 -27h226c26 0 49 10 67 27s28 42 28 68s-10 50 -28 67s-41 26 -67 26zM337 302v0c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226z" />
- <glyph glyph-name="ion-ios-game-controller-a" unicode="&#xf439;"
-d="M337 302c61 0 111 -45 111 -109s-50 -111 -111 -111h-226c-61 0 -111 47 -111 111s50 109 111 109h226zM168 181v0v22c0 3 -2 5 -5 5h-35v35c0 3 -2 5 -5 5h-22c-3 0 -5 -2 -5 -5v-35h-35c-3 0 -5 -2 -5 -5v-21c0 -3 2 -6 5 -6h35v-35c0 -3 2 -5 5 -5h21c3 0 6 2 6 5v35
-h35c3 0 5 2 5 5zM288 173c11 0 19 8 19 19s-8 19 -19 19s-20 -8 -20 -19s9 -19 20 -19zM330 131c11 0 20 8 20 19s-9 19 -20 19s-19 -8 -19 -19s8 -19 19 -19zM330 214c11 0 20 9 20 20s-9 19 -20 19s-19 -8 -19 -19s8 -20 19 -20zM373 173c11 0 19 8 19 19s-8 19 -19 19
-s-20 -8 -20 -19s9 -19 20 -19z" />
- <glyph glyph-name="ion-ios-game-controller-b-outline" unicode="&#xf43a;"
-d="M276 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM320 200c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM103 264c22 0 39 -18 39 -40s-17 -40 -39 -40s-39 18 -39 40s17 40 39 40zM103 205c11 0 19 8 19 19s-8 19 -19 19
-s-19 -8 -19 -19s8 -19 19 -19zM320 288c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM364 244c11 0 20 -9 20 -20s-9 -20 -20 -20s-20 9 -20 20s9 20 20 20zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33
-h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM420 49c10 5 23 48 -1 146c-21 90 -43 128 -78 138c-8 2 -14 3 -21 3
-c-10 0 -19 -2 -30 -5c-16 -4 -36 -10 -66 -10s-50 6 -66 10c-11 3 -20 5 -30 5c-7 0 -13 -1 -21 -3c-35 -10 -57 -48 -78 -138c-24 -98 -11 -141 -1 -146c2 -1 4 -1 6 -1c6 0 14 4 23 12s19 18 32 34s24 28 44 34c17 5 38 5 79 5h24c41 0 62 0 79 -5c20 -6 31 -18 44 -34
-s23 -26 32 -34s17 -12 23 -12c2 0 4 0 6 1z" />
- <glyph glyph-name="ion-ios-game-controller-b" unicode="&#xf43b;"
-d="M103 243c11 0 19 -8 19 -19s-8 -19 -19 -19s-19 8 -19 19s8 19 19 19zM434 199c21 -88 18 -152 -7 -164c-4 -2 -9 -3 -13 -3c-22 0 -45 24 -68 52c-26 32 -32 33 -110 33h-24c-78 0 -84 -1 -110 -33c-23 -28 -46 -52 -68 -52c-4 0 -9 1 -13 3c-25 12 -28 76 -7 164
-s43 136 88 149c10 3 18 4 26 4c28 0 47 -15 96 -15s68 15 96 15c8 0 16 -1 26 -4c45 -13 67 -61 88 -149zM103 184c22 0 39 18 39 40s-17 40 -39 40s-39 -18 -39 -40s17 -40 39 -40zM276 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 160
-c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM320 248c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20zM364 204c11 0 20 9 20 20s-9 20 -20 20s-20 -9 -20 -20s9 -20 20 -20z" />
- <glyph glyph-name="ion-ios-gear-outline" unicode="&#xf43c;" horiz-adv-x="384"
-d="M193 288c26 0 50 -10 68 -28s28 -42 28 -68s-10 -50 -28 -68s-42 -28 -68 -28s-50 10 -68 28s-28 42 -28 68s10 50 28 68s42 28 68 28zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80zM138 365c-10 -3 -20 -7 -30 -12c2 -8 1 -16 0 -24
-c-2 -13 -8 -25 -18 -35c-12 -12 -29 -19 -46 -19c-4 0 -9 0 -13 1c-5 -10 -9 -20 -12 -30c7 -4 12 -10 17 -17c8 -11 12 -24 12 -37s-4 -26 -12 -37c-5 -7 -10 -13 -17 -17c3 -10 7 -20 12 -30c4 1 9 1 13 1c17 0 34 -7 46 -19c10 -10 16 -22 18 -35c1 -8 2 -16 0 -24
-c10 -5 20 -9 30 -12c4 7 10 12 17 17c11 8 24 12 37 12s26 -4 37 -12c7 -5 13 -10 17 -17c10 3 20 7 30 12c-2 8 -1 16 0 24c2 13 8 25 18 35c12 12 29 19 46 19c4 0 9 0 13 -1c5 10 9 20 12 30c-7 4 -12 10 -17 17c-8 11 -12 24 -12 37s4 26 12 37c5 7 10 13 17 17
-c-3 10 -7 20 -12 30c-4 -1 -9 -1 -13 -1c-17 0 -34 7 -46 19c-10 10 -16 22 -18 35c-1 8 -2 16 0 24c-10 5 -20 9 -30 12c-4 -7 -10 -12 -17 -17c-11 -8 -24 -12 -37 -12s-26 4 -37 12c-7 5 -13 10 -17 17zM238 384v0c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55
-c10 -10 22 -14 35 -14c7 0 14 1 20 4c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46s14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32
-c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32z" />
- <glyph glyph-name="ion-ios-gear" unicode="&#xf43d;" horiz-adv-x="384"
-d="M352 192c0 -21 14 -39 32 -46c-5 -20 -13 -40 -24 -57c-6 3 -13 4 -20 4c-13 0 -25 -4 -35 -14c-15 -15 -18 -37 -10 -55c-17 -11 -37 -19 -57 -24c-7 18 -25 32 -46 32s-39 -14 -46 -32c-20 5 -40 13 -57 24c8 18 5 40 -10 55c-10 10 -22 14 -35 14c-7 0 -14 -1 -20 -4
-c-11 17 -19 37 -24 57c18 7 32 25 32 46s-13 39 -32 46c5 20 13 40 24 57c6 -3 13 -4 20 -4c13 0 25 4 35 14c15 15 18 37 10 55c17 11 37 19 57 24c7 -19 25 -32 46 -32s39 13 46 32c20 -5 40 -13 57 -24c-8 -18 -5 -40 10 -55c10 -10 22 -14 35 -14c7 0 14 1 20 4
-c11 -17 19 -37 24 -57c-19 -7 -32 -25 -32 -46zM193 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
- <glyph glyph-name="ion-ios-glasses-outline" unicode="&#xf43e;"
-d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24
-c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58zM342 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77zM106 115c42 0 77 35 77 77s-35 77 -77 77s-77 -35 -77 -77s35 -77 77 -77z" />
- <glyph glyph-name="ion-ios-glasses" unicode="&#xf43f;"
-d="M433 201v0h15v-18h-15c-2 -22 -13 -43 -29 -58c-17 -16 -39 -25 -62 -25c-51 0 -92 41 -92 92v0v0c0 10 -12 22 -26 22s-26 -12 -26 -22v0v0c0 -51 -41 -92 -92 -92c-23 0 -45 9 -62 25c-16 15 -27 36 -29 58h-15v18h15c2 22 13 43 29 59c17 16 39 24 62 24
-c42 0 78 -27 89 -67c7 7 18 12 29 12s22 -5 29 -12c11 40 47 67 89 67c23 0 45 -9 62 -25c16 -15 27 -36 29 -58z" />
- <glyph glyph-name="ion-ios-grid-view-outline" unicode="&#xf440;" horiz-adv-x="384"
-d="M384 256h-112v-128h112v-16h-112v-112h-16v112h-128v-112h-16v112h-112v16h112v128h-112v16h112v112h16v-112h128v112h16v-112h112v-16zM256 128v128h-128v-128h128z" />
- <glyph glyph-name="ion-ios-grid-view" unicode="&#xf441;" horiz-adv-x="384"
-d="M128 128v128h128v-128h-128zM0 384h384v-384h-384v384zM352 256v16h-80v80h-16v-80h-128v80h-16v-80h-80v-16h80v-128h-80v-16h80v-80h16v80h128v-80h16v80h80v16h-80v128h80z" />
- <glyph glyph-name="ion-ios-heart-outline" unicode="&#xf442;"
-d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53zM395 157c12 14 22 31 28 49c6 16 9 31 9 46c0 30 -10 56 -29 74
-c-9 8 -20 15 -33 19c-13 5 -28 7 -43 7c-38 0 -73 -18 -89 -45l-14 -23l-14 23c-16 27 -51 45 -89 45c-15 0 -30 -2 -43 -7c-13 -4 -24 -11 -33 -19c-19 -18 -29 -44 -29 -74c0 -15 3 -30 9 -46c6 -18 16 -35 28 -49c27 -32 42 -49 97 -85c40 -27 65 -36 74 -39
-c9 3 34 12 74 39c55 36 70 53 97 85z" />
- <glyph glyph-name="ion-ios-heart" unicode="&#xf443;"
-d="M327 368c69 0 121 -43 121 -116c0 -31 -13 -71 -41 -105s-45 -52 -100 -88s-83 -43 -83 -43s-28 7 -83 43s-72 54 -100 88s-41 74 -41 105c0 73 52 116 121 116c39 0 82 -18 103 -53c21 35 64 53 103 53z" />
- <glyph glyph-name="ion-ios-help-empty" unicode="&#xf444;" horiz-adv-x="128"
-d="M68 82c-9 0 -17 8 -17 17s8 17 17 17s17 -8 17 -17s-8 -17 -17 -17zM102 197c-23 -22 -22 -27 -23 -53h-19c1 28 7 43 30 64c11 10 19 24 19 39c0 24 -19 39 -42 39c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62c33 0 60 -20 60 -54c0 -22 -11 -37 -26 -51z" />
- <glyph glyph-name="ion-ios-help-outline" unicode="&#xf445;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM212 302c33 0 60 -21 60 -55c0 -22 -11 -36 -26 -50c-23 -23 -22 -27 -23 -53h-19
-c1 28 7 43 30 64c11 10 19 23 19 38c0 24 -19 40 -42 40c-32 0 -49 -16 -48 -46h-19c0 42 25 62 68 62zM212 116c9 0 17 -8 17 -17s-8 -17 -17 -17s-17 8 -17 17s8 17 17 17z" />
- <glyph glyph-name="ion-ios-help" unicode="&#xf446;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM212 82c9 0 17 8 17 17s-8 17 -17 17s-17 -8 -17 -17s8 -17 17 -17zM246 197c15 14 26 29 26 51c0 34 -27 54 -60 54c-43 0 -68 -20 -68 -62h19c-1 30 16 46 48 46
-c23 0 42 -15 42 -39c0 -15 -8 -29 -19 -39c-23 -21 -29 -36 -30 -64h19c1 26 0 31 23 53z" />
- <glyph glyph-name="ion-ios-home-outline" unicode="&#xf447;" horiz-adv-x="384"
-d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM336 16v184l-144 116l-144 -116v-184h80v128h128v-128h80zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45zM80 294v42h-32v-67z" />
- <glyph glyph-name="ion-ios-home" unicode="&#xf448;" horiz-adv-x="384"
-d="M192 336l160 -128v-208h-112v128h-96v-128h-112v208zM192 384l192 -153l-12 -12l-180 145l-180 -145l-12 12l32 25v96h64v-45z" />
- <glyph glyph-name="ion-ios-infinite-outline" unicode="&#xf449;"
-d="M419 260c19 -19 29 -43 29 -68s-10 -49 -29 -68c-19 -18 -44 -28 -70 -28s-50 10 -69 28l-126 123c-15 15 -35 22 -56 22s-40 -7 -55 -22c-31 -30 -31 -80 0 -110c15 -15 34 -22 55 -22s41 7 56 22l43 42l13 -14l-42 -41c-19 -18 -44 -28 -70 -28s-50 10 -69 28
-c-19 19 -29 43 -29 68s10 49 29 68c19 18 43 28 69 28s51 -10 70 -28l126 -123c15 -15 34 -22 55 -22s41 7 56 22c31 30 31 80 0 110c-15 15 -35 22 -56 22s-40 -7 -55 -22l-43 -42l-13 14l42 41c19 18 44 28 70 28s50 -10 69 -28z" />
- <glyph glyph-name="ion-ios-infinite" unicode="&#xf44a;" horiz-adv-x="464"
-d="M433 266c20 -20 31 -46 31 -74s-11 -54 -31 -74s-48 -30 -76 -30s-55 10 -75 30l-125 123c-13 13 -32 20 -51 20s-37 -7 -50 -20s-21 -31 -21 -49c0 -19 8 -36 21 -49s31 -20 50 -20s38 7 51 20l39 38l25 -25l-39 -38c-20 -20 -48 -30 -76 -30s-55 10 -75 30
-s-31 46 -31 74s11 54 31 74s47 30 75 30s56 -10 76 -30l125 -123c13 -13 31 -20 50 -20s38 7 51 20s20 31 20 49c0 19 -7 36 -20 49s-32 20 -51 20s-37 -7 -50 -20l-39 -38l-25 25l39 38c20 20 48 30 76 30s55 -10 75 -30z" />
- <glyph glyph-name="ion-ios-information-empty" unicode="&#xf44b;" horiz-adv-x="64"
-d="M8 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM48 104h16v-8h-64v8h16v120h-16v8h48v-128z" />
- <glyph glyph-name="ion-ios-information-outline" unicode="&#xf44c;" horiz-adv-x="416"
-d="M184 276c0 13 7 20 20 20s20 -7 20 -20s-7 -20 -20 -20s-20 7 -20 20zM224 104h16v-8h-64v8h16v120h-16v8h48v-128zM208 400c57 0 106 -20 147 -61s61 -90 61 -147s-20 -106 -61 -147s-90 -61 -147 -61s-106 20 -147 61s-61 90 -61 147s20 106 61 147s90 61 147 61z
-M208 1c53 0 98 19 135 56s56 82 56 135s-19 98 -56 135s-82 56 -135 56s-98 -19 -135 -56s-56 -82 -56 -135s19 -98 56 -135s82 -56 135 -56z" />
- <glyph glyph-name="ion-ios-information" unicode="&#xf44d;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM204 296c-11 0 -20 -9 -20 -20s9 -20 20 -20s20 9 20 20s-9 20 -20 20zM240 96v8h-16v128h-48v-8h16v-120h-16v-8h64z" />
- <glyph glyph-name="ion-ios-ionic-outline" unicode="&#xf44e;" horiz-adv-x="416"
-d="M378 313c24 -34 38 -76 38 -121c0 -115 -92 -208 -207 -208s-209 93 -209 208s94 208 209 208c45 0 86 -14 120 -38c6 5 13 8 21 8c19 0 35 -16 35 -35c0 -8 -2 -16 -7 -22zM350 357c-12 0 -22 -10 -22 -22s10 -22 22 -22s22 10 22 22s-10 22 -22 22zM344 56
-c18 18 31 39 41 62c10 24 15 48 15 74s-5 51 -15 75c-5 13 -12 25 -20 36c-5 -2 -10 -3 -15 -3c-19 0 -35 16 -35 35c0 5 2 11 4 15c-11 8 -23 15 -36 20c-24 10 -49 14 -75 14s-51 -4 -75 -14c-23 -10 -43 -24 -61 -42s-31 -38 -41 -61c-10 -24 -15 -49 -15 -75
-s5 -50 15 -74c10 -23 23 -44 41 -62s38 -31 61 -41c24 -10 49 -15 75 -15s51 5 75 15c23 10 43 23 61 41zM208 288c53 0 96 -43 96 -96s-43 -96 -96 -96s-96 43 -96 96s43 96 96 96zM208 112c44 0 80 36 80 80s-36 80 -80 80s-79 -36 -79 -80s35 -80 79 -80z" />
- <glyph glyph-name="ion-ios-keypad-outline" unicode="&#xf44f;" horiz-adv-x="384"
-d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM331 16c21 0 37 16 37 37s-16 38 -37 38s-38 -17 -38 -38s17 -37 38 -37zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM192 16c21 0 37 16 37 37s-16 38 -37 38
-s-37 -17 -37 -38s16 -37 37 -37zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM53 16c21 0 38 16 38 37s-17 38 -38 38s-37 -17 -37 -38s16 -37 37 -37zM331 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM331 155
-c21 0 37 16 37 37s-16 37 -37 37s-38 -16 -38 -37s17 -37 38 -37zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM192 155c21 0 37 16 37 37s-16 37 -37 37s-37 -16 -37 -37s16 -37 37 -37zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53
-s-53 23 -53 53s23 53 53 53zM53 155c21 0 38 16 38 37s-17 37 -38 37s-37 -16 -37 -37s16 -37 37 -37zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54zM331 368c-21 0 -38 -16 -38 -37s17 -38 38 -38s37 17 37 38s-16 37 -37 37zM192 384
-c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM192 293c21 0 37 17 37 38s-16 37 -37 37s-37 -16 -37 -37s16 -38 37 -38zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53zM53 293c21 0 38 17 38 38s-17 37 -38 37
-s-37 -16 -37 -37s16 -38 37 -38z" />
- <glyph glyph-name="ion-ios-keypad" unicode="&#xf450;" horiz-adv-x="384"
-d="M331 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-54 23 -54 53s24 54 54 54zM192 107c30 0 53 -24 53 -54s-23 -53 -53 -53s-53 23 -53 53s23 54 53 54zM53 107c30 0 54 -24 54 -54s-24 -53 -54 -53s-53 23 -53 53s23 54 53 54zM331 245c30 0 53 -23 53 -53
-s-23 -53 -53 -53s-54 23 -54 53s24 53 54 53zM192 245c30 0 53 -23 53 -53s-23 -53 -53 -53s-53 23 -53 53s23 53 53 53zM53 245c30 0 54 -23 54 -53s-24 -53 -54 -53s-53 23 -53 53s23 53 53 53zM331 277c-30 0 -54 24 -54 54s24 53 54 53s53 -23 53 -53s-23 -54 -53 -54z
-M192 384c30 0 53 -23 53 -53s-23 -54 -53 -54s-53 24 -53 54s23 53 53 53zM53 384c30 0 54 -23 54 -53s-24 -54 -54 -54s-53 24 -53 54s23 53 53 53z" />
- <glyph glyph-name="ion-ios-lightbulb-outline" unicode="&#xf451;" horiz-adv-x="288"
-d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-128v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141zM239 194l6 8c16 22 27 47 27 73c0 33 -16 65 -40 89s-55 36 -88 36
-s-64 -12 -88 -36s-40 -56 -40 -89c0 -26 11 -51 27 -73l19 -26v0c5 -6 9 -13 13 -21c17 -29 21 -58 21 -75h16v112l-32 64h17l31 -64v-112h32v112l31 64h17l-32 -64v-112h16c0 17 4 45 21 75c8 14 16 25 24 36c1 1 1 2 2 3zM112 -32v16h64v-16h-64zM96 0v16h96v-16h-96z
-M96 32v16h96v-16h-96z" />
- <glyph glyph-name="ion-ios-lightbulb" unicode="&#xf452;" horiz-adv-x="288"
-d="M288 275c0 -31 -13 -59 -30 -83v0c-11 -15 -22 -28 -32 -45c-22 -38 -18 -73 -18 -82v-1h-32v128l32 64h-16l-32 -64v-128h-32v128l-31 64h-17l32 -64v-128h-32v1c0 7 3 44 -19 82c-10 17 -20 30 -31 45v0c-17 24 -30 52 -30 83c0 78 66 141 144 141s144 -63 144 -141z
-M112 -32v16h64v-16h-64zM96 0v16h96v-16h-96zM96 32v16h96v-16h-96z" />
- <glyph glyph-name="ion-ios-list-outline" unicode="&#xf453;" horiz-adv-x="384"
-d="M368 368h-352v-352h352v352zM384 384v0v-384h-384v384h384zM128 280v16h192v-16h-192zM128 184v16h192v-16h-192zM128 88v16h192v-16h-192zM64 288c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM64 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16
-s-16 5 -16 16zM64 96c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" />
- <glyph glyph-name="ion-ios-list" unicode="&#xf454;" horiz-adv-x="384"
-d="M0 384h384v-384h-384v384zM80 80c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 176c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM80 272c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM320 88v16h-192v-16h192zM320 184v16
-h-192v-16h192zM320 280v16h-192v-16h192z" />
- <glyph glyph-name="ion-ios-location-outline" unicode="&#xf455;" horiz-adv-x="288"
-d="M144 400c-34 0 -67 -13 -91 -37s-37 -57 -37 -91c0 -43 24 -107 70 -186c22 -38 44 -72 58 -91c14 19 36 53 58 91c46 79 70 143 70 186c0 34 -13 67 -37 91s-57 37 -91 37zM144 416v0c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304
-c0 80 64 144 144 144zM144 336c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
- <glyph glyph-name="ion-ios-location" unicode="&#xf456;" horiz-adv-x="288"
-d="M144 416c80 0 144 -64 144 -144c0 -112 -144 -304 -144 -304s-144 192 -144 304c0 80 64 144 144 144zM144 225c26 0 47 21 47 47s-21 47 -47 47s-47 -21 -47 -47s21 -47 47 -47z" />
- <glyph glyph-name="ion-ios-locked-outline" unicode="&#xf457;" horiz-adv-x="320"
-d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM72 296v-72h176v72c0 49 -39 88 -88 88s-88 -39 -88 -88zM304 0v208h-288v-208h288zM160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32z
-M160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
- <glyph glyph-name="ion-ios-locked" unicode="&#xf458;" horiz-adv-x="320"
-d="M264 224h56v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32c0 -15 10 -27 24 -31v-33h16v33zM248 224v72c0 49 -39 88 -88 88s-88 -39 -88 -88v-72h176zM160 144c9 0 16 -7 16 -16
-s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16z" />
- <glyph glyph-name="ion-ios-loop-strong" unicode="&#xf459;" horiz-adv-x="512"
-d="M256 400c115 0 208 -93 208 -208c0 -14 -1 -28 -4 -42l-1 -4l-24 5l1 4c2 12 4 24 4 37c0 101 -83 184 -184 184c-66 0 -127 -36 -160 -94l-2 -3l-21 11l2 4c37 65 106 106 181 106zM416 102l2 3l21 -11l-2 -4c-37 -65 -106 -106 -181 -106c-115 0 -208 93 -208 208
-c0 14 1 28 4 42l1 4l24 -5l-1 -4c-2 -12 -4 -24 -4 -37c0 -101 83 -184 184 -184c66 0 127 36 160 94zM384 192h128l-64 -64zM0 192l64 64l64 -64h-128z" />
- <glyph glyph-name="ion-ios-loop" unicode="&#xf45a;" horiz-adv-x="489"
-d="M478 192l11 -11l-52 -53l-53 53l10 11l43 -41zM449 192v0v0c0 -7 0 -14 -1 -21l-16 1c1 7 1 14 1 21c-1 103 -85 187 -188 187c-68 0 -131 -37 -164 -96l-14 8c36 64 104 104 178 104c112 0 203 -91 204 -202v0v-2zM409 100l14 -8c-36 -64 -104 -104 -178 -104
-c-111 0 -202 90 -204 200v0v3v1v0c0 7 0 14 1 21l16 -1c-1 -7 -1 -14 -1 -21c0 -103 85 -187 188 -187c68 0 131 37 164 96zM53 256l52 -53l-11 -11l-41 41l-42 -41l-11 11z" />
- <glyph glyph-name="ion-ios-medical-outline" unicode="&#xf45b;" horiz-adv-x="364"
-d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69zM342 118l-128 74l128 74l-16 28l-128 -74v148h-32v-148l-128 74l-16 -28l128 -74l-128 -74l16 -28l128 74v-148h32v148l128 -74z" />
- <glyph glyph-name="ion-ios-medical" unicode="&#xf45c;" horiz-adv-x="364"
-d="M364 260l-118 -68l118 -68l-32 -56l-118 69v-137h-64v137l-118 -69l-32 56l118 68l-118 68l32 56l118 -69v137h64v-137l118 69z" />
- <glyph glyph-name="ion-ios-medkit-outline" unicode="&#xf45d;" horiz-adv-x="416"
-d="M224 240h-32v-48v-16h-16h-48v-32h48h16v-16v-48h32v48v16h16h48v32h-48h-16v16v48zM240 256v0v-64h64v-64h-64v-64h-64v64h-64v64h64v64h64zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97
-c-11 0 -14 -8 -14 -18zM400 16v288h-384v-288h384z" />
- <glyph glyph-name="ion-ios-medkit" unicode="&#xf45e;" horiz-adv-x="416"
-d="M224 176h16h48v-32h-48h-16v-16v-48h-32v48v16h-16h-48v32h48h16v16v48h32v-48v-16zM288 320h128v-320h-416v320h128v32c0 18 10 32 29 32h99c19 0 32 -14 32 -32v-32zM144 350v-30h128v30c0 10 -7 18 -17 18h-97c-11 0 -14 -8 -14 -18zM304 128v64h-64v64h-64v-64h-64
-v-64h64v-64h64v64h64z" />
- <glyph glyph-name="ion-ios-mic-off" unicode="&#xf45f;" horiz-adv-x="280"
-d="M266 -32l-258 440l14 8l258 -440zM128 95c-44 0 -79 37 -79 83v118l113 -193c-10 -5 -22 -8 -34 -8zM207 178c0 -10 -2 -19 -5 -28l-136 234c14 20 37 32 62 32c44 0 79 -38 79 -84v-154zM256 176c0 -28 -9 -54 -24 -75l-10 17c11 17 17 36 17 58v80h17v-80zM139 49v0
-v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109c17 0 34 4 48 11l9 -16c-14 -7 -30 -12 -47 -13z" />
- <glyph glyph-name="ion-ios-mic-outline" unicode="&#xf460;" horiz-adv-x="256"
-d="M128 416c44 0 79 -38 79 -84v-154c0 -46 -35 -84 -79 -84s-79 38 -79 84v154c0 46 35 84 79 84zM191 178v154c0 37 -28 68 -63 68s-63 -31 -63 -68v-154c0 -37 28 -68 63 -68s63 31 63 68zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63
-c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" />
- <glyph glyph-name="ion-ios-mic" unicode="&#xf461;" horiz-adv-x="256"
-d="M128 94c-44 0 -79 38 -79 84v154c0 46 35 84 79 84s79 -38 79 -84v-154c0 -46 -35 -84 -79 -84zM239 256h17v-80c0 -67 -51 -122 -117 -127v-63h69v-18h-161v18h73v63c-67 5 -120 60 -120 127v80h19v-80c0 -60 50 -109 110 -109s110 49 110 109v80z" />
- <glyph glyph-name="ion-ios-minus-empty" unicode="&#xf462;" horiz-adv-x="256"
-d="M256 183h-256v17h256v-17z" />
- <glyph glyph-name="ion-ios-minus-outline" unicode="&#xf463;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM80 183v17h256v-17h-256z" />
- <glyph glyph-name="ion-ios-minus" unicode="&#xf464;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-256v-17h256z" />
- <glyph glyph-name="ion-ios-monitor-outline" unicode="&#xf465;" horiz-adv-x="480"
-d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448z" />
- <glyph glyph-name="ion-ios-monitor" unicode="&#xf466;" horiz-adv-x="480"
-d="M480 64h-176v-16h64v-16h-257v16h64v16h-175v288h480v-288zM16 336v-256h448v256h-448zM32 96v224h416v-224h-416z" />
- <glyph glyph-name="ion-ios-moon-outline" unicode="&#xf467;" horiz-adv-x="216"
-d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5zM116 93c25 0 48 9 65 24c-65 5 -116 59 -116 125
-c0 14 2 28 6 40c-33 -16 -55 -51 -55 -90c0 -55 45 -99 100 -99z" />
- <glyph glyph-name="ion-ios-moon" unicode="&#xf468;" horiz-adv-x="216"
-d="M195 133c7 0 14 1 21 3c-4 -7 -7 -12 -12 -18c-21 -25 -53 -41 -88 -41c-64 0 -116 51 -116 115c0 52 34 96 81 111c7 2 14 3 22 4c-4 -6 -8 -12 -11 -18c-7 -14 -11 -30 -11 -47c0 -29 11 -56 32 -77s48 -32 77 -32h5z" />
- <glyph glyph-name="ion-ios-more-outline" unicode="&#xf469;" horiz-adv-x="320"
-d="M160 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32
-s-32 14 -32 32s14 32 32 32zM288 210c-10 0 -18 -8 -18 -18s8 -18 18 -18s18 8 18 18s-8 18 -18 18zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" />
- <glyph glyph-name="ion-ios-more" unicode="&#xf46a;" horiz-adv-x="320"
-d="M160 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM32 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM288 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32z" />
- <glyph glyph-name="ion-ios-musical-note" unicode="&#xf46b;" horiz-adv-x="192"
-d="M192 346v-1v-65c0 -3 -3 -6 -6 -5v0l-73 13v-192c0 -33 1 -80 -51 -82c-48 -2 -62 16 -62 41c0 19 9 39 51 41c22 1 37 1 45 1v273l90 -19l2 -1c2 0 3 -1 4 -3v0v-1v0z" />
- <glyph glyph-name="ion-ios-musical-notes" unicode="&#xf46c;" horiz-adv-x="320"
-d="M320 128c0 -34 4 -80 -49 -82c-49 -2 -62 16 -62 41c0 20 9 39 52 41c23 1 34 2 43 2v160l-191 -32v-161c0 -34 3 -81 -50 -83c-49 -2 -63 17 -63 42c0 20 9 39 52 41c23 1 35 1 44 1v237l224 35v-242z" />
- <glyph glyph-name="ion-ios-navigate-outline" unicode="&#xf46d;" horiz-adv-x="416"
-d="M208 384c-51 0 -99 -21 -135 -57s-57 -84 -57 -135s21 -99 57 -135s84 -57 135 -57s99 21 135 57s57 84 57 135s-21 99 -57 135s-84 57 -135 57zM208 400v0c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM304 288l-96 -224v128h-128z" />
- <glyph glyph-name="ion-ios-navigate" unicode="&#xf46e;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64l96 224l-224 -96h128v-128z" />
- <glyph glyph-name="ion-ios-nutrition-outline" unicode="&#xf46f;" horiz-adv-x="384"
-d="M294 214v0c6 -6 10 -14 10 -23c0 -11 -5 -20 -13 -26v0s-51 -37 -106 -77l-38 31c-2 2 -4 3 -6 3c-1 0 -2 0 -3 -1v0c-2 -2 -2 -6 1 -10l29 -35l-115 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 1 13 4 18v0c2 2 17 25 37 57l21 -17c2 -2 4 -2 6 -2c1 0 3 0 4 1v0
-c2 2 1 6 -2 10l-19 23c27 43 60 96 84 134l36 -30c2 -2 4 -3 6 -3c1 0 2 1 3 2v0c2 2 2 5 -1 9l-33 40c11 18 19 29 19 29v0c6 10 15 16 27 16c9 0 18 -4 24 -10v0l78 -79v0v0zM282 178c4 3 6 8 6 13c0 4 -2 9 -5 12l-5 4v1l-69 69v0l-5 5c-3 3 -8 5 -12 5
-c-6 0 -10 -3 -13 -8l-5 -8c-2 -3 -5 -7 -8 -12l25 -30v0l1 -1c8 -10 8 -22 0 -30l-1 -1l-1 -1c-4 -3 -8 -5 -13 -5s-11 2 -16 6v1h-1l-21 18l-24 -39l-44 -70l12 -14v0v0c8 -10 8 -23 0 -31v0c-4 -4 -9 -6 -15 -6c-5 0 -11 2 -16 6v0v0l-7 5c-3 -5 -5 -9 -8 -13
-c-12 -19 -16 -26 -18 -29c-1 -3 -2 -6 -2 -9c0 -9 7 -16 16 -16c3 0 6 2 11 5l101 74l-18 22h-1v0c-8 10 -8 23 0 31v0v0v0c4 4 10 6 15 6s11 -2 16 -6v0h1l28 -24c49 36 93 68 96 70zM376 333l8 -14l-5 -3l-103 -60l-17 17l71 123l2 4l14 -8l-3 -4l-63 -111l91 53z" />
- <glyph glyph-name="ion-ios-nutrition" unicode="&#xf470;" horiz-adv-x="384"
-d="M295 214v0c6 -6 9 -13 9 -22c0 -11 -5 -20 -13 -26v0s-51 -38 -106 -78l-38 32c-4 3 -8 3 -10 1v0c-2 -2 -2 -6 1 -10l29 -35l-114 -84c-6 -4 -13 -8 -21 -8c-18 0 -32 14 -32 32c0 7 2 13 5 18v0c1 2 16 25 36 57l20 -17c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-20 23
-c27 43 60 96 84 134l36 -30c4 -3 8 -3 10 -1v0c2 2 2 6 -1 10l-33 40c11 18 18 29 18 29v0c6 10 16 16 28 16c9 0 18 -4 24 -10v0l78 -79l1 -1v0zM384 309l-103 -59l-28 29l70 121l28 -16l-50 -85l67 38z" />
- <glyph glyph-name="ion-ios-paper-outline" unicode="&#xf471;" horiz-adv-x="384"
-d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-16h-16v-289c0 -8 7 -15 15 -15h322c8 0 15 7 15 15v337h-304v-320h-16v320v16zM96 320v16h128v-16h-128zM96 240v16h240v-16h-240zM96 160v16h192v-16h-192zM96 80v16h240v-16h-240z" />
- <glyph glyph-name="ion-ios-paper" unicode="&#xf472;" horiz-adv-x="384"
-d="M48 384h336v-353c0 -17 -14 -31 -31 -31h-322c-17 0 -31 14 -31 31v305h32v-288h16v288v32v16zM96 336v-16h128v16h-128zM96 176v-16h192v16h-192zM336 80v16h-240v-16h240zM336 240v16h-240v-16h240z" />
- <glyph glyph-name="ion-ios-paperplane-outline" unicode="&#xf473;" horiz-adv-x="320"
-d="M0 198l320 154l-146 -320l-57 115zM132 152l41 -83l115 249zM286 320l-248 -121l83 -36z" />
- <glyph glyph-name="ion-ios-paperplane" unicode="&#xf474;" horiz-adv-x="320"
-d="M0 198l320 154l-214 -200zM320 352l-146 -320l-52 104z" />
- <glyph glyph-name="ion-ios-partlysunny-outline" unicode="&#xf475;" horiz-adv-x="384"
-d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM129 153c-4 -3 -8 -7 -12 -12c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 40 -10 53 -25c-4 -2 -9 -4 -14 -8
-c-10 11 -23 17 -39 17c-30 0 -55 -25 -55 -55c0 -23 15 -43 35 -51zM235 208c-34 0 -63 -28 -63 -62v-12s1 -10 1 -10c-5 0 -12 -1 -14 -1c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h157c27 0 49 22 49 49s-22 50 -49 50c-2 0 -4 -1 -6 -1l-14 -2l-3 14
-c-3 14 -11 26 -22 35s-25 14 -39 14zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78z" />
- <glyph glyph-name="ion-ios-partlysunny" unicode="&#xf476;" horiz-adv-x="384"
-d="M144 298v54h16v-54h-16zM0 192v16h55v-16h-55zM44 299l10 11l32 -32l-11 -11zM223 268l-11 11l32 32l11 -11zM56 96l-10 11l31 31l11 -11zM235 224v0c37 0 68 -26 76 -61h8c36 0 65 -29 65 -65s-29 -66 -65 -66h-157c-28 0 -52 24 -52 53c0 27 21 51 47 53v8
-c0 43 35 78 78 78zM201 252l1 -2v0c-31 -5 -62 -43 -62 -75c0 -2 1 -5 1 -7l-1 -1h-1c-11 -6 -18 -14 -22 -26v1v-1c-23 12 -39 36 -39 63c0 39 32 71 71 71c21 0 39 -9 52 -23z" />
- <glyph glyph-name="ion-ios-pause-outline" unicode="&#xf477;" horiz-adv-x="256"
-d="M63 336h-47v-288h47v288zM79 352v0v-320h-79v320h79zM240 336h-47v-288h47v288zM256 352v0v-320h-79v320h79z" />
- <glyph glyph-name="ion-ios-pause" unicode="&#xf478;" horiz-adv-x="256"
-d="M0 32v320h79v-320h-79zM177 32v320h79v-320h-79z" />
- <glyph glyph-name="ion-ios-paw-outline" unicode="&#xf479;" horiz-adv-x="384"
-d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM362 202c6 15 7 31 2 44c-2 5 -5 12 -12 15c-2 1 -4 2 -7 2c-13 0 -28 -15 -36 -36c-9 -25 -6 -50 8 -56
-c2 -1 5 -1 8 -1c14 0 29 13 37 32zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25c4 2 9 3 14 3c20 0 41 -18 51 -46zM67 171c14 6 17 31 8 56c-8 21 -23 36 -36 36c-3 0 -5 -1 -7 -2c-7 -3 -10 -10 -12 -15
-c-5 -13 -4 -29 2 -44c8 -19 23 -32 37 -32c3 0 6 0 8 1zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM107 356c-10 -12 -14 -29 -12 -48c3 -29 21 -53 40 -54h3
-c6 1 12 4 17 10c10 12 12 31 10 51c-3 29 -17 52 -35 53h-3c-9 -1 -16 -7 -20 -12zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12
-c-11 7 -22 25 -22 47c0 73 64 149 128 149zM290 27c6 4 14 16 14 32c0 30 -14 64 -36 91c-11 13 -23 24 -36 31c-13 8 -27 11 -40 11s-27 -3 -40 -11c-13 -7 -25 -18 -36 -31c-22 -27 -36 -61 -36 -91c0 -16 8 -28 14 -32c11 -7 18 -10 34 -10c14 0 19 4 26 9c2 1 4 3 6 4
-c9 6 18 12 32 12s23 -6 32 -12c2 -1 4 -3 6 -4c7 -5 12 -9 26 -9c16 0 23 3 34 10zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60c-4 -37 -28 -67 -56 -68h-6zM219 315c-2 -20 0 -39 10 -51
-c5 -6 11 -9 17 -10h3c19 1 38 25 41 54c2 19 -3 36 -13 48c-4 5 -10 11 -19 12h-4c-18 -1 -32 -24 -35 -53z" />
- <glyph glyph-name="ion-ios-paw" unicode="&#xf47a;" horiz-adv-x="384"
-d="M380 252c6 -17 5 -38 -3 -57c-10 -25 -31 -43 -51 -43c-5 0 -10 1 -15 3c-22 10 -30 45 -17 79c10 28 31 46 51 46c5 0 10 -1 14 -3c10 -4 17 -13 21 -25zM90 234c13 -34 5 -69 -17 -79c-5 -2 -10 -3 -15 -3c-20 0 -41 18 -51 43c-8 19 -9 40 -3 57c4 12 11 21 21 25
-c4 2 9 3 14 3c20 0 41 -18 51 -46zM134 237c-28 1 -52 32 -56 69c-2 23 4 45 16 60c8 10 19 17 31 18h6c27 -1 46 -29 50 -67c3 -24 -1 -48 -13 -63c-8 -9 -17 -15 -28 -16c-2 0 -4 -1 -6 -1zM192 208c64 0 128 -76 128 -149c0 -22 -11 -40 -22 -47c-13 -9 -23 -12 -42 -12
-c-23 0 -29 8 -40 15c-8 5 -14 10 -24 10s-16 -5 -24 -10c-11 -7 -17 -15 -40 -15c-19 0 -29 3 -42 12c-11 7 -22 25 -22 47c0 73 64 149 128 149zM244 238c-11 1 -20 7 -28 16c-12 15 -16 39 -13 63c4 38 23 66 50 67h7c12 -1 22 -8 30 -18c12 -15 18 -37 16 -60
-c-4 -37 -28 -67 -56 -68h-6z" />
- <glyph glyph-name="ion-ios-people-outline" unicode="&#xf47b;"
-d="M224 336v0v0zM317 113c11 -4 -11 4 0 0c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39
-c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM115 84c-6 -6 9 10 0 0c-6 -6 -10 -12 -12 -20h4
-h238c-4 15 -17 27 -30 33s-28 4 -41 9s-25 9 -28 25c-2 11 -2 22 -2 33c0 2 7 7 8 9c3 5 4 11 5 17c1 5 0 12 4 15c5 4 7 7 9 13c2 8 3 12 -1 19c-3 5 0 8 1 13c3 11 4 24 2 36c-8 37 -62 45 -86 19c-12 -13 -12 -31 -9 -47c1 -6 6 -14 3 -19c-1 -3 -5 -6 -4 -10
-c2 -5 2 -11 4 -16c2 -4 4 -6 7 -8s3 -6 3 -9c1 -7 2 -17 6 -23c3 -4 8 -6 8 -11v-21c-1 -8 -2 -18 -8 -24c-7 -6 -18 -10 -27 -12c-11 -3 -23 -3 -33 -7c-8 -3 -15 -8 -21 -14zM112 126c-15 -7 9 4 0 0c-9 -5 -18 -11 -25 -19c-1 -2 -6 -11 -7 -11h-25h-55c0 20 13 34 31 40
-c6 2 27 4 30 11c2 5 0 11 0 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12l3 12c1 9 1 19 1 28c0 16 -1 34 8 48c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7
-c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-8 -1 -15 -1 -22 -5zM71 112c6 10 16 18 26 24c-9 9 -5 26 -4 37c0 2 0 5 2 5h8c6 0 11 1 17 2c-7 23 0 47 -5 70c-3 16 -15 23 -31 23c-17 0 -27 -9 -30 -25c-4 -22 3 -46 -4 -68c9 -1 17 -2 26 -2c1 0 1 -28 1 -29
-c-1 -12 -8 -18 -19 -22c-12 -4 -29 -3 -36 -15h49zM368 96c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44
-c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10c18 -6 31 -20 31 -40h-80zM367 123c4 -4 -5 5 0 0s8 -11 15 -11h16h28c-7 12 -26 11 -38 16c-11 4 -16 12 -17 24c0 2 -1 27 1 27c9 0 18 0 26 1
-c-7 23 1 47 -4 70c-3 15 -15 23 -30 23c-17 0 -28 -8 -31 -25c-4 -23 2 -46 -5 -68c6 -2 12 -2 18 -2s8 1 9 -5c1 -11 5 -28 -4 -37c6 -4 11 -8 16 -13z" />
- <glyph glyph-name="ion-ios-people" unicode="&#xf47c;"
-d="M317 113c11 -4 -11 4 0 0v0zM317 113c28 -10 46 -35 46 -65h-28h-250c0 22 9 42 27 55c15 11 31 12 49 16c7 1 24 5 26 13s1 15 1 23c0 3 0 3 -2 5c-4 4 -6 9 -8 14c-2 8 -3 16 -4 24c-9 -2 -10 16 -12 21c-1 4 -7 24 3 21c-3 5 -4 13 -5 19c-2 13 -2 26 3 39
-c10 26 37 39 64 38c26 -1 51 -16 59 -42c4 -12 3 -26 1 -39c-1 -5 -2 -11 -4 -15c10 3 4 -20 3 -23c-2 -5 -3 -21 -12 -19c-1 -10 -2 -22 -7 -31c-1 -2 -7 -8 -7 -10v-11c0 -5 0 -10 2 -15s10 -7 14 -8c14 -5 27 -5 41 -10zM111 126h2h-1h-1zM111 126c-9 -5 -17 -11 -24 -19
-c-1 -2 -6 -11 -7 -11h-25h-55c0 20 12 34 30 40c6 2 27 4 30 11c2 5 1 11 1 16c-10 -1 -24 1 -32 7c-2 2 3 9 4 12c1 4 2 7 3 11c1 9 1 19 1 28c0 16 -1 35 8 49c8 13 23 18 38 18c24 0 43 -13 47 -37c3 -16 1 -32 2 -48c0 -8 2 -16 5 -24c1 -2 5 -7 3 -9l-6 -3
-c-5 -2 -11 -3 -17 -4c-1 0 -8 0 -9 -1s0 -9 0 -11c0 -4 1 -6 5 -7c6 -2 19 -3 23 -8c2 -3 1 -5 -2 -5c-7 -1 -14 -2 -21 -5c2 1 2 2 -1 0c-8 -4 -4 -2 -1 0zM417 136c18 -6 31 -20 31 -40h-80c-2 8 -10 14 -16 19c-8 6 -18 13 -28 15c-3 1 -16 -1 -13 5c2 4 9 5 13 6
-s15 2 16 7c0 1 1 14 0 14c-6 0 -12 1 -18 2c-4 1 -7 2 -11 4c-6 3 -2 6 0 11c14 32 -10 88 32 105c15 6 34 5 48 -3c15 -9 20 -27 20 -44c0 -20 -4 -44 7 -62c2 -3 4 -4 0 -6c-2 -1 -4 -1 -6 -2l-12 -3s-9 -1 -13 -1c0 -4 -2 -13 1 -17c6 -7 21 -7 29 -10z" />
- <glyph glyph-name="ion-ios-person-outline" unicode="&#xf47d;" horiz-adv-x="320"
-d="M106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10
-c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4
-c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8
-s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" />
- <glyph glyph-name="ion-ios-person" unicode="&#xf47e;" horiz-adv-x="320"
-d="M267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10
-c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" />
- <glyph glyph-name="ion-ios-personadd-outline" unicode="&#xf47f;" horiz-adv-x="320"
-d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM106 246v0v0zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68
-s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9zM160 48v0h137c-2 3 -4 6 -8 8c-7 5 -16 9 -27 13c-7 2 -17 4 -26 5c-6 1 -10 2 -15 3
-c-3 1 -21 5 -29 15c-4 5 -6 12 -6 32c0 10 1 20 1 20v4l2 4c1 2 6 9 8 15c2 5 5 19 6 28c0 0 0 -1 1 4s8 4 9 8s3 7 5 18s-5 12 -5 17c0 4 1 5 1 5v0c0 1 4 14 4 38c0 13 -5 26 -14 35c-11 11 -25 16 -44 16c-18 0 -34 -5 -45 -16c-9 -9 -13 -22 -13 -35c1 -24 4 -37 4 -38
-v0s1 -3 0 -6c-1 -5 -6 -5 -4 -16s4 -14 5 -18s8 -3 9 -8s1 -4 1 -4c1 -9 4 -23 6 -28c2 -6 6 -13 8 -15l2 -4v-4s1 -10 1 -20c0 -20 -2 -27 -6 -32c-8 -10 -26 -14 -29 -15c-5 -1 -10 -2 -16 -3c-9 -1 -18 -3 -25 -5c-11 -4 -20 -8 -27 -13c-4 -2 -6 -5 -8 -8h137z" />
- <glyph glyph-name="ion-ios-personadd" unicode="&#xf480;" horiz-adv-x="320"
-d="M320 295v-14h-25v-25h-14v25h-25v14h25v25h14v-25h25zM267 84c13 -5 53 -20 53 -52h-160h-160c0 32 40 47 53 52s31 6 43 9c7 2 17 5 20 9s1 41 1 41s-6 10 -9 18s-7 32 -7 32s-7 0 -9 12c-2 13 -6 17 -6 27c0 9 5 10 5 10v0s-4 13 -5 42c-1 34 25 68 74 68
-s75 -34 74 -68c-1 -29 -5 -42 -5 -42v0s5 -1 5 -10c0 -10 -3 -15 -6 -28c-2 -12 -9 -12 -9 -12s-4 -23 -7 -31s-9 -18 -9 -18s-2 -37 1 -41s13 -7 20 -9c12 -3 30 -4 43 -9z" />
- <glyph glyph-name="ion-ios-photos-outline" unicode="&#xf481;"
-d="M64 320h384v-320h-384v320zM432 16v288h-352v-288h352zM0 384h384v-48h-16v32h-352v-288h32v-16h-48v320z" />
- <glyph glyph-name="ion-ios-photos" unicode="&#xf482;"
-d="M64 320h384v-320h-384v320zM384 384v-48h-336v-272h-48v320h384z" />
- <glyph glyph-name="ion-ios-pie-outline" unicode="&#xf483;"
-d="M256 367v0v-207v-12l-12 -4l-180 -45c6 -13 13 -25 21 -36c12 -16 25 -30 41 -42c33 -24 73 -37 114 -37c26 0 51 5 75 15c23 10 43 23 61 41s31 38 41 61c10 24 15 49 15 75c0 51 -20 100 -56 136c-32 32 -75 51 -120 55zM240 384v0c115 0 208 -93 208 -208
-s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM208 400c-31 -1 -60 -7 -85 -18c-24 -11 -44 -26 -61 -46c-29 -34 -46 -80 -46 -127v0v0c0 -13 3 -46 12 -70l180 46v215zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
- <glyph glyph-name="ion-ios-pie" unicode="&#xf484;"
-d="M240 384v0c115 0 208 -93 208 -208s-93 -208 -208 -208c-92 0 -171 60 -198 143l198 49v224zM224 416v0v-244l-205 -52c-19 32 -19 89 -19 89c0 91 58 207 218 207h6z" />
- <glyph glyph-name="ion-ios-pint-outline" unicode="&#xf485;" horiz-adv-x="224"
-d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190
-c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2zM191 -15c0 1 1 5 1 13c0 11 -4 23 -7 37c-4 18 -9 39 -9 62c0 41 8 64 16 86c8 23 16 46 16 95c0 9 -1 18 -1 26h-190c0 -8 -1 -17 -1 -26c0 -49 8 -72 16 -95
-c8 -22 16 -45 16 -86c0 -23 -5 -44 -9 -62c-3 -14 -7 -26 -7 -37c0 -8 1 -12 1 -13c2 -1 7 -1 15 -1h128c8 0 13 0 15 1z" />
- <glyph glyph-name="ion-ios-pint" unicode="&#xf486;" horiz-adv-x="224"
-d="M224 278c0 -98 -32 -101 -32 -181c0 -40 16 -71 16 -99c0 -27 -9 -30 -32 -30h-128c-23 0 -32 2 -32 29c0 28 16 60 16 100c0 80 -32 83 -32 181c0 21 1 89 19 125c4 9 13 13 32 13h122c19 0 28 -4 32 -13c18 -36 19 -104 19 -125zM34 396c-8 -16 -14 -43 -17 -76h190
-c-3 33 -9 60 -17 76c-1 2 -1 1 -2 2c-2 1 -6 2 -15 2h-122c-9 0 -13 -1 -15 -2c-1 -1 -1 0 -2 -2z" />
- <glyph glyph-name="ion-ios-play-outline" unicode="&#xf487;" horiz-adv-x="256"
-d="M16 323v-262l210 131zM0 352v0l256 -160l-256 -160v320z" />
- <glyph glyph-name="ion-ios-play" unicode="&#xf488;" horiz-adv-x="256"
-d="M0 352v0l256 -160l-256 -160v320z" />
- <glyph glyph-name="ion-ios-plus-empty" unicode="&#xf489;" horiz-adv-x="256"
-d="M256 183h-120v-119h-17v119h-119v17h119v120h17v-120h120v-17z" />
- <glyph glyph-name="ion-ios-plus-outline" unicode="&#xf48a;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191zM216 320v-120h120v-17h-120v-119h-17v119h-119v17h119v120h17z" />
- <glyph glyph-name="ion-ios-plus" unicode="&#xf48b;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM336 183v17h-120v120h-17v-120h-119v-17h119v-119h17v119h120z" />
- <glyph glyph-name="ion-ios-pricetag-outline" unicode="&#xf48c;" horiz-adv-x="416"
-d="M416 416v-160l-256 -288l-160 160l256 288h160zM400 264v136h-136l-240 -272l136 -136zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
- <glyph glyph-name="ion-ios-pricetag" unicode="&#xf48d;" horiz-adv-x="416"
-d="M304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM256 416h160v-160l-256 -288l-160 160zM320 288c9 0 16 4 22 10s10 13 10 22s-4 16 -10 22s-13 10 -22 10s-16 -4 -22 -10s-10 -13 -10 -22s4 -16 10 -22s13 -10 22 -10z" />
- <glyph glyph-name="ion-ios-pricetags-outline" unicode="&#xf48e;"
-d="M416 384h32v-144l-240 -272l-25 24l-23 -24l-160 160l256 288h160v-32zM160 -9l12 12l11 12l217 248v105v16v16h-137l-241 -272zM432 247v121h-16v-112l-221 -253l13 -12zM320 288c-18 0 -32 14 -32 32s14 32 32 32s32 -14 32 -32s-14 -32 -32 -32zM320 336
-c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
- <glyph glyph-name="ion-ios-pricetags" unicode="&#xf48f;"
-d="M432 384h16v-144l-240 -272l-13 13l237 266v137zM256 416h160v-32v-16v-112l-221 -253l-12 -11l-23 -24l-160 160zM320 288c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM304 320c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16z" />
- <glyph glyph-name="ion-ios-printer-outline" unicode="&#xf490;" horiz-adv-x="416"
-d="M384 336c18 0 32 -13 32 -31v-159c0 -18 -14 -32 -32 -32h-48v-114h-256v114h-48c-18 0 -32 14 -32 32v159c0 18 14 31 32 31h32v48h288v-48h32zM80 368v-32h256v32h-256zM320 16v192h-224v-192h224zM400 146v159c0 9 -7 15 -16 15v0h-352c-9 0 -16 -6 -16 -15v-159
-c0 -9 7 -16 16 -16h48v94h256v-94h48c9 0 16 7 16 16z" />
- <glyph glyph-name="ion-ios-printer" unicode="&#xf491;" horiz-adv-x="416"
-d="M80 0v224h256v-224h-256zM80 -0v224h256v-224h-256zM64 352v32h288v-32h-288zM385 336c18 0 31 -14 31 -31v-158c0 -17 -13 -34 -31 -34h-33v126h-288v-126h-31c-18 0 -33 17 -33 34v158c0 17 15 31 33 31h352z" />
- <glyph glyph-name="ion-ios-pulse-strong" unicode="&#xf492;" horiz-adv-x="480"
-d="M432 175c27 0 48 -20 48 -47s-21 -49 -48 -49c-21 0 -38 13 -45 31h-51c-7 0 -13 4 -15 11l-16 47l-50 -173c-2 -7 -8 -11 -15 -11h-1c-7 0 -14 5 -15 12l-51 308l-45 -182c-2 -7 -9 -12 -16 -12h-112v32h99l61 245c2 7 8 13 16 13s15 -7 16 -14l52 -314l45 155
-c2 7 8 11 15 11v0c7 0 13 -4 15 -11l29 -85h38c6 19 25 33 46 33z" />
- <glyph glyph-name="ion-ios-pulse" unicode="&#xf493;"
-d="M416 160c18 0 32 -14 32 -32s-14 -32 -32 -32c-15 0 -27 10 -31 23h-65c-3 0 -7 2 -8 5l-23 72l-57 -198c-1 -3 -4 -6 -8 -6v0c-4 0 -7 3 -8 7l-58 346l-54 -220c-1 -4 -4 -6 -8 -6h-96v16h90l62 251c1 4 4 6 8 6s7 -3 8 -7l58 -349l54 190c1 3 4 5 8 5s7 -2 8 -5l30 -91
-h59c3 14 16 25 31 25z" />
- <glyph glyph-name="ion-ios-rainy-outline" unicode="&#xf494;" horiz-adv-x="288"
-d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44
-c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1zM220 146c28 0 52 24 52 52s-24 54 -52 54h-6l-15 -2l-3 15c-3 14 -11 31 -23 40c-12 10 -26 14 -41 14
-c-36 0 -66 -31 -66 -67v-12v-10c-6 0 -12 -2 -14 -2c-20 -3 -35 -23 -35 -43c0 -10 4 -20 11 -27s16 -12 26 -12h124v0v0h42z" />
- <glyph glyph-name="ion-ios-rainy" unicode="&#xf495;" horiz-adv-x="288"
-d="M220 269c38 0 68 -33 68 -71c0 -29 -19 -56 -45 -66l-55 -80c-2 -2 -5 -4 -8 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l46 66v0h-35l-31 -44c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 1 3 2 5l25 35h-37l-53 -76c-2 -2 -4 -4 -7 -4c-5 0 -9 3 -9 8c0 2 2 4 3 6l46 66h-36l-32 -44
-c-2 -2 -4 -4 -7 -4c-5 0 -8 3 -8 8c0 2 1 4 2 6l25 34c-29 2 -52 27 -52 56c0 28 22 58 50 60c0 3 -1 5 -1 8c0 46 31 84 82 84c45 0 73 -31 81 -68c3 0 5 1 8 1z" />
- <glyph glyph-name="ion-ios-recording-outline" unicode="&#xf496;" horiz-adv-x="480"
-d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -75 -53 -95h146c-32 20 -53 55 -53 95c0 62 49 112 110 112zM16 192c0 -53 42 -95 94 -95s93 42 93 95s-41 95 -93 95s-94 -42 -94 -95z
-M370 97c52 0 94 42 94 95s-42 95 -94 95s-93 -42 -93 -95s41 -95 93 -95zM368 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM368 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM112 240c-26 0 -48 -22 -48 -48
-s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM112 256v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64z" />
- <glyph glyph-name="ion-ios-recording" unicode="&#xf497;" horiz-adv-x="480"
-d="M370 304c61 0 110 -50 110 -112s-49 -112 -110 -112h-260c-61 0 -110 50 -110 112s49 112 110 112s110 -50 110 -112c0 -40 -21 -76 -53 -95h146c-32 19 -53 55 -53 95c0 62 49 112 110 112zM112 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64z
-M368 128c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM368 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM112 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48z" />
- <glyph glyph-name="ion-ios-redo-outline" unicode="&#xf498;" horiz-adv-x="384"
-d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10zM208 256c-201 0 -192 -169 -192 -169c48 81 101 105 192 105v-65l148 97l-148 97v-65z" />
- <glyph glyph-name="ion-ios-redo" unicode="&#xf499;" horiz-adv-x="384"
-d="M0 48v32c0 17 -3 83 49 136c35 36 80 53 143 56v80l192 -128l-192 -128v80c-40 -1 -63 -9 -87 -20c-31 -14 -55 -44 -75 -77l-20 -31h-10z" />
- <glyph glyph-name="ion-ios-refresh-empty" unicode="&#xf49a;" horiz-adv-x="256"
-d="M128 64c-71 0 -128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108h20c0 -71 -57 -128 -128 -128z" />
- <glyph glyph-name="ion-ios-refresh-outline" unicode="&#xf49b;" horiz-adv-x="416"
-d="M316 192v0h20c0 -71 -57 -128 -128 -128s-128 57 -128 128s57 128 128 128v44l96 -64l-96 -56v56c-60 0 -108 -48 -108 -108s48 -108 108 -108s108 48 108 108zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 1
-c105 0 191 86 191 191s-86 191 -191 191s-191 -86 -191 -191s86 -191 191 -191z" />
- <glyph glyph-name="ion-ios-refresh" unicode="&#xf49c;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM208 64c71 0 128 57 128 128h-20c0 -60 -48 -108 -108 -108s-108 48 -108 108s48 108 108 108v-56l96 56l-96 64v-44c-71 0 -128 -57 -128 -128s57 -128 128 -128z" />
- <glyph glyph-name="ion-ios-reload" unicode="&#xf49d;"
-d="M192 384c106 0 192 -86 192 -192l55 53l9 -9l-70 -68l-67 68l9 9l51 -52c0 98 -80 178 -179 178s-179 -80 -179 -179s80 -179 179 -179c79 0 146 50 170 121l12 -3c-26 -76 -97 -131 -182 -131c-106 0 -192 86 -192 192s86 192 192 192z" />
- <glyph glyph-name="ion-ios-reverse-camera-outline" unicode="&#xf49e;" horiz-adv-x="384"
-d="M238 129l2 2l11 -12l-2 -2c-16 -14 -36 -21 -57 -21c-45 0 -82 36 -87 78h-30l38 50l39 -50h-31c5 -33 35 -62 71 -62c17 0 33 6 46 17zM252 249c16 -14 25 -37 27 -57h30l-38 -51l-39 51h31c-5 35 -35 64 -71 64c-17 0 -33 -6 -46 -17l-2 -2l-11 12l2 2
-c16 14 36 21 57 21c22 0 44 -8 60 -23zM354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM368 81v176c0 9 -5 15 -14 15h-62h-6s-4 1 -6 3s-6 8 -9 11
-c-12 13 -21 24 -27 30c-5 5 -7 4 -7 4h-88s-1 0 -6 -4c-6 -5 -15 -14 -26 -27c-3 -4 -8 -11 -11 -14s-4 -3 -6 -3h-6h-60c-9 0 -18 -7 -18 -15v-176c0 -9 9 -17 18 -17h320c8 0 14 8 14 17z" />
- <glyph glyph-name="ion-ios-reverse-camera" unicode="&#xf49f;" horiz-adv-x="384"
-d="M354 288c18 0 30 -14 30 -31v-176c0 -17 -12 -33 -30 -33h-320c-18 0 -34 16 -34 33v176c0 17 16 31 34 31h13v16h34v-16h13c32 36 43 48 55 48h88c12 0 23 -12 55 -48h62zM249 117l2 2l-11 12l-2 -2c-13 -11 -29 -17 -46 -17c-36 0 -66 29 -71 62h31l-39 50l-38 -50h30
-c5 -42 42 -78 87 -78c21 0 41 7 57 21zM271 141l38 51h-30c-2 20 -11 43 -27 57c-16 15 -38 23 -60 23c-21 0 -41 -7 -57 -21l-2 -2l11 -12l2 2c13 11 29 17 46 17c36 0 66 -29 71 -64h-31z" />
- <glyph glyph-name="ion-ios-rewind-outline" unicode="&#xf4a0;"
-d="M432 293l-184 -101l184 -101v202zM208 292v0l-176 -100l176 -100v95v27v78zM224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" />
- <glyph glyph-name="ion-ios-rewind" unicode="&#xf4a1;"
-d="M224 320v0v-123l224 123v-256l-224 123v-123l-224 128z" />
- <glyph glyph-name="ion-ios-rose-outline" unicode="&#xf4a2;" horiz-adv-x="320"
-d="M284 295c-4 -1 -9 -3 -13 -4c-37 -11 -71 -24 -103 -39c-17 -8 -24 -12 -44 -24l-7 -4c-31 -18 -50 -33 -63 -51c-15 -21 -22 -45 -22 -77c0 -16 3 -30 9 -44c6 -13 14 -26 25 -36c23 -21 55 -32 94 -32s71 11 94 32c11 10 19 23 25 36c6 14 9 28 9 44c0 20 -5 40 -11 60
-c-11 40 -23 83 7 139zM320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM38 325c14 -28 18 -57 19 -83c9 7 20 13 30 20c7 4 14 9 21 13c5 3 10 6 16 9c-5 4 -11 7 -17 11
-c-22 13 -48 23 -69 30zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM249 367c-8 -1 -20 -2 -35 -7c-25 -8 -47 -20 -64 -36c8 -6 15 -12 21 -18c29 12 65 26 95 34
-c-5 10 -12 20 -17 27zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM85 394c-6 -10 -10 -20 -14 -28c12 -4 22 -10 36 -17c4 5 9 10 14 14c-13 15 -27 25 -36 31zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31
-c-26 13 -40 21 -61 27c5 15 15 38 30 60z" />
- <glyph glyph-name="ion-ios-rose" unicode="&#xf4a3;" horiz-adv-x="320"
-d="M320 320v0c-77 -96 -16 -151 -16 -224s-56 -128 -144 -128s-144 55 -144 128s35 109 93 142c25 14 33 19 52 28c30 14 65 28 105 40c17 5 35 10 54 14zM0 352v0s66 -15 115 -43c15 -8 28 -18 37 -29c-12 -6 -24 -12 -36 -19c-7 -4 -14 -8 -20 -12
-c-25 -16 -44 -31 -57 -42c5 41 2 98 -39 145zM256 384v0s26 -32 32 -55c-33 -8 -84 -25 -121 -42l-3 3c-9 11 -22 22 -39 32c52 60 131 62 131 62zM80 416v0s35 -16 64 -56c-12 -9 -23 -20 -33 -31c-26 13 -40 21 -61 27c5 15 15 38 30 60z" />
- <glyph glyph-name="ion-ios-search-strong" unicode="&#xf4a4;" horiz-adv-x="384"
-d="M280 150l-4 -7l108 -109l-34 -34l-108 109l-7 -5c-24 -15 -53 -25 -83 -25c-84 0 -152 69 -152 153s68 152 152 152s152 -68 152 -152c0 -30 -9 -58 -24 -82zM237 317c-23 23 -53 35 -85 35s-62 -12 -85 -35s-35 -53 -35 -85s12 -62 35 -85s53 -35 85 -35s62 12 85 35
-s36 53 36 85s-13 62 -36 85z" />
- <glyph glyph-name="ion-ios-search" unicode="&#xf4a5;" horiz-adv-x="384"
-d="M384 23l-23 -23l-113 113c-26 -21 -60 -33 -96 -33c-84 0 -152 68 -152 152s68 152 152 152s152 -68 152 -152c0 -36 -12 -69 -33 -95zM56 135c26 -26 60 -39 96 -39s70 14 96 40s40 60 40 96s-14 70 -40 96s-60 40 -96 40s-70 -14 -96 -40s-40 -60 -40 -96
-s14 -71 40 -97z" />
- <glyph glyph-name="ion-ios-settings-strong" unicode="&#xf4a6;"
-d="M0 72h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283zM0 208h91c6 14 21 24 37 24s31 -10 37 -24h283v-32h-283c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-91zM0 344h283c6 14 21 24 37 24s31 -10 37 -24h91v-32h-91
-c-6 -14 -21 -24 -37 -24s-31 10 -37 24h-283z" />
- <glyph glyph-name="ion-ios-settings" unicode="&#xf4a7;"
-d="M320 344c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 360v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM320 72c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM320 88v0c18 0 32 -14 32 -32s-14 -32 -32 -32
-s-32 14 -32 32s14 32 32 32zM128 208c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM175 200h273v-16h-273c0 3 1 5 1 8s-1 5 -1 8zM80 192c0 -3 1 -5 1 -8h-81v16h81
-c0 -3 -1 -5 -1 -8zM367 64h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM272 56c0 -3 1 -5 1 -8h-273v16h273c0 -3 -1 -5 -1 -8zM367 336h81v-16h-81c0 3 1 5 1 8s-1 5 -1 8zM273 336c0 -3 -1 -5 -1 -8s1 -5 1 -8h-273v16h273z" />
- <glyph glyph-name="ion-ios-shuffle-strong" unicode="&#xf4a8;" horiz-adv-x="384"
-d="M301 296c-85 0 -119 -64 -152 -126c-1 -3 -3 -5 -4 -8l-1 -1c-2 -3 -2 -5 -4 -8c-21 -38 -43 -68 -68 -83c-15 -9 -34 -18 -72 -18v32c45 0 76 18 112 84c2 3 2 6 4 9h1c1 2 3 4 4 7c34 64 76 144 180 144h15l-52 43l21 25l99 -84l-99 -82l-21 24l51 42h-14zM285 154
-l99 -82l-99 -84l-21 25l52 43h-15c-78 0 -122 45 -153 95l18 33c29 -51 64 -96 135 -96h14l-51 42zM112 216c-36 66 -67 84 -112 84v32c38 0 57 -9 72 -18c25 -15 47 -44 67 -81c-7 -11 -13 -22 -19 -33c-1 2 -2 5 -3 7h-1c-2 3 -2 6 -4 9z" />
- <glyph glyph-name="ion-ios-shuffle" unicode="&#xf4a9;" horiz-adv-x="384"
-d="M298 241l-10 12l62 51h-46c-93 0 -129 -75 -164 -139c-2 -3 -3 -6 -5 -9c-20 -37 -41 -61 -65 -75c-14 -8 -33 -17 -70 -17v16c48 0 83 14 121 84c2 3 3 6 5 9c35 65 75 147 178 147h46l-62 52l10 12l86 -72zM135 228c0 -1 1 -2 1 -3c-3 -5 -6 -11 -9 -16c0 1 -1 1 -1 2
-c-2 3 -3 6 -5 9c-38 70 -73 84 -121 84v16c37 0 56 -9 70 -17c24 -14 45 -38 65 -75zM298 143l86 -71l-86 -72l-10 12l62 52h-46c-76 0 -118 45 -149 95c1 2 2 5 3 7c2 3 4 7 6 10c30 -50 67 -96 140 -96h46l-62 51z" />
- <glyph glyph-name="ion-ios-skipbackward-outline" unicode="&#xf4aa;" horiz-adv-x="320"
-d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320zM80 192l7 -4l217 -128v264v0l-217 -128zM16 336v-288h47v126v8v28v126h-47z" />
- <glyph glyph-name="ion-ios-skipbackward" unicode="&#xf4ab;" horiz-adv-x="320"
-d="M0 352h79v-142l241 142v-320l-241 142v-142h-79v320z" />
- <glyph glyph-name="ion-ios-skipforward-outline" unicode="&#xf4ac;" horiz-adv-x="320"
-d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142zM233 188l7 4l-7 4l-217 128v0v-264zM304 48v288h-47v-126v-28v-8v-126h47z" />
- <glyph glyph-name="ion-ios-skipforward" unicode="&#xf4ad;" horiz-adv-x="320"
-d="M241 352h79v-320h-79v142l-241 -142v320l241 -142v142z" />
- <glyph glyph-name="ion-ios-snowy" unicode="&#xf4ae;" horiz-adv-x="256"
-d="M252 131c4 -2 5 -7 3 -11s-7 -5 -11 -3l-29 17c-2 -8 -2 -16 0 -24c1 -4 -3 -9 -7 -10s-8 2 -9 6c-2 12 -3 24 1 36l-64 36v-73c11 -3 22 -8 31 -16c3 -3 4 -8 1 -11s-8 -4 -11 -1c-6 5 -13 10 -21 12v-33c0 -4 -4 -8 -8 -8s-8 4 -8 8v33c-8 -2 -15 -7 -21 -12
-c-3 -3 -8 -2 -11 1s-3 8 0 11c9 8 20 13 32 16v73l-65 -36c4 -12 4 -23 2 -35c-1 -4 -5 -8 -9 -7s-8 6 -7 10c2 8 2 16 0 24l-29 -17c-4 -2 -9 -1 -11 3s-1 9 3 11l29 16c-6 6 -13 10 -21 13c-4 1 -6 6 -5 10c2 4 6 6 10 5c12 -4 22 -11 30 -19l65 36l-65 37
-c-8 -9 -18 -15 -30 -19c-4 -1 -9 0 -10 4s1 10 5 11c8 3 15 6 21 12l-29 16c-4 2 -5 7 -3 11s7 5 11 3l29 -16c2 8 2 15 0 23c-1 4 3 9 7 10s8 -2 9 -6c2 -12 1 -25 -2 -36l65 -36v73c-12 3 -23 8 -32 16c-3 3 -3 8 0 11s8 4 11 1c6 -5 13 -10 21 -12v33c0 4 4 8 8 8
-s8 -4 8 -8v-33c8 2 15 7 21 12c3 3 8 2 11 -1s2 -8 -1 -11c-9 -8 -20 -13 -31 -16v-73l64 36c-3 11 -4 24 -2 36c1 4 6 7 10 6s7 -6 6 -10c-2 -8 -1 -15 1 -23l29 16c4 2 9 1 11 -3s1 -9 -3 -11l-29 -16c6 -6 13 -10 21 -13c4 -1 6 -6 5 -10s-6 -6 -10 -5
-c-12 4 -23 10 -31 19l-64 -36l64 -36c8 8 19 15 31 19c4 1 9 -1 10 -5s-1 -9 -5 -10c-8 -3 -15 -7 -21 -13z" />
- <glyph glyph-name="ion-ios-speedometer-outline" unicode="&#xf4af;"
-d="M224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12l-10 10l-1 2c-19 18 -41 33 -65 43c-26 11 -53 16 -81 16s-55 -5 -81 -16c-24 -10 -46 -25 -65 -43l-1 -2l-10 -10c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224z
-M416 79c10 23 15 48 16 73h-32v16h32c-1 25 -6 50 -16 73c-9 22 -23 42 -39 60l-27 -27l-6 6l-5 5v0h-1l27 27c-18 17 -38 31 -60 40c-23 10 -48 15 -74 16v-38h-16v38c-25 -1 -49 -6 -72 -16c-22 -10 -43 -23 -61 -40l27 -27v0v0l-6 -6l-5 -5l-27 27
-c-16 -18 -30 -38 -39 -60c-10 -23 -15 -49 -16 -74h32v-16h-32c1 -25 6 -49 16 -72c9 -20 20 -39 35 -56c40 40 96 64 157 64s117 -24 157 -64c15 17 26 36 35 56zM336 273l2 -1l-75 -84c6 -8 9 -18 9 -28c0 -26 -22 -48 -48 -48c-10 0 -19 4 -27 9l-13 -12l-11 11l12 12
-c-6 8 -9 18 -9 28c0 26 22 48 48 48c10 0 19 -3 27 -8zM224 128c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-ios-speedometer" unicode="&#xf4b0;"
-d="M385 169v-15h30c-1 -22 -6 -44 -15 -65c-8 -18 -19 -35 -32 -50c-39 37 -90 58 -144 58s-105 -21 -144 -58c-13 15 -24 32 -32 50c-9 21 -14 43 -15 65h28h1v16h-29c1 23 6 45 15 66c9 20 20 38 35 54l25 -24l10 10l1 1v0v0l-25 25c16 15 36 26 56 35c21 9 43 14 66 15
-v-34h14h1v34c23 -1 46 -6 67 -15s39 -20 55 -35l-24 -25l11 -11l25 25c15 -16 26 -35 35 -55c9 -21 14 -43 15 -66h-30v-1zM272 160c0 10 -3 20 -9 28l63 76l-2 1l-73 -65c-8 5 -17 8 -27 8c-26 0 -48 -22 -48 -48c0 -10 3 -20 9 -28l-12 -12l11 -11l13 12c8 -5 17 -9 27 -9
-c26 0 48 22 48 48zM224 384c124 0 224 -100 224 -224c0 -57 -21 -108 -56 -148c-4 -4 -7 -8 -11 -12h-23c-32 39 -80 64 -134 64s-102 -25 -134 -64h-23c-4 4 -7 8 -11 12c-35 40 -56 91 -56 148c0 124 100 224 224 224zM379 27c34 37 52 86 52 136c0 55 -22 106 -61 145
-s-91 60 -146 60s-107 -21 -146 -60s-61 -90 -61 -145c0 -50 18 -99 52 -136l10 -10l1 -1v1l9 9l1 1v0c17 17 38 30 60 39c24 10 48 15 74 15s50 -5 74 -15c22 -9 43 -22 60 -39v0l1 -1l9 -9v-1l1 1zM192 160c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32s-32 11 -32 32z
-" />
- <glyph glyph-name="ion-ios-star-half" unicode="&#xf4b1;"
-d="M140 143l-140 98h171l53 159l53 -159h171l-140 -98l54 -159l-138 99l-138 -99zM224 347v-244l107 -76l-43 122l108 75h-131z" />
- <glyph glyph-name="ion-ios-star-outline" unicode="&#xf4b2;"
-d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171zM331 27l-43 122l108 75h-131l-41 123l-41 -123h-131l108 -75l-43 -122l107 76z" />
- <glyph glyph-name="ion-ios-star" unicode="&#xf4b3;"
-d="M448 241l-140 -98l54 -159l-138 99l-138 -99l54 159l-140 98h171l53 159l53 -159h171z" />
- <glyph glyph-name="ion-ios-stopwatch-outline" unicode="&#xf4b4;" horiz-adv-x="384"
-d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM192 2
-c96 0 173 77 173 171s-77 171 -173 171c-95 0 -173 -77 -173 -171s77 -171 173 -171zM200 191c14 -4 24 -17 24 -31c0 -15 -10 -26 -24 -30l-8 -18v0l-8 18c-14 4 -24 15 -24 30c0 14 12 27 24 31v129h16v-129z" />
- <glyph glyph-name="ion-ios-stopwatch" unicode="&#xf4b5;" horiz-adv-x="384"
-d="M334 301c32 -35 50 -80 50 -128c0 -104 -86 -189 -192 -189s-192 85 -192 189c0 48 18 94 51 129l1 1h-18l-8 -8l-23 23l41 40l23 -22l-9 -9v-18c31 30 72 50 116 53h2v38h32v-38c43 -4 82 -21 113 -49l5 -5v19l-9 9l23 22l41 -40l-22 -23l-9 8h-18zM200 130
-c14 4 24 15 24 30c0 14 -10 27 -24 31v129h-16v-129c-12 -4 -24 -17 -24 -31c0 -15 10 -26 24 -30l8 -18z" />
- <glyph glyph-name="ion-ios-sunny-outline" unicode="&#xf4b6;" horiz-adv-x="320"
-d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76
-s76 -34 76 -76s-34 -76 -76 -76zM160 251c-32 0 -59 -27 -59 -59s27 -59 59 -59s59 27 59 59s-27 59 -59 59z" />
- <glyph glyph-name="ion-ios-sunny" unicode="&#xf4b7;" horiz-adv-x="320"
-d="M151 296v56h18v-56h-18zM151 32v60h18v-60h-18zM264 183v18h56v-18h-56zM0 183v18h60v-18h-60zM240 130l34 -34l-12 -12l-33 34zM64 306l34 -33l-12 -12l-34 34zM229 272l33 34l12 -12l-34 -33zM52 96l34 34l11 -12l-33 -34zM160 116c-42 0 -76 34 -76 76s34 76 76 76
-s76 -34 76 -76s-34 -76 -76 -76z" />
- <glyph glyph-name="ion-ios-telephone-outline" unicode="&#xf4b8;" horiz-adv-x="352"
-d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53
-c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44zM324 57c19 22 13 31 1 43c-13 14 -50 39 -72 39c-3 0 -6 -1 -8 -2
-c-19 -12 -28 -18 -37 -18s-15 6 -23 13h-1c-19 16 -23 21 -30 29l-2 2c-1 1 -3 2 -4 3c-6 6 -11 12 -27 30v1c-10 11 -17 18 -18 28s5 20 16 34c15 20 -5 48 -31 79l-1 1c-7 8 -14 12 -22 12c-10 0 -18 -6 -23 -9c-1 0 -2 -1 -2 -1c-11 -7 -18 -16 -21 -24
-c-5 -16 -7 -35 17 -79c23 -42 43 -70 76 -104c31 -32 45 -42 76 -64c32 -23 64 -38 84 -38c21 0 32 1 52 25z" />
- <glyph glyph-name="ion-ios-telephone" unicode="&#xf4b9;" horiz-adv-x="352"
-d="M336 112c16 -16 26 -35 0 -66c-25 -30 -42 -30 -64 -30c-24 0 -58 14 -93 40c-32 23 -46 34 -78 67c-34 35 -55 64 -79 107c-27 50 -24 74 -18 92c4 12 14 24 28 33l1 1c6 4 18 12 32 12c13 0 24 -6 34 -18l1 -1c11 -14 24 -31 32 -47c10 -21 10 -38 -1 -53
-c-9 -12 -12 -19 -12 -23s5 -9 13 -18l1 -1c16 -18 20 -23 26 -29c1 -1 3 -2 4 -3l2 -2c7 -7 11 -12 29 -28l1 -1c7 -6 9 -8 12 -8c5 0 16 7 29 15c4 3 11 5 17 5c27 0 68 -29 83 -44z" />
- <glyph glyph-name="ion-ios-tennisball-outline" unicode="&#xf4ba;" horiz-adv-x="416"
-d="M416 192v-8v0c0 -5 0 -11 -1 -16v0c-11 -97 -90 -174 -187 -183v0h-4h-2s-1 -1 -2 -1h-3h-1h-8c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208zM399 192c0 105 -86 191 -191 191c-3 0 -5 -1 -8 -1c1 -24 6 -46 15 -68c10 -26 26 -49 46 -69s43 -36 69 -46
-c22 -9 44 -14 68 -15c0 3 1 5 1 8zM17 192c0 -105 86 -191 191 -191h4c-1 22 -7 45 -15 66c-10 26 -26 48 -46 68s-42 36 -68 46c-21 8 -44 14 -66 15v-4zM228 2c88 9 158 78 169 166c-54 3 -106 25 -147 66s-63 93 -66 147c-88 -11 -157 -81 -166 -169
-c53 -3 105 -25 145 -65s62 -92 65 -145z" />
- <glyph glyph-name="ion-ios-tennisball" unicode="&#xf4bb;" horiz-adv-x="416"
-d="M0 196v0v0v0zM212 -16h1h-1v0zM208 400c115 0 208 -93 208 -208c0 -8 0 -16 -1 -24v0v0c-11 -97 -90 -174 -187 -183v0v0c-6 -1 -13 -1 -20 -1c-115 0 -208 93 -208 208v4v0v0c0 6 0 11 1 16v0v0c9 97 86 176 183 187v0v0c6 1 11 1 16 1v0v0h8zM83 181
-c26 -10 48 -26 68 -46s36 -42 46 -68c8 -21 14 -44 15 -66c5 0 11 0 16 1c-3 53 -25 105 -65 145s-92 62 -145 65c-1 -5 -1 -11 -1 -16c22 -1 45 -7 66 -15zM250 234c41 -41 93 -63 147 -66c1 5 1 11 1 16c-24 1 -46 6 -68 15c-26 10 -49 26 -69 46s-36 43 -46 69
-c-9 22 -14 44 -15 68c-5 0 -11 0 -16 -1c3 -54 25 -106 66 -147z" />
- <glyph glyph-name="ion-ios-thunderstorm-outline" unicode="&#xf4bc;" horiz-adv-x="274"
-d="M193 176l-88 -128l29 96h-52l15 80h72l-16 -48h40zM209 275c36 0 65 -29 65 -65s-29 -66 -65 -66h-8v17h8c27 0 49 22 49 49s-22 50 -49 50h-6l-14 -2l-3 14c-3 14 -11 26 -22 35s-25 13 -39 13c-34 0 -63 -27 -63 -62v-12s1 -9 1 -9c-5 0 -12 -2 -14 -2
-c-19 -3 -33 -18 -33 -37c0 -10 3 -19 10 -26s16 -11 26 -11h11v-17h-11c-28 0 -52 24 -52 53c0 27 21 51 47 53v8c0 43 35 78 78 78c37 0 68 -26 76 -61h8z" />
- <glyph glyph-name="ion-ios-thunderstorm" unicode="&#xf4bd;" horiz-adv-x="274"
-d="M153 176h40l-22 -32l-66 -96l29 96h-52l15 80h72zM84 240h107l-16 -48h18h30l-33 -48h19c36 0 65 30 65 66s-29 65 -65 65h-8c-8 35 -39 61 -76 61c-43 0 -78 -35 -78 -78v-8c-26 -2 -47 -26 -47 -53c0 -29 24 -53 52 -53h14z" />
- <glyph glyph-name="ion-ios-time-outline" unicode="&#xf4be;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM371 45c19 19 35 41 45 66c11 26 16 53 16 81s-5 55 -16 81c-10 25 -26 47 -45 66s-41 35 -66 45c-26 11 -53 16 -81 16s-55 -5 -81 -16c-25 -10 -47 -26 -66 -45
-s-35 -41 -45 -66c-11 -26 -16 -53 -16 -81s5 -55 16 -81c10 -25 26 -47 45 -66s41 -35 66 -45c26 -11 53 -16 81 -16s55 5 81 16c25 10 47 26 66 45zM216 368c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM216 16c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM392 192
-c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM40 192c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8
-zM64 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM64 280c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM368 104c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM304 344c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM128 40c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8
-s-8 3 -8 8zM238 200c4 -8 2 -18 -6 -22v-122c0 -4 -4 -8 -8 -8s-8 4 -8 8v122c-2 1 -4 4 -6 6c-3 5 -3 11 0 16l-37 63c-2 4 -1 9 3 11s8 1 10 -3l38 -63c5 0 11 -3 14 -8z" />
- <glyph glyph-name="ion-ios-time" unicode="&#xf4bf;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM224 376c-4 0 -8 -4 -8 -8s4 -8 8 -8s8 4 8 8s-4 8 -8 8zM48 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM76 97c4 2 4 7 2 11s-6 5 -10 3s-5 -7 -3 -11s7 -5 11 -3z
-M78 276c2 4 2 9 -2 11s-9 1 -11 -3s-1 -9 3 -11s8 -1 10 3zM132 351c-4 -2 -5 -7 -3 -11s7 -4 11 -2s5 6 3 10s-7 5 -11 3zM143 36c2 4 1 8 -3 10s-9 2 -11 -2s-1 -9 3 -11s9 -1 11 3zM224 8c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8zM232 178c8 4 10 14 6 22
-c-3 5 -9 8 -14 8l-38 64c-2 4 -7 4 -11 2s-4 -7 -2 -11l37 -63c-3 -5 -3 -11 0 -16c2 -2 4 -5 6 -6v-122c0 -4 4 -8 8 -8s8 4 8 8v122zM316 33c4 2 5 7 3 11s-7 4 -11 2s-5 -6 -3 -10s7 -5 11 -3zM319 340c2 4 1 9 -3 11s-9 1 -11 -3s-1 -8 3 -10s9 -2 11 2zM383 100
-c2 4 1 9 -3 11s-8 1 -10 -3s-2 -9 2 -11s9 -1 11 3zM380 273c4 2 5 7 3 11s-7 5 -11 3s-4 -7 -2 -11s6 -5 10 -3zM400 184c4 0 8 4 8 8s-4 8 -8 8s-8 -4 -8 -8s4 -8 8 -8z" />
- <glyph glyph-name="ion-ios-timer-outline" unicode="&#xf4c0;" horiz-adv-x="416"
-d="M189 176l-1 2s-89 118 -86 120s121 -85 121 -85c1 -1 1 -2 2 -3c5 -5 8 -11 8 -18c0 -14 -11 -25 -25 -25c-8 0 -14 3 -19 9zM208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208c0 57 23 109 61 147l12 -12c-35 -35 -56 -82 -56 -135
-c0 -106 85 -191 191 -191s191 85 191 191c0 100 -77 183 -175 191v-95h-16v112v0v0z" />
- <glyph glyph-name="ion-ios-timer" unicode="&#xf4c1;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208s-208 93 -208 208s93 208 208 208zM102 298c-2 -2 86 -120 86 -120l1 -1c5 -6 11 -10 19 -10c14 0 25 11 25 25c0 7 -3 13 -8 18l-3 3c0 0 -117 87 -120 85zM208 1c106 0 192 85 192 191s-86 192 -192 192v-96h16v78
-c88 -9 158 -84 158 -174c0 -96 -78 -174 -174 -174s-175 78 -175 174c0 48 19 92 51 124l-11 12c-35 -35 -56 -83 -56 -136c0 -106 85 -191 191 -191z" />
- <glyph glyph-name="ion-ios-toggle-outline" unicode="&#xf4c2;"
-d="M96 128c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM96 144v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM351 160v0h-255c-44 0 -80 -36 -80 -80s36 -80 80 -80h256c44 0 80 36 80 80s-37 80 -81 80zM352 176v0
-c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM352 352c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48s-22 48 -48 48zM352 368v0c35 0 64 -29 64 -64s-29 -64 -64 -64s-64 29 -64 64s29 64 64 64zM97 384v0c-44 0 -81 -36 -81 -80
-s36 -80 80 -80h256c44 0 80 36 80 80s-36 80 -80 80h-255zM96 400v0h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96z" />
- <glyph glyph-name="ion-ios-toggle" unicode="&#xf4c3;"
-d="M96 128c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM352 176c53 0 96 -43 96 -96s-43 -96 -96 -96h-256c-53 0 -96 43 -96 96s43 96 96 96h256zM96 16c35 0 64 29 64 64s-29 64 -64 64s-64 -29 -64 -64s29 -64 64 -64zM352 256c-26 0 -48 22 -48 48
-s22 48 48 48s48 -22 48 -48s-22 -48 -48 -48zM96 208c-53 0 -96 43 -96 96s43 96 96 96h256c53 0 96 -43 96 -96s-43 -96 -96 -96h-256zM352 368c-35 0 -64 -29 -64 -64s29 -64 64 -64s64 29 64 64s-29 64 -64 64z" />
- <glyph glyph-name="ion-ios-trash-outline" unicode="&#xf4c4;" horiz-adv-x="288"
-d="M288 335v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20h80zM95 355v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM230 30l23 290h-217l23 -290v0v-1c0 -8 7 -14 15 -14
-h141c8 0 15 6 15 14v1v0zM137 47v241h14v-241h-14zM208 288l-11 -241h-14l10 241h15zM94 288l11 -241h-14l-11 241h14z" />
- <glyph glyph-name="ion-ios-trash" unicode="&#xf4c5;" horiz-adv-x="288"
-d="M208 335h80v-15h-20l-24 -291c0 -16 -13 -29 -29 -29h-141c-16 0 -29 13 -29 29l-24 291h-21v15h80v20c0 16 13 29 29 29h70c16 0 29 -13 29 -29v-20zM95 355v0v-20h98v20c0 8 -6 14 -14 14h-70c-8 0 -14 -6 -14 -14zM91 47h14l-11 241h-14zM151 47v241h-14v-241h14z
-M197 47l11 241h-14l-11 -241h14z" />
- <glyph glyph-name="ion-ios-undo-outline" unicode="&#xf4c6;" horiz-adv-x="384"
-d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136zM368 87c0 0 9 169 -192 169v65l-148 -97l148 -97v65c91 0 144 -24 192 -105z" />
- <glyph glyph-name="ion-ios-undo" unicode="&#xf4c7;" horiz-adv-x="384"
-d="M384 80v-32h-10l-20 31c-20 33 -44 63 -75 77c-24 11 -47 19 -87 20v-80l-192 128l192 128v-80c63 -3 108 -21 143 -56c52 -53 49 -119 49 -136z" />
- <glyph glyph-name="ion-ios-unlocked-outline" unicode="&#xf4c8;" horiz-adv-x="320"
-d="M160 160c18 0 32 -14 32 -32c0 -15 -10 -27 -24 -31v-33h-16v33c-14 4 -24 16 -24 31c0 18 14 32 32 32zM160 112c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8
-c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM304 0v208h-288v-208h288z" />
- <glyph glyph-name="ion-ios-unlocked" unicode="&#xf4c9;" horiz-adv-x="320"
-d="M160 144c9 0 16 -7 16 -16s-7 -16 -16 -16s-16 7 -16 16s7 16 16 16zM72 224h248v-240h-320v240h56v72c0 57 47 104 104 104s104 -47 104 -104v-8h-16v8c0 49 -39 88 -88 88s-88 -39 -88 -88v-72zM168 97c14 4 24 16 24 31c0 18 -14 32 -32 32s-32 -14 -32 -32
-c0 -15 10 -27 24 -31v-33h16v33z" />
- <glyph glyph-name="ion-ios-upload-outline" unicode="&#xf4ca;" horiz-adv-x="320"
-d="M192 304h128v-304h-320v304h128v-16h-112v-272h288v272h-112v16zM97 330l-11 12l74 74l74 -74l-11 -12l-55 55v-243h-16v243z" />
- <glyph glyph-name="ion-ios-upload" unicode="&#xf4cb;" horiz-adv-x="320"
-d="M168 304h152v-304h-320v304h152v-162h16v162zM168 385v-81h-16v81l-55 -55l-11 12l74 74l74 -74l-11 -12z" />
- <glyph glyph-name="ion-ios-videocam-outline" unicode="&#xf4cc;" horiz-adv-x="418"
-d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM273 99v188c0 9 -8 16 -17 16h-221c-9 0 -18 -7 -18 -16v-188c0 -9 10 -18 19 -18h221c9 0 16 9 16 18zM320 235l98 53v-192l-98 53v86zM401 258v0l-64 -33
-v-66l64 -33v132z" />
- <glyph glyph-name="ion-ios-videocam" unicode="&#xf4cd;" horiz-adv-x="418"
-d="M257 320c19 0 33 -14 33 -33v-188c0 -19 -14 -35 -33 -35h-221c-19 0 -36 16 -36 35v188c0 19 17 33 36 33h221zM320 235l98 53v-192l-98 53v86z" />
- <glyph glyph-name="ion-ios-volume-high" unicode="&#xf4ce;" horiz-adv-x="320"
-d="M278 320c26 -36 42 -80 42 -128s-16 -92 -42 -128l-14 10c24 33 39 74 39 118s-15 85 -39 118zM224 96l-14 10c18 24 29 54 29 86s-11 62 -29 86l14 10c20 -27 32 -60 32 -96s-12 -69 -32 -96zM177 128l-13 10c12 15 18 34 18 54s-6 39 -18 54l13 10
-c14 -18 22 -40 22 -64s-8 -46 -22 -64zM58 232l70 56v-192l-70 56h-58v80h58z" />
- <glyph glyph-name="ion-ios-volume-low" unicode="&#xf4cf;" horiz-adv-x="128"
-d="M58 232l70 56v-192l-70 56h-58v80h58z" />
- <glyph glyph-name="ion-ios-wineglass-outline" unicode="&#xf4d0;" horiz-adv-x="192"
-d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156
-c-5 33 -20 80 -25 96h-53h-53zM96 175c3 0 5 0 7 2v0c9 11 20 20 31 29c8 6 15 12 20 18c22 23 22 41 22 60v4h-160v-4c0 -19 0 -37 22 -60c5 -6 12 -12 20 -18c11 -9 22 -18 31 -29v0c2 -2 4 -2 7 -2z" />
- <glyph glyph-name="ion-ios-wineglass" unicode="&#xf4d1;" horiz-adv-x="192"
-d="M104 139v-155h72v-16h-80h-80v16h72v155c0 22 -20 39 -40 55c-8 6 -16 13 -22 19c-27 28 -26 52 -26 71v4c0 44 31 125 32 128h64h64c1 -3 32 -84 32 -128v-4c0 -19 1 -43 -26 -71c-6 -6 -14 -13 -22 -19c-20 -16 -40 -33 -40 -55zM43 400c-5 -16 -20 -63 -25 -96h156
-c-5 33 -20 80 -25 96h-53h-53z" />
- <glyph glyph-name="ion-ios-world-outline" unicode="&#xf4d2;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM216 276v-76h75c-1 31 -5 60 -11 84c-21 -5 -42 -7 -64 -8zM216 292c20 1 41 3 60 8c-14 46 -38 76 -60 82v-90zM200 382c-23 -6 -45 -36 -60 -82
-c19 -5 39 -7 60 -8v90zM200 276c-22 1 -44 3 -65 8c-6 -24 -10 -53 -11 -84h76v76zM108 200c1 32 4 62 11 88c-21 6 -41 15 -59 25c-26 -31 -41 -70 -43 -113h91zM108 184h-91c2 -43 17 -82 43 -113c19 10 38 19 59 25c-7 26 -10 56 -11 88zM124 184c1 -31 5 -60 11 -84
-c21 5 43 8 65 9v75h-76zM200 92c-21 -1 -41 -3 -60 -8c15 -46 37 -76 60 -82v90zM216 2c22 6 46 36 60 82c-19 5 -40 7 -60 8v-90zM216 109c22 -1 43 -4 64 -9c6 24 10 53 11 84h-75v-75zM308 184c-1 -32 -5 -62 -12 -88c21 -6 41 -15 60 -25c26 31 41 70 43 113h-91z
-M308 200v0h91c-2 43 -17 82 -43 113c-19 -10 -38 -19 -59 -25c7 -26 10 -56 11 -88zM344 326c-25 25 -56 44 -91 52c16 -17 29 -43 39 -74c18 6 35 13 52 22zM163 378c-35 -8 -67 -27 -91 -52c16 -9 34 -15 52 -21c10 31 23 56 39 73zM72 58c25 -25 56 -44 91 -52
-c-16 17 -30 43 -40 74c-18 -6 -35 -13 -51 -22zM253 6c35 8 66 27 91 52c-17 9 -34 16 -52 22c-10 -31 -23 -57 -39 -74z" />
- <glyph glyph-name="ion-ios-world" unicode="&#xf4d3;" horiz-adv-x="416"
-d="M208 400c115 0 208 -93 208 -208s-93 -208 -208 -208v0v0v0c-115 0 -208 93 -208 208s93 208 208 208v0v0v0zM208 1c106 0 191 85 191 191s-85 191 -191 191v0v0v0c-106 0 -191 -85 -191 -191s86 -191 191 -191v0v0v0zM274 276c6 -22 9 -48 10 -76h-68v68c20 1 39 4 58 8
-zM216 366c20 -6 41 -34 54 -75c-17 -4 -36 -6 -54 -7v82zM145 291c13 42 35 69 55 75v-82c-19 1 -37 3 -55 7zM333 315c-15 -8 -31 -15 -48 -20c-9 29 -21 52 -36 67c32 -8 61 -24 84 -47zM299 200c-1 29 -4 56 -10 80c19 6 37 14 54 23c23 -28 38 -64 40 -103h-84zM132 200
-c1 28 3 54 9 76c19 -5 39 -7 59 -8v-68h-68zM284 184c-1 -28 -4 -54 -10 -76c-19 5 -38 7 -58 8v68h68zM141 108c-6 22 -8 48 -9 76h68v-68c-20 -1 -40 -3 -59 -8zM200 18c-20 6 -42 33 -55 75c18 4 36 6 55 7v-82zM249 22c15 15 27 38 36 67c17 -5 33 -11 48 -19
-c-23 -23 -52 -40 -84 -48zM167 362c-15 -15 -27 -39 -36 -67c-16 5 -33 11 -48 19c22 23 52 40 84 48zM289 104c6 24 9 51 10 80h84c-2 -39 -17 -75 -40 -103c-17 9 -35 17 -54 23zM216 100c18 -1 37 -3 54 -7c-13 -42 -34 -69 -54 -75v82zM127 280c-6 -24 -11 -51 -11 -80
-h-83c2 39 17 75 40 103c17 -9 35 -17 54 -23zM116 184c1 -29 4 -56 10 -80c-19 -6 -36 -14 -53 -23c-23 28 -38 64 -40 103h83zM83 70c15 8 32 14 48 19c9 -28 21 -52 36 -67c-32 8 -62 25 -84 48z" />
- <glyph glyph-name="ion-ipad" unicode="&#xf1f9;" horiz-adv-x="288"
-d="M0 375c0 5 4 9 9 9h270c5 0 9 -4 9 -9v-366c0 -5 -4 -9 -9 -9h-270c-5 0 -9 4 -9 9v366zM144 10c8 0 14 6 14 14s-7 14 -14 14c-8 0 -14 -6 -14 -14s6 -14 14 -14zM32 329v-275c0 -4 3 -6 6 -6h211c3 0 7 2 7 6v275c0 4 -4 7 -7 7h-211c-3 0 -6 -3 -6 -7z" />
- <glyph glyph-name="ion-iphone" unicode="&#xf1fa;" horiz-adv-x="192"
-d="M168 384c13 0 24 -11 24 -24v-336c0 -13 -11 -24 -24 -24h-144c-13 0 -24 11 -24 24v336c0 13 11 24 24 24h144zM80 348v0c0 -2 2 -4 4 -4h24c2 0 4 2 4 4v0c0 2 -2 4 -4 4h-24c-2 0 -4 -2 -4 -4zM68 352c-2 0 -4 -2 -4 -4s2 -4 4 -4s4 2 4 4s-2 4 -4 4zM96 16
-c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM176 64v256h-160v-256h160z" />
- <glyph glyph-name="ion-ipod" unicode="&#xf1fb;" horiz-adv-x="224"
-d="M112 137c18 0 32 -14 32 -32s-14 -32 -32 -32s-32 14 -32 32s14 32 32 32zM196 384c15 0 28 -12 28 -28v-328c0 -16 -13 -28 -28 -28h-168c-15 0 -28 12 -28 28v328c0 16 13 28 28 28h168zM112 32c40 0 72 32 72 72s-32 72 -72 72s-72 -32 -72 -72s32 -72 72 -72z
-M192 221v118c-1 7 -6 12 -12 13h-136c-7 -1 -12 -7 -12 -15v-114c0 -8 6 -15 14 -15h131c8 0 14 5 15 13z" />
- <glyph glyph-name="ion-jet" unicode="&#xf295;" horiz-adv-x="326"
-d="M222 80l-2 -13l53 -58l-18 -27l-74 9l-18 -55l-19 55l-73 -9l-18 27l53 58l-2 13l-104 -35l3 53l114 103s26 173 28 192c5 40 18 55 18 55s13 -15 18 -55c2 -19 28 -192 28 -192l114 -103l3 -53z" />
- <glyph glyph-name="ion-key" unicode="&#xf296;" horiz-adv-x="192"
-d="M144 147c28 -17 48 -48 48 -83c0 -53 -43 -96 -96 -96s-96 43 -96 96c0 36 19 67 48 84c0 0 7 16 12 41c0 4 11 6 11 12v20c0 5 -7 9 -7 11v8v8c0 2 0 4 1 6c0 1 1 1 1 2l2 1l4 4v1c2 2 3 4 3 6c0 1 1 8 1 9c0 3 -2 6 -4 8l-1 1l-4 4v0l-1 1v0c-2 2 -3 5 -3 8v7
-c0 3 2 7 4 9v0l5 5v0c2 2 4 3 4 6v24c0 3 -2 6 -4 8v1l-4 4l-1 1c-2 2 -3 5 -3 8v18c0 11 0 19 9 23c3 1 14 3 23 3c20 0 30 -8 32 -36c0 0 7 -81 9 -143s7 -90 7 -90zM96 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-knife" unicode="&#xf297;" horiz-adv-x="64"
-d="M62 416c2 0 2 -1 2 -6v-412c0 -15 -10 -30 -24 -30v0v0c-14 0 -24 15 -24 30c1 19 14 83 16 130v0c1 30 -32 31 -32 70c0 134 35 191 54 214c2 2 5 4 8 4z" />
- <glyph glyph-name="ion-laptop" unicode="&#xf1fc;" horiz-adv-x="512"
-d="M480 342v-262h-448v262c0 6 4 10 10 10h428c6 0 10 -4 10 -10zM448 112v208h-384v-208h384zM0 59v5h512v-5c-70 -20 -116 -27 -256 -27s-186 7 -256 27z" />
- <glyph glyph-name="ion-leaf" unicode="&#xf1fd;" horiz-adv-x="422"
-d="M412 69c18 -3 10 -41 -5 -39c0 0 -21 -1 -63 12c0 0 -16 -19 -39 -30c-26 -12 -118 -33 -197 38c-108 97 -120 354 -100 333c86 -90 197 -47 270 -106c55 -44 88 -127 77 -192c0 0 5 -8 57 -16zM316 65c5 5 10 16 10 24c-161 52 -252 160 -252 160s104 -143 242 -184z
-" />
- <glyph glyph-name="ion-levels" unicode="&#xf298;" horiz-adv-x="350"
-d="M46 349c11 -5 18 -16 18 -29s-7 -24 -18 -29v-275c0 -9 -7 -16 -16 -16s-16 7 -16 16v278c-8 6 -14 15 -14 26s6 20 14 26v22c0 9 7 16 16 16s16 -7 16 -16v-19zM142 155c9 -6 15 -16 15 -27s-6 -21 -15 -27v-85c0 -9 -7 -16 -16 -16s-16 7 -16 16v84
-c-10 5 -17 16 -17 28s7 23 17 28v212c0 9 7 16 16 16s16 -7 16 -16v-213zM238 285c10 -6 16 -16 16 -28s-6 -22 -16 -28v-213c0 -9 -7 -16 -16 -16s-16 7 -16 16v213c-10 6 -16 16 -16 28s6 22 16 28v83c0 9 7 16 16 16s16 -7 16 -16v-83zM350 65c0 -12 -6 -22 -16 -28v-21
-c0 -9 -7 -16 -16 -16s-16 7 -16 16v21c-10 6 -16 16 -16 28s6 22 16 28v275c0 9 7 16 16 16s16 -7 16 -16v-275c10 -6 16 -16 16 -28z" />
- <glyph glyph-name="ion-lightbulb" unicode="&#xf299;" horiz-adv-x="256"
-d="M128 416c71 0 128 -56 128 -124c0 -5 0 -9 -1 -14s-2 -11 -3 -16v-2c-17 -63 -45 -71 -59 -167v-1c-2 -9 -10 -12 -20 -12h-90c-10 0 -18 3 -20 12v1c-14 96 -42 104 -59 167v2c-1 5 -2 11 -3 16s-1 9 -1 14c0 68 57 124 128 124zM190 52v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8
-v-1c1 -2 2 -3 2 -5s-1 -4 -2 -6v-1c-2 -3 -3 -4 -3 -7s1 -5 3 -8v-1c1 -2 2 -4 2 -6c0 -5 -4 -9 -10 -11h-1c-6 -1 -13 -2 -19 -3h-2c-6 -1 -11 -5 -14 -9v0c-4 -5 -10 -10 -18 -10s-15 6 -19 11v0c-3 4 -7 7 -13 8h-2c-6 1 -13 2 -19 3h-1c-6 2 -10 6 -10 11c0 2 1 4 2 6v1
-c2 2 3 4 3 7s-1 5 -3 8v1c-1 2 -2 4 -2 6s1 3 2 5v1c2 3 3 5 3 8s-1 4 -3 7v1v0c-1 2 -2 4 -2 6c0 4 -1 6 7 6h114c8 0 7 -2 7 -6c0 -2 -1 -4 -2 -6v0z" />
- <glyph glyph-name="ion-link" unicode="&#xf1fe;" horiz-adv-x="384"
-d="M192 240v0v0v0zM304 288c44 0 80 -36 80 -80v-32c0 -44 -36 -80 -80 -80h-112c-33 0 -60 20 -73 48c-4 10 -7 20 -7 32v32h48v-32c0 -18 14 -32 32 -32h112c18 0 32 14 32 32v32c0 18 -14 32 -32 32v0h-16c-6 31 -32 48 -32 48h48zM266 240c4 -10 6 -21 6 -32v-32v0h-48
-v0v32c0 18 -14 32 -32 32v0h-112c-18 0 -32 -14 -32 -32v-32c0 -18 14 -32 32 -32h16c6 -31 32 -48 32 -48h-48c-44 0 -80 36 -80 80v32c0 44 36 80 80 80h112c33 0 62 -20 74 -48z" />
- <glyph glyph-name="ion-load-a" unicode="&#xf29a;" horiz-adv-x="384"
-d="M144 352c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM0 192c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM312 304c0 5 3 8 8 8s8 -3 8 -8s-3 -8 -8 -8s-8 3 -8 8zM132 340c10 -10 15 -22 15 -36s-5 -26 -15 -36s-22 -15 -36 -15
-s-26 5 -36 15s-15 22 -15 36s5 26 15 36s22 15 36 15s26 -5 36 -15zM352 192c0 11 5 16 16 16s16 -5 16 -16s-5 -16 -16 -16s-16 5 -16 16zM297 79c0 16 8 24 24 24s24 -8 24 -24s-8 -24 -24 -24s-24 8 -24 24zM176 32c0 21 11 32 32 32s32 -11 32 -32s-11 -32 -32 -32
-s-32 11 -32 32zM56 80c0 27 13 40 40 40s40 -13 40 -40s-13 -40 -40 -40s-40 13 -40 40z" />
- <glyph glyph-name="ion-load-b" unicode="&#xf29b;"
-d="M256 288c0 -18 -14 -32 -32 -32v0c-18 0 -32 14 -32 32v96c0 18 14 32 32 32v0c18 0 32 -14 32 -32v-96zM224 128v0c18 0 32 -14 32 -32v-96c0 -18 -14 -32 -32 -32s-32 14 -32 32v96c0 18 14 32 32 32zM416 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96
-c-18 0 -32 14 -32 32s14 32 32 32h96zM128 224v0c18 0 32 -14 32 -32s-14 -32 -32 -32h-96c-18 0 -32 14 -32 32s14 32 32 32h96zM314 237c-12 -12 -33 -12 -45 0v0c-12 12 -12 34 0 46l68 67c12 12 33 12 45 0v0c12 -12 12 -33 0 -45zM179 147v0c12 -12 12 -33 0 -46
-l-68 -67c-12 -12 -33 -12 -45 0s-12 33 0 45l67 68c12 12 34 12 46 0zM382 79v0c12 -12 12 -33 0 -45s-33 -12 -45 0l-68 68c-12 12 -12 33 0 45s33 12 45 0zM179 282v0c12 -12 12 -33 0 -45s-34 -12 -46 0l-67 68c-12 12 -12 33 0 45s33 12 45 0z" />
- <glyph glyph-name="ion-load-c" unicode="&#xf29c;"
-d="M448 222c0 -3 0 -6 -1 -9c-4 -8 -15 -12 -23 -7c-4 2 -6 7 -7 11c-1 5 -1 9 -2 14c-4 20 -12 40 -22 58c-12 21 -28 41 -47 56c-18 15 -40 26 -62 33c-21 6 -42 9 -64 9h-4c-3 0 -6 -1 -9 -1c-6 0 -14 -1 -20 -2c-13 -2 -25 -6 -37 -11c-21 -8 -40 -20 -57 -35
-s-31 -33 -42 -52c-12 -22 -20 -45 -24 -70c-2 -11 -2 -23 -2 -34c0 -6 0 -11 1 -16c1 -6 2 -13 3 -19c5 -24 14 -47 28 -67c13 -20 29 -38 48 -52c20 -15 42 -26 65 -33c25 -7 50 -9 76 -7c25 2 50 9 73 20c11 5 22 12 32 19s19 15 27 24c4 4 8 9 12 14s7 10 10 15
-c6 10 12 20 17 31c4 8 8 16 11 25c2 4 3 9 4 13s1 7 2 11c1 -9 1 -18 -1 -26c-1 -5 -2 -11 -4 -16c-1 -5 -3 -10 -5 -15c-4 -10 -8 -19 -13 -28c-6 -11 -12 -21 -20 -30s-16 -18 -25 -26c-18 -15 -40 -27 -62 -36c-23 -9 -48 -14 -73 -15s-51 3 -75 11c-23 7 -45 19 -65 33
-c-19 14 -36 31 -50 50c-7 10 -13 20 -18 31s-9 21 -13 33c-6 18 -9 37 -10 56c-1 20 1 39 5 58c5 24 15 47 28 68c12 19 26 35 42 50s35 27 55 36c23 11 48 19 74 21c10 1 19 1 29 1c13 0 26 -2 38 -4c24 -5 47 -14 68 -26s41 -29 57 -48c15 -18 27 -37 36 -58
-c4 -10 7 -21 10 -32c2 -8 5 -17 6 -26z" />
- <glyph glyph-name="ion-load-d" unicode="&#xf29d;" horiz-adv-x="384"
-d="M368 208c9 0 16 -7 16 -16s-7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80zM112 192c0 -9 -7 -16 -16 -16h-80c-9 0 -16 7 -16 16s7 16 16 16h80c9 0 16 -7 16 -16zM192 112c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM192 384
-c9 0 16 -7 16 -16v-80c0 -9 -7 -16 -16 -16s-16 7 -16 16v80c0 9 7 16 16 16zM261 232c-4 8 -2 18 6 22l69 40c8 4 18 2 22 -6s2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6zM123 152c4 -8 2 -18 -6 -22l-69 -40c-8 -4 -18 -2 -22 6s-2 18 6 22l69 40c8 4 18 2 22 -6zM254 117
-l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM118 352l40 -69c4 -8 2 -18 -6 -22s-18 -2 -22 6l-40 69c-4 8 -2 18 6 22s18 2 22 -6zM232 261c-8 4 -10 14 -6 22l40 69c4 8 14 10 22 6s10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6zM152 123
-c8 -4 10 -14 6 -22l-40 -69c-4 -8 -14 -10 -22 -6s-10 14 -6 22l40 69c4 8 14 10 22 6zM352 118c8 -4 10 -14 6 -22s-14 -10 -22 -6l-69 40c-8 4 -10 14 -6 22s14 10 22 6zM32 266c-8 4 -10 14 -6 22s14 10 22 6l69 -40c8 -4 10 -14 6 -22s-14 -10 -22 -6z" />
- <glyph glyph-name="ion-location" unicode="&#xf1ff;" horiz-adv-x="239"
-d="M119 384c66 0 120 -54 120 -120c0 -115 -120 -264 -120 -264s-119 149 -119 264c0 66 53 120 119 120zM119 206c31 0 57 25 57 56s-26 57 -57 57s-56 -26 -56 -57s25 -56 56 -56z" />
- <glyph glyph-name="ion-lock-combination" unicode="&#xf4d4;" horiz-adv-x="384"
-d="M320 271c39 -35 64 -86 64 -143c0 -106 -86 -192 -192 -192s-192 86 -192 192c0 57 25 108 64 143v49c0 71 57 128 128 128s128 -57 128 -128v-49zM96 320v-26c28 16 61 26 96 26s68 -10 96 -26v26c0 53 -43 96 -96 96s-96 -43 -96 -96zM192 -32c88 0 160 72 160 160
-s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM192 272c80 0 144 -64 144 -144s-64 -144 -144 -144s-144 64 -144 144s64 144 144 144zM315 95c2 9 4 18 4 29h-7v7h8c0 11 -2 20 -5 30l-25 -7l-4 12l25 8c-4 10 -8 18 -14 26l-11 -8l-4 6l11 8c-6 8 -13 16 -21 22
-l-15 -21l-11 8l15 20c-8 6 -17 11 -27 14l-4 -13l-6 2l5 13c-9 3 -20 5 -29 5v-13v-6h-16v6v13c-11 -1 -19 -2 -29 -5l4 -12l-6 -2l-4 12c-10 -3 -19 -8 -27 -14l15 -20l-10 -8l-15 21c-8 -6 -16 -14 -22 -22l11 -8l-4 -5l-10 8c-6 -8 -10 -17 -14 -27l24 -8l-5 -12l-25 7
-c-3 -10 -3 -19 -3 -30h6v-7h-5c0 -11 2 -20 4 -29l24 7l4 -12l-24 -8c4 -10 8 -19 14 -27l9 7l4 -5l-9 -7c6 -8 13 -16 21 -22l15 21l10 -8l-15 -20c8 -5 17 -11 27 -14l3 11l7 -2l-4 -11c10 -3 18 -4 29 -5v13v6h16v-6v-13c9 1 19 2 29 5l-5 12l6 2l4 -12c10 3 19 8 27 14
-l-15 20l11 8l15 -21c8 6 15 14 21 22l-11 7l4 6l10 -8c6 8 11 17 15 27l-25 8l4 12zM111 128c0 54 27 81 81 81s81 -27 81 -81s-27 -81 -81 -81s-81 27 -81 81z" />
- <glyph glyph-name="ion-locked" unicode="&#xf200;" horiz-adv-x="384"
-d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46s43 -73 43 -115v-31h22c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340zM97 255v-31h17h155h18v31c0 27 -10 61 -28 80v0v1
-c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80z" />
- <glyph glyph-name="ion-log-in" unicode="&#xf29e;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-96 0 -177 60 -209 144h34c9 -20 23 -40 39 -56c36 -36 85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56c-16 -16 -30 -36 -39 -56h-34c32 84 113 144 209 144z
-M175 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91z" />
- <glyph glyph-name="ion-log-out" unicode="&#xf29f;"
-d="M335 124l52 52h-227v32h227l-52 52l22 23l91 -91l-91 -91zM359 56c3 3 6 5 8 8h41c-40 -58 -108 -96 -184 -96c-124 0 -224 100 -224 224s100 224 224 224c76 0 144 -38 184 -96h-41c-2 3 -5 5 -8 8c-36 36 -84 56 -135 56s-100 -20 -136 -56s-56 -85 -56 -136
-s20 -100 56 -136s85 -56 136 -56s99 20 135 56z" />
- <glyph glyph-name="ion-loop" unicode="&#xf201;" horiz-adv-x="334"
-d="M184 148v-58c49 8 86 50 86 102c0 16 -4 30 -10 44c-3 6 -5 12 -9 17l47 43c1 -1 2 -3 3 -4c21 -28 33 -62 33 -100v-4c-2 -72 -47 -131 -111 -154c-12 -4 -26 -8 -39 -9v-57l-76 67l-26 23l44 39zM0 196c2 72 48 133 113 155c12 4 24 7 37 8v57l76 -67l26 -23l-44 -39
-l-59 -51l1 58c-49 -8 -86 -51 -86 -102c0 -16 4 -31 10 -45c3 -6 5 -11 9 -16l-47 -44c-1 2 -2 3 -3 5c-20 28 -33 63 -33 100v4z" />
- <glyph glyph-name="ion-magnet" unicode="&#xf2a0;" horiz-adv-x="384"
-d="M192 416c115 0 192 -78 192 -200c0 -49 -3 -77 -15 -128c-16 -66 -39 -113 -39 -113v-1c-2 -3 -6 -6 -10 -6c-1 0 -3 1 -4 1l-2 1l-50 20l-2 1c-3 2 -5 5 -5 9c0 1 0 3 1 4v1c7 16 27 59 37 101s13 63 13 108c0 71 -52 122 -116 122s-116 -51 -116 -122
-c0 -45 3 -66 13 -108s30 -85 37 -101v-1c1 -1 1 -3 1 -4c0 -4 -2 -7 -5 -9l-2 -1l-50 -20l-2 -1c-1 0 -3 -1 -4 -1c-4 0 -8 3 -10 6v1s-24 47 -40 113c-12 51 -14 79 -14 128c0 122 77 200 192 200zM109 4c-9 19 -27 59 -36 98l-42 -12c13 -53 30 -92 35 -104l43 17v1z
-M317 -14c5 12 23 51 36 104l-43 12c-9 -39 -26 -79 -35 -98v-1z" />
- <glyph glyph-name="ion-male" unicode="&#xf2a1;"
-d="M448 256l-63 63l-69 -69c22 -30 36 -66 36 -106c0 -97 -79 -176 -176 -176s-176 79 -176 176s79 176 176 176c40 0 76 -14 106 -36l69 69l-63 63h160v-160zM266 54c24 24 38 56 38 90s-14 66 -38 90s-56 38 -90 38s-66 -14 -90 -38s-38 -56 -38 -90s14 -66 38 -90
-s56 -38 90 -38s66 14 90 38z" />
- <glyph glyph-name="ion-man" unicode="&#xf202;" horiz-adv-x="168"
-d="M84 341c-21 0 -37 17 -37 38s16 37 37 37s37 -16 37 -37s-16 -38 -37 -38zM121 333c28 0 47 -24 47 -48v-114c0 -22 -32 -22 -32 0v105h-5v-286c0 -28 -41 -31 -43 0v165h-1h-7v-165c-1 -29 -43 -30 -43 0v286h-6v-105c0 -22 -31 -22 -31 0v114c0 24 19 48 47 48h37h37z
-" />
- <glyph glyph-name="ion-map" unicode="&#xf203;"
-d="M441 311c4 -3 7 -8 7 -14v-281c0 -6 -2 -11 -7 -14c-2 -1 -5 -2 -7 -2c-3 0 -6 0 -8 2l-97 66l-97 -66c-5 -3 -10 -3 -15 0l-97 66l-97 -66c-5 -3 -10 -3 -15 0s-8 8 -8 14v281c0 6 3 11 7 14l105 71c5 3 10 3 15 0l97 -66l98 66c5 3 10 3 15 0zM103 95v242l-71 -50v-242
-zM135 95l73 -49v129l-4 -11c-7 2 -13 6 -20 10l8 13c5 -3 11 -6 16 -8v109l-73 49v-101c4 -2 9 -4 13 -7l-10 -13c-1 1 -2 1 -3 2v-123zM240 46l73 49v109c0 -1 -1 -1 -1 -2l-6 -6l-12 11l6 6c3 3 5 7 8 10l5 -5v119l-73 -49v-112h7l3 -15c-3 0 -6 -1 -9 -1h-1v-114zM416 46
-v242l-71 49v-88c3 1 5 1 8 2l4 -16c-4 -1 -8 -1 -12 -3v-137zM97 227c-3 -1 -11 -5 -14 -7l-11 12c4 3 8 6 12 8c3 2 6 3 9 4l5 -15c-2 -1 1 -1 -1 -2zM265 182c5 3 10 5 15 10l11 -12c-6 -6 -12 -10 -19 -13zM67 192v-1l-15 5v1c2 7 4 13 9 20l13 -9c-4 -5 -5 -10 -7 -16z
-M166 210c3 -4 7 -8 11 -11l-11 -12c-4 4 -8 9 -12 13l-3 3l12 11c1 -1 2 -3 3 -4zM376 218l-11 12l10 10l-10 10l11 12l10 -11l11 11l11 -12l-10 -10l10 -10l-11 -12l-11 11z" />
- <glyph glyph-name="ion-medkit" unicode="&#xf2a2;"
-d="M440 304c4 0 8 -4 8 -8v-288c0 -4 -4 -8 -8 -8h-432c-4 0 -8 4 -8 8v288c0 4 4 8 8 8h120v31c1 28 22 49 51 49h45h45c30 0 50 -21 51 -49v-31h120zM160 331v-27h128v27v1v1c0 10 -9 19 -19 19h-45h-45c-10 0 -19 -9 -19 -19v-1v-1zM320 128v64h-64v64h-64v-64h-64v-64
-h64v-64h64v64h64z" />
- <glyph glyph-name="ion-merge" unicode="&#xf33f;" horiz-adv-x="384"
-d="M320 224c35 0 64 -29 64 -64s-29 -64 -64 -64c-24 0 -44 13 -55 32h-10c-61 0 -115 25 -159 74v-115c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v210c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -19 -8 -37 -22 -49
-c4 -9 17 -35 37 -58c32 -35 70 -53 112 -53h10c11 19 31 32 55 32zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 128c18 0 32 14 32 32s-14 32 -32 32
-s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-mic-a" unicode="&#xf204;" horiz-adv-x="288"
-d="M0 210c0 10 9 19 20 19s19 -9 19 -19v-14c0 -28 12 -53 31 -72s45 -31 74 -31s55 12 74 31s31 44 31 72v14c0 10 8 19 19 19s20 -9 20 -19v-14c0 -66 -46 -120 -108 -136c-1 0 -3 -1 -4 -1c-6 -2 -10 -7 -12 -13v-58c0 -11 -9 -20 -20 -20v0c-11 0 -20 9 -20 20v58
-c-2 6 -6 11 -12 13c-1 0 -3 1 -4 1c-62 16 -108 70 -108 136v14zM67 340c0 42 34 76 77 76s78 -34 78 -76v-144c0 -42 -35 -75 -78 -75s-77 33 -77 75v144z" />
- <glyph glyph-name="ion-mic-b" unicode="&#xf205;" horiz-adv-x="160"
-d="M80 416c35 0 65 -23 76 -59c6 -18 4 -45 2 -55s-8 -20 -14 -28c-3 -4 -7 -7 -11 -9c-1 0 -1 -1 -2 -1c-3 -1 -6 -2 -10 -3c-12 -3 -25 -5 -39 -5v0h-1h-1v0c-14 0 -29 2 -41 5c-4 1 -7 2 -10 3c-1 0 -1 1 -2 1c-4 2 -8 5 -11 9c-6 8 -12 18 -14 28s-4 37 2 55
-c11 36 41 59 76 59zM119 247c6 0 12 -5 12 -12v-2c-5 -67 -18 -241 -19 -252c0 0 -3 -13 -32 -13v0c-29 0 -32 13 -32 13c-1 11 -13 185 -18 252v2c0 7 5 12 11 12h1c1 0 1 -1 2 -1c2 0 4 -1 6 -1c9 -2 21 -2 31 -2s20 0 29 2c2 0 4 1 6 1c1 0 1 1 2 1h1zM90 166v33
-c0 6 -4 11 -10 11s-10 -5 -10 -11v-33c0 -6 4 -11 10 -11s10 5 10 11z" />
- <glyph glyph-name="ion-mic-c" unicode="&#xf206;" horiz-adv-x="256"
-d="M201 416c30 0 55 -23 55 -52v-28h-59v-37h59v-43h-59v-37h59v-43h-59v-37h59v-42c0 -29 -25 -52 -55 -52h-30v-77h-86v77h-30c-30 0 -55 23 -55 52v42h152v37h-152v43h152v37h-152v43h152v37h-152v28c0 29 25 52 55 52h146z" />
- <glyph glyph-name="ion-minus-circled" unicode="&#xf207;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-256v-32h256z" />
- <glyph glyph-name="ion-minus-round" unicode="&#xf208;" horiz-adv-x="384"
-d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322z" />
- <glyph glyph-name="ion-minus" unicode="&#xf209;" horiz-adv-x="384"
-d="M0 160v64h384v-64h-384z" />
- <glyph glyph-name="ion-model-s" unicode="&#xf2c1;" horiz-adv-x="512"
-d="M509 57v-8v0v-1v-3v0c0 -3 -1 -5 -1 -7c-1 -12 -2 -18 -6 -20c-3 -2 -6 -2 -10 -2h-43s-10 1 -11 16v8c20 1 39 1 52 0c10 0 13 0 16 6c2 3 2 7 3 11zM3 57c1 -4 1 -8 3 -11c3 -6 6 -6 16 -6c13 1 32 1 52 0v-8c-1 -15 -8 -16 -11 -16h-43s-7 0 -10 2c-4 2 -6 8 -7 20v7
-v0v3v1v0v8zM512 151c0 -31 -2 -58 -2 -68c0 -4 0 -11 -1 -18c-1 -4 -1 -8 -3 -11c-3 -6 -6 -6 -16 -6c-13 1 -32 1 -52 0c-13 0 -27 -2 -39 -2c-30 -1 -21 4 -34 4s-63 -2 -109 -2s-97 2 -110 2s-4 -5 -34 -4c-12 0 -25 2 -38 2c-20 1 -39 1 -52 0c-10 0 -13 0 -16 6
-c-2 3 -2 7 -3 11c-1 7 -1 14 -1 18c0 10 -2 37 -2 68s4 61 6 64c1 2 8 9 26 21s17 10 20 18c-3 1 -5 3 -7 3c-4 0 -4 -3 -12 -3s-24 1 -28 5c-4 3 -5 5 -5 8s2 9 5 13s19 6 27 7s10 0 12 -1c4 -2 3 -22 3 -22l9 -1c5 13 12 41 24 62c13 23 26 30 32 32s10 2 48 6s69 5 96 5
-s58 -1 96 -5s42 -4 48 -6s19 -9 32 -32c12 -21 19 -49 24 -62l9 1s-1 20 3 22c2 1 4 2 12 1s24 -3 27 -7s5 -10 5 -13s-1 -4 -5 -8s-20 -5 -28 -5s-8 3 -12 3c-2 0 -4 -2 -7 -3c3 -8 2 -6 20 -18s25 -19 26 -21c2 -3 6 -33 6 -64zM86 303c-5 -11 -11 -33 -10 -36
-s-1 -5 15 -4s117 3 165 3s149 -2 165 -3s14 1 15 4s-5 25 -10 36s-17 31 -26 37c-2 1 -17 7 -54 9c-34 2 -72 3 -90 3s-56 -1 -90 -3c-37 -2 -52 -8 -54 -9c-7 -4 -21 -26 -26 -37zM123 178c7 2 11 2 11 2s-17 16 -48 25s-49 11 -66 10c0 0 -3 -16 0 -27s8 -10 16 -12
-s13 -5 16 -4s7 4 12 4s29 -4 38 -4s14 4 21 6zM358 99c15 2 34 19 21 33c-18 19 -15 19 -55 24c-35 4 -61 4 -68 4s-33 0 -68 -4c-40 -5 -37 -5 -55 -24c-13 -14 6 -31 21 -33c14 -2 74 -3 102 -3s88 1 102 3zM492 188c3 11 0 27 0 27c-17 1 -35 -1 -66 -10s-48 -26 -48 -26
-s4 1 11 -1s12 -6 21 -6s33 4 38 4s9 -3 12 -4s8 2 16 4s13 1 16 12z" />
- <glyph glyph-name="ion-monitor" unicode="&#xf20a;"
-d="M437 384c6 0 11 -5 11 -11v-266c0 -6 -5 -11 -11 -11h-426c-6 0 -11 5 -11 11v266c0 6 5 11 11 11h426zM416 128v224h-384v-224h384zM270 0h-92c-28 0 -42 3 -30 12s30 16 30 23c0 4 1 45 1 45h45h45s1 -41 1 -45c0 -7 18 -14 30 -23s-2 -12 -30 -12z" />
- <glyph glyph-name="ion-more" unicode="&#xf20b;" horiz-adv-x="384"
-d="M50 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM192 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48zM334 144c-28 0 -50 21 -50 48c0 26 22 48 50 48s50 -22 50 -48c0 -27 -22 -48 -50 -48z" />
- <glyph glyph-name="ion-mouse" unicode="&#xf340;" horiz-adv-x="256"
-d="M128 416h-1h5h-4zM251 255c2 1 2 1 4 1h1v-176c0 -37 -21 -71 -53 -91c-5 -3 -9 -5 -14 -7v-1v0c-18 -9 -39 -13 -61 -13c-71 0 -128 50 -128 112v176h1c2 0 3 0 5 -1v0c34 -13 76 -23 122 -23s88 10 122 23h1zM189 -18c5 2 10 4 14 7c-5 -3 -9 -5 -14 -7v0v-1v1v0z
-M203 -11c-4 -3 -9 -5 -14 -7c5 2 9 4 14 7zM132 416c69 -2 124 -51 124 -112v-23c-2 -2 -4 -4 -6 -5c-1 -1 -3 0 -4 -1c-23 -10 -50 -16 -82 -19h-1h-2c-11 0 -17 0 -17 10v86c0 9 -7 16 -16 16s-16 -7 -16 -16v-85c0 -11 -6 -11 -17 -11h-2c-32 3 -61 9 -84 19v0
-c-1 0 -1 1 -2 1c-3 1 -5 3 -7 5v23c0 61 57 111 127 112h5z" />
- <glyph glyph-name="ion-music-note" unicode="&#xf20c;" horiz-adv-x="384"
-d="M362 416c12 0 22 -9 22 -21v-303s-3 -43 -12 -55v0c-9 -15 -25 -21 -43 -21h-37c-28 0 -52 20 -52 48s24 48 52 48h60v192l-208 -38v-232c0 -8 -3 -27 -13 -41c-1 -2 -2 -3 -3 -5c0 -1 -1 -1 -2 -2v0c-9 -11 -23 -18 -38 -18h-37c-28 0 -51 20 -51 48s23 48 51 48v0h61
-v286c1 14 13 28 27 32l218 33s3 1 5 1z" />
- <glyph glyph-name="ion-navicon-round" unicode="&#xf20d;" horiz-adv-x="384"
-d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 352c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32h322zM353 96c17 0 31 -14 31 -32s-14 -32 -31 -32h-322c-17 0 -31 14 -31 32s14 32 31 32
-h322z" />
- <glyph glyph-name="ion-navicon" unicode="&#xf20e;" horiz-adv-x="320"
-d="M0 175v32h320v-32h-320zM0 271v32h320v-32h-320zM0 79v32h320v-32h-320z" />
- <glyph glyph-name="ion-navigate" unicode="&#xf2a3;"
-d="M448 416l-192 -448v256h-256z" />
- <glyph glyph-name="ion-network" unicode="&#xf341;" horiz-adv-x="384"
-d="M384 352c0 -24 -13 -44 -32 -55v-93l-128 -64v-53c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v53l-128 64v93c-19 11 -32 31 -32 55c0 35 29 64 64 64s64 -29 64 -64c0 -24 -13 -44 -32 -55v-53l96 -48l96 48v53c-19 11 -32 31 -32 55
-c0 35 29 64 64 64s64 -29 64 -64zM64 384c-18 0 -32 -14 -32 -32s14 -32 32 -32s32 14 32 32s-14 32 -32 32zM192 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM320 320c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-no-smoking" unicode="&#xf2c2;"
-d="M328 144v48h16v-48h-16zM80 144v48h90l48 -48h-138zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-24 0 -47 4 -68 11c-2 1 -3 1 -5 2c-12 4 -24 9 -35 15h-1c-69 38 -115 112 -115 196c0 124 100 224 224 224c24 0 47 -4 68 -11c2 -1 3 -1 5 -2
-c12 -4 24 -9 35 -15v0zM224 22c37 0 72 12 100 32l-238 238c-20 -28 -32 -63 -32 -100c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c2 -1 3 -1 5 -2c9 -3 19 -5 29 -7c9 -2 18 -2 27 -2zM362 93c20 28 32 62 32 99c0 66 -37 123 -91 151c-6 3 -12 6 -18 8c-2 1 -3 1 -5 2
-c-9 3 -19 5 -29 7c-9 2 -18 2 -27 2c-37 0 -71 -12 -99 -32zM320 150l-42 42h42v-42zM352 144v48h16v-48h-16zM328 235c16 -7 16 -27 16 -34v-1h-16v1c0 8 -1 17 -7 20c-4 2 -13 4 -39 4h-3c-13 0 -24 0 -33 13c-5 8 -5 19 -2 29c-4 1 -8 1 -12 3c-17 7 -26 20 -26 38
-c0 33 27 44 39 44v-16c-1 0 -23 -2 -23 -28c0 -11 5 -19 16 -23c9 -4 18 -3 18 -3c3 0 6 -2 7 -5s2 -6 0 -8c-5 -7 -7 -18 -4 -22c4 -6 7 -6 20 -6h3c24 0 37 -2 46 -6zM368 200v0h-16c0 28 -4 41 -7 46c-6 10 -14 14 -25 14h-30c-3 0 -5 2 -6 4s-1 6 0 8c0 0 8 18 6 32
-c-1 8 -6 17 -27 17v16c24 0 40 -11 43 -30c2 -11 0 -23 -3 -31h17c16 0 30 -8 39 -22c6 -10 9 -28 9 -54z" />
- <glyph glyph-name="ion-nuclear" unicode="&#xf2a4;"
-d="M176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM176 176c0 32 16 48 48 48s48 -16 48 -48s-16 -48 -48 -48s-48 16 -48 48zM448 176c0 -27 -5 -53 -15 -78s-23 -47 -40 -66s-36 -35 -59 -48l-79 136c22 12 33 31 33 56h160zM224 240
-c-12 0 -23 -3 -33 -9l-80 138c35 20 73 31 113 31s78 -10 113 -30l-81 -139c-10 6 -21 9 -32 9zM160 176c0 -25 11 -44 33 -56l-79 -136c-35 20 -62 46 -83 80s-31 71 -31 112h160z" />
- <glyph glyph-name="ion-outlet" unicode="&#xf342;"
-d="M338 416c61 0 110 -51 110 -113v-222c0 -62 -49 -113 -110 -113h-228c-61 0 -110 51 -110 113v222c0 62 49 113 110 113h228zM143 197v102c0 11 -9 21 -20 21h-23c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h23c11 0 20 9 20 20v1zM265 52v29
-c0 23 -18 42 -41 42s-41 -19 -41 -42v-29v0c0 -11 9 -20 20 -20h21h21c11 0 20 7 20 18v2zM368 197v102c0 11 -9 21 -20 21h-24c-11 0 -19 -9 -20 -20v-2v-101v-1c0 -11 9 -20 20 -20h24c11 0 20 9 20 20v1z" />
- <glyph glyph-name="ion-paintbrush" unicode="&#xf4d5;"
-d="M118 165c52 0 102 -41 90 -102c-11 -52 -54 -71 -90 -77c-30 -5 -100 0 -118 35c24 9 34 26 34 49c0 49 32 95 84 95zM436 388c13 -13 17 -30 5 -45l-154 -175c2 -9 1 -17 -3 -23l-50 -58v0v0c-2 -2 -4 -2 -6 0c-1 1 -1 2 -1 3v1c2 53 -41 87 -89 90v0h-2s-2 0 -2 1
-c-2 2 -2 4 0 6l59 49c6 4 14 4 23 2l175 154c15 12 32 8 45 -5zM134 188v0v0v0z" />
- <glyph glyph-name="ion-paintbucket" unicode="&#xf4d6;" horiz-adv-x="480"
-d="M112 384l32 32l275 -276l-58 -12l-163 -160l-198 192l152 152zM309 160l-110 110l-110 -110h220zM419 140c0 0 61 -66 61 -99s-27 -60 -61 -60s-60 27 -60 60s60 99 60 99z" />
- <glyph glyph-name="ion-paper-airplane" unicode="&#xf2c3;"
-d="M0 176l448 240l-112 -448l-112 112l-80 -112l-16 160zM319 31l80 323l-322 -173l83 -31l192 154l-128 -176z" />
- <glyph glyph-name="ion-paperclip" unicode="&#xf20f;" horiz-adv-x="160"
-d="M149 293c6 0 11 -5 11 -12v-195c0 -28 -10 -49 -24 -63c-15 -15 -36 -23 -56 -23c-40 0 -80 31 -80 88v234c0 24 11 44 29 54s39 11 57 0s29 -30 29 -54l-1 -225c0 -13 -3 -24 -9 -32s-16 -12 -25 -12c-17 0 -34 15 -34 44v173c0 6 6 12 12 12s11 -6 11 -12v-173
-c0 -14 5 -21 11 -21c2 0 5 2 7 4c3 4 5 10 5 17v225c0 15 -6 28 -17 34s-24 6 -35 0s-17 -19 -17 -34v-234c0 -44 29 -64 57 -64s57 19 57 63v195c0 6 6 11 12 11z" />
- <glyph glyph-name="ion-pause" unicode="&#xf210;" horiz-adv-x="256"
-d="M96 12c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72c7 0 12 -5 12 -12v-360zM244 384c7 0 12 -5 12 -12v-360c0 -7 -5 -12 -12 -12h-72c-7 0 -12 5 -12 12v360c0 7 5 12 12 12h72z" />
- <glyph glyph-name="ion-person-add" unicode="&#xf211;"
-d="M397 120h-42v51h-51v42h51v51h42v-51h51v-42h-51v-51zM384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27
-c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" />
- <glyph glyph-name="ion-person-stalker" unicode="&#xf212;"
-d="M393 123c42 -16 52 -26 53 -33c2 -9 2 -90 2 -90h-98c0 18 0 71 -1 77c-1 10 -1 29 -55 50c-8 3 -14 5 -19 7c18 8 15 15 15 28c0 19 -9 11 -15 47c-2 14 -4 5 -9 28c-3 12 1 12 1 18s-1 10 -2 22c-1 14 11 52 57 52s59 -38 58 -52c-1 -12 -2 -16 -2 -22
-c-1 -6 4 -6 1 -18c-5 -23 -7 -14 -9 -28c-6 -36 -16 -28 -16 -47c0 -29 -2 -23 39 -39zM325 0h-163h-162s0 65 2 77c2 10 15 22 69 43c54 20 50 17 50 55c0 24 -12 8 -20 54c-3 18 -5 7 -11 36c-3 15 2 16 1 23s-2 14 -3 29c-2 19 15 67 74 67s77 -49 75 -67
-c-1 -15 -2 -22 -3 -29s5 -8 2 -23c-6 -29 -9 -18 -12 -36c-8 -46 -20 -30 -20 -54c0 -32 -2 -36 31 -48c6 -2 11 -4 19 -7c54 -21 67 -33 69 -43c1 -6 2 -28 2 -47v-30z" />
- <glyph glyph-name="ion-person" unicode="&#xf213;" horiz-adv-x="384"
-d="M384 0h-192h-192s0 26 2 40c2 11 17 25 81 49c63 23 60 12 60 55c0 28 -14 11 -23 64c-4 21 -6 7 -14 40c-4 17 3 19 2 27s-2 16 -4 33c-2 21 18 76 88 76s90 -55 88 -76c-2 -17 -3 -25 -4 -33s6 -10 2 -27c-8 -33 -10 -19 -14 -40c-9 -53 -23 -36 -23 -64
-c0 -43 -3 -32 60 -55c64 -24 79 -38 81 -49c2 -14 2 -40 2 -40z" />
- <glyph glyph-name="ion-pie-graph" unicode="&#xf2a5;"
-d="M1 192c0 5 -1 11 -1 16c0 115 93 208 208 208c5 0 11 -1 16 -1v-32v-191h-191h-32zM78 46c-26 32 -42 71 -45 114h223v223c43 -3 82 -19 114 -45c47 -38 78 -96 78 -162c0 -115 -93 -208 -208 -208c-66 0 -124 31 -162 78z" />
- <glyph glyph-name="ion-pin" unicode="&#xf2a6;" horiz-adv-x="224"
-d="M188 220c20 -10 36 -31 36 -55c0 -17 -3 -21 -15 -21h-81l-12 -176h-8l-12 176h-81c-12 0 -15 5 -15 21c0 24 16 45 36 55v0c1 0 3 1 4 2c7 4 12 11 14 19l18 118v5c0 7 -4 10 -10 13v0c-1 0 -1 1 -2 1c-7 3 -12 9 -12 17c0 20 6 21 18 21h92c12 0 18 -1 18 -21
-c0 -8 -5 -14 -12 -17c-1 0 -1 -1 -2 -1v0c-6 -3 -10 -6 -10 -13v-5l18 -118c2 -8 7 -15 14 -19c1 -1 3 -2 4 -2v0z" />
- <glyph glyph-name="ion-pinpoint" unicode="&#xf2a7;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c32 32 51 75 55 120l-63 8v16l63 8c-4 45 -23 88 -55 120s-75 51 -120 55l-8 -63h-16l-8 63c-45 -4 -88 -23 -120 -55s-51 -75 -55 -120l63 -8v-16l-63 -8
-c4 -45 23 -88 55 -120s75 -51 120 -55l8 63h16l8 -63c45 4 88 23 120 55z" />
- <glyph glyph-name="ion-pizza" unicode="&#xf2a8;" horiz-adv-x="352"
-d="M315 318c10 -4 12 -13 9 -20l-148 -330s-143 320 -148 331s2 16 9 19c39 18 90 28 139 28s96 -9 139 -28zM112 256c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM176 109c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM240 224
-c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM342 382c6 -3 10 -6 10 -13c0 -1 0 -3 -1 -5l-8 -19c-3 -5 -8 -9 -14 -9c-1 0 -3 1 -6 2c-41 18 -95 30 -147 30s-102 -11 -147 -30c-3 -1 -4 -2 -6 -2c-6 0 -11 4 -14 9l-8 19s-1 2 -1 5c0 8 6 12 10 14
-c49 21 107 33 166 33s118 -13 166 -34z" />
- <glyph glyph-name="ion-plane" unicode="&#xf214;"
-d="M250 136c0 -7 1 -69 -6 -102c-1 -4 3 -4 5 -7l51 -33c2 -2 3 -8 3 -8l1 -18l-68 16l-12 -32l-12 32l-68 -16l1 18s0 6 2 8l52 33c2 3 6 3 5 7c-7 33 -6 95 -6 102s-8 5 -8 5l-62 -13l-128 -49c0 23 2 26 9 31l183 131s5 63 5 113c0 24 12 78 27 78s27 -54 27 -78
-c0 -53 5 -113 5 -113l183 -131c6 -4 9 -7 9 -31l-128 49l-62 13s-8 2 -8 -5z" />
- <glyph glyph-name="ion-planet" unicode="&#xf343;" horiz-adv-x="512"
-d="M96 182c39 -24 85 -48 134 -69c44 -19 87 -35 126 -46c-27 -22 -62 -35 -100 -35c-85 0 -155 66 -160 150zM107 251c1 4 3 8 5 11c10 21 26 40 44 55c27 22 62 35 100 35c85 0 155 -66 160 -150v-10c0 -21 -4 -41 -11 -59c-1 -4 -3 -8 -5 -11c-6 1 -13 3 -19 5
-c-39 11 -82 26 -126 45c-56 24 -108 52 -148 79zM430 163c57 -35 87 -62 81 -82c-4 -12 -19 -17 -44 -17c-50 0 -136 23 -231 64c-141 61 -246 140 -235 175c4 12 20 20 44 17c22 -3 47 -9 73 -18c-8 -9 -8 -12 -14 -22c-23 5 -44 8 -59 8h-6c2 -2 5 -6 8 -9
-c11 -11 27 -24 46 -37c41 -29 97 -59 156 -85c44 -19 89 -35 128 -46c36 -10 68 -15 90 -15h6c-2 2 -5 6 -8 9c-10 10 -24 22 -41 34c4 11 5 12 6 24z" />
- <glyph glyph-name="ion-play" unicode="&#xf215;" horiz-adv-x="320"
-d="M309 215c7 -6 11 -14 11 -23s-4 -17 -11 -23l-278 -166c-4 -2 -7 -3 -11 -3c-11 0 -20 9 -20 20v0v344v0c0 11 9 20 20 20c4 0 8 -1 11 -3z" />
- <glyph glyph-name="ion-playstation" unicode="&#xf30a;" horiz-adv-x="512"
-d="M400 245c0 -11 0 -22 -2 -33c-2 -10 -5 -20 -10 -28c-4 -7 -10 -13 -18 -17c-7 -4 -16 -6 -24 -6c-13 0 -31 4 -42 9v131v2c0 9 -7 17 -15 17h-1c-9 0 -16 -8 -16 -17v-3v-300l-80 26v358s28 -4 75 -18s67 -21 84 -31c8 -5 15 -11 21 -17c7 -7 13 -14 17 -23
-c8 -16 10 -33 11 -50zM87 90c-4 -2 -8 -3 -11 -6c-1 -1 -3 -3 -2 -5s4 -4 6 -5c6 -2 13 -3 19 -3c7 0 15 0 22 2c5 1 9 3 14 5c30 10 41 12 41 12v-42c-14 -2 -36 -4 -50 -4c-30 -1 -60 4 -88 13c-9 3 -19 6 -27 12c-4 3 -8 8 -10 13c-2 4 -1 9 1 13s5 8 9 11
-c9 6 18 10 28 14c8 4 17 7 26 10c35 12 111 37 111 37v-47s-62 -20 -89 -30zM512 102c0 -5 -2 -9 -5 -13c-6 -7 -14 -11 -22 -15s-17 -8 -26 -11c-54 -19 -171 -59 -171 -59v48s92 30 133 44c6 2 11 4 16 8c2 2 4 3 3 6c-1 2 -4 4 -6 5c-6 2 -13 3 -19 3
-c-10 0 -20 -2 -30 -5c-29 -10 -97 -32 -97 -32v49s45 14 67 16c8 1 23 1 31 1c26 0 54 -3 79 -11c5 -2 8 -3 14 -5c9 -3 18 -8 25 -14c4 -4 8 -9 8 -15z" />
- <glyph glyph-name="ion-plus-circled" unicode="&#xf216;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM352 176v32h-112v112h-32v-112h-112v-32h112v-112h32v112h112z" />
- <glyph glyph-name="ion-plus-round" unicode="&#xf217;" horiz-adv-x="384"
-d="M353 224c17 0 31 -14 31 -32s-14 -32 -31 -32h-129v-129c0 -17 -14 -31 -32 -31s-32 14 -32 31v129h-129c-17 0 -31 14 -31 32s14 32 31 32h129v129c0 17 14 31 32 31s32 -14 32 -31v-129h129z" />
- <glyph glyph-name="ion-plus" unicode="&#xf218;" horiz-adv-x="384"
-d="M384 224v-64h-160v-160h-64v160h-160v64h160v160h64v-160h160z" />
- <glyph glyph-name="ion-podium" unicode="&#xf344;"
-d="M0 0v192h128v-192h-128zM160 0v288h128v-288h-128zM320 0v128h128v-128h-128z" />
- <glyph glyph-name="ion-pound" unicode="&#xf219;"
-d="M93 96h-93v54h101l13 84h-99v54h107l22 128h64l-22 -128h106l22 128h63l-22 -128h93v-54h-102l-12 -84h99v-54h-107l-22 -128h-63l22 128h-107l-22 -128h-63zM177 234l-12 -84h106l12 84h-106v0z" />
- <glyph glyph-name="ion-power" unicode="&#xf2a9;"
-d="M224 192c-18 0 -32 14 -32 32v160c0 18 14 32 32 32s32 -14 32 -32v-160c0 -18 -14 -32 -32 -32zM347 379c61 -40 101 -109 101 -187c0 -124 -100 -224 -224 -224s-224 100 -224 224c0 78 40 147 101 187v0c5 3 11 5 17 5c18 0 32 -14 32 -32c0 -6 -2 -12 -5 -17
-c-2 -3 -4 -6 -7 -8c-1 -1 -3 -2 -4 -3c-8 -6 -16 -12 -23 -19c-30 -30 -47 -70 -47 -113s17 -83 47 -113s70 -47 113 -47s83 17 113 47s47 70 47 113s-17 83 -47 113c-7 7 -15 13 -23 19c-1 1 -3 2 -4 3c-3 2 -5 5 -7 8c-3 5 -5 11 -5 17c0 18 14 32 32 32c6 0 12 -2 17 -5
-v0z" />
- <glyph glyph-name="ion-pricetag" unicode="&#xf2aa;"
-d="M439 187c12 -12 12 -31 0 -43l-165 -167c-11 -11 -30 -11 -42 -1l-3 3l-206 209l-6 5c-6 7 -9 15 -10 24v0v2v0l-7 98v4v0c0 12 4 24 13 33l49 49c8 9 20 13 31 13h4l100 -4v0c12 0 22 -4 30 -12v0l2 -2v0l210 -211v0v0zM112 256c26 0 48 22 48 48s-22 48 -48 48
-s-48 -22 -48 -48s22 -48 48 -48z" />
- <glyph glyph-name="ion-pricetags" unicode="&#xf2ab;"
-d="M440 209c10 -11 11 -28 0 -39l-29 -29c11 11 10 28 0 39v0v0l-190 191v0l-1 1h-1c-8 7 -16 12 -27 12v0l-90 3h-4c-9 0 -19 -3 -26 -10l28 27c8 8 17 12 27 12h4l90 -4v0c11 0 19 -4 27 -11h1l1 -1v0l190 -191v0v0zM396 166v0c11 -11 11 -29 0 -40l-108 -109v1l-26 -27
-l-2 -2l-13 -13c-10 -10 -26 -10 -37 -1l-3 3l-186 188l-5 5c-5 6 -9 14 -10 22v0v2v0l-6 88v3v1c0 11 4 21 12 29l44 45l1 1l1 1c7 6 17 9 26 9h4l90 -3v0c11 0 19 -4 27 -11v0l2 -1v0l189 -191v0zM79 308c-12 -8 -21 -21 -21 -37c0 -24 19 -43 43 -43c16 0 29 9 37 21
-c4 7 7 14 7 22c0 24 -20 44 -44 44c-8 0 -15 -3 -22 -7z" />
- <glyph glyph-name="ion-printer" unicode="&#xf21a;"
-d="M392 320c28 0 56 -19 56 -55v-131c0 -31 -28 -54 -56 -54h-40v-112h-8h-8h-224h-11h-5v112h-40c-28 0 -56 24 -56 62v123c0 38 28 55 56 55h40v64h256v-64h40zM336 -16v176h-224v-176h224zM336 320v48h-224v-48h224zM384 256v16h-17v-16h17zM128 112v16h192v-16h-192z
-M128 64v16h192v-16h-192zM128 16v16h192v-16h-192z" />
- <glyph glyph-name="ion-pull-request" unicode="&#xf345;" horiz-adv-x="384"
-d="M64 384c35 0 64 -29 64 -64c0 -24 -13 -44 -32 -55v-178c19 -11 32 -31 32 -55c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 24 13 44 32 55v178c-19 11 -32 31 -32 55c0 35 29 64 64 64zM64 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM64 288
-c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32zM351 88c20 -11 33 -32 33 -56c0 -35 -29 -64 -64 -64s-64 29 -64 64c0 23 12 44 31 55v156c0 16 -4 26 -11 33c-10 9 -26 12 -52 12v-64l-96 96l96 96v-64c42 1 74 -8 96 -29c21 -19 31 -46 31 -80v-155z
-M320 0c18 0 32 14 32 32s-14 32 -32 32s-32 -14 -32 -32s14 -32 32 -32z" />
- <glyph glyph-name="ion-qr-scanner" unicode="&#xf346;" horiz-adv-x="416"
-d="M48 324v-68h-48v68c0 33 28 60 61 60h67v-48h-68c-7 0 -12 -5 -12 -12zM356 384c33 0 60 -27 60 -60v-68h-48v68c0 7 -6 12 -13 12h-67v48h68zM368 61v67h48v-67c0 -33 -27 -61 -60 -61h-68v49h68c7 0 12 5 12 12zM60 49h68v-49h-67c-33 0 -61 28 -61 61v67h48v-67
-c0 -7 5 -12 12 -12z" />
- <glyph glyph-name="ion-quote" unicode="&#xf347;" horiz-adv-x="384"
-d="M128 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15zM352 384c-41 0 -73 -11 -95 -33s-33 -54 -33 -95v-256h160v256h-96c0 23 5 39 15 49s26 15 49 15z" />
- <glyph glyph-name="ion-radio-waves" unicode="&#xf2ac;"
-d="M160 192c0 43 21 64 64 64s64 -21 64 -64s-21 -64 -64 -64s-64 21 -64 64zM112 192c0 -18 5 -35 13 -50s19 -28 33 -37l-23 -25c-6 5 -13 10 -18 16c-25 26 -37 59 -37 96s12 70 37 96c5 6 12 11 18 16l23 -25c-14 -9 -25 -22 -33 -37s-13 -32 -13 -50zM336 192
-c0 18 -5 35 -13 50s-19 28 -33 37l23 25c6 -5 13 -10 18 -16c25 -26 37 -59 37 -96s-12 -70 -37 -96c-5 -6 -12 -11 -18 -16l-23 25c14 9 25 22 33 37s13 32 13 50zM32 192c0 -27 6 -53 17 -77s27 -43 47 -59l-23 -24c-6 5 -12 10 -17 16c-18 19 -31 41 -41 65
-c-10 25 -15 51 -15 79s5 54 15 79c10 24 23 46 41 65c5 6 11 11 17 16l23 -24c-10 -8 -18 -17 -26 -27s-14 -21 -20 -32s-10 -24 -13 -37s-5 -26 -5 -40zM416 192c0 27 -6 53 -17 77s-27 43 -47 59l23 24c6 -5 12 -10 17 -16c18 -19 31 -41 41 -65c10 -25 15 -51 15 -79
-s-5 -54 -15 -79c-10 -24 -23 -46 -41 -65c-4 -5 -10 -10 -17 -16l-23 24c20 16 36 35 47 59s17 50 17 77z" />
- <glyph glyph-name="ion-record" unicode="&#xf21b;" horiz-adv-x="416"
-d="M208 -16c-115 0 -208 93 -208 208s93 208 208 208s208 -93 208 -208s-93 -208 -208 -208z" />
- <glyph glyph-name="ion-refresh" unicode="&#xf21c;"
-d="M352 96l-104 112h74c-7 65 -64 112 -130 112c-71 0 -128 -57 -128 -128s57 -128 128 -128c28 0 53 8 75 24l6 5l43 -46l-7 -6c-34 -26 -74 -41 -117 -41c-91 0 -167 64 -187 149v0c0 1 -1 2 -1 3v1v2s-1 2 -1 3v1c0 1 -1 3 -1 4v0c-1 6 -2 13 -2 19v1v4v5v5v4v1
-c0 6 1 13 2 19v0c0 1 1 3 1 4v1c0 1 1 1 1 2v3v1c0 1 1 2 1 3v0c20 85 96 149 187 149v0v0c11 0 21 -1 31 -3h2h2c57 -10 106 -47 133 -96c13 -23 21 -49 23 -77h65z" />
- <glyph glyph-name="ion-reply-all" unicode="&#xf21d;" horiz-adv-x="416"
-d="M257 256c153 0 159 -208 159 -208c-51 93 -91 102 -159 102v-92l-152 134l152 144v-80zM0 192l144 136v-57l-82 -79l82 -68v-58z" />
- <glyph glyph-name="ion-reply" unicode="&#xf21e;" horiz-adv-x="384"
-d="M384 48c-53 93 -122 102 -224 102v-92l-160 134l160 144v-80c187 0 224 -208 224 -208z" />
- <glyph glyph-name="ion-ribbon-a" unicode="&#xf348;" horiz-adv-x="352"
-d="M272 416l80 -96l-64 -134c-24 30 -59 49 -99 53zM80 416l83 -177c-40 -4 -75 -23 -99 -53l-64 134zM189 416h67l-53 -112h-27h-27l-53 112h80h13zM176 224c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM176 0c53 0 96 43 96 96
-s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM176 184c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88z" />
- <glyph glyph-name="ion-ribbon-b" unicode="&#xf349;" horiz-adv-x="384"
-d="M192 376c49 0 88 -39 88 -88s-39 -88 -88 -88s-88 39 -88 88s39 88 88 88zM192 416c71 0 128 -57 128 -128s-57 -128 -128 -128s-128 57 -128 128s57 128 128 128zM192 192c53 0 96 43 96 96s-43 96 -96 96s-96 -43 -96 -96s43 -96 96 -96zM83 194c26 -30 65 -50 109 -50
-c12 0 23 1 34 4l-34 -74l-48 -106l-48 80h-96zM301 194l83 -146h-96l-48 -80l-40 88l45 98c22 9 41 23 56 40z" />
- <glyph glyph-name="ion-sad-outline" unicode="&#xf4d7;"
-d="M367 164c3 -9 -2 -17 -11 -19c-3 -1 -7 0 -10 1c-5 2 -9 5 -11 10s-4 12 -13 15s-14 0 -19 -3c-4 -3 -10 -3 -15 -1c-3 1 -7 3 -9 6c-6 8 -3 17 5 22c15 9 29 13 49 6s29 -21 34 -37zM165 195c8 -5 10 -14 4 -22c-2 -3 -6 -5 -9 -6c-5 -2 -11 -2 -15 1c-5 3 -10 6 -19 3
-s-11 -10 -13 -15s-6 -8 -11 -10c-3 -1 -7 -2 -10 -1c-9 2 -14 10 -11 19c5 16 14 30 34 37s35 3 50 -6zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56
-s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136s85 -56 136 -56s100 20 136 56zM317 89c5 -7 3 -17 -4 -22c-3 -2 -6 -3 -9 -3c-5 0 -10 3 -13 7c0 0 -19 25 -67 25s-67 -25 -67 -25c-3 -4 -8 -7 -13 -7c-3 0 -6 1 -9 3c-7 5 -9 15 -4 22c1 2 28 39 93 39
-s92 -37 93 -39z" />
- <glyph glyph-name="ion-sad" unicode="&#xf34a;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM113 156c2 5 4 12 13 15s14 0 19 -3c4 -3 10 -3 15 -1c3 1 7 3 9 6c6 8 4 17 -4 22c-15 9 -30 13 -50 6s-29 -21 -34 -37c-3 -9 2 -17 11 -19c3 -1 7 0 10 1c5 2 9 5 11 10z
-M313 67c7 5 9 15 4 22c-1 2 -28 39 -93 39s-92 -37 -93 -39c-5 -7 -3 -17 4 -22c3 -2 6 -3 9 -3c5 0 10 3 13 7c0 0 19 25 67 25s67 -25 67 -25c3 -4 8 -7 13 -7c3 0 6 1 9 3zM356 145c9 2 14 10 11 19c-5 16 -14 30 -34 37s-34 3 -49 -6c-8 -5 -11 -14 -5 -22
-c2 -3 6 -5 9 -6c5 -2 11 -2 15 1c5 3 10 6 19 3s11 -10 13 -15s6 -8 11 -10c3 -1 7 -2 10 -1z" />
- <glyph glyph-name="ion-scissors" unicode="&#xf34b;" horiz-adv-x="384"
-d="M341 332c-13 -33 -117 -172 -117 -172l-32 -32s-31 -13 -50 -43s-33 -71 -33 -71v0c-7 -26 -28 -46 -53 -46c-31 0 -56 29 -56 64s25 64 56 64c13 0 25 -5 34 -13c2 -1 3 -3 4 -4v0l2 -2c4 -4 7 -2 14 11c8 15 17 35 27 54s38 59 38 59l17 23l144 192
-c23 -20 18 -51 5 -84zM56 0c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32zM192 160c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM143 183c-30 41 -90 125 -100 149c-13 33 -18 64 5 84l134 -178l-3 -4v0v0l-17 -23v-1v0
-c-1 -1 -10 -13 -19 -27zM328 96c31 0 56 -29 56 -64s-25 -64 -56 -64c-25 0 -47 20 -54 46v0s-13 41 -32 71c-11 17 -26 28 -36 35l29 29l1 1h1c1 1 1 2 2 4c3 -4 5 -9 7 -12c10 -19 20 -39 28 -54c7 -13 10 -15 14 -11c1 1 0 1 1 2h1c1 1 2 3 4 4c9 8 21 13 34 13zM328 0
-c15 0 28 14 28 32s-13 32 -28 32s-28 -14 -28 -32s13 -32 28 -32z" />
- <glyph glyph-name="ion-search" unicode="&#xf21f;" horiz-adv-x="384"
-d="M381 61c4 -4 4 -10 0 -14l-43 -44c-2 -2 -5 -3 -8 -3s-5 1 -7 3l-84 86c-25 -15 -52 -23 -80 -23c-87 0 -159 71 -159 159s72 159 159 159s158 -71 158 -159c0 -27 -7 -54 -21 -78zM159 322c-53 0 -97 -43 -97 -97s44 -97 97 -97s96 43 96 97s-43 97 -96 97z" />
- <glyph glyph-name="ion-settings" unicode="&#xf2ad;" horiz-adv-x="416"
-d="M402 310c10 -6 15 -25 14 -36c-1 -17 -7 -36 -25 -54c-1 -1 -2 -1 -3 -2c-26 -25 -62 -30 -94 -20c-1 1 -2 2 -4 2c-5 1 -10 0 -13 -4l-36 -39c52 -50 107 -96 107 -96c2 -2 2 -5 0 -7l-50 -51c-2 -2 -5 -2 -7 0c0 0 -44 55 -93 107l-92 -98c-14 -16 -40 -15 -55 0
-c-15 16 -15 42 1 56l97 93l-12 12c-2 2 -3 7 -1 10l2 5c-25 26 -36 33 -56 32s-36 -13 -48 -28s-10 -52 -8 -62s-7 -6 -12 0c-9 10 -23 50 -6 93s42 69 48 75s16 15 24 21s21 -1 27 5c4 4 5 11 5 16l-4 4c-2 2 -2 5 0 7l31 31c2 2 5 2 7 0l50 -50c2 -2 2 -6 0 -8l-31 -31
-c-2 -2 -5 -2 -7 0l-8 9c-7 0 -15 -5 -17 -10c-3 -6 -6 -21 -3 -33c3 -11 13 -20 36 -43l5 3c4 2 8 1 10 -1c0 0 1 -2 13 -14l38 37c4 3 5 7 4 13c0 2 0 4 -1 5c-10 33 -6 69 19 96l2 2c18 18 36 25 53 26c10 1 30 -5 35 -15l-48 -48l-2 -3l-1 -1c-1 -1 -1 -2 -1 -4
-s0 -3 1 -5l2 -2l2 -2l41 -42l3 -3l1 -1c1 -1 2 -1 4 -1s3 0 4 1l2 1l2 3z" />
- <glyph glyph-name="ion-share" unicode="&#xf220;" horiz-adv-x="384"
-d="M288 70v59l38 31v-109c0 -11 -8 -19 -19 -19h-288c-11 0 -19 9 -19 19v218c0 11 8 19 19 19h120c-29 -18 -43 -38 -43 -38h-58v-180h250zM256 224c-84 0 -116 -24 -160 -96c0 0 5 164 160 164v60l128 -96l-128 -96v64z" />
- <glyph glyph-name="ion-shuffle" unicode="&#xf221;"
-d="M338 267c-52 0 -83 -43 -120 -92c-41 -55 -88 -120 -171 -120h-47v63h47c52 0 84 47 121 96c41 55 87 116 170 116h29v54l81 -81l-81 -84v48h-29zM121 230c-21 21 -42 35 -74 36c-34 1 -47 0 -47 0v63h47c48 0 83 -20 113 -48c-10 -12 -19 -24 -28 -36
-c-4 -5 -7 -10 -11 -15zM367 118v47l81 -84l-81 -81v54h-29c-50 0 -87 23 -117 53c12 14 22 28 32 41c2 3 5 6 7 9c22 -24 46 -39 78 -39h29z" />
- <glyph glyph-name="ion-skip-backward" unicode="&#xf222;" horiz-adv-x="384"
-d="M12 352h8c7 0 12 -5 12 -12v-113l187 122c2 2 5 3 8 3c8 0 16 -7 16 -17v-63l118 78c2 2 5 2 8 2c8 0 15 -7 15 -17v-286c0 -10 -7 -17 -15 -17c-3 0 -5 1 -8 3l-118 78v-64c0 -10 -8 -17 -16 -17c-3 0 -5 1 -8 3l-187 122v-113c0 -7 -5 -12 -12 -12h-8
-c-7 0 -12 5 -12 12v296c0 7 5 12 12 12z" />
- <glyph glyph-name="ion-skip-forward" unicode="&#xf223;" horiz-adv-x="384"
-d="M372 352c7 0 12 -5 12 -12v-296c0 -7 -5 -12 -12 -12h-8c-7 0 -12 5 -12 12v113l-187 -122c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v64l-119 -78c-3 -2 -5 -3 -8 -3c-8 0 -15 7 -15 17v286c0 10 7 17 15 17c3 0 6 0 8 -2l119 -78v63c0 10 7 17 15 17c3 0 6 -1 8 -3
-l187 -122v113c0 7 5 12 12 12h8z" />
- <glyph glyph-name="ion-social-android-outline" unicode="&#xf224;" horiz-adv-x="352"
-d="M272 240h-192v-60v-89h24h16v-15v-52c0 -4 4 -8 8 -8s8 4 8 8v52v15h17h49h15v-15v-52c0 -2 1 -4 3 -6h1v0c1 -1 2 -2 4 -2h1v0v0c4 0 7 4 7 8v52v15h17h22v89v60zM288 256v0v-76v-90c0 -7 -3 -15 -10 -15h-29v-51c0 -13 -10 -24 -23 -24v0h-1c-6 0 -11 2 -15 5
-c-5 4 -9 11 -9 19v51h-49v-51c0 -13 -11 -24 -24 -24s-24 11 -24 24v51h-28c-7 0 -12 8 -12 15v90v76h224zM328 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM328 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96
-c0 13 11 24 24 24zM24 256c-4 0 -8 -4 -8 -8v-96c0 -4 4 -8 8 -8s8 4 8 8v96c0 4 -4 8 -8 8zM24 272v0c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM175 354c-14 0 -27 -3 -38 -6l-10 -4c-28 -12 -40 -37 -44 -56h186
-c-4 18 -15 43 -44 56l-10 4c-12 4 -25 6 -39 6v0v0h-1zM105 384v0h1l19 -23c13 5 30 9 50 9h1c20 0 36 -4 50 -9l20 23v0s1 -1 2 -1c1 -1 2 -3 2 -3l-19 -22c48 -21 56 -71 57 -86h-224c1 15 9 66 57 87l-19 22c0 1 1 1 2 2zM127 309c-7 0 -14 6 -14 13s6 14 14 14
-c7 0 13 -7 13 -14s-5 -13 -13 -13zM225 309c-7 0 -13 6 -13 13s5 14 13 14c7 0 13 -7 13 -14s-6 -13 -13 -13z" />
- <glyph glyph-name="ion-social-android" unicode="&#xf225;" horiz-adv-x="352"
-d="M64 180v76h224v-76v-90c0 -7 -4 -14 -11 -14h-28v-52c0 -13 -11 -24 -24 -24v0h-1c-6 0 -10 2 -14 5c-5 4 -9 11 -9 19v52h-49v-52c0 -13 -11 -24 -24 -24s-24 11 -24 24v52h-29c-7 0 -11 7 -11 14v90zM328 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24
-s-24 11 -24 24v96c0 13 11 24 24 24zM24 272c13 0 24 -11 24 -24v-96c0 -13 -11 -24 -24 -24s-24 11 -24 24v96c0 13 11 24 24 24zM231 359c48 -21 56 -72 57 -87h-224c1 15 8 66 56 87l-18 22c0 1 0 1 1 2s3 1 3 1l19 -23c14 5 31 9 51 9s36 -4 50 -9l20 23c0 1 1 0 2 -1
-l2 -2zM127 309c8 0 13 6 13 13s-6 14 -13 14c-8 0 -14 -7 -14 -14s7 -13 14 -13zM225 309c7 0 14 6 14 13s-7 14 -14 14c-8 0 -13 -7 -13 -14s6 -13 13 -13z" />
- <glyph glyph-name="ion-social-angular-outline" unicode="&#xf4d8;"
-d="M224 384l-188 -69l39 -230l149 -80l149 80l39 230zM224 416v0l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96l-27 56h-122l-27 -56h-40l128 280l128 -280h-40zM182 192h84l-42 89z" />
- <glyph glyph-name="ion-social-angular" unicode="&#xf4d9;"
-d="M182 192l42 89l42 -89h-84zM224 416l224 -80l-46 -272l-178 -96l-178 96l-46 272zM312 96h40l-128 280l-128 -280h40l27 56h122z" />
- <glyph glyph-name="ion-social-apple-outline" unicode="&#xf226;" horiz-adv-x="320"
-d="M238 278c-15 0 -26 -4 -37 -8c-10 -4 -21 -8 -35 -8s-25 4 -37 8c-11 4 -22 8 -34 8c-11 0 -23 -3 -34 -10c-12 -7 -23 -18 -31 -31c-12 -18 -16 -47 -13 -77c3 -34 16 -69 35 -99c13 -21 30 -45 50 -45h1c8 0 13 3 20 6c10 5 23 10 44 10v0c21 0 34 -5 44 -10
-c7 -3 12 -6 19 -6v0c22 0 44 35 52 48c8 12 12 20 17 31c-12 7 -22 16 -30 28c-10 15 -17 33 -18 52c-1 18 2 37 10 53c6 12 14 22 24 30c-14 13 -31 20 -47 20zM238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1
-c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16zM214 364c-11 -5 -21 -13 -28 -22c-4 -5 -9 -13 -13 -23c-1 -3 -2 -6 -2 -9c11 4 21 11 28 21c4 5 12 18 15 33z
-M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" />
- <glyph glyph-name="ion-social-apple" unicode="&#xf227;" horiz-adv-x="320"
-d="M238 294v0c25 0 52 -14 71 -39c-63 -36 -53 -128 11 -153c-9 -20 -13 -28 -24 -46c-16 -25 -37 -56 -65 -56h-1c-24 0 -31 16 -63 16v0c-33 0 -40 -16 -64 -16h-1c-28 0 -48 28 -64 53c-44 69 -48 150 -21 193c19 30 50 48 78 48c29 0 47 -16 71 -16c23 0 38 16 72 16z
-M230 384v0c3 -23 -6 -46 -18 -62c-13 -17 -35 -30 -56 -30h-1c-4 22 6 44 18 60c14 17 37 31 57 32z" />
- <glyph glyph-name="ion-social-bitcoin-outline" unicode="&#xf2ae;" horiz-adv-x="320"
-d="M184 400h-8v-48v-16h-16h-32h-16v16v48h-9v-48v-16h-16h-72v-16h13c11 0 19 0 25 -3s10 -7 13 -13s3 -8 3 -20v-178c0 -11 0 -18 -3 -24v-1c-1 -3 -4 -10 -12 -14h-1c-5 -3 -8 -3 -17 -3h-13l-3 -16h67h16v-16v-48h9v48v16h16h32h16v-16v-48h8v49v16h15c23 1 41 5 55 10
-c16 6 28 15 37 26c8 11 12 29 13 42c1 14 -1 29 -4 36s-8 16 -21 23c-7 4 -14 6 -21 8l-46 11l43 19c4 2 7 4 12 9c6 5 9 12 11 16c2 5 4 13 3 22c-1 17 -4 29 -10 37c-7 9 -17 16 -31 21c-12 5 -24 7 -41 8l-15 1v15v47zM200 416v0v-63c20 -1 32 -4 45 -9
-c16 -6 29 -15 38 -27s12 -28 13 -45c1 -10 0 -20 -3 -28s-8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 24 -18 29 -30c4 -10 6 -30 5 -44c-1 -16 -6 -37 -16 -51c-11 -14 -26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-65h-40v64h-32v-64h-41v64h-87l8 48h28
-c9 0 8 1 11 2s4 3 5 6s1 9 1 18v178c0 9 0 10 -1 12s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40zM160 298v-74h-32v74h32zM160 176v0v-90h-32v90h32zM200 294v0c6 -2 10 -7 14 -12c4 -6 6 -13 6 -21s-2 -15 -7 -21c-4 -5 -7 -9 -13 -12v66zM200 174v0
-c5 -1 8 -1 12 -3c8 -3 14 -7 19 -13s8 -15 8 -24c0 -11 -2 -19 -10 -26s-13 -11 -23 -15c-2 -1 -4 0 -6 -1v82z" />
- <glyph glyph-name="ion-social-bitcoin" unicode="&#xf2af;" horiz-adv-x="320"
-d="M314 169c4 -10 7 -30 6 -44c-1 -16 -5 -37 -16 -51s-26 -24 -45 -31c-15 -6 -33 -10 -59 -11v-64h-40v64h-32v-64h-41v64h-87l9 48h26c9 0 9 0 12 1s4 4 5 7s2 8 2 17v173c0 9 -1 16 -2 18s-3 4 -6 6s-9 2 -18 2h-28v48h87v64h41v-64h32v64h40v-64c20 -1 33 -4 46 -9
-c16 -6 28 -15 37 -27s12 -28 13 -45c1 -10 0 -20 -3 -28c-2 -8 -8 -16 -16 -23c-6 -6 -11 -9 -16 -11c9 -2 17 -6 25 -10c15 -8 23 -18 28 -30zM128 298v-74h32v74h-32zM128 86h32v90h-32v-90zM200 294v-66c6 3 9 7 13 12c5 6 7 12 7 20s-2 15 -6 21c-4 5 -8 11 -14 13z
-M229 107c8 7 10 15 10 26c0 9 -3 19 -8 25s-12 10 -20 13c-4 2 -6 2 -11 3v-82c2 0 5 1 7 2c10 4 14 6 22 13z" />
- <glyph glyph-name="ion-social-buffer-outline" unicode="&#xf228;" horiz-adv-x="384"
-d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM183 366l-156 -75l156 -75c2 -1 5 -1 9 -1s7 0 9 1l156 75l-156 75c-2 1 -5 2 -9 2s-7 -1 -9 -2zM377 200c9 -4 9 -12 0 -16l-169 -81
-c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM201 117l156 75l-19 9l-123 -59c-6 -3 -15 -5 -23 -5s-17 2 -23 5l-123 59l-19 -9l156 -75
-c2 -1 5 -2 9 -2s7 1 9 2zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17zM201 18l156 75l-19 9
-l-123 -60c-6 -3 -15 -4 -23 -4s-17 1 -23 4l-123 60l-19 -9l156 -75c2 -1 5 -2 9 -2s7 1 9 2z" />
- <glyph glyph-name="ion-social-buffer" unicode="&#xf229;" horiz-adv-x="384"
-d="M7 284c-9 4 -9 11 0 15l169 82c4 2 10 3 16 3s12 -1 16 -3l169 -82c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3zM377 200c9 -4 9 -12 0 -16l-169 -81c-4 -2 -10 -4 -16 -4s-12 2 -16 4l-169 81c-9 4 -9 12 0 16c0 0 27 13 33 16c5 3 7 3 13 0
-s123 -60 123 -60c4 -2 10 -3 16 -3s12 1 16 3c0 0 121 59 125 61s5 2 9 0s35 -17 35 -17zM377 100c9 -4 9 -11 0 -15l-169 -82c-4 -2 -10 -3 -16 -3s-12 1 -16 3l-169 82c-9 4 -9 11 0 15c0 0 27 14 33 17c5 3 7 2 13 -1s123 -59 123 -59c4 -2 10 -3 16 -3s12 1 16 3
-c0 0 121 58 125 60s5 2 9 0s35 -17 35 -17z" />
- <glyph glyph-name="ion-social-chrome-outline" unicode="&#xf4da;"
-d="M224 416c123 0 224 -101 224 -224s-101 -224 -224 -224s-224 101 -224 224s101 224 224 224zM224 371c-57 0 -109 -27 -141 -68l54 -93c8 40 43 72 87 72h155c-30 54 -89 89 -155 89zM291 192c0 37 -30 67 -67 67s-67 -30 -67 -67s30 -67 67 -67s67 30 67 67zM45 192
-c0 -91 67 -166 154 -177l54 93c-9 -3 -19 -6 -29 -6c-34 0 -61 18 -77 45v0l-78 135c-16 -27 -24 -58 -24 -90zM224 13c99 0 179 80 179 179c0 24 -4 46 -13 67h-108c19 -17 32 -40 32 -67c0 -17 -5 -32 -13 -45v0z" />
- <glyph glyph-name="ion-social-chrome" unicode="&#xf4db;"
-d="M157 192c0 37 30 67 67 67s67 -30 67 -67s-30 -67 -67 -67s-67 30 -67 67zM445 230c2 -12 3 -25 3 -38c0 -106 -74 -195 -174 -218c-10 -2 -20 -4 -30 -5c-7 -1 -13 -1 -20 -1c-8 0 -17 0 -25 1v0v0v0v1l102 177c8 13 13 28 13 45c0 27 -13 50 -32 67h156
-c3 -9 5 -19 7 -29v0c-2 10 -4 20 -7 29v0c3 -9 5 -19 7 -29v0zM224 103c10 0 20 2 29 5l-78 -135v0c-42 9 -79 30 -108 59c-42 41 -67 97 -67 160c0 31 6 61 18 88c7 16 16 31 26 45v0l103 -178c16 -27 43 -44 77 -44zM59 343v0v1c24 26 55 47 90 59c23 8 49 13 75 13
-c73 0 138 -36 179 -90h1c10 -14 18 -29 25 -44v0c-7 15 -15 30 -25 44h-1c10 -14 19 -29 26 -44h-205c-44 0 -79 -32 -87 -72z" />
- <glyph glyph-name="ion-social-codepen-outline" unicode="&#xf4dc;"
-d="M356 244c5 -3 7 -6 7 -12v-81c0 -6 -3 -10 -8 -13c-41 -27 -82 -55 -123 -82c-6 -4 -11 -4 -17 0c-41 27 -81 55 -122 82c-5 3 -8 7 -8 13v80c0 6 3 11 8 14c41 27 81 54 122 81c6 4 11 4 17 0c41 -27 83 -55 124 -82zM236 296v-54c0 -1 1 -2 2 -3c16 -11 31 -21 47 -32
-c1 -1 3 -1 4 0l40 26zM212 295c0 0 -62 -41 -93 -62c14 -9 27 -17 40 -26c1 -1 3 -1 4 0c15 10 31 21 46 31c1 1 3 4 3 6v51zM109 211v-40l30 20zM212 87v53c0 1 -2 3 -3 4c-15 10 -31 21 -46 31c-2 1 -3 1 -5 0l-39 -26c31 -21 93 -62 93 -62zM227 165l39 26s-34 23 -40 27
-c-1 1 -4 0 -5 -1c-5 -3 -9 -6 -14 -9c-8 -6 -25 -17 -25 -17l39 -26c2 -1 4 -1 6 0zM236 87l93 62l-38 26c-2 2 -5 2 -7 0c-15 -10 -30 -21 -45 -31c-2 -2 -3 -3 -3 -6v-51zM338 171v40l-30 -20zM224 384c-51 0 -100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136
-s85 -56 136 -56s100 20 136 56s56 85 56 136s-20 100 -56 136s-85 56 -136 56zM224 416v0c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224z" />
- <glyph glyph-name="ion-social-codepen" unicode="&#xf4dd;"
-d="M209 144c1 -1 3 -3 3 -4v-53s-62 41 -93 62l39 26c2 1 3 1 5 0c15 -10 31 -21 46 -31zM163 207c-1 -1 -3 -1 -4 0c-13 9 -26 17 -40 26c31 21 93 62 93 62v-51c0 -2 -2 -5 -3 -6c-15 -10 -31 -21 -46 -31zM238 239c-1 1 -2 2 -2 3v54l93 -63l-40 -26c-1 -1 -3 -1 -4 0
-c-16 11 -31 21 -47 32zM226 218c6 -4 40 -27 40 -27l-39 -26c-2 -1 -4 -1 -6 0l-39 26s17 11 25 17c5 3 9 6 14 9c1 1 4 2 5 1zM109 211l30 -20l-30 -20v40zM224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM363 151v81
-c0 6 -2 9 -7 12c-41 27 -83 55 -124 82c-6 4 -11 4 -17 0c-41 -27 -81 -54 -122 -81c-5 -3 -8 -8 -8 -14v-80c0 -6 3 -10 8 -13c41 -27 81 -55 122 -82c6 -4 11 -4 17 0c41 27 82 55 123 82c5 3 8 7 8 13zM284 175c2 2 5 2 7 0l38 -26l-93 -62v51c0 3 1 4 3 6
-c15 10 30 21 45 31zM338 171l-30 20l30 20v-40z" />
- <glyph glyph-name="ion-social-css3-outline" unicode="&#xf4de;" horiz-adv-x="384"
-d="M291 81l-99 -28l-98 28l-7 78h48l4 -40l53 -15v0v0l54 15l5 64h-112l-4 50h121l4 51h-184l-4 49h241zM0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36z" />
- <glyph glyph-name="ion-social-css3" unicode="&#xf4df;" horiz-adv-x="384"
-d="M192 109v0zM0 416h384l-35 -403l-157 -45l-157 45zM291 81l22 252h-241l4 -49h184l-4 -51h-121l4 -50h112l-5 -64l-54 -15v0v0l-53 15l-4 40h-48l7 -78l98 -28z" />
- <glyph glyph-name="ion-social-designernews-outline" unicode="&#xf22a;"
-d="M259 302v-53l-65 103zM0 188zM297 352l151 -119v-201h-248l-200 156h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h41l-2 98l63 -98h36v84v80zM432 48v178l-119 92v1v-47v-83v-17h-15h-37h-9l-4 8l-33 50l1 -42v-16h-16h-41h-16v16v29c-3 -6 -7 -12 -12 -17
-c-8 -9 -18 -16 -30 -21s-24 -7 -38 -7h-16l159 -124h226zM59 298h-1h-3v-57h4c8 0 13 2 17 6c5 6 6 15 6 22c0 26 -12 29 -23 29zM59 314v0c25 0 39 -16 39 -45c0 -28 -14 -44 -40 -44h-19v89h20z" />
- <glyph glyph-name="ion-social-designernews" unicode="&#xf22b;"
-d="M258 303l1 -53l-64 102zM297 352l151 -118v-202h-248l-200 157v0h63c46 0 77 33 77 82c0 20 -5 37 -15 51l-3 3l37 -29v-107h40l-2 99l64 -99h36v83v80zM98 270c0 -28 -14 -44 -40 -44h-19v89h19c26 0 40 -16 40 -45z" />
- <glyph glyph-name="ion-social-dribbble-outline" unicode="&#xf22c;" horiz-adv-x="384"
-d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM314 296c-17 -25 -47 -47 -85 -64c5 -10 9 -20 13 -31c33 3 75 4 110 2c-2 35 -16 68 -38 93zM192 352c-14 0 -26 -2 -39 -5c23 -23 43 -53 62 -87c34 14 62 33 79 55
-c-28 23 -63 37 -102 37zM120 334c-41 -21 -71 -58 -83 -103h25c44 0 85 6 121 17c-19 34 -40 63 -63 86zM32 200v-8c0 -40 15 -78 40 -106c24 45 67 83 122 106c4 2 8 3 14 4c-3 8 -6 16 -10 24c-40 -13 -88 -20 -138 -21c-9 0 -19 1 -28 1zM192 32c20 0 39 3 57 10
-c-3 25 -8 53 -15 79c-4 17 -10 33 -16 49c-7 -2 -13 -4 -17 -6c-48 -22 -86 -56 -107 -98c27 -21 61 -34 98 -34zM278 58c40 26 68 67 73 116c-30 2 -68 3 -99 0c4 -12 9 -25 12 -38c7 -27 11 -52 14 -78z" />
- <glyph glyph-name="ion-social-dribbble" unicode="&#xf22d;" horiz-adv-x="384"
-d="M192 384c106 0 192 -86 192 -192s-86 -192 -192 -192s-192 86 -192 192s86 192 192 192zM192 32c88 0 160 72 160 160s-72 160 -160 160s-160 -72 -160 -160s72 -160 160 -160zM242 201c-4 11 -8 21 -13 31c25 11 47 24 63 39c15 -19 26 -42 28 -67c-26 0 -55 -1 -78 -3z
-M271 292c-15 -12 -34 -23 -56 -32c-12 22 -24 41 -38 59c5 1 10 1 15 1c30 0 57 -11 79 -28zM142 310c15 -18 28 -39 41 -62c-34 -10 -72 -16 -113 -17c11 36 38 65 72 79zM319 176c-4 -33 -21 -63 -46 -83c-3 14 -5 28 -9 43c-3 13 -8 26 -12 38c21 2 45 3 67 2zM194 192
-c-43 -18 -79 -46 -104 -78c-16 22 -26 49 -26 78v7c49 1 95 8 134 21c4 -8 7 -16 10 -24c-6 -1 -10 -2 -14 -4zM219 170c6 -16 11 -32 15 -49c4 -15 7 -31 10 -46c-16 -7 -34 -11 -52 -11c-31 0 -59 11 -81 29c22 30 53 54 90 71c4 2 11 4 18 6z" />
- <glyph glyph-name="ion-social-dropbox-outline" unicode="&#xf22e;" horiz-adv-x="384"
-d="M113 371l79 -66l-114 -71l-78 63zM27 295l52 -42l86 53l-53 46zM306 235l78 -63l-78 -51v-39l-114 -69l-114 68v39l-78 52l78 63l114 -71l-79 -66l-19 12v-20l98 -59l98 59v20l-19 -12l-79 66zM79 217l-52 -44l85 -55l53 44zM219 162l53 -44l85 56l-52 43zM384 297
-l-78 -63l-114 71l79 66zM219 305l86 -52l52 42l-85 56z" />
- <glyph glyph-name="ion-social-dropbox" unicode="&#xf22f;" horiz-adv-x="384"
-d="M113 371l79 -66l-114 -71l-78 63zM0 172l78 62l114 -70l-79 -66zM192 164l114 70l78 -62l-113 -74zM384 297l-78 -63l-114 71l79 66zM192 150l80 -66l34 22v-25l-114 -68l-114 68v25l34 -22z" />
- <glyph glyph-name="ion-social-euro-outline" unicode="&#xf4e0;" horiz-adv-x="320"
-d="M214 384c-53 0 -91 -9 -115 -27c-22 -16 -33 -40 -33 -74v-11v-17h-16h-34v-16h34h16v-15v-48v-17h-16h-34v-16h34h16v-15v-27c0 -34 11 -58 33 -74c24 -18 62 -27 115 -27c31 0 59 2 88 8l-5 35c-30 -4 -55 -7 -80 -7c-36 0 -59 6 -74 19c-19 16 -21 40 -21 60v13v15h16
-h103l3 16h-106h-16v17v48v15h16h118l2 16h-120h-16v17v2c0 16 2 39 21 55c16 13 39 19 74 19c24 0 51 -3 80 -7l5 35c-29 6 -57 8 -88 8zM214 400v0c35 0 68 -3 106 -12l-9 -65c-37 6 -68 9 -94 9c-64 0 -79 -22 -79 -58v-3h139l-8 -48h-131v-48h124l-7 -48h-117v-12
-c0 -44 15 -63 79 -63c26 0 57 3 94 9l9 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v26h-50v48h50v48h-50v48h50v12c0 76 49 117 164 117z" />
- <glyph glyph-name="ion-social-euro" unicode="&#xf4e1;" horiz-adv-x="320"
-d="M138 176h124l-7 -48h-117v-13c0 -44 15 -63 79 -63c26 0 56 3 93 9l10 -65c-38 -9 -71 -12 -106 -12c-115 0 -164 41 -164 117v27h-50v48h50v48h-50v48h50v11c0 76 49 117 164 117c35 0 68 -3 106 -12l-10 -65c-37 6 -67 9 -93 9c-64 0 -79 -22 -79 -58v-2h138l-7 -48
-h-131v-48z" />
- <glyph glyph-name="ion-social-facebook-outline" unicode="&#xf230;" horiz-adv-x="192"
-d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38zM170 208l4 32h-45h-17v17v37c0 10 1 21 9 30c10 11 25 12 37 12h18v32h-40c-28 0 -49 -6 -60 -18c-10 -11 -15 -27 -15 -51v-43v-16h-15h-30v-32h30h15v-16
-v-176h51v176v16h17h41z" />
- <glyph glyph-name="ion-social-facebook" unicode="&#xf231;" horiz-adv-x="192"
-d="M128 256h64l-8 -64h-56v-192h-83v192h-45v64h45v43c0 54 23 85 91 85h56v-64h-34c-27 0 -30 -9 -30 -26v-38z" />
- <glyph glyph-name="ion-social-foursquare-outline" unicode="&#xf34c;" horiz-adv-x="320"
-d="M302 284c-12 -60 -25 -131 -27 -138zM281 416c35 0 45 -20 37 -57c-3 -16 -10 -44 -16 -75l-27 -137c-3 -13 -8 -35 -39 -35h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM280 352c6 31 6 32 -24 32h-195
-c-29 0 -29 -3 -29 -28v-297c0 -38 1 -38 3 -38s10 8 29 31c0 0 78 89 79 90c2 2 3 2 6 2h62c26 0 28 6 33 31c4 21 36 177 36 177zM302 284c6 31 13 59 16 75zM233 352c5 0 9 -5 8 -11l-8 -44c-1 -4 -6 -9 -11 -9h-75c-8 0 -8 -5 -8 -13v-6c0 -8 0 -13 8 -13h64
-s11 -6 10 -12s-11 -51 -12 -54s-4 -9 -11 -9h-62c-9 0 -11 -1 -17 -8l-54 -63c-1 -1 -1 -1 -1 0v231c0 5 5 11 11 11h158z" />
- <glyph glyph-name="ion-social-foursquare" unicode="&#xf34d;" horiz-adv-x="320"
-d="M281 416c35 0 45 -20 37 -57c-10 -49 -40 -202 -43 -213c-3 -13 -8 -34 -39 -34h-72c-3 0 -3 0 -6 -3c-2 -2 -115 -133 -115 -133c-9 -10 -23 -8 -28 -6s-15 8 -15 26v380s10 40 43 40h238zM275 146c3 11 33 164 43 213zM267 351c2 9 -5 16 -12 16h-191
-c-9 0 -15 -8 -15 -15v-296c0 -1 1 -1 2 0c0 0 70 84 78 94s11 11 23 11h64c9 0 14 8 15 12s8 43 10 51s-6 16 -13 16h-82c-10 0 -18 8 -18 18v13c0 10 8 17 18 17h96s14 6 15 12z" />
- <glyph glyph-name="ion-social-freebsd-devil" unicode="&#xf2c4;" horiz-adv-x="512"
-d="M503 333c19 -37 8 -81 -20 -108s-60 -33 -60 -33c2 -32 16 -59 -41 -102c-43 -32 2 -90 2 -90c10 -14 23 -19 32 -32h-272s15 14 -7 32c0 0 -20 17 -18 29s6 13 9 15s0 7 0 7l-19 19s-13 -13 -44 -13c-38 0 -65 39 -65 39h46s-6 -8 -7 -13c-1 -4 1 -5 1 -5s11 -6 22 -6
-c17 0 33 12 33 12l-24 22l-15 -4l-16 37l39 -10l-1 -15l28 -18s9 9 7 27s-9 26 -9 26s-4 0 -9 -4s-6 -6 -6 -6l-10 44s43 -19 50 -63c3 -20 -6 -35 -6 -35l17 -10s6 5 17 7s23 2 29 -8s5 -12 4 -19s0 -9 6 -11s6 -6 11 -8s15 -6 21 -2s8 11 8 18v16s-9 8 -32 20
-s-54 22 -66 40s-12 44 0 57c9 10 23 25 26 35c4 14 4 42 4 42s-10 16 -8 40c2 30 22 84 96 114c0 0 -40 -55 -20 -80c0 0 37 11 77 9c31 -2 56 -12 73 -28s25 -23 47 -17s28 17 28 33c0 19 -16 51 -16 51s36 -7 58 -51zM195 245c14 4 21 -11 21 -11c14 25 30 60 22 64
-s-64 -25 -66 -88c0 0 6 31 23 35zM232 230c5 7 34 8 37 -17c4 -35 -24 -57 -24 -57s7 -2 23 2c17 4 43 29 43 70s-21 66 -41 62s-38 -60 -38 -60z" />
- <glyph glyph-name="ion-social-github-outline" unicode="&#xf232;"
-d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5
-c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4
-c-89 30 -153 116 -153 218c0 127 100 230 224 230zM146 -0c-15 0 -28 4 -38 9c14 -10 28 -17 44 -23v6v8h-6zM157 73c-16 4 -35 10 -52 24c6 -6 11 -11 13 -16c7 -12 14 -17 25 -17c4 0 9 1 12 2c1 2 1 5 2 7zM347 14c17 13 32 28 45 46c26 37 40 80 40 126
-c0 29 -5 58 -16 84c-10 25 -26 48 -45 68s-41 34 -66 45c-26 11 -53 17 -81 17s-55 -6 -81 -17c-25 -11 -47 -25 -66 -45s-35 -42 -45 -68c-11 -26 -16 -55 -16 -84c0 -46 14 -89 40 -126c10 -14 22 -27 35 -38c-7 8 -11 16 -13 22c-7 18 -15 24 -17 25h-2v1
-c-5 3 -20 13 -15 28c3 9 12 15 25 15h1v0v0c13 -1 24 -6 32 -13c-21 19 -37 48 -37 98c0 24 7 47 21 66c-3 13 -6 34 5 62l3 8l7 2c2 0 5 1 10 1c12 0 31 -3 60 -22c17 4 35 6 53 6v0v0c18 0 36 -2 53 -6c29 19 48 22 60 22c5 0 8 -1 10 -1l7 -2l3 -7c11 -27 8 -50 5 -63
-c14 -19 21 -41 21 -66c0 -92 -55 -117 -92 -125c3 -8 5 -18 5 -30v-51v-6c18 7 35 16 51 28z" />
- <glyph glyph-name="ion-social-github" unicode="&#xf233;"
-d="M224 416c124 0 224 -103 224 -230c0 -101 -64 -188 -153 -218h-4c-8 0 -12 7 -12 12c0 8 1 31 1 62c0 21 -8 36 -16 43c50 6 103 25 103 113c0 25 -9 46 -23 62c2 6 10 29 -2 61h-5c-8 0 -27 -3 -57 -24c-18 5 -37 8 -56 8s-38 -3 -56 -8c-30 21 -49 24 -57 24h-5
-c-12 -32 -4 -55 -2 -61c-14 -16 -23 -37 -23 -62c0 -88 52 -107 102 -113c-6 -6 -12 -16 -14 -31c-6 -3 -16 -6 -26 -6c-13 0 -28 5 -39 25c0 0 -13 22 -35 24v0c-2 0 -21 0 -1 -14c0 0 15 -8 25 -34c0 0 10 -33 53 -33c7 0 14 0 22 2v-39c0 -5 -3 -11 -11 -11h-4
-c-89 30 -153 116 -153 218c0 127 100 230 224 230z" />
- <glyph glyph-name="ion-social-google-outline" unicode="&#xf34e;" horiz-adv-x="256"
-d="M191 366c12 -10 37 -30 37 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -17 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 2 14 5 20c-6 0 -11 -1 -16 -1
-c-54 0 -85 40 -85 79c0 23 11 48 33 67c29 24 63 28 91 28h106l-33 -18h-32zM155 142c-4 1 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16
-c-9 -11 -11 -25 -11 -38c0 -34 20 -89 64 -89c13 0 27 6 35 14z" />
- <glyph glyph-name="ion-social-google" unicode="&#xf34f;" horiz-adv-x="288"
-d="M210 172c22 -18 45 -36 45 -73c0 -49 -48 -99 -140 -99c-80 0 -115 39 -115 77c0 10 3 42 42 65c27 16 61 20 85 22c-4 7 -8 16 -8 27c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 70 29 95 29h133l-60 -33h-13
-c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 20 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 38 -15 54c-7 13 -20 27 -40 27c-11 0 -22 -5 -29 -13c-6 -7 -9 -18 -9 -31z
-M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -32 -2 -51 -8c-16 -6 -37 -16 -37 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44z" />
- <glyph glyph-name="ion-social-googleplus-outline" unicode="&#xf234;"
-d="M192 366c12 -10 36 -30 36 -68c0 -37 -21 -55 -43 -72c-7 -7 -15 -13 -15 -24s8 -18 14 -22l18 -14c23 -19 43 -36 43 -71c0 -47 -47 -95 -135 -95c-74 0 -110 35 -110 72c0 18 10 44 40 62c32 19 75 21 98 23c-7 9 -16 18 -16 34c0 9 3 14 5 20c-6 0 -11 -1 -16 -1
-c-54 0 -85 40 -85 79c0 23 10 48 32 67c29 24 64 28 92 28h106l-33 -18h-31zM155 142c-4 0 -7 1 -12 1s-32 -1 -54 -8c-11 -4 -44 -16 -44 -52s36 -62 91 -62c49 0 75 24 75 55c0 26 -17 39 -56 66zM170 238c12 12 13 28 13 37c0 36 -22 92 -65 92c-13 0 -28 -6 -36 -16
-c-9 -11 -11 -24 -11 -37c0 -34 20 -90 64 -90c13 0 27 6 35 14zM448 306v-18h-78v-81h-18v81h-80v18h80v78h18v-78h78z" />
- <glyph glyph-name="ion-social-googleplus" unicode="&#xf235;"
-d="M210 172c22 -18 45 -36 45 -73c0 -49 -47 -99 -139 -99c-80 0 -116 39 -116 77c0 10 3 42 42 65c27 16 61 21 85 23c-4 7 -8 15 -8 26c0 4 0 7 1 10h-4c-19 0 -46 4 -67 26c-15 15 -24 36 -24 57c0 26 13 53 35 71v0c32 25 69 29 94 29h134l-60 -33h-13
-c11 -13 23 -31 23 -58c0 -40 -25 -59 -45 -74v-1c-6 -6 -11 -10 -11 -17c0 -6 4 -10 10 -15v0zM85 308c0 -13 4 -33 14 -51c7 -12 21 -27 41 -27c10 0 21 4 28 11c10 10 10 25 10 30c0 18 -6 37 -15 53c-8 13 -20 28 -40 28c-11 0 -23 -5 -29 -13c-6 -7 -9 -18 -9 -31z
-M206 80c0 20 -13 31 -50 56c-3 0 -4 1 -8 1c-6 0 -31 -2 -50 -8c-16 -6 -38 -16 -38 -42c0 -31 32 -51 80 -51c41 0 66 17 66 44zM370 306h78v-34h-78v-81h-34v81h-80v34h80v78h34v-78z" />
- <glyph glyph-name="ion-social-hackernews-outline" unicode="&#xf236;" horiz-adv-x="384"
-d="M352 352h-320v-320h320v320zM384 384v0v-384h-384v384h384zM233 289h45l-64 -120v-72h-40v72l-66 120h47l40 -84z" />
- <glyph glyph-name="ion-social-hackernews" unicode="&#xf237;" horiz-adv-x="384"
-d="M0 384h384v-384h-384v384zM214 169l64 120h-45l-38 -84l-40 84h-47l66 -120v-72h40v72z" />
- <glyph glyph-name="ion-social-html5-outline" unicode="&#xf4e2;" horiz-adv-x="384"
-d="M0 416h384l-35 -403l-157 -45l-157 45zM319 37l30 347h-314l30 -347l127 -36zM84 184l-13 150h241l-4 -50h-184l4 -51h176l-14 -151l-98 -28l-99 28l-6 77h48l3 -39l54 -15l53 15l6 64h-167z" />
- <glyph glyph-name="ion-social-html5" unicode="&#xf4e3;" horiz-adv-x="384"
-d="M0 416h384l-35 -403l-157 -45l-157 45zM308 284l4 50h-241l13 -150h167l-6 -64l-53 -15l-54 15l-3 39h-48l6 -78l99 -27l98 28l14 151h-176l-4 51h184z" />
- <glyph glyph-name="ion-social-instagram-outline" unicode="&#xf350;" horiz-adv-x="384"
-d="M384 336v-289c0 -26 -22 -47 -48 -47h-288c-26 0 -48 21 -48 47v289c0 26 22 48 48 48h288c26 0 48 -22 48 -48zM192 272c-44 0 -80 -36 -80 -80s36 -80 80 -80s80 36 80 80s-36 80 -80 80zM352 288v48c0 9 -7 16 -16 16h-48c-9 0 -16 -7 -16 -16v-48c0 -9 7 -16 16 -16
-h48c9 0 16 7 16 16zM337 32c9 0 15 7 15 16v176h-52c3 -10 4 -21 4 -32c0 -30 -11 -58 -32 -79s-50 -33 -80 -33s-58 12 -79 33s-33 49 -33 79c0 11 2 22 5 32h-53v-176c0 -9 8 -16 17 -16h288z" />
- <glyph glyph-name="ion-social-instagram" unicode="&#xf351;" horiz-adv-x="384"
-d="M112 192c0 53 27 80 80 80s80 -27 80 -80s-27 -80 -80 -80s-80 27 -80 80zM113 271c-14 -14 -23 -29 -28 -47h-85v112c0 13 4 25 14 34s22 14 35 14h288c13 0 24 -5 33 -14s14 -21 14 -34v-112h-84c-5 18 -14 33 -28 47c-22 22 -49 33 -80 33s-57 -11 -79 -33zM352 300
-v39c0 4 -2 7 -4 9s-5 4 -9 4h-38c-4 0 -7 -2 -9 -4s-4 -5 -4 -9v-39c0 -4 2 -7 4 -9s5 -3 9 -3h38c4 0 7 1 9 3s4 5 4 9zM272 113c22 22 32 48 32 79h80v-144c0 -13 -5 -24 -14 -34s-20 -14 -33 -14h-288c-13 0 -24 4 -34 14s-15 21 -15 34v144h81c0 -31 10 -57 32 -79
-s48 -33 79 -33s58 11 80 33z" />
- <glyph glyph-name="ion-social-javascript-outline" unicode="&#xf4e4;"
-d="M160 344h-48v-196c0 -30 -6 -50 -17 -64c-11 -13 -26 -20 -48 -20c-9 0 -18 1 -25 2l-4 -30c11 -2 25 -4 37 -4c34 0 59 8 76 25c19 18 29 48 29 90v197zM176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80z
-M350 352c-34 0 -62 -9 -82 -26c-19 -15 -28 -36 -28 -60c0 -20 7 -36 21 -51c14 -14 34 -26 61 -36c23 -8 38 -15 48 -24c12 -11 18 -23 18 -38c0 -16 -7 -31 -20 -40c-12 -9 -28 -14 -48 -14c-28 0 -52 8 -70 15l-7 -32c18 -8 44 -14 72 -14c38 0 70 9 90 27
-c18 16 27 38 27 63c0 21 -5 36 -17 50s-31 27 -58 37v0v0c-38 15 -72 28 -72 63c0 14 7 27 19 36c11 9 26 13 45 13c24 0 43 -5 57 -11l10 32c-19 6 -42 10 -66 10zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48
-c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" />
- <glyph glyph-name="ion-social-javascript" unicode="&#xf4e5;"
-d="M176 360v0v-213c0 -97 -49 -131 -121 -131c-18 0 -40 3 -55 8l8 62c10 -4 24 -6 39 -6c31 0 49 15 49 68v212h80zM350 368v0c38 0 65 -7 85 -16l-19 -64c-13 7 -35 17 -67 17s-48 -16 -48 -33c0 -22 19 -31 62 -48c58 -22 85 -53 85 -102c0 -57 -42 -106 -133 -106
-c-38 0 -72 10 -91 21l15 63v0c20 -11 49 -21 81 -21c34 0 52 15 52 38c0 21 -15 33 -55 47c-55 20 -93 52 -93 102c0 58 49 102 126 102z" />
- <glyph glyph-name="ion-social-linkedin-outline" unicode="&#xf238;" horiz-adv-x="384"
-d="M119 64v0h-55v171h55v-171zM93 261v0v0c-18 0 -29 13 -29 29c0 17 12 30 30 30s29 -13 29 -30c0 -16 -12 -29 -30 -29zM257 239c36 0 63 -24 63 -75v-100h-55v94c0 22 -8 37 -28 37c-15 0 -24 -10 -28 -20c-2 -4 -2 -9 -2 -14v-97h-55v171h55v-24c8 11 21 28 50 28z
-M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM350 32c1 0 2 1 2 2v316c0 1 -1 2 -2 2h-316s-2 -1 -2 -2v-315s1 -3 3 -3h315z" />
- <glyph glyph-name="ion-social-linkedin" unicode="&#xf239;" horiz-adv-x="384"
-d="M353 384c18 0 31 -13 31 -30v-321c0 -17 -13 -33 -31 -33h-320c-18 0 -33 16 -33 33v321c0 17 15 30 33 30h320zM119 64v171h-55v-171h55zM93 261c18 0 30 13 30 29c0 17 -11 30 -29 30s-30 -13 -30 -30c0 -16 11 -29 29 -29v0zM320 64v100c0 51 -27 75 -63 75
-c-29 0 -42 -17 -50 -28v24h-55v-171h55v97c0 5 0 10 2 14c4 10 13 20 28 20c20 0 28 -15 28 -37v-94h55z" />
- <glyph glyph-name="ion-social-markdown" unicode="&#xf4e6;"
-d="M416 352c18 0 32 -14 32 -32v-256c0 -18 -14 -32 -32 -32h-384c-18 0 -32 14 -32 32v256c0 18 14 32 32 32h384zM252 96v0v192h-56l-42 -68l-42 68h-56v-192h56v96l42 -54l42 54v-96h56zM336 96v0l70 96h-42v96h-56v-96h-42z" />
- <glyph glyph-name="ion-social-nodejs" unicode="&#xf4e7;" horiz-adv-x="384"
-d="M192 -32c-6 0 -12 2 -17 5l-53 32c-8 5 -4 6 -1 7c11 4 14 5 25 12c1 1 3 1 4 0l39 -23c1 -1 4 -1 5 0l156 92c1 1 2 2 2 4v187c0 2 0 4 -2 5l-156 94c-1 1 -3 1 -4 0l-155 -94c-2 -1 -3 -3 -3 -5v-187c0 -2 0 -3 2 -4l40 -24c24 -12 38 1 38 15v183c0 3 2 5 5 5h22
-c3 0 5 -2 5 -5v-183c0 -33 -19 -52 -49 -52c-9 0 -17 1 -37 11l-41 24c-10 6 -17 18 -17 30v190c0 12 7 24 17 30l158 95c10 6 24 6 34 0l158 -95c10 -6 17 -18 17 -30v-190c0 -12 -7 -24 -17 -30l-158 -94c-5 -3 -11 -5 -17 -5v0zM241 96c-65 0 -84 31 -84 59c0 3 1 5 4 5
-h21c2 0 5 -2 5 -4c3 -22 16 -31 54 -31c33 0 47 11 47 29c0 11 -3 18 -55 23c-43 4 -71 15 -71 51c0 33 28 52 73 52c46 0 76 -14 79 -51c0 -1 -1 -2 -2 -3s-2 -2 -3 -2h-20c-2 0 -5 2 -5 4c-4 17 -16 23 -49 23c-36 0 -41 -12 -41 -22c0 -12 5 -16 54 -23s72 -16 72 -51
-c0 -36 -29 -59 -79 -59v0v0z" />
- <glyph glyph-name="ion-social-octocat" unicode="&#xf4e8;"
-d="M146 161c9 0 16 -4 22 -13s10 -20 10 -32s-4 -22 -10 -31s-14 -13 -22 -13c-9 0 -17 4 -23 13s-9 19 -9 31s3 24 9 32c6 9 14 13 23 13zM303 161c9 0 16 -4 22 -13s9 -20 9 -32s-3 -22 -9 -31s-13 -13 -22 -13s-18 4 -24 13s-9 19 -9 31s3 24 9 32c6 9 15 13 24 13z
-M414 276c24 -27 34 -66 34 -96c0 -24 -1 -46 -6 -65c-6 -19 -13 -35 -21 -47c-9 -12 -19 -23 -32 -32s-24 -17 -34 -21s-22 -8 -36 -10c-13 -2 -24 -4 -31 -4c0 0 -28 -1 -64 -1s-64 1 -64 1c-7 0 -18 2 -31 4c-14 2 -26 6 -36 10s-22 12 -34 21c-13 9 -23 20 -32 32
-c-8 12 -15 28 -21 47c-5 19 -6 41 -6 65c0 31 10 70 34 96c0 0 -2 14 0 39s7 48 16 69c30 -3 67 -20 112 -51c15 4 36 6 62 6c28 0 48 -2 62 -6c20 14 39 24 58 33c19 8 33 13 41 15s13 3 13 3c9 -21 14 -44 16 -69s0 -39 0 -39v0zM348 42c28 13 42 40 42 81
-c0 24 -8 43 -26 59c-9 9 -20 13 -32 15s-31 1 -56 -1s-40 -4 -52 -4s-25 2 -42 3s-30 3 -39 3c-10 0 -20 1 -31 -2s-21 -7 -28 -14c-17 -15 -25 -35 -25 -59c0 -41 13 -68 41 -81c27 -13 69 -18 123 -18h2c54 0 95 5 123 18z" />
- <glyph glyph-name="ion-social-pinterest-outline" unicode="&#xf2b0;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224s-224 100 -224 224s100 224 224 224zM360 56c36 36 56 85 56 136s-20 100 -56 136s-85 56 -136 56s-100 -20 -136 -56s-56 -85 -56 -136s20 -100 56 -136c14 -14 31 -25 48 -34c1 6 2 10 3 16c4 18 29 122 29 122
-s-8 15 -8 36c0 33 20 58 44 58c20 0 30 -16 30 -34c0 -20 -13 -51 -20 -79c-6 -24 12 -43 35 -43c42 0 71 54 71 119c0 49 -33 85 -93 85c-68 0 -110 -50 -110 -107c0 -20 6 -33 15 -44c4 -5 5 -6 3 -12c-1 -4 -4 -14 -5 -18c-2 -6 -6 -8 -11 -6c-31 13 -46 48 -46 86
-c0 64 54 140 160 140c86 0 142 -63 142 -129c0 -88 -49 -153 -121 -153c-24 0 -47 13 -55 28c0 0 -12 -52 -15 -62c-2 -6 -4 -13 -7 -19c15 -4 31 -6 47 -6c51 0 100 20 136 56z" />
- <glyph glyph-name="ion-social-pinterest" unicode="&#xf2b1;"
-d="M224 416c124 0 224 -100 224 -224s-100 -224 -224 -224c-22 0 -44 3 -64 9c8 14 18 31 23 48c3 10 16 62 16 62c8 -15 30 -28 54 -28c72 0 121 65 121 153c0 66 -56 129 -142 129c-106 0 -160 -76 -160 -140c0 -39 15 -73 46 -86c5 -2 10 0 12 6c1 4 3 14 4 18
-c2 6 1 7 -3 12c-9 11 -15 24 -15 44c0 57 42 107 110 107c60 0 94 -36 94 -85c0 -65 -29 -119 -71 -119c-24 0 -42 19 -36 43c7 28 20 59 20 79c0 18 -10 34 -30 34c-24 0 -43 -25 -43 -58c0 -21 7 -36 7 -36s-25 -104 -29 -122c-4 -17 -5 -35 -4 -51
-c-79 35 -134 113 -134 205c0 124 100 224 224 224z" />
- <glyph glyph-name="ion-social-python" unicode="&#xf4e9;" horiz-adv-x="384"
-d="M129 199c-29 -5 -49 -30 -49 -57v-43v-3h-15c-29 0 -54 29 -62 69c-2 9 -3 17 -3 27v1c0 53 29 95 65 95h127v16h-96v29c0 26 7 40 46 47c13 2 29 4 45 4s39 -1 55 -4c25 -4 46 -22 46 -47v-57v-31c0 -21 -14 -38 -33 -43c-4 -1 -8 -2 -13 -2h-104h3c-4 0 -8 0 -12 -1z
-M140 321c10 0 17 7 17 17s-7 18 -17 18s-18 -8 -18 -18s8 -17 18 -17zM380 225c3 -10 4 -21 4 -33c0 -16 -3 -30 -7 -43c-11 -31 -33 -53 -58 -53h-127v-16h96v-26c0 -26 -23 -40 -46 -47c-35 -10 -68 -9 -97 0c-25 7 -49 22 -49 47v54v33c0 21 14 36 33 41c4 1 8 2 13 2
-h104c3 0 6 1 9 1c27 4 49 28 49 62v38v3h15c28 0 52 -26 61 -63zM244 65c-10 0 -18 -7 -18 -17s8 -18 18 -18s17 8 17 18s-7 17 -17 17z" />
- <glyph glyph-name="ion-social-reddit-outline" unicode="&#xf23a;" horiz-adv-x="449"
-d="M259 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM127 160c0 21 11 31 32 31s32 -10 32 -31s-11 -32 -32 -32s-32 11 -32 32zM449 197c0 -20 -9 -36 -27 -45c1 -5 1 -9 1 -14c0 -38 -19 -71 -58 -98s-85 -40 -140 -40s-102 13 -141 40
-s-58 59 -58 97c0 5 0 10 1 15c-18 9 -27 24 -27 45c0 14 5 25 15 35s21 15 35 15c13 0 24 -4 33 -13c36 25 79 39 129 41h7l29 98l86 -17c8 19 21 28 41 28c12 0 22 -4 31 -13s13 -20 13 -32s-4 -23 -13 -32s-19 -13 -31 -13s-23 4 -32 13s-13 19 -13 31l-69 14l-24 -77
-c50 -2 94 -16 129 -41c10 9 21 13 34 13c9 0 16 -3 24 -7s14 -10 18 -18s7 -16 7 -25zM375 366c-4 0 -8 -1 -11 -2s-6 -4 -8 -6s-5 -6 -6 -9s-2 -6 -2 -10c0 -8 3 -14 8 -19s12 -8 19 -8c5 0 9 1 13 3s8 6 10 10s4 9 4 14c0 8 -3 14 -8 19s-12 8 -19 8zM18 197
-c0 -11 5 -20 14 -27c7 19 19 37 37 53c-6 4 -12 6 -19 6c-3 0 -7 0 -10 -1s-6 -3 -9 -5s-5 -4 -7 -7s-4 -6 -5 -9s-1 -6 -1 -10zM355 55c34 23 50 51 50 83v9c-1 6 -3 12 -5 18c-6 16 -15 30 -30 43c-5 4 -10 9 -15 12v0c-36 25 -79 37 -130 37s-95 -12 -131 -37v0
-c-5 -3 -10 -8 -15 -12c-15 -13 -24 -27 -30 -43c-2 -6 -4 -12 -5 -18v-9c0 -32 16 -60 50 -83c36 -25 80 -37 131 -37s94 12 130 37zM417 170c9 6 14 16 14 27c0 9 -3 17 -9 23s-13 9 -22 9c-7 0 -14 -2 -20 -6c18 -16 30 -34 37 -53zM289 90l13 -12
-c-20 -20 -45 -30 -77 -30s-58 10 -78 30l13 12c16 -16 38 -24 65 -24s48 8 64 24z" />
- <glyph glyph-name="ion-social-reddit" unicode="&#xf23b;" horiz-adv-x="449"
-d="M449 197c0 -20 -11 -37 -27 -45c1 -5 1 -9 1 -14c0 -76 -89 -138 -199 -138s-198 61 -198 137c0 5 0 10 1 15c-16 8 -27 25 -27 45c0 28 23 50 50 50c13 0 24 -5 33 -13c33 23 79 39 129 41h2l31 103l90 -18c8 14 22 24 39 24v0h1c25 0 44 -20 44 -45s-19 -45 -44 -45h-1
-v0c-23 0 -42 17 -44 40l-67 14l-22 -74c49 -3 93 -17 125 -40c9 8 21 13 34 13c27 0 49 -22 49 -50zM34 177c5 15 15 29 29 41c-4 3 -9 5 -15 5c-14 0 -25 -11 -25 -25c0 -9 4 -17 11 -21zM358 339c0 -9 7 -17 16 -17s17 8 17 17s-8 17 -17 17s-16 -8 -16 -17zM127 160
-c0 -18 14 -32 32 -32s32 14 32 32s-14 31 -32 31s-32 -13 -32 -31zM224 48c48 0 77 29 78 30l-13 12s-25 -24 -65 -24c-41 0 -64 24 -64 24l-13 -12c1 -1 29 -30 77 -30zM291 128c18 0 32 14 32 32s-14 31 -32 31s-32 -13 -32 -31s14 -32 32 -32zM415 176c7 5 11 13 11 22
-c0 14 -11 25 -25 25c-6 0 -11 -2 -15 -5c14 -12 24 -27 29 -42z" />
- <glyph glyph-name="ion-social-rss-outline" unicode="&#xf23c;" horiz-adv-x="384"
-d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM56 16c22 0 40 18 40 40s-18 40 -40 40s-40 -18 -40 -40s18 -40 40 -40zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM240 16c-2 26 -8 52 -19 77
-c-12 28 -30 54 -52 76s-48 40 -76 52c-25 10 -51 16 -77 18v-47c50 -3 92 -22 123 -53s50 -73 53 -123h48zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80zM227 228c56 -56 89 -131 93 -212h48c-8 190 -162 344 -352 352v-48c81 -4 155 -36 211 -92z" />
- <glyph glyph-name="ion-social-rss" unicode="&#xf23d;" horiz-adv-x="384"
-d="M56 112c31 0 56 -25 56 -56s-25 -56 -56 -56s-56 25 -56 56s25 56 56 56zM0 256c140 0 256 -116 256 -256h-80c0 48 -14 94 -48 128s-80 48 -128 48v80zM0 384c212 0 384 -172 384 -384h-80c0 171 -133 304 -304 304v80z" />
- <glyph glyph-name="ion-social-sass" unicode="&#xf4ea;" horiz-adv-x="512"
-d="M512 119v-8c-1 -9 -7 -17 -15 -22s-12 -4 -13 -3s1 3 4 5c13 8 17 20 10 33c-5 10 -15 16 -26 20c-24 8 -48 7 -72 0c4 -12 7 -23 -2 -34c-10 -12 -23 -19 -39 -22c-7 -2 -14 2 -15 9c-3 19 17 36 30 47c-7 11 -11 24 -14 37c-15 -17 -31 -40 -26 -61
-c3 -14 -1 -27 -14 -36s-30 -14 -46 -11c-4 1 -6 5 -5 8c2 14 25 32 35 43c2 2 3 4 1 7c-6 12 -10 23 -14 36c-13 -29 -30 -80 -57 -98c-9 -6 -17 -4 -21 5c-3 8 -2 20 -1 29c-6 -13 -11 -27 -20 -38c-7 -8 -24 -7 -30 1c-16 21 -13 50 -5 73l-29 -15c7 -16 8 -32 4 -49
-c-5 -19 -17 -35 -35 -46c-19 -12 -64 -24 -77 4c-7 16 -4 30 6 44c17 24 48 37 74 50c-32 23 -80 42 -96 80c-15 35 17 68 43 89c59 48 166 95 244 59c15 -7 36 -24 31 -52c-4 -24 -13 -39 -28 -54c-32 -32 -152 -77 -176 -15c-1 1 -1 4 1 4c2 -1 20 -15 43 -16
-c17 -1 36 3 52 8c33 11 71 33 80 67c4 13 -2 28 -15 34c-49 24 -116 -4 -159 -26c-33 -17 -84 -45 -82 -87c1 -37 56 -60 81 -82c15 7 42 15 52 27c11 13 26 25 44 26c8 0 14 -3 16 -10c2 -6 1 -11 0 -19c5 4 11 4 15 -1c12 -14 -22 -50 -10 -66c14 14 21 42 30 59
-c4 8 17 51 26 53c7 2 18 4 25 0c2 -1 3 -3 2 -5c-7 -19 -7 -33 3 -52c14 20 29 43 34 67c1 2 3 3 5 4c7 2 18 3 25 0c3 -1 3 -2 2 -5c-7 -22 -6 -38 6 -58c31 11 69 15 97 -5c-3 2 -7 5 0 0c5 -4 3 -2 0 0c12 -8 19 -18 21 -32zM113 94v0c1 7 -1 13 -3 20
-c-24 -8 -66 -35 -64 -62c1 -10 8 -13 17 -12s19 7 27 13c14 11 22 24 23 41zM216 166c1 3 -2 5 -5 4c-29 -8 -43 -57 -33 -81c1 -3 4 -3 6 -1c17 16 28 56 32 78zM286 84c8 -3 27 17 26 27c-8 -9 -18 -18 -26 -27zM367 102c11 6 16 19 12 30c-8 -6 -21 -19 -20 -31
-c0 -2 6 0 8 1z" />
- <glyph glyph-name="ion-social-skype-outline" unicode="&#xf23e;" horiz-adv-x="384"
-d="M106 352c-41 0 -74 -33 -74 -73c0 -13 4 -25 10 -36l6 -11l-2 -12c-2 -10 -3 -20 -3 -30c0 -40 16 -77 44 -105s67 -44 107 -44c9 0 19 1 28 3l11 2l9 -5c11 -6 24 -9 36 -9c41 0 74 33 74 73c0 11 -3 22 -8 32l-5 10l3 11c2 10 3 21 3 32c0 40 -16 77 -44 105
-s-67 43 -107 43c-9 0 -18 0 -26 -2l-12 -2l-10 7c-12 7 -26 11 -40 11zM106 384v0c21 0 40 -6 56 -16c10 2 21 2 32 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3
-c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105zM288 104c-8 -12 -21 -21 -37 -28s-36 -10 -58 -10c-26 0 -48 5 -65 14c-12 7 -22 15 -30 26s-12 22 -12 33c0 7 3 12 8 17s11 7 19 7c6 0 12 -2 16 -6s7 -8 10 -15s7 -13 11 -18
-s8 -9 15 -12s16 -5 27 -5c15 0 28 4 37 10s13 13 13 22c0 7 -2 13 -7 17c-5 5 -11 9 -19 11c-8 3 -20 5 -34 8c-19 4 -35 9 -48 14c-13 6 -24 13 -32 23s-11 22 -11 36s4 25 12 36c8 10 20 19 36 25c15 6 34 8 54 8c16 0 30 -1 42 -5s23 -9 31 -15s14 -13 18 -20
-s5 -14 5 -21c0 -6 -2 -12 -7 -17s-11 -8 -19 -8c-7 0 -12 2 -16 5c-3 3 -7 7 -11 14c-5 8 -10 15 -16 20s-17 8 -31 8c-13 0 -23 -3 -31 -8s-12 -11 -12 -18c0 -4 2 -7 4 -10c3 -3 6 -6 11 -8s10 -5 15 -6s13 -3 25 -6c15 -3 28 -6 40 -10s23 -8 32 -14s15 -13 20 -22
-s8 -20 8 -32c0 -15 -5 -28 -13 -40z" />
- <glyph glyph-name="ion-social-skype" unicode="&#xf23f;" horiz-adv-x="384"
-d="M373 151c7 -14 11 -29 11 -46c0 -58 -47 -105 -106 -105c-18 0 -35 4 -50 12c-11 -2 -22 -3 -34 -3c-101 0 -183 81 -183 181c0 12 2 24 4 36c-9 16 -15 34 -15 53c0 58 47 105 106 105c21 0 41 -6 57 -16c10 2 20 2 31 2c101 0 183 -80 183 -180c0 -13 -1 -27 -4 -39z
-M288 104c9 12 12 25 12 40c0 12 -2 23 -7 32s-12 16 -21 22s-19 10 -31 14s-26 7 -41 10c-12 3 -20 5 -25 6s-10 4 -15 6s-7 5 -10 8c-2 3 -4 6 -4 10c0 7 3 13 11 18s19 7 32 7c14 0 25 -2 31 -7s11 -12 16 -20c4 -7 8 -11 11 -14c4 -3 9 -5 16 -5c8 0 13 3 18 8s8 11 8 17
-c0 7 -2 14 -6 21s-10 14 -18 20s-18 11 -30 15s-27 5 -43 5c-20 0 -38 -2 -53 -8c-16 -6 -28 -15 -36 -25c-8 -11 -12 -22 -12 -36s3 -26 11 -36s19 -17 32 -23c13 -5 29 -10 48 -14c14 -3 26 -5 34 -8c8 -2 14 -6 19 -11c5 -4 7 -10 7 -17c0 -9 -4 -17 -13 -23
-s-22 -9 -37 -9c-11 0 -20 2 -27 5s-11 6 -15 11s-8 12 -11 19s-6 11 -10 15s-10 6 -16 6c-8 0 -14 -2 -19 -7s-8 -10 -8 -17c0 -11 4 -22 12 -33s18 -19 30 -26c17 -9 39 -14 65 -14c22 0 42 3 58 10s29 16 37 28z" />
- <glyph glyph-name="ion-social-snapchat-outline" unicode="&#xf4eb;" horiz-adv-x="480"
-d="M240 400v0v0c-71 0 -128 -54 -118 -128c2 -15 3 -32 4 -45c0 0 -2 -5 -12 -5c-6 0 -15 2 -28 7c-2 1 -4 1 -6 1c-8 0 -13 -6 -14 -12c0 -5 4 -11 8 -13c14 -7 47 -10 47 -33s-23 -47 -41 -64s-64 -21 -64 -21s0 -21 32 -29s32 -5 33 -13c2 -15 1 -22 11 -22c2 0 4 1 6 1
-c8 1 20 3 32 3c11 0 23 -2 34 -9c23 -15 41 -34 76 -34s53 19 76 34c11 7 24 9 35 9c12 0 23 -2 31 -3c2 0 4 -1 6 -1c10 0 9 7 11 22c1 8 1 5 33 13s32 29 32 29s-46 4 -64 21s-41 41 -41 64s33 26 47 33c4 2 9 8 9 13c-1 6 -6 12 -14 12c-2 0 -5 0 -7 -1
-c-13 -5 -21 -6 -27 -6c-10 0 -13 4 -13 4c1 13 2 30 4 45c10 74 -47 128 -118 128zM240 416v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5
-c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1
-c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4
-c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0z
-M240 219c-21 0 -41 8 -56 23c-3 3 -3 9 0 12s9 3 12 0c12 -12 27 -19 44 -19c16 0 32 7 44 19c3 3 9 3 12 0s3 -9 0 -12c-15 -15 -35 -23 -56 -23zM176 296c0 16 5 24 16 24s16 -8 16 -24s-5 -24 -16 -24s-16 8 -16 24zM272 296c0 16 5 24 16 24s16 -8 16 -24
-s-5 -24 -16 -24s-16 8 -16 24z" />
- <glyph glyph-name="ion-social-snapchat" unicode="&#xf4ec;" horiz-adv-x="480"
-d="M480 88c0 -2 0 -11 -6 -21c-5 -8 -16 -19 -38 -24c-6 -1 -11 -3 -15 -4c-2 -1 -5 -1 -7 -1v-1c-1 -7 -1 -13 -4 -18c-2 -5 -9 -12 -22 -12c-2 0 -6 0 -9 1c-2 0 -3 1 -5 1c-7 1 -15 2 -23 2c-10 0 -19 -2 -26 -6c-4 -3 -9 -7 -14 -10c-18 -13 -38 -27 -71 -27
-s-53 14 -71 27c-5 3 -9 7 -14 10c-7 4 -15 6 -25 6c-8 0 -17 -1 -24 -2c-2 0 -3 -1 -5 -1c-3 -1 -7 -1 -9 -1c-13 0 -20 7 -22 12c-3 5 -3 11 -4 18v1c-2 0 -4 0 -6 1c-4 1 -10 3 -16 4c-22 5 -33 16 -38 24c-6 10 -6 18 -6 20v15l15 1c16 1 44 7 54 17c29 27 36 43 36 52
-c0 1 0 2 -4 5c-5 3 -13 6 -20 8c-5 2 -10 3 -14 5c-9 4 -18 16 -17 29c1 15 14 27 30 27c4 0 8 0 12 -2c8 -3 13 -4 17 -5c-1 9 -2 19 -3 30c-5 38 5 74 29 102c25 29 64 45 105 45v0c41 0 80 -16 105 -45c24 -28 34 -63 29 -101c-1 -11 -2 -22 -3 -31c4 1 10 2 18 5
-c4 1 8 2 12 2c16 0 29 -12 30 -27c1 -13 -9 -25 -18 -29c-4 -2 -9 -3 -14 -5c-7 -2 -14 -5 -19 -8c-4 -3 -5 -4 -5 -5c0 -16 20 -37 36 -52c11 -10 39 -16 54 -17l15 -1v-14zM192 320c-9 0 -16 -11 -16 -24s7 -24 16 -24s16 11 16 24s-7 24 -16 24zM296 242c3 3 3 9 0 12
-s-9 3 -12 0c-12 -12 -28 -19 -44 -19c-17 0 -32 7 -44 19c-3 3 -9 3 -12 0s-3 -9 0 -12c15 -15 35 -23 56 -23s41 8 56 23zM288 272c9 0 16 11 16 24s-7 24 -16 24s-16 -11 -16 -24s7 -24 16 -24z" />
- <glyph glyph-name="ion-social-tumblr-outline" unicode="&#xf240;" horiz-adv-x="256"
-d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16
-c9 -6 19 -8 31 -8zM240 17v29c-15 -6 -31 -10 -47 -10c-15 0 -28 3 -40 10c-10 6 -17 15 -21 25c-2 6 -4 17 -4 52v117h96v32h-96v112h-32c-2 -16 -7 -36 -14 -50c-8 -16 -17 -29 -30 -40c-11 -9 -23 -17 -36 -23v-31h48v-156c0 -21 2 -32 4 -38c3 -8 10 -15 18 -22
-c9 -8 19 -14 31 -18c13 -4 29 -6 46 -6c16 0 28 2 41 5c11 2 23 6 36 12z" />
- <glyph glyph-name="ion-social-tumblr" unicode="&#xf241;" horiz-adv-x="256"
-d="M193 52c21 0 42 6 63 20v-65c-18 -8 -34 -15 -48 -18s-28 -5 -45 -5c-19 0 -35 2 -50 7c-14 5 -28 12 -38 21s-17 18 -21 28s-6 25 -6 44v140h-48v58c16 5 30 14 42 24s19 21 26 35s11 37 14 59h62v-112h96v-64h-96v-101c0 -24 1 -40 4 -47c2 -7 7 -12 14 -16
-c9 -6 19 -8 31 -8z" />
- <glyph glyph-name="ion-social-tux" unicode="&#xf2c5;" horiz-adv-x="383"
-d="M189 347c2 2 -1 -1 0 0c2 2 4 4 6 5c-3 -2 -5 -4 -7 -8c0 1 0 2 1 3zM361 52c7 -4 23 -11 21 -22c-2 -10 -17 -15 -24 -19c-15 -8 -28 -14 -41 -25c-9 -8 -17 -15 -29 -17c-11 -2 -25 -1 -33 8c-5 5 -7 11 -15 12c-25 5 -54 4 -79 0c-13 -2 -21 -11 -32 -17
-c-10 -5 -20 -5 -30 -1c-13 5 -27 10 -41 13s-29 5 -43 9c-31 8 -5 30 -11 50c-3 12 -10 29 8 30c9 1 27 -1 31 11c2 7 -2 15 2 22s-1 17 1 25c4 18 19 32 25 49c5 14 8 25 18 37c9 11 22 22 29 34c10 18 9 35 8 55c-1 17 -1 33 -2 50c0 33 20 60 58 60h14
-c38 0 63 -32 64 -69c0 -19 -5 -38 5 -67c15 -27 36 -48 52 -73c10 -16 16 -31 20 -49c3 -14 9 -31 7 -45c-1 -6 -2 -9 -4 -11c3 -1 7 -2 9 -5c3 -4 2 -11 0 -26c-1 -8 5 -15 12 -19zM137 -3c2 20 -15 39 -25 56c-10 16 -21 43 -39 52c-8 4 -19 5 -23 -5c-2 -7 0 -19 -2 -22
-c-4 -9 -14 -10 -23 -11c-6 0 -17 0 -17 -8c1 -10 10 -20 7 -30c-2 -7 -8 -12 -8 -19c0 -14 38 -15 47 -17c19 -4 37 -14 57 -16c12 -1 25 7 26 20zM253 62c-2 10 2 -10 0 0s-5 28 1 35c4 5 10 6 17 5c0 4 1 9 3 12c8 13 29 8 39 0l-1 2c-3 4 -8 9 -13 10c0 0 4 12 2 34
-c-4 40 -33 62 -33 62c27 -30 27 -58 27 -72c0 -6 -1 -18 -4 -24c-4 -1 -7 -2 -11 -4c-10 -5 -8 2 -8 10c0 18 -2 36 -7 54c-3 9 -7 17 -13 24c-4 5 -4 9 -5 15c-3 12 -9 22 -16 32c-7 9 -7 17 -5 28c1 7 2 14 -6 17c-6 2 -26 5 -27 14c-1 6 -1 16 5 20c16 14 30 -11 17 -24
-c-3 -3 7 -4 8 -4c4 1 4 7 5 10c1 4 1 9 1 13c0 17 -18 32 -34 21c-6 -4 -9 -11 -10 -17c0 -2 -1 -20 0 -20c-4 0 -7 5 -11 5c-3 0 -7 0 -10 -1c0 0 2 14 -2 22c-4 9 -18 16 -24 4s-3 -25 0 -31s4 -6 4 -6c2 1 5 4 5 4s-6 3 -7 11c-1 9 3 14 7 15s10 -2 12 -8s0 -13 0 -13
-c-7 -6 -30 -18 -22 -28c14 -18 33 -15 52 -9c8 3 18 5 24 12c3 3 11 2 8 -4c-2 -5 -18 -7 -22 -9c-9 -4 -18 -8 -28 -10c-6 -1 -13 -5 -28 9c7 -6 8 -16 17 -20c13 -6 33 9 44 15c1 1 16 5 14 0c-1 -4 -11 -7 -15 -9c-11 -6 -23 -21 -36 -22c-8 -1 -21 16 -25 22
-c-1 1 -5 9 -6 4c-1 -8 2 -14 -3 -21c-6 -9 -11 -18 -13 -29c-1 -6 0 -11 -3 -16c-11 -15 -17 -33 -19 -51c0 -4 3 -43 -5 -41c-18 5 -17 33 -14 47c-3 -12 -8 -30 2 -44c12 -15 99 -55 53 -80c7 -14 14 -25 12 -41c8 7 2 20 -1 28c0 0 17 -12 38 -10c17 2 32 7 46 16
-c6 4 11 9 16 14c1 2 4 6 6 7l1 -11c2 -17 -12 -27 -10 -34c4 8 11 14 13 24c3 12 0 24 -2 36zM155 323v0v-3c2 0 2 5 1 8c-1 4 -3 6 -4 6h-2c3 -2 5 -6 5 -11zM210 335c3 -2 0 0 0 0c3 -2 5 -5 5 -10v-3c2 0 3 4 2 7s-3 6 -5 6h-2zM347 15c24 11 -24 -10 0 0
-c24 11 35 17 20 26c-17 10 -26 13 -26 29c0 5 4 16 2 22c-1 4 -6 5 -9 5c-10 -10 -17 -25 -34 -25c-14 0 -25 11 -28 24c-4 2 -10 1 -13 -4c-6 -12 1 -29 3 -41c2 -18 -4 -35 -2 -53c2 -21 26 -22 40 -13c16 10 29 22 47 30z" />
- <glyph glyph-name="ion-social-twitch-outline" unicode="&#xf4ed;" horiz-adv-x="416"
-d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM368 160v208h-304v-272h80v-64l64 64h96zM272 176v129h48v-129h-48zM160 176v129h48v-129h-48z" />
- <glyph glyph-name="ion-social-twitch" unicode="&#xf4ee;" horiz-adv-x="416"
-d="M32 416h384v-272l-112 -112h-80l-64 -64h-64v64h-96v304zM208 176v129h-48v-129h48zM320 176v129h-48v-129h48z" />
- <glyph glyph-name="ion-social-twitter-outline" unicode="&#xf242;" horiz-adv-x="472"
-d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48
-c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15zM414 301c3 2 8 6 11 8c-2 0 -11 -2 -19 -1s-21 5 -21 5s14 13 18 17l11 11c-4 -1 -10 -2 -14 -3l-8 -2l-6 6
-c-15 16 -37 26 -59 26c-45 0 -81 -37 -81 -81c0 -6 1 -12 2 -18l5 -21l-22 1c-42 2 -81 13 -118 32c-28 14 -53 34 -75 56c-1 -6 -2 -13 -2 -19c0 -27 14 -53 36 -68c0 0 33 -23 46 -29c-24 -2 -56 0 -56 0c-8 0 -16 1 -24 3c8 -28 32 -50 62 -56l61 -10l-61 -21
-c-7 -2 -14 -3 -21 -3c15 -20 38 -34 64 -34l45 -1l-35 -28c-18 -14 -38 -25 -60 -33c-10 -3 -19 -6 -29 -8c27 -9 55 -14 84 -14c40 0 78 8 112 24c31 14 58 34 81 60c22 24 38 53 50 84c11 30 17 62 17 92v12l-1 8z" />
- <glyph glyph-name="ion-social-twitter" unicode="&#xf243;" horiz-adv-x="472"
-d="M472 338c-13 -20 -29 -36 -48 -50v-12c0 -128 -98 -276 -276 -276c-55 0 -105 16 -148 44c8 -1 15 -2 23 -2c45 0 87 16 120 42c-42 1 -78 29 -90 67c6 -1 12 -2 18 -2c9 0 18 2 26 4c-44 9 -78 48 -78 95v1c13 -7 28 -12 44 -12c-26 17 -43 47 -43 81c0 18 5 34 13 48
-c48 -59 119 -97 199 -101c-2 7 -2 14 -2 22c0 54 43 97 97 97c28 0 52 -12 70 -31c22 4 43 13 62 24c-7 -23 -23 -42 -43 -54c20 2 39 7 56 15z" />
- <glyph glyph-name="ion-social-usd-outline" unicode="&#xf352;" horiz-adv-x="320"
-d="M125 345c11 2 19 3 19 3v-131l-22 6c-15 5 -27 11 -36 19c-12 10 -19 25 -19 43c0 13 4 24 11 33c6 8 13 14 22 19c7 4 17 6 25 8zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM252 151
-c10 -10 15 -24 15 -42c0 -9 -1 -18 -5 -27s-11 -17 -20 -24c-8 -6 -18 -11 -31 -15c-6 -2 -11 -3 -17 -4s-18 -1 -18 -1v145l20 -5c10 -3 19 -6 28 -9c10 -4 20 -10 28 -18zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14s-16 5 -26 8v-107c6 1 10 2 14 3
-c11 3 20 8 27 13s11 11 14 18zM315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23
-s20 -11 31 -14v120c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46
-c-7 4 -13 8 -22 10v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM293 72c7 12 11 27 11 44c0 8 -1 16 -4 24s-7 15 -12 22s-12 13 -20 19c-8 5 -18 10 -29 13c-5 1 -13 3 -24 6h-1l-4 1c-7 2 -13 4 -21 6l-13 3v137
-s9 -1 19 -4s19 -6 28 -12c15 -9 25 -24 30 -43h38c-2 8 -4 15 -8 22c-7 13 -16 24 -28 32c-12 9 -27 16 -43 20c-8 2 -16 4 -23 5l-13 2v31h-32v-31l-14 -2c-7 -1 -14 -2 -20 -4c-15 -4 -29 -10 -41 -18s-21 -16 -28 -28c-7 -11 -10 -24 -10 -40c0 -8 1 -15 3 -23
-c2 -7 6 -14 11 -21s14 -13 23 -19c10 -6 22 -10 37 -14v0v0c4 -1 8 -2 11 -3c5 -1 11 -3 16 -4l12 -3v-151s-8 1 -20 4s-26 8 -36 15c-11 8 -20 18 -26 30c-4 7 -6 16 -8 24h-36c2 -11 5 -23 10 -32c8 -14 17 -26 30 -35c13 -10 28 -16 46 -21c8 -2 17 -4 26 -5l14 -2v-33
-h32v33l15 1c9 1 17 3 26 5c17 4 32 10 45 18s23 19 31 31z" />
- <glyph glyph-name="ion-social-usd" unicode="&#xf353;" horiz-adv-x="320"
-d="M315 145c3 -10 5 -19 5 -29c0 -21 -5 -38 -14 -53s-20 -26 -35 -35s-31 -17 -50 -21c-10 -2 -19 -3 -29 -4v-35h-64v35c-9 1 -19 4 -28 6c-20 5 -36 12 -51 23s-26 24 -35 41c-8 16 -13 34 -14 55h69c0 -12 2 -24 7 -33c5 -10 12 -17 21 -23s20 -11 31 -14v120
-c-8 2 -18 4 -27 6c-17 4 -30 9 -41 16s-20 15 -27 23s-11 17 -14 26s-4 18 -4 28c0 18 4 34 12 48s19 25 33 34s29 16 46 20c7 2 15 3 22 4v33h64v-33c9 -1 16 -4 24 -6c18 -5 34 -12 48 -22s25 -22 33 -37c7 -13 11 -28 12 -46h-69c-3 21 -12 37 -26 46c-7 4 -13 8 -22 10
-v-106c9 -2 16 -4 25 -6c12 -3 22 -6 27 -7c13 -4 23 -9 33 -15c10 -7 18 -14 24 -22s11 -17 14 -27zM128 238v92c-7 -2 -15 -4 -21 -7c-7 -4 -12 -9 -17 -15s-7 -14 -7 -23c0 -13 4 -24 13 -31c8 -7 20 -12 32 -16zM247 89c3 7 4 13 4 20c0 14 -3 24 -10 31s-15 11 -23 14
-s-16 5 -26 8v-107c6 1 10 2 14 3c11 3 20 8 27 13s11 11 14 18z" />
- <glyph glyph-name="ion-social-vimeo-outline" unicode="&#xf244;"
-d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-10 -4 -19 -5 -27 -5c-17 0 -31 9 -44 27c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-2 2 -5 3 -8 3s-6 -1 -9 -3
-c-10 -6 -28 -18 -28 -18l-21 27c26 24 82 71 82 71c11 9 33 25 48 27h8c18 0 32 -7 42 -22c11 -17 15 -37 18 -57c7 -41 12 -82 24 -122c3 -10 7 -20 12 -29c4 -7 9 -10 14 -10c4 0 7 2 11 5s7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26h-7
-c-11 0 -20 -2 -32 -7c6 24 24 62 54 84c20 14 45 20 67 20c10 0 20 -2 27 -4c23 -8 36 -23 41 -46zM418 244c13 30 17 59 11 87c-4 19 -13 28 -30 34c-6 2 -14 3 -22 3c-21 0 -42 -6 -57 -17c-16 -12 -29 -30 -38 -48h6h8c23 -1 39 -19 40 -41c0 -10 0 -22 -4 -34
-c-11 -29 -29 -58 -51 -85c-4 -4 -7 -9 -12 -13c-7 -6 -15 -8 -22 -8c-8 0 -18 3 -27 18c-7 11 -11 22 -14 32c-10 31 -14 64 -19 95c-2 10 -3 19 -5 29c-3 17 -6 36 -16 51c-7 10 -16 15 -28 15h-6c-8 -1 -25 -11 -40 -23c-2 -2 -43 -37 -70 -61l2 -3c5 4 12 7 16 10
-c6 3 12 5 18 5c7 0 13 -3 18 -7c8 -7 13 -12 16 -18c6 -11 12 -24 16 -37c13 -44 26 -88 38 -133c5 -19 13 -41 26 -59s23 -20 31 -20c6 0 13 1 21 4c23 8 43 25 61 41c32 29 57 63 83 99v0c21 28 37 55 50 84z" />
- <glyph glyph-name="ion-social-vimeo" unicode="&#xf245;"
-d="M445 334c7 -33 1 -66 -13 -97s-31 -59 -51 -87c-26 -36 -52 -71 -85 -101c-19 -18 -41 -35 -66 -44c-31 -11 -52 -5 -71 22c-14 19 -22 40 -28 63c-12 45 -25 90 -38 134c-4 12 -9 22 -15 33c-3 5 -8 10 -12 14c-5 4 -11 3 -17 0c-10 -6 -28 -18 -28 -18l-21 27
-c26 24 82 71 82 71c11 9 33 25 48 27c21 3 38 -4 50 -22c11 -17 15 -37 18 -57c7 -41 11 -82 23 -122c3 -10 8 -20 13 -29c7 -11 15 -13 25 -5c4 3 7 6 10 10c20 24 37 52 48 81c3 9 3 17 3 27c0 13 -10 25 -25 26s-24 -1 -39 -7c6 24 24 62 54 84c29 21 71 24 94 16
-s36 -23 41 -46z" />
- <glyph glyph-name="ion-social-whatsapp-outline" unicode="&#xf4ef;"
-d="M178 294c4 -11 15 -39 16 -42s2 -6 0 -10s-3 -6 -6 -9s-6 -7 -9 -9c-3 -3 -6 -6 -3 -12s14 -24 30 -39c21 -20 38 -27 44 -30s9 -3 12 1s15 16 19 21s8 5 13 3s31 -17 37 -20s10 -5 11 -7s0 -13 -5 -26s-28 -24 -38 -25s-11 -8 -67 16s-90 84 -93 88s-22 31 -21 58
-s17 41 22 46s11 7 15 7h10s9 0 13 -11zM228 384c-50 0 -97 -20 -133 -55c-35 -35 -55 -81 -55 -131c0 -34 9 -67 27 -96l8 -13l-5 -14l-19 -57l61 19l13 4l12 -6c28 -15 59 -23 91 -23c50 0 97 19 133 54c35 35 55 82 55 132s-20 96 -55 131c-36 35 -83 55 -133 55zM228 416
-v0c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218z" />
- <glyph glyph-name="ion-social-whatsapp" unicode="&#xf4f0;"
-d="M228 416c121 0 220 -97 220 -218s-99 -218 -220 -218c-39 0 -74 10 -106 27l-122 -39l40 117c-20 33 -32 72 -32 113c0 121 99 218 220 218zM337 115c5 13 6 24 5 26s-5 4 -11 7s-32 18 -37 20s-9 2 -13 -3s-16 -17 -19 -21s-6 -4 -12 -1s-23 10 -44 30
-c-16 15 -27 33 -30 39s0 9 3 12c3 2 6 6 9 9s4 5 6 9s1 7 0 10s-12 31 -16 42s-10 11 -13 11h-10s-10 -2 -15 -7s-21 -19 -22 -46s18 -54 21 -58s37 -64 93 -88s57 -17 67 -16s33 12 38 25z" />
- <glyph glyph-name="ion-social-windows-outline" unicode="&#xf246;"
-d="M432 167h-216v-149l216 -32v181zM448 183v0v-215l-248 36v179h248zM168 167h-152v-120l152 -22v142zM184 183v0v-177l-184 27v150h184zM432 398v0l-216 -31v-152h216v183zM448 416v0v-217h-248v182zM168 360v0l-152 -22v-123h152v145zM184 378v0v-179h-184v153z" />
- <glyph glyph-name="ion-social-windows" unicode="&#xf247;"
-d="M448 183v0v-215l-248 36v179h248zM184 183v0v-177l-184 27v150h184zM448 416v0v-217h-248v182zM184 378v0v-179h-184v153z" />
- <glyph glyph-name="ion-social-wordpress-outline" unicode="&#xf248;" horiz-adv-x="384"
-d="M192 384c106 0 192 -86 192 -192c0 -9 -1 -18 -2 -26c-12 -85 -79 -153 -165 -164c-8 -1 -17 -2 -25 -2c-106 0 -192 86 -192 192s86 192 192 192zM19 192c0 -68 40 -127 98 -155l-83 225c-10 -21 -15 -45 -15 -70zM214 21c12 2 24 4 35 8c0 1 -1 2 -1 3l-53 145l-33 -96
-v0l-19 -55c15 -5 32 -7 49 -7c8 0 15 1 22 2zM216 273l62 -186l17 58c9 22 13 41 13 56c0 21 -7 35 -14 47c-9 14 -17 27 -17 41c0 16 12 30 29 30h2c-31 28 -71 45 -116 45c-60 0 -113 -30 -144 -77c4 0 8 -1 11 -1c18 0 46 3 46 3c9 1 10 -14 1 -15c0 0 -10 -1 -20 -1
-l63 -187l38 113l-27 74c-9 0 -18 1 -18 1c-9 0 -8 16 1 15c0 0 28 -3 45 -3c18 0 46 3 46 3c9 1 11 -14 2 -15c0 0 -10 -1 -20 -1zM279 43c45 26 77 71 84 125c1 8 2 16 2 24c0 30 -8 58 -22 83c1 -6 1 -12 1 -18c0 -18 -3 -37 -13 -62l-39 -113z" />
- <glyph glyph-name="ion-social-wordpress" unicode="&#xf249;" horiz-adv-x="384"
-d="M195 177l53 -146c0 -1 6 -13 9 -19c-3 -1 -5 -2 -8 -3v0c-10 -3 -21 -6 -32 -7c-8 -1 -17 -2 -25 -2c-17 0 -34 2 -50 6v0c-2 0 -3 2 -5 2l25 73v0zM17 268c6 0 7 -1 15 -1l93 -255c-3 1 -5 2 -8 3c-63 27 -109 87 -116 158c-1 6 -1 13 -1 19c0 25 7 53 17 76zM366 273
-c11 -24 18 -52 18 -81c0 -9 -1 -18 -2 -26c-9 -65 -50 -120 -107 -147c-2 -1 -3 -1 -5 -2l22 65l39 113c10 25 13 45 13 62v19v0c-1 18 -10 44 -36 43h-2c-17 0 -29 -14 -29 -30c0 -14 8 -27 17 -41c7 -12 14 -26 14 -47c0 -15 -4 -34 -13 -56l-17 -58l-62 186
-c10 0 20 1 20 1c9 1 7 16 -2 15c0 0 -28 -3 -46 -3c-17 0 -45 3 -45 3c-9 1 -10 -15 -1 -15c0 0 9 -1 18 -1l27 -74l-38 -113l-63 187c10 0 20 2 20 2c9 1 8 15 -1 14c0 0 -28 -2 -46 -2h-34c5 9 11 17 17 25c35 44 90 72 150 72c24 0 48 -5 69 -13c34 -13 63 -36 85 -65
-c2 -2 3 -5 5 -7c6 -8 11 -17 15 -26z" />
- <glyph glyph-name="ion-social-yahoo-outline" unicode="&#xf24a;" horiz-adv-x="320"
-d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4zM178 180l111 184h-1c-7 0 -15 0 -24 2l-90 -150l-14 -23l-14 23l-89 150c-9 -2 -17 -2 -25 -2h-1l111 -184l2 -4
-v-5v-151c6 1 11 0 16 0s11 1 16 0v151v5z" />
- <glyph glyph-name="ion-social-yahoo" unicode="&#xf24b;" horiz-adv-x="320"
-d="M289 380c11 0 21 1 31 4l-128 -213v-171c-10 4 -21 4 -32 4s-22 0 -32 -4v171l-128 213c10 -4 21 -4 32 -4s22 0 32 4l96 -160l96 160c10 -4 22 -4 33 -4z" />
- <glyph glyph-name="ion-social-yen-outline" unicode="&#xf4f1;" horiz-adv-x="384"
-d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80zM304 192h-59l13 24l99 184v0h-43l-122 -240l-122 240h-43l99 -184l13 -24h-59v-16h68l20 -44v-36h-88v-16h88v-96h48v96h88v16h-88v37
-l21 43h67v16z" />
- <glyph glyph-name="ion-social-yen" unicode="&#xf4f2;" horiz-adv-x="384"
-d="M384 416l-112 -208h48v-48h-73l-15 -31v-17h88v-48h-88v-96h-80v96h-88v48h88v17l-14 31h-74v48h48l-112 208h80l112 -221l112 221h80z" />
- <glyph glyph-name="ion-social-youtube-outline" unicode="&#xf24c;" horiz-adv-x="512"
-d="M265 352v0h-9h-9c-65 0 -118 -2 -168 -4h-1h-1c-23 0 -42 -22 -42 -49v-1v-1c-2 -34 -3 -70 -3 -105v0v0c0 -35 1 -70 3 -104v-2v-1c0 -14 5 -26 14 -36c8 -9 17 -13 28 -13h1h1c52 -2 108 -4 166 -4h11v0v0h11c58 0 113 2 166 4h1h1c11 0 20 4 28 13c9 10 14 22 14 36v1
-v2c2 34 3 68 3 104v0v0c0 36 -1 71 -3 105v1v2c0 27 -19 49 -42 49h-1h-1c-49 2 -103 3 -168 3zM265 384v0c58 0 115 0 170 -3c41 0 74 -36 74 -81c2 -36 3 -72 3 -108s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-55 -3 -111 -4 -168 -4h-11h-11c-57 0 -113 1 -168 4
-c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 82 73 82c55 2 112 3 170 3h9h9zM207 94v197l145 -99z" />
- <glyph glyph-name="ion-social-youtube" unicode="&#xf24d;" horiz-adv-x="512"
-d="M509 299c2 -36 3 -71 3 -107s-1 -71 -3 -107c0 -45 -33 -81 -74 -81c-58 -3 -118 -4 -179 -4s-121 1 -179 4c-41 0 -74 36 -74 81c-2 36 -3 71 -3 107s2 71 4 107c0 45 32 81 73 81c55 3 112 4 170 4h9h9c58 0 115 -1 170 -4c41 0 74 -36 74 -81zM207 94l145 98l-145 99
-v-197z" />
- <glyph glyph-name="ion-soup-can-outline" unicode="&#xf4f3;" horiz-adv-x="320"
-d="M160 304c-88 0 -160 29 -160 64s72 64 160 64s160 -29 160 -64s-72 -64 -160 -64zM160 415c-70 0 -126 -19 -126 -43s56 -43 126 -43s126 19 126 43s-56 43 -126 43zM161 288c88 0 158 29 159 64c0 -5 0 -33 -8 -40v-240c0 -35 -64 -64 -152 -64s-152 29 -152 64v240
-c-8 6 -8 40 -8 40c0 -35 73 -64 161 -64zM280 72v80c-18 -10 -43 -17 -72 -21h-2c-6 -20 -24 -35 -46 -35s-40 15 -46 35h-2c-29 4 -54 11 -72 21v-80c1 -2 9 -10 30 -18c24 -9 55 -14 90 -14s67 5 91 14c21 8 29 16 29 18zM280 184v91c-33 -12 -75 -19 -119 -19
-c-45 0 -87 7 -121 19v-91c18 -10 43 -17 73 -21h3c7 17 24 29 44 29s37 -12 44 -29h3c30 4 55 11 73 21zM178 -16zM160 -16h1h-1v0zM312 32l8 -16c0 -7 -3 -14 -8 -20c-21 -26 -81 -44 -152 -44s-131 18 -152 44c-5 6 -8 13 -8 20l8 16v16c0 -35 63 -64 152 -64
-s152 28 152 64v-16z" />
- <glyph glyph-name="ion-soup-can" unicode="&#xf4f4;" horiz-adv-x="320"
-d="M0 368c0 43 53 64 160 64s160 -21 160 -64s-53 -64 -160 -64s-160 21 -160 64zM160 8c-44 0 -80 6 -109 18s-43 28 -43 46v128c0 -9 4 -19 13 -27s21 -15 37 -21s33 -10 54 -13c1 -12 7 -23 16 -31s20 -12 32 -12s23 4 32 12s15 19 16 31c31 4 56 12 75 23s29 24 29 38
-v-128c0 -18 -14 -34 -43 -46s-65 -18 -109 -18zM160 288c44 0 82 6 113 18s47 28 47 46v-8c0 -5 -1 -11 -2 -18s-3 -11 -6 -14v-96c0 -14 -10 -27 -29 -38s-44 -19 -76 -23c-2 11 -8 19 -17 26s-19 11 -30 11s-21 -4 -30 -11s-15 -15 -17 -26c-32 4 -57 12 -76 23
-s-29 24 -29 38v96c-5 5 -8 18 -8 40c0 -18 16 -34 47 -46s69 -18 113 -18zM312 56v-24l8 -16c0 -7 -3 -14 -8 -20c-11 -13 -30 -24 -58 -32s-59 -12 -94 -12s-66 4 -94 12s-47 19 -58 32c-5 6 -8 13 -8 20l8 16v24c0 -18 14 -34 43 -46s65 -18 109 -18s80 6 109 18
-s43 28 43 46z" />
- <glyph glyph-name="ion-speakerphone" unicode="&#xf2b2;"
-d="M39 266c0 -37 20 -69 50 -86c-1 0 -2 1 -3 1s-4 1 -5 1v0c-35 3 -62 33 -69 69c-6 0 -12 7 -12 16c0 8 5 15 11 16c6 42 40 75 81 75h8c-36 -15 -61 -51 -61 -92zM433 357c10 -25 15 -56 15 -88s-5 -63 -15 -88l-3 -9c-6 -14 -15 -26 -24 -34c-10 -10 -22 -19 -34 -20h-3
-c-7 0 -15 2 -22 5c-3 2 -10 5 -10 5c-22 10 -84 28 -115 29c-4 -8 -10 -20 -12 -30c-2 -9 -6 -27 -7 -61c-1 -32 1 -59 3 -82c0 -2 1 -5 1 -7c0 -6 -2 -9 -9 -9h-77c-6 0 -9 3 -9 6v7c2 72 25 140 26 145c2 9 5 17 7 30c2 12 -27 13 -40 24c-29 17 -47 49 -47 86
-c0 41 25 77 59 92h42h19c58 3 114 21 163 50c1 1 3 1 4 2v0c8 4 16 6 24 6c13 0 26 -6 37 -16c9 -9 18 -21 24 -35c1 -3 2 -5 3 -8zM410 180c9 22 15 54 15 89s-6 66 -15 88c-8 18 -19 29 -30 29s-21 -11 -29 -29c-9 -22 -15 -53 -15 -88s6 -67 15 -89c8 -19 18 -33 29 -33
-s22 15 30 33z" />
- <glyph glyph-name="ion-speedometer" unicode="&#xf2b3;"
-d="M312 192l8 -8l-64 -84v-4c0 -18 -14 -32 -32 -32s-32 14 -32 32s14 32 32 32h4zM224 352c124 0 224 -100 224 -224c0 -34 -8 -67 -22 -96h-36c15 27 25 57 26 88h-32v16h32c-1 29 -9 56 -22 81l-27 -15l-8 13l27 16c-8 12 -16 23 -26 33s-21 18 -33 26l-16 -27l-14 8
-l16 27c-25 13 -52 21 -81 22v-32h-16v32c-29 -1 -56 -9 -81 -22l16 -27l-14 -8l-16 27c-12 -8 -23 -16 -33 -26s-19 -21 -26 -33l28 -16l-8 -13l-28 15c-13 -25 -21 -52 -22 -81h32v-16h-32c1 -31 11 -61 26 -88h-36c-14 29 -22 62 -22 96c0 124 100 224 224 224z" />
- <glyph glyph-name="ion-spoon" unicode="&#xf2b4;" horiz-adv-x="128"
-d="M128 288c0 64 -26 128 -64 128s-64 -64 -64 -128v0c1 -25 16 -54 37 -64l1 -1v0c3 -2 10 -6 10 -10c0 0 -16 -199 -16 -210s4 -20 10 -26s14 -9 22 -9v0v0c8 0 16 3 22 9s10 13 10 26s-16 210 -16 210c0 4 7 8 10 10l1 1c22 10 37 38 37 64z" />
- <glyph glyph-name="ion-star" unicode="&#xf24e;"
-d="M448 248l-139 -104l55 -176l-140 112l-140 -112l55 176l-139 104h172l52 168l53 -168h171z" />
- <glyph glyph-name="ion-stats-bars" unicode="&#xf2b5;" horiz-adv-x="352"
-d="M96 32v320h64v-320h-64zM0 32v96h64v-96h-64zM192 32v160h64v-160h-64zM288 32v224h64v-224h-64z" />
- <glyph glyph-name="ion-steam" unicode="&#xf30b;" horiz-adv-x="512"
-d="M480 240c0 -20 -16 -37 -37 -37c-20 0 -37 16 -37 37c0 20 16 37 37 37c20 0 37 -17 37 -37zM443 309c38 0 69 -31 69 -69s-31 -70 -69 -70l-67 -48c-2 -26 -24 -47 -51 -47c-25 0 -46 18 -51 41l-196 78c-8 -5 -16 -7 -26 -7c-28 0 -52 24 -52 52s24 52 52 52
-c25 0 45 -18 50 -41l196 -79c8 5 17 8 27 8c2 0 3 -1 5 -1l43 62c0 38 32 69 70 69zM443 286c-26 0 -47 -20 -47 -46s21 -47 47 -47s46 21 46 47s-20 46 -46 46zM52 277c-21 0 -38 -17 -38 -38s17 -38 38 -38c3 0 5 0 8 1l-16 6v0c-15 7 -22 24 -16 39s24 23 39 17v0l19 -7
-c-6 12 -19 20 -34 20zM325 165c-3 0 -6 -1 -9 -1l16 -6c16 -6 23 -24 17 -40s-23 -23 -39 -17c-6 3 -13 6 -19 8c6 -12 19 -20 34 -20c21 0 38 17 38 38s-17 38 -38 38z" />
- <glyph glyph-name="ion-stop" unicode="&#xf24f;" horiz-adv-x="384"
-d="M373 384c6 0 11 -5 11 -11v-362c0 -6 -5 -11 -11 -11h-362c-6 0 -11 5 -11 11v362c0 6 5 11 11 11h362z" />
- <glyph glyph-name="ion-thermometer" unicode="&#xf2b6;" horiz-adv-x="160"
-d="M127 112c20 -14 33 -38 33 -64c0 -44 -36 -80 -80 -80s-80 36 -80 80c0 27 13 51 33 65v257c0 26 21 46 47 46s47 -20 47 -46v-258zM65 370v-50h30v50c0 8 -7 14 -15 14s-15 -6 -15 -14zM96 160v16h-16v-16h16zM96 192v64h-16v-64h16z" />
- <glyph glyph-name="ion-thumbsdown" unicode="&#xf250;" horiz-adv-x="384"
-d="M24 195c-10 5 -18 17 -18 29c0 14 8 25 20 30c-4 5 -6 12 -6 19c0 14 8 25 20 30c-3 5 -5 11 -5 17c0 18 11 24 35 30s74 12 126 9c23 -1 55 -7 76 -7v32h112v-240h-112v16c-15 -1 -31 -4 -40 -14c-22 -23 -40 -65 -40 -108c0 -19 1 -29 -4 -34c-13 -13 -44 9 -52 37
-c-9 34 -1 62 1 87h-103c-19 0 -34 15 -34 34c0 15 10 29 24 33zM336 352c-9 0 -16 -7 -16 -16s7 -16 16 -16s16 7 16 16s-7 16 -16 16z" />
- <glyph glyph-name="ion-thumbsup" unicode="&#xf251;" horiz-adv-x="384"
-d="M360 189c10 -5 18 -17 18 -29c0 -14 -8 -25 -20 -30c4 -5 6 -12 6 -19c0 -14 -8 -25 -20 -30c3 -5 5 -11 5 -17c0 -18 -11 -24 -35 -30s-74 -12 -126 -9c-23 1 -55 7 -76 7v-32h-112v240h112v-16c15 1 31 4 40 14c22 23 40 65 40 108c0 19 -1 29 4 34c13 13 44 -9 52 -37
-c9 -34 1 -62 -1 -87h103c19 0 34 -15 34 -34c0 -15 -10 -29 -24 -33zM48 32c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
- <glyph glyph-name="ion-toggle-filled" unicode="&#xf354;"
-d="M320 240c26 0 48 -22 48 -48s-22 -48 -48 -48s-48 22 -48 48s22 48 48 48zM320 320c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM320 112c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
- <glyph glyph-name="ion-toggle" unicode="&#xf355;"
-d="M320 288h-192c-53 0 -96 -43 -96 -96s43 -96 96 -96h192c53 0 96 43 96 96s-43 96 -96 96zM320 320v0c71 0 128 -57 128 -128s-57 -128 -128 -128h-192c-71 0 -128 57 -128 128s57 128 128 128h192zM128 240c-26 0 -48 -22 -48 -48s22 -48 48 -48s48 22 48 48
-s-22 48 -48 48zM128 272v0c44 0 80 -36 80 -80s-36 -80 -80 -80s-80 36 -80 80s36 80 80 80z" />
- <glyph glyph-name="ion-transgender" unicode="&#xf4f5;" horiz-adv-x="512"
-d="M368 448h144v-144h-40v76l-101 -100c8 -17 13 -36 13 -56c0 -63 -46 -115 -104 -126v-52h72v-46h-72v-64h-48v64h-72v46h72v52c-59 11 -104 63 -104 126c0 20 5 39 13 56l-22 22l-36 -36l-33 33l36 36l-46 45v-76h-40v144h144v-40h-70l43 -42l36 36l33 -33l-36 -36
-l17 -17c23 22 54 36 89 36c27 0 53 -8 74 -23c0 0 6 -5 15 -13l93 92h-70v40zM256 144c44 0 80 36 80 80s-36 80 -80 80s-80 -36 -80 -80s36 -80 80 -80z" />
- <glyph glyph-name="ion-trash-a" unicode="&#xf252;" horiz-adv-x="352"
-d="M261 320v0h91v-32h-9s-5 -1 -8 -4s-4 -9 -4 -9l-19 -241c-2 -29 -2 -34 -36 -34h-200c-34 0 -34 5 -36 34l-19 242s-1 6 -4 9s-8 3 -8 3h-9v32h91v29c0 19 14 35 34 35h101c20 0 35 -16 35 -35v-29zM112 349v-29h128v29c0 10 -9 15 -19 15h-91c-10 0 -18 -5 -18 -15z
-M104 64h20l-10 192h-21zM187 64v192h-22v-192h22zM249 64l10 192h-20l-11 -192h21z" />
- <glyph glyph-name="ion-trash-b" unicode="&#xf253;" horiz-adv-x="320"
-d="M318 315c3 -12 4 -11 -7 -11h-302c-11 0 -10 -1 -7 11c2 9 4 13 4 13c3 9 9 9 19 11l53 7c7 1 7 1 10 7c9 20 10 31 20 31h103c10 0 12 -11 21 -31c3 -6 3 -6 10 -7l53 -6c10 -2 16 -2 19 -11c0 0 2 -5 4 -14zM283 272c17 0 18 -2 17 -15l-19 -242c-2 -12 -2 -15 -17 -15
-h-208c-15 0 -15 3 -17 15l-19 242c-1 12 0 15 17 15h246z" />
- <glyph glyph-name="ion-trophy" unicode="&#xf356;"
-d="M448 345c0 -25 2 -73 -22 -122c-15 -30 -36 -55 -63 -75c-23 -16 -49 -28 -77 -35c-16 -17 -32 -27 -46 -31v-33s0 -49 99 -49h13v-32h-256v32h13c85 0 97 35 99 46v36c-14 4 -30 14 -46 31c-28 7 -55 19 -77 35c-27 20 -48 45 -63 75c-17 36 -21 71 -22 97v0v11v0v21v0
-h80c-2 35 0 64 0 64h143h1h1h142s2 -29 0 -64h81v-7zM51 237c17 -34 43 -61 77 -78c-22 40 -33 84 -42 135c-1 8 -2 17 -3 26h-51c1 -23 5 -53 19 -83zM397 237c14 30 18 60 19 83h-51c-1 -9 -3 -18 -4 -26c-9 -51 -20 -95 -42 -135c34 17 61 43 78 78z" />
- <glyph glyph-name="ion-tshirt-outline" unicode="&#xf4f6;"
-d="M146 362l-104 -31l11 -32l39 4l38 5l-2 -38l-14 -255h220l-14 255l-2 38l38 -5l39 -4l11 32l-104 31c-6 -8 -13 -14 -21 -19c-15 -10 -34 -15 -57 -15v0v0c-34 1 -59 11 -78 34zM288 400v0l160 -48l-32 -88l-64 8l16 -289h-288l16 289l-64 -8l-32 88l160 48
-c14 -27 31 -39 64 -40c33 0 50 13 64 40z" />
- <glyph glyph-name="ion-tshirt" unicode="&#xf4f7;"
-d="M448 352l-32 -88l-64 8l16 -288h-288l16 288l-64 -8l-32 88l160 48c14 -27 31 -39 64 -40c33 0 50 13 64 40z" />
- <glyph glyph-name="ion-umbrella" unicode="&#xf2b7;"
-d="M344 160v0v0v0zM104 160v0v0v0zM240 399c116 -8 208 -109 208 -227v-12c-4 25 -26 52 -52 52c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52s-49 -12 -52 -45v-135c0 -17 -6 -33 -18 -45s-29 -19 -46 -19c-35 0 -63 29 -63 64c0 9 7 16 16 16s16 -7 16 -16
-c0 -18 14 -32 31 -32c18 0 32 14 32 32v134c-1 24 -26 46 -52 46c-29 0 -52 -23 -52 -52v0c0 29 -23 52 -52 52c-27 0 -49 -26 -52 -52v18c0 118 92 213 208 221v1c0 9 7 16 16 16s16 -7 16 -16v-1z" />
- <glyph glyph-name="ion-university" unicode="&#xf357;"
-d="M224 384l224 -111l-92 -60l-132 -85l-160 102v-198l-32 16v203l-32 21zM358 192l10 -82c-16 -12 -112 -78 -144 -110c-32 32 -128 98 -144 110l9 82l135 -88z" />
- <glyph glyph-name="ion-unlocked" unicode="&#xf254;" horiz-adv-x="384"
-d="M22 -32c-12 0 -22 10 -22 22v212c0 12 10 22 22 22h3h19v31c0 42 17 87 43 115s64 46 105 46v0v0c41 0 79 -18 105 -46c20 -21 33 -51 39 -82h-53c-5 18 -13 35 -24 47v0v1c-18 19 -42 29 -67 29v0v0c-25 0 -49 -10 -67 -29v-1v0c-18 -19 -28 -53 -28 -80v-31h265
-c12 0 22 -10 22 -22v-212c0 -12 -10 -22 -22 -22h-340z" />
- <glyph glyph-name="ion-upload" unicode="&#xf255;"
-d="M366 215c45 0 82 -37 82 -83s-37 -84 -82 -84h-110v80h48l-80 84l-80 -84h48v-80h-102c-49 0 -90 41 -90 91c0 40 26 74 61 86c5 29 29 51 59 51c10 0 18 -3 26 -7c19 40 59 67 105 67c64 0 115 -53 115 -118v-3z" />
- <glyph glyph-name="ion-usb" unicode="&#xf2b8;" horiz-adv-x="256"
-d="M16 228v0v0zM256 320c0 -11 -6 -21 -14 -27v0c-2 -1 -3 -5 -3 -7c-1 -20 -3 -36 -9 -50c-7 -19 -20 -33 -39 -46c-17 -12 -29 -21 -36 -34c-7 -12 -11 -28 -11 -53v-24c0 -7 2 -13 10 -18c4 -2 7 -6 10 -9c8 -9 14 -21 14 -34c0 -28 -22 -50 -50 -50s-50 22 -50 50v1v0
-c0 18 10 33 24 42c5 4 9 5 9 18v0c0 14 -3 17 -10 27s-18 17 -32 26c-19 13 -33 27 -40 46c-6 15 -8 31 -9 39s-2 9 -4 11c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32c0 -10 -4 -20 -12 -26c-3 -2 -4 -11 -4 -14v0v0c0 -9 3 -18 7 -28c10 -21 45 -44 52 -44
-s8 5 8 12v196s-1 2 -3 4h-1v1v0c-9 6 -15 16 -15 27c0 18 14 32 32 32s32 -14 32 -32c0 -11 -5 -21 -14 -27v0c-2 -2 -2 -3 -2 -5v-140c0 -10 2 -12 8 -11c13 3 48 30 52 43c3 10 6 23 7 41v1c0 2 -2 4 -3 6c-10 6 -16 16 -16 28c0 18 14 32 32 32s32 -14 32 -32zM32 240
-c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM128 368c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16zM224 304c9 0 16 7 16 16s-7 16 -16 16s-16 -7 -16 -16s7 -16 16 -16z" />
- <glyph glyph-name="ion-videocamera" unicode="&#xf256;"
-d="M335 263v-66l113 35v-89v-88l-113 35v-65c0 -5 -4 -9 -9 -9h-317c-5 0 -9 4 -9 9v12v55v171c0 5 4 9 9 9h208v38c0 4 -6 10 -10 10h-176v48h178c36 0 65 -29 65 -64v-32h52c5 0 9 -4 9 -9zM226 107c20 0 36 16 36 36s-16 35 -36 35s-36 -15 -36 -35c0 -10 4 -19 11 -26
-h-68c7 7 11 16 11 26c0 20 -16 36 -36 36s-36 -16 -36 -36s16 -36 36 -36h12h95h11z" />
- <glyph glyph-name="ion-volume-high" unicode="&#xf257;"
-d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 27 52 27 84s-10 60 -27 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146zM365 369l20 15
-c39 -54 63 -120 63 -192s-24 -138 -63 -192l-20 15c36 49 58 111 58 177s-22 128 -58 177z" />
- <glyph glyph-name="ion-volume-low" unicode="&#xf258;" horiz-adv-x="288"
-d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100z" />
- <glyph glyph-name="ion-volume-medium" unicode="&#xf259;" horiz-adv-x="370"
-d="M199 40l-95 88h-104v128h104l95 88v-304zM255 92l-20 16c17 24 28 52 28 84s-11 60 -28 84l20 16c20 -28 33 -63 33 -100s-13 -72 -33 -100zM322 46l-21 16c27 36 43 81 43 130s-16 94 -43 130l21 16c30 -41 48 -91 48 -146s-18 -105 -48 -146z" />
- <glyph glyph-name="ion-volume-mute" unicode="&#xf25a;"
-d="M224 231l47 51v-180l-47 51h-65v78h65zM332 388c69 -38 116 -112 116 -196c0 -124 -100 -224 -224 -224c-39 0 -76 10 -108 27l-1 1c-69 38 -115 112 -115 196c0 124 100 224 224 224c39 0 75 -10 107 -28h1zM362 93c20 28 33 62 33 99c0 66 -38 123 -92 151
-c-6 3 -11 6 -17 8c-19 7 -40 11 -62 11c-37 0 -71 -12 -99 -32l73 -74h-76l-36 35c-20 -28 -32 -62 -32 -99c0 -65 36 -121 90 -150c6 -3 13 -7 19 -9c19 -7 39 -11 61 -11c37 0 72 12 100 32l-20 20v77z" />
- <glyph glyph-name="ion-wand" unicode="&#xf358;"
-d="M192 208l48 48l48 -48l-48 -48zM0 16l176 176l48 -48l-176 -176zM224 352v64h32v-64h-32zM398 344l-45 -45l-23 22l46 45zM127 299l-45 45l22 22l45 -45zM376 50l-46 45l23 23l45 -46zM384 192v32h64v-32h-64z" />
- <glyph glyph-name="ion-waterdrop" unicode="&#xf25b;" horiz-adv-x="320"
-d="M175 409c40 -41 145 -160 145 -288c0 -85 -72 -153 -160 -153c-56 0 -106 27 -134 69c-6 9 -11 19 -15 29c-7 17 -11 35 -11 55v4c1 67 31 131 64 183c20 31 42 57 59 77c9 10 16 18 22 24l1 1v0c4 3 8 6 14 6c5 0 10 -3 14 -6v0zM160 24c55 0 100 45 100 100
-c0 14 -3 28 -8 40c-17 -65 -70 -116 -136 -130c13 -6 28 -10 44 -10z" />
- <glyph glyph-name="ion-wifi" unicode="&#xf25c;"
-d="M224 352c80 0 156 -30 214 -84l10 -10l-10 -9l-32 -32l-10 -10l-9 9c-44 41 -103 64 -163 64s-119 -23 -163 -64l-9 -9l-10 10l-32 32l-10 9l10 10c58 54 134 84 214 84v0zM365 192l11 -10l-10 -10l-33 -32l-9 -9l-10 8c-25 22 -57 35 -90 35s-65 -13 -90 -35l-10 -8
-l-9 9l-33 32l-10 10l11 10c37 33 83 52 132 54v0h9v0v0c52 0 102 -19 141 -54zM224 32l-10 10l-52 52l-11 10l12 10c17 11 32 20 61 20s47 -9 62 -20l11 -10l-10 -10l-53 -52z" />
- <glyph glyph-name="ion-wineglass" unicode="&#xf2b9;" horiz-adv-x="256"
-d="M167 153c-11 -4 -24 -8 -24 -32v-94c0 -11 4 -19 12 -25c3 -2 7 -4 15 -6c32 -9 48 -16 50 -18c2 -1 4 -3 4 -7c0 0 -14 -3 -96 -3s-96 3 -96 3c0 4 2 6 4 7c2 2 18 9 50 18c8 2 11 4 14 6c8 6 11 14 11 25v94c0 24 -11 28 -22 32s-18 6 -26 11c-12 7 -23 16 -32 26
-c-20 23 -31 52 -31 87c0 50 4 100 8 114s14 25 31 25h178c17 0 27 -11 31 -25s8 -65 8 -115c0 -35 -11 -63 -31 -86c-9 -10 -20 -19 -32 -26c-8 -5 -15 -7 -26 -11zM128 178c26 0 50 11 67 28l6 6c16 18 22 35 23 65s-2 83 -8 107h-177c-7 -35 -8 -80 -7 -108s7 -46 23 -64
-c2 -3 4 -6 7 -8c17 -16 41 -26 66 -26zM208 277c0 -10 -1 -20 -4 -29s-8 -18 -15 -25l-5 -5c-14 -14 -34 -23 -56 -23c-21 0 -41 8 -55 22l-6 6c-7 7 -12 16 -15 25s-3 15 -4 29c-1 9 0 34 1 53c1 10 2 19 3 22h153c1 -6 2 -14 2 -22c1 -21 1 -45 1 -53zM192 269v0v26
-c0 4 -4 8 -8 8s-8 -4 -8 -8v-26c0 -3 1 -6 3 -7c1 -1 3 -1 5 -1c4 0 8 3 8 8zM191 316c1 2 1 4 1 6s-2 4 -4 5s-4 1 -6 1s-4 -1 -5 -3s-1 -4 -1 -6s2 -4 4 -5s4 -1 6 -1s4 1 5 3z" />
- <glyph glyph-name="ion-woman" unicode="&#xf25d;" horiz-adv-x="192"
-d="M30 299c3 12 17 33 42 34h48c24 -1 38 -22 42 -34l29 -104c6 -23 -21 -32 -27 -10l-26 96h-9l46 -169h-43v-127c0 -23 -31 -23 -31 0v127h-10v-127c0 -23 -32 -23 -32 0v127h-42l45 169h-7l-27 -96c-7 -21 -33 -13 -27 10zM133 379c0 -21 -17 -37 -37 -37s-37 16 -37 37
-s17 37 37 37s37 -16 37 -37z" />
- <glyph glyph-name="ion-wrench" unicode="&#xf2ba;"
-d="M430 333c14 -14 19 -31 18 -44s-6 -39 -32 -65s-77 -42 -113 -24c-5 3 -13 5 -21 -3c-10 -9 -202 -215 -202 -215c-17 -19 -48 -18 -66 0s-19 49 0 66c0 0 207 194 215 202s5 16 3 22c-20 47 2 89 24 112c22 24 51 31 65 32c13 1 31 -5 44 -18l-57 -56l10 -56l55 -10z
-M59 5c6 6 6 17 0 23s-16 6 -22 0s-6 -17 0 -23s16 -6 22 0z" />
- <glyph glyph-name="ion-xbox" unicode="&#xf30c;"
-d="M95 200c-49 -72 -50 -139 -50 -143c-28 38 -45 84 -45 135c0 67 30 128 77 169l3 -1c51 -18 93 -68 93 -68s-38 -33 -78 -92zM448 192c0 -51 -17 -97 -45 -135c0 4 -1 71 -50 143c-40 59 -78 92 -78 92s42 50 93 68l3 1c47 -41 77 -102 77 -169zM169 367
-c-37 17 -65 12 -72 10c36 25 80 39 127 39s91 -14 127 -39c-7 2 -35 6 -72 -10c-29 -13 -55 -35 -55 -35s-26 22 -55 35zM327 155c40 -49 54 -85 62 -108l2 -5c-41 -46 -101 -74 -167 -74s-126 28 -167 74l1 5c8 23 23 59 63 108c46 57 103 94 103 94s57 -37 103 -94z" />
- </font>
-</defs></svg>
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.ttf b/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.ttf
deleted file mode 100755
index c4e46324..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.ttf
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.woff b/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.woff
deleted file mode 100755
index 5f3a14e0..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/ionicons.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-bold-webfont.woff b/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-bold-webfont.woff
deleted file mode 100755
index 97aa9ea6..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-bold-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-italic-webfont.woff b/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-italic-webfont.woff
deleted file mode 100755
index 787d47cb..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-italic-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-light-webfont.woff b/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-light-webfont.woff
deleted file mode 100755
index 45f21c23..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-light-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-medium-webfont.woff b/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-medium-webfont.woff
deleted file mode 100755
index 4fb708fd..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-medium-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-regular-webfont.woff b/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-regular-webfont.woff
deleted file mode 100755
index b51127f3..00000000
--- a/StoneIsland/platforms/android/assets/www/css/fonts/pfdintextpro-regular-webfont.woff
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/css/index.css b/StoneIsland/platforms/android/assets/www/css/index.css
deleted file mode 100755
index 2130c675..00000000
--- a/StoneIsland/platforms/android/assets/www/css/index.css
+++ /dev/null
@@ -1,126 +0,0 @@
-* {
- -webkit-tap-highlight-color: rgba(0,0,0,0);
-}
-body, html {
- height: 100%;
- width: 100%;
- margin: 0px;
- padding: 0px;
- overflow: hidden;
-}
-body.loading {
- opacity: 0;
-}
-body {
- -webkit-touch-callout: none; /* prevent callout to copy image, etc when tap to hold */
- -webkit-text-size-adjust: none; /* prevent webkit from resizing text to fit */
- -webkit-user-select: none; /* prevent copy paste, to allow, change 'none' to 'text' */
- background: #fff;
- font-family: pfd, sans-serif;
- font-size: 0.875rem;
- padding-top: constant(safe-area-inset-top);
-}
-a, a:visited {
- color: #000;
-}
-
-.loader {
- z-index: 2;
- width: 80px;
- height: 80px;
- position: absolute;
- top: 50vh;
- left: 50%;
- margin-top: -60px;
- margin-left: -40px;
- display: none;
-}
-.loader:before {
- content: '';
- border-radius: 50%;
- border-top: 3px solid #999;
- border-right: 3px solid transparent;
- animation: loading .5s linear infinite;
- -webkit-animation: loading .5s linear infinite;
- width: 80px;
- height: 80px;
- display: block;
-}
-.loading .loader { display: block; }
-@keyframes loading {
- to {transform: rotate(360deg)}
-}
-@-webkit-keyframes loading {
- to {-webkit-transform: rotate(360deg)}
-}
-
-.iscroll .scroll {
- position: absolute;
- width: 100%;
-}
-.vscroll .scroll {
- width: 100%;
-/* height: calc(100vh - 2.5rem);
- overflow: scroll;
- -webkit-overflow-scrolling: touch;
-*/
-}
-.vscroll body,
-html.vscroll {
- overflow: auto;
- -webkit-overflow-scrolling: touch;
-}
-.vscroll #header,
-.vscroll #footer,
-.vscroll #nav {
- position: fixed;
-}
-.vscroll #story,
-.vscroll #hub,
-.vscroll #archive,
-.vscroll .page,
-.vscroll #collection,
-.vscroll #product,
-.vscroll #search,
-.vscroll #closed,
-.vscroll #login,
-.vscroll #logout,
-.vscroll #signup,
-.vscroll #cart,
-.vscroll #profile,
-.vscroll #shipping,
-.vscroll #payment,
-.vscroll #settings,
-.vscroll #content,
-.vscroll #orders {
- overflow: auto;
-}
-.error_hilite {
- color: red !important;
- border-color: red !important;
-}
-.error_hilite ~ span.err {
- display: flex;
-}
-.err_heading {
- display: none;
-}
-.err_heading.error_visible {
- display: flex;
- text-align: center;
- justify-content: center;
- align-items: center;
- font-size: 0.875rem;
- height: 64px;
- padding: 12px;
- color: red !important;
-}
-span.err {
- display: none;
- text-align: center;
- justify-content: center;
- align-items: center;
- font-size: 0.875rem;
- height: 48px;
- color: red !important;
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/nav.css b/StoneIsland/platforms/android/assets/www/css/nav.css
deleted file mode 100755
index 705c0824..00000000
--- a/StoneIsland/platforms/android/assets/www/css/nav.css
+++ /dev/null
@@ -1,572 +0,0 @@
-
-/* NAV BAR */
-
-#nav {
- position: fixed;
- top: 0; left: 0;
- width: 249px;
- -webkit-transform: translateZ(0) translateX(-249px);
- -webkit-transition: -webkit-transform 0.1s;
- background: #fff;
-}
-#content {
- position: fixed;
- top: 0; left: 0;
- width: 100%; height: 100%;
- overflow: hidden;
- -webkit-transform: translateZ(0) translateX(0px);
- -webkit-transition: -webkit-transform 0.1s;
-}
-.nav #nav {
- -webkit-transform: translateZ(0) translateX(0);
-}
-.nav #content {
- -webkit-transform: translateZ(0) translateX(249px);
-}
-.accessible #nav,
-.accessible #content {
- position: absolute;
-}
-#nav .logo {
- background-image: url(../img/small-logo.png);
- background-repeat: no-repeat;
- background-position: center center;
- background-size: contain;
- width: 120px;
- height: 80px;
- margin-left: 20px;
- display: block !important;
-}
-#nav .menu span {
- display: block;
- font-size: 1rem;
- letter-spacing:1.25px;
- text-shadow:0px 0px 1px rgba(0,0,0,.2);
- color: #000;
-}
-
-#nav .main_menu span {
- padding: 30px 0 10px 20px;
-}
-
-#nav .account_menu span, #nav .faq_menu span {
- padding: 20px 0 0px 20px;
-}
-#nav .account_menu span.menu-emphasis,
-#nav .faq_menu span.menu-emphasis {
- padding-top: 28px;
-}
-
-#nav .faq_menu span:last-child {
- padding-bottom:45px!important;
-}
-
-#nav .main_menu { display: block; animation: mfadein 0.3s; }
-#nav .account_menu { display: none; }
-#nav .faq_menu { display: none; }
-#nav.faq .main_menu,
-#nav.account .main_menu { display: none; }
-#nav.account .account_menu { display: block; }
-#nav.faq .faq_menu { display: block; animation: mfadein 0.3s; }
-
-@keyframes mfadein { 0% { display: none; opacity: 0; } 1% { display:block; opacity: 0; } 100% { opacity: 1; } }
-
-#nav .submenu {
- position: absolute;
- width: 100%;
- padding: 20px 0;
- top:0;
- border-top: 1px solid #ddd;
-}
-
-#nav .submenu span {
- display: block;
- font-size: 1rem;
- letter-spacing:1.25px;
- color: #666;
- padding: 4px 0 12px 20px
-}
-
-#nav .social {
- position: absolute;
- top: calc(100vh - 48px);
- left: 0;
- border-top: 1px solid #ddd;
- display: flex;
- flex-direction: row;
-}
-#nav .social span {
- display: block;
- width: 61px;
- border-left: 1px solid #ddd;
- color: #666;
- font-size: 1.125rem;
- height: 48px;
- text-align: center;
- justify-content: center;
- align-items: center;
- display: flex;
-}
-
-#nav .close {
- position: absolute;
- top: 0;
- right: 0;
- width: 48px;
- height: 48px;
- cursor: pointer;
- text-align: center;
- overflow: hidden;
- -webkit-transition: all ease 200ms;
- -moz-transition: all ease 200ms;
- -o-transition: all ease 200ms;
- transition: all ease 200ms;
-}
-#nav .close:after,
-#nav .close:before {
- content: "";
- height: 1px;
- width: 24px;
- background: #888;
- position: absolute;
- left: 25%;
- top: 50%;
-}
-#nav .close:before {
- -webkit-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- transform: rotate(45deg);
-}
-#nav .close:after {
- -webkit-transform: rotate(-45deg);
- -moz-transform: rotate(-45deg);
- -ms-transform: rotate(-45deg);
- -o-transform: rotate(-45deg);
- transform: rotate(-45deg);
-}
-
-#nav-container {
- display:flex;
- height:calc(100vh - 40px);
- width:100%;
- position:absolute;
- flex-direction: column;
-}
-
-#nav-row {
- box-sizing:border-box;
- padding-bottom:30px;
-}
-
-#nav-fill {
- flex: 1;
- position:relative;
-}
-
-.menu-emphasis {
-font-weight:bold;
-padding-bottom:0px;
-}
-
-/* INTRO PAGE WITH SPINNING COMPASS */
-
-#intro {
- display: none;
-}
-.intro #intro {
- display: block;
-}
-.intro #header,
-.intro #footer {
- display: none;
-}
-#intro div {
- position: absolute;
- top: 50%;
- left: 50%;
- width: 200px;
- height: 100px;
- display: flex;
- justify-content: center;
- align-items: center;
- font-size: 1.063rem;
-}
-#intro #compass {
- pointer-events: none;
- background-image: url(../img/compass-logo.png);
- background-repeat: no-repeat;
- background-position: center center;
- background-size: 230px 230px;
- width: 230px;
- height: 230px;
- padding: 0px;
- border-radius: 50%;
-}
-#intro .store {
- -webkit-transform: translateX(-50%) translateY(-50%) translateY(145px) rotateZ(0deg);
-}
-#intro .hub {
- -webkit-transform: translateX(-50%) translateY(-50%) translateX(140px) rotateZ(90deg);
-}
-#intro .story {
- -webkit-transform: translateX(-50%) translateY(-50%) translateY(-145px) rotateZ(0deg);
-}
-#intro .archive {
- -webkit-transform: translateX(-50%) translateY(-50%) translateX(-140px) rotateZ(270deg);
-}
-#intro .latlng {
- position: absolute;
- bottom: 5%; left: 0; width: 100%;
- text-align: center;
- z-index: 2
-}
-
-#intro .alert {
- box-sizing: border-box;
- width: calc(100vw);
- text-align: center;
- font-size: 0.875rem;
- font-weight: bold;
- line-height: 0;
- text-transform: uppercase;
- color: #3E6616;
- position: absolute;
- height: 0;
- left: 0;
- top: auto;
- bottom: calc(25vh - 58px);
- margin: auto 0;
- padding: 0;
-}
-
-
-/* HEADER AND FOOTER ON MOST PAGES */
-
-#header {
- display: flex;
- justify-content: space-between;
- position: absolute;
- top: 0; left: 0; width: 100%;
- height: 48px;
- border-bottom: 1px solid black;
-}
-#header .logo {
- background-image: url(../img/small-logo.png);
- background-repeat: no-repeat;
- background-position: center center;
- position: absolute;
- background-size: contain;
- width: 100px; height: 48px;
- left: 50%; top: -3px;
- margin-left: -50px;
- top:0px;
-}
-#header .burger {
- display: flex;
- font-size: 24px;
- width: 48px;
- height: 48px;
- padding-top: 4px;
- box-sizing: border-box;
- align-items: center;
- flex-direction: row;
- justify-content: center;
-}
-
-#header .cart_rapper {
- display: flex;
- justify-content: center;
- align-items: flex-end;
- position: relative;
- float: right;
- width: 44px; height: 48px;
-}
-#header .cart {
- position: relative;
- width: 18px;
- margin-bottom: 10px;
- height: 18px;
- background: #fff;
- background-image:url(../img/cart-box.png);
- background-size:100%;
- background-repeat:no-repeat;
-}
-
-#header .cart .cart_count {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translateY(-50%) translateX(-50%);
- color: #666;
- font-size: 12.35px;
-}
-
-#header .cart::before {
- position: absolute;
- content: '';
- left: 50%;
- transform: translateX(-50%);
- color: #a9a9a9;
- background-image: url(../img/small-cart-handle.png);
- font-size: 20px;
- background-size: 16px 8px;
- background-repeat: no-repeat;
- background-position: center;
- width: 16px;
- height: 8px;
- top: calc(-50%);
- opacity: 0.3;
-}
-
-#footer {
- display: block;
- position: fixed;
- bottom: 0; left: 0; width: 100%;
- background: #fff;
- border-top: 1px solid #ddd;
- z-index: 1;
-}
-#footer div {
- width: 50%;
- height: 48px;
- text-align: center;
- color: #000;
- float: left;
- font-size: 1rem;
- font-weight:bold;
- padding: 0;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-#footer .ok {
- color: #000;
-}
-#footer .ok.wide {
- width: 100%;
-}
-#footer .ok.disabled {
- color: #666;
-}
-.accessible #footer {
- position: absolute;
-}
-
-
-/* CURTAIN FOR LOGIN AND SELECTOR VIEWS */
-
-#curtain {
- pointer-events: none;
- position: fixed;
- top: 0; left: 0;
- width: 100%; height: 100%;
- background: rgba(255,255,255,0.8);
- opacity: 0;
- -webkit-transition: opacity 0.2s, -webkit-transform 0.2s;
- transition: opacity 0.2s, transform 0.2s;
- -webkit-transform: translateZ(0) translateX(0);
- transform: translateZ(0) translateX(0);
-}
-.accessible #curtain {
- position: absolute;
-}
-#curtain.visible {
- pointer-events: auto;
- opacity: 1;
- z-index: 2;
-}
-#curtain.white {
- background: rgba(255,255,255,0.8);
-}
-#curtain.dark {
- background: rgba(72,72,72,0.8);
-}
-#curtain.opaque {
- background: #ddd;
-}
-#curtain.loading .loader {
- display: block;
-}
-
-/* MODAL */
-
-.modal {
- position: absolute;
- top: 50%; left: 50%;
- transform: translate3d(-50%, -50%, 0);
- max-width: 95vw;
- background: white;
- box-sizing: border-box;
- padding: 40px 20px;
- box-shadow: 0 2px 2px #ddd;
- opacity: 0;
- pointer-events: none;
- transition: all 0.2s;
-}
-.modal.visible {
- opacity: 1;
- pointer-events: auto;
-}
-
-/* CONSENT MODAL */
-
-#consent_modal {
- display: none;
- z-index: 2;
- font-size: 1rem;
-}
-#consent_modal a {
- color: black;
-}
-.modal button {
- font-family: pfd, sans-serif;
- font-size: 0.875rem;
- padding: 10px;
- box-sizing: border-box;
- margin: 0;
- border: 1px solid;
- color: black;
- background: white;
- margin-top: 20px;
- width: 100px;
-}
-#consent_proceed {
- display: inline-block;
- background: black;
- color: white;
- border-color: black;
-}
-#consent_error {
- opacity: 0;
- color: red;
- transition: 0.3s all;
-}
-#consent_error.visible {
- opacity: 1;
-}
-/* SELECTOR */
-
-#selector {
- display: none;
- position: absolute;
- z-index: 2;
- box-sizing:border-box;
- min-width:100px;
- animation: selector-spring .15s forwards;
- animation-timing-function: cubic-bezier(.43,1,.89,.95)
-}
-
-@keyframes selector-spring {
- 0% {
- margin-top: 15px
- }
- 100% {
- margin-top: 0
- }
-}
-
-#selector:not(.selector-outer-wrap) .options div {
- background: white;
- text-align: center;
- padding: 12px 12px;
- box-sizing:border-box;
- font-size: 0.875rem;
- border-left:1px solid black;
- border-right:1px solid black;
- border-top:1px solid black;
-}
-
-#selector:not(.selector-outer-wrap) .options div:last-of-type {
- border-bottom:1px solid black
-}
-
-.selector-full {
- width: 100% !important;
- box-sizing:border-box
-}
-
-.selector-full > div > div {
- padding: 12px 0 !important;
-}
-
-.selector-outer-wrap {
- max-width:250px!important;
- min-width:250px!important;
- box-sizing:border-box!important;
- font-size: 0!important;
-}
-
-.selector-outer-wrap .options div {
- width:120px!important;
- border-bottom:1px solid black!important;
- display:inline-block!important;
- box-sizing:border-box!important;
- margin:0!important;
- background: white;
- text-align: center;
- padding: 7px 12px;
- font-size: 0.875rem!important;
-}
-
-.selector-outer-wrap .options div:nth-of-type(odd){
- border-left:1px solid black!important;
- border-right:1px solid black!important;
-}
-
-.selector-outer-wrap .options div:nth-of-type(even){
- border-right:1px solid black!important;
-}
-
-.selector-outer-wrap .options div:nth-of-type(-n+2){
- border-top:1px solid black!important;
-}
-
-
-/* CONTENT */
-
-#story, #hub, #archive, .page,
-#collection, #product, #search, #closed,
-#login, #logout, #signup,
-#cart,
-#profile, #shipping, #payment, #settings, #orders {
- position: absolute;
- top: 49px;
- height: -webkit-calc(100% - 49px - 39px);
- height: calc(100% - 49px - 39px);
- width: 100%;
- overflow: hidden;
-}
-#collection.single {
- height: -webkit-calc(100% - 49px);
- height: calc(100% - 49px);
-}
-#story, #hub, #archive, .page, #closed {
- /* these things do not have a footer */
- height: -webkit-calc(100% - 49px);
- height: calc(100% - 49px);
-}
-
-h1 {
- text-align: center;
- margin: 0;
- display: flex;
- justify-content: center;
- align-items: center;
- border-bottom: 1px solid #000;
- height: 48px;
- font-size: 1rem;
- color: #000;
- letter-spacing: 1px;
- font-weight: bold;
-}
-
-.msg {
- margin: 20px 10px;
- display: inline-block;
-}
-
-.msg-condensed {
- margin:6px!important;
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/products.css b/StoneIsland/platforms/android/assets/www/css/products.css
deleted file mode 100755
index e15e0e54..00000000
--- a/StoneIsland/platforms/android/assets/www/css/products.css
+++ /dev/null
@@ -1,301 +0,0 @@
-.collection #collection { display: block }
-#collection {
- display: none;
- text-align: center;
-}
-#collection .item {
- text-align: center;
- display: inline-block;
- max-width: 49vw;
-}
-#collection .item img {
- width: 49vw;
- height: 63vw;
-}
-#collection.gray {
- background: rgba(245,245,245,1.0);
-}
-
-#collection.single .item {
- max-width: 98vw;
-}
-#collection.single .item img {
- width: 98vw;
- height: 126vw;
-}
-
-#collection .item .product-title {
- padding-bottom: 18px;
- display: inline-block;
-}
-
-.product #product { display: block }
-#product {
- display: none;
-}
-#product .style {
- text-transform: uppercase;
- box-sizing:border-box
-}
-
-#product.loading #gallery,
-#product.loading .content {
- display: none;
-}
-#product.loading .loader {
- display: block;
-}
-
-.gallery {
- width: 100vw;
- height: 52vh;
-}
-.gallery.gray {
- background: rgba(245,245,245,1.0);
-}
-
-.gallery .item {
- display: block;
- width: 100vw;
- height: 52vh;
- background-size: contain;
- background-position: center center;
- background-repeat: no-repeat;
-}
-
-.gallery .item iframe {
- width: 100%;
- height: 100%;
- border: 0;
- padding: 0;
- margin: 0;
-}
-
-.search #search { display: block }
-#search {
- display: none;
-}
-
-.closed #closed { display: block }
-#closed {
- display: none;
- background-size: cover;
- background-position: center;
- background-repeat: no-repeat;
- background-color: #eee;
- transition: background 0.5s ease-in;
-}
-#closed .closed_store_msg {
- position: absolute;
- bottom: 20vh;
- background: rgba(255,255,255,0.9);
- padding-top: 20px;
- padding-bottom: 10px;
- text-align: center;
- width: 100%;
-}
-#closed .closed_target {
- position: absolute;
- top: 0; left: 0;
- width: 100%; height: 100%;
-}
-
-.product .content {
- box-sizing:border-box;
- width:calc(100vw - 50px);
- position:relative;
- margin:0 auto 40px;
- padding:0;
-}
-
-.product .product-header {
- font-size: 1rem;
- margin:18px 0 0;
- max-width:60%;
- position:relative;
- font-weight:bold;
-}
-.product .product-header.wide {
- max-width:100%;
-}
-
-.product-group {
- margin-top: 28px;
- margin-bottom: 18px;
- font-weight: bold;
- text-align: center;
- font-size: 1.063rem;
-}
-.product-group:first-child {
- margin-top: 0;
-}
-
-#product::before {
- content:'';
- width:100%;
- background: linear-gradient(rgba(255,255,255,0), rgba(255,255,255,1));
- height:40px;
- z-index:2;
- position:absolute;
- bottom:0px;
- left:0
-}
-
-.product .style {
- padding: 0;
- border:1px solid black;
- float:left
-}
-
-.product .share {
- float:right;
- padding: 0 12px;
- height: 48px;
- display: flex;
- justify-content: center;
- align-items: center;
- border:1px solid black;
-}
-
-.product .type {
- display:table-cell;
- font-size: 1rem;
-}
-
-.product .size-color {
- display: flex;
- flex-direction: row;
-}
-.product .size-color > div {
- position: relative;
- box-sizing: border-box;
- height: 48px;
- font-size: 1rem;
- display: flex;
- justify-content: center;
- align-items: center;
-}
-.product .size-color > div > div.label {
- padding: 0 12px;
- max-width: 6rem;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
-}
-.product .size-color div.size {
- border-right: 1px solid #444;
-}
-.product .size-color > div > select {
- position: absolute;
- top: 0; left: 0;
- width: 100%; height: 100%;
- opacity: 0;
-}
-
-.product .price {
- display:table-cell;
- font-size: 1rem;
- text-align:right;
- vertical-align:bottom;
-}
-
-.product .price, .product .type {
- font-weight:bold;
- margin:0;
- padding: 0 0 7px;
-}
-
-.type-price {
- display:table;
- position:relative;
- width:100%
-}
-
-.style-share {
- letter-spacing:0.5px;
- font-size: 1rem;
-}
-
-.size-color {
- position:relative;
- font-size: 1rem;
-}
-
-.type-price, .style-share {
- clear:both;
- position:relative;
- box-sizing:border-box
-}
-
-
-/*.size::after {
- content: '';
- display: inline-block;
- width: 1px;
- height: calc(100% + 4px);
- transform: translateY(-2px);
- position: absolute;
- top: 0;
- right:5px;
- background: #999;
-}
-*/
-
-.product .fit,
-.product .notAvailableInCanada {
- clear:both;
- font-size: 0.563rem;
- letter-spacing:0.5px;
- text-decoration:underline;
- text-transform:uppercase;
- padding:12px 0 0;
-}
-.product .fitHeader {
- clear:both;
- font-size: 0.563rem;
- letter-spacing:0.5px;
- text-decoration: none;
- text-transform:uppercase;
- padding: 12px 0 0;
-}
-
-#product .gallery-prev,
-#product .gallery-next {
- top: 26vh;
-}
-
-#product .content .body {
- letter-spacing:0.35px;
- font-size: 1rem;
- line-height: 1.4em;
- box-sizing:border-box;
- margin:0px auto 20px;
- clear:both;
- padding:13px 0;
-}
-
-#collection .content {
- position:relative;
- padding-top:45px;
- padding-bottom:45px;
-}
-
-#collection h1 {
- background-color: white;
-}
-
-#collection h1.single-dept {
- background-image: url(../img/angle-down.png);
- background-size: contain;
- background-position: top right;
- background-repeat: no-repeat;
-}
-
-#selector {
- z-index:9
-}
-
-.red {
- color: red;
-}
-
diff --git a/StoneIsland/platforms/android/assets/www/css/vendor/flickity.css b/StoneIsland/platforms/android/assets/www/css/vendor/flickity.css
deleted file mode 100755
index 99a09e72..00000000
--- a/StoneIsland/platforms/android/assets/www/css/vendor/flickity.css
+++ /dev/null
@@ -1,141 +0,0 @@
-/*! Flickity v1.0.2
-http://flickity.metafizzy.co
----------------------------------------------- */
-
-.flickity-enabled {
- position: relative;
-}
-
-.flickity-enabled:focus { outline: none; }
-
-.flickity-viewport {
- overflow: hidden;
- position: relative;
- height: 100%;
-}
-
-.flickity-slider {
- position: absolute;
- width: 100%;
- height: 100%;
-}
-
-/* draggable */
-
-.flickity-enabled.is-draggable {
- -webkit-tap-highlight-color: transparent;
- tap-highlight-color: transparent;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
-}
-
-.flickity-enabled.is-draggable .flickity-viewport {
- cursor: move;
- cursor: -webkit-grab;
- cursor: grab;
-}
-
-.flickity-enabled.is-draggable .flickity-viewport.is-pointer-down {
- cursor: -webkit-grabbing;
- cursor: grabbing;
-}
-
-/* ---- previous/next buttons ---- */
-
-.flickity-prev-next-button {
- position: absolute;
- top: 50%;
- width: 44px;
- height: 44px;
- border: none;
- border-radius: 50%;
- background: white;
- background: hsla(0, 0%, 100%, 0.75);
- cursor: pointer;
- /* vertically center */
- -webkit-transform: translateY(-50%);
- -ms-transform: translateY(-50%);
- transform: translateY(-50%);
-}
-
-.flickity-prev-next-button:hover { background: white; }
-
-.flickity-prev-next-button:focus {
- outline: none;
- box-shadow: 0 0 0 5px #09F;
-}
-
-.flickity-prev-next-button:active {
- filter: alpha(opacity=60); /* IE8 */
- opacity: 0.6;
-}
-
-.flickity-prev-next-button.previous { left: 10px; }
-.flickity-prev-next-button.next { right: 10px; }
-/* right to left */
-.flickity-rtl .flickity-prev-next-button.previous {
- left: auto;
- right: 10px;
-}
-.flickity-rtl .flickity-prev-next-button.next {
- right: auto;
- left: 10px;
-}
-
-.flickity-prev-next-button:disabled {
- filter: alpha(opacity=30); /* IE8 */
- opacity: 0.3;
- cursor: auto;
-}
-
-.flickity-prev-next-button svg {
- position: absolute;
- left: 20%;
- top: 20%;
- width: 60%;
- height: 60%;
-}
-
-.flickity-prev-next-button .arrow {
- fill: #333;
-}
-
-/* color & size if no SVG - IE8 and Android 2.3 */
-.flickity-prev-next-button.no-svg {
- color: #333;
- font-size: 1.625rem;
-}
-
-/* ---- page dots ---- */
-
-.flickity-page-dots {
- position: absolute;
- width: 100%;
- bottom: -25px;
- padding: 0;
- margin: 0;
- list-style: none;
- text-align: center;
- line-height: 1;
-}
-
-.flickity-rtl .flickity-page-dots { direction: rtl; }
-
-.flickity-page-dots .dot {
- display: inline-block;
- width: 10px;
- height: 10px;
- margin: 0 8px;
- background: #333;
- border-radius: 50%;
- filter: alpha(opacity=25); /* IE8 */
- opacity: 0.25;
- cursor: pointer;
-}
-
-.flickity-page-dots .dot.is-selected {
- filter: alpha(opacity=100); /* IE8 */
- opacity: 1;
-}
diff --git a/StoneIsland/platforms/android/assets/www/css/vendor/imageviewer.css b/StoneIsland/platforms/android/assets/www/css/vendor/imageviewer.css
deleted file mode 100644
index 739c37a1..00000000
--- a/StoneIsland/platforms/android/assets/www/css/vendor/imageviewer.css
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- ImageViewer v 1.1.0
- Author: Sudhanshu Yadav
- Copyright (c) 2015 to Sudhanshu Yadav - ignitersworld.com , released under the MIT license.
- Demo on: http://ignitersworld.com/lab/imageViewer.html
-*/
-
-/***** image viewer css *****/
-#iv-container {
- position: fixed;
- background: #ffffff;
- width: 100%;
- height: 100%;
- top: 0;
- left: 0;
- display: none;
- z-index: 1000;
-}
-
-.iv-container {
- overflow: hidden;
-}
-
-.iv-close {
- width: 48px;
- height: 48px;
- position: fixed;
- right: 20px;
- top: 20px;
- cursor: pointer;
- text-align: center;
- overflow: hidden;
- text-shadow: 0px 0px 3px #6d6d6d;
- -webkit-transition: all ease 200ms;
- -moz-transition: all ease 200ms;
- -o-transition: all ease 200ms;
- transition: all ease 200ms;
-}
-.iv-close:after,
-.iv-close:before {
- content: "";
- height: 4px;
- width: 32px;
- background: #000;
- position: absolute;
- left: 0;
- top: 50%;
- margin-top: -2px;
-}
-.iv-close:before {
- -webkit-transform: rotate(45deg);
- -moz-transform: rotate(45deg);
- -ms-transform: rotate(45deg);
- -o-transform: rotate(45deg);
- transform: rotate(45deg);
-}
-.iv-close:after {
- -webkit-transform: rotate(-45deg);
- -moz-transform: rotate(-45deg);
- -ms-transform: rotate(-45deg);
- -o-transform: rotate(-45deg);
- transform: rotate(-45deg);
-}
-/*.iv-close:hover {
- -webkit-transform: rotate(90deg);
- -moz-transform: rotate(90deg);
- -ms-transform: rotate(90deg);
- -o-transform: rotate(90deg);
- transform: rotate(90deg);
-}
-*//***** snap view css *****/
-.iv-snap-view {
- width: 150px;
- height: 150px;
- position: absolute;
- top: 20px;
- left: 20px;
- border: 1px solid #666;
- background: black;
- z-index: 100;
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- -webkit-transition: all ease 400ms;
- -moz-transition: all ease 400ms;
- -o-transition: all ease 400ms;
- transition: all ease 400ms;
- opacity: 0 !important;
- pointer-events: none;
-}
-
-.iv-snap-image-wrap {
- display: inline-block;
- position: absolute;
- max-width: 150px;
- max-height: 150px;
- top: 50%;
- left: 50%;
- -webkit-transform: translate(-50%, -50%);
- -moz-transform: translate(-50%, -50%);
- -ms-transform: translate(-50%, -50%);
- -o-transform: translate(-50%, -50%);
- transform: translate(-50%, -50%);
- overflow: hidden;
-}
-
-.iv-snap-image {
- position: relative;
-}
-
-.iv-snap-handle {
- position: absolute;
- border: 1px solid #ccc;
- -webkit-transform: translate3d(0, 0, 0);
- -moz-transform: translate3d(0, 0, 0);
- -ms-transform: translate3d(0, 0, 0);
- -o-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
- -webkit-box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
- box-shadow: 0px 0px 0px 200px rgba(0, 0, 0, 0.5);
-}
-
-/*** zoom slider ***/
-.iv-zoom-slider {
- width: 100%;
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- border: 1px solid #666;
- border-top: 0;
- background: rgba(204, 204, 204, 0.1);
- height: 15px;
- position: absolute;
- top: 150px;
- left: -1px;
-}
-
-.iv-zoom-handle {
- width: 20px;
- height: 15px;
- background: #ccc;
- position: absolute;
-}
-
-/**** snap view css end *****/
-.iv-image-view {
- position: absolute;
- height: 100%;
- width: 100%;
-}
-
-.iv-image-wrap {
- display: inline-block;
-}
-
-.iv-image-wrap:active {
- cursor: move;
-}
-
-.iv-large-image {
- max-width: 100%;
- max-height: 100%;
- position: absolute;
- -webkit-transform: translate3d(0, 0, 0);
- -moz-transform: translate3d(0, 0, 0);
- -ms-transform: translate3d(0, 0, 0);
- -o-transform: translate3d(0, 0, 0);
- transform: translate3d(0, 0, 0);
-}
-
-/****** CSS loader by http://projects.lukehaas.me/css-loaders/ *****/
-.iv-loader {
- top: 50%;
- left: 50%;
- border-radius: 50%;
- width: 32px;
- height: 32px;
- z-index: 100;
- margin-top: -16px;
- margin-left: -16px;
- font-size: 5px;
- position: absolute;
- text-indent: -9999em;
- border-top: 1.1em solid rgba(255, 255, 255, 0.2);
- border-right: 1.1em solid rgba(255, 255, 255, 0.2);
- border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);
- border-left: 1.1em solid #ffffff;
- -webkit-transform: translateZ(0);
- -ms-transform: translateZ(0);
- transform: translateZ(0);
- -webkit-animation: load8 1.1s infinite linear;
- animation: load8 1.1s infinite linear;
-}
-.iv-loader:after {
- width: 10em;
- height: 10em;
- border-radius: 50%;
-}
-@-webkit-keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-@keyframes load8 {
- 0% {
- -webkit-transform: rotate(0deg);
- transform: rotate(0deg);
- }
- 100% {
- -webkit-transform: rotate(360deg);
- transform: rotate(360deg);
- }
-}
-
-
-@media screen and (max-width: 767px) {
- .iv-snap-view {
- z-index: -1;
- visibility: hidden;
- }
-}
diff --git a/StoneIsland/platforms/android/assets/www/db.json b/StoneIsland/platforms/android/assets/www/db.json
deleted file mode 100644
index 7bffd341..00000000
--- a/StoneIsland/platforms/android/assets/www/db.json
+++ /dev/null
@@ -1,4869 +0,0 @@
-{
- "story": [
- {
- "id": "philosophy",
- "title": "Philosophy",
- "image": {
- "uri": "http://cdn3.yoox.biz/stoneisland/wp-content/uploads/2013/11/philosophy1.jpg",
- "caption": ""
- },
- "body": "A culture of research, experimentation, function and use are the matrixes that have always defined Stone Island: the sportswear brand established in 1982, designed to become a symbol of extreme research on fibers and textiles, applied to an innovative design. Season after season, it is through the study of form and the “manipulation” of the matter that Stone Island has found its own language with the aim of establishing new boundaries in the world of garment making. \r\n\r\nThe study of uniforms and of work wear, its evolution according to new requirements of use, has become Stone Island’s observation post for defining a project in which the clothing item’s function is never just aesthetic.\r\n\r\nAn ongoing investigation, thorough and without frontiers, on the processing and ennobling of fibers and textiles, leading to discover materials and production techniques never used before in the clothing industry.\r\n\r\nJackets constructed in nylon monofilament, deriving from the water filtering technology. Highly reflective or thermo-sensitive fabrics, changing color with the variation of temperature. Featherweight polyester cloth vacuum- coated with a 100% stainless steel film used in aviation technology to protect the on-board computers. Non-woven materials, Kevlar® and polyester felt, rhomboidal nets in polyester used in the construction industry and coated in polyurethane. These are some examples of materials conceived by Stone Island philosophy.\r\n\r\nStone Island’s strength is also based on the unique ability to intervene on the finished item, through the continuous tests on dyeing and treatments carried out in the Sportswear Company’s laboratory of color. A department able to combine advanced technology, experience and human capacity and that has developed more than 60,000 different recipes of dyes throughout the years.\r\n\r\nAll the accumulated knowledge and experience, an inalienable heritage, on which great part of Stone Island’s know-how is based, is kept in the historical archive that collects the trial tests, and the recipes for textile dyeing and handling that have been developed by all those people who have worked on this project with passion.",
- "__index": "0",
- "dateCreated": "Thu, 05 Nov 2015 00:24:44 GMT"
- },
- {
- "id": "history",
- "title": "History",
- "image": {
- "uri": "https://ltho.s3.amazonaws.com/ce68408c-34b3-40ca-8ddf-c10cd1412c5f.jpg",
- "caption": ""
- },
- "body": "Stone Island, the Italian brand that reinvented the concept of casual wear, was founded in 1982 out of the passion and brilliant research into textile finishing performed by its creator and art director, intellectual from Bologna, Massimo Osti. It was Osti, in the mid-Seventies, who researched thousands of uniforms and pieces of work clothing and catalogued their functional characteristics. In Ravarino, in the province of Modena, he created a company whose hub was a full-scale center of research into materials and treatments became a sophisticated laboratory for garment and experimental dyeing.\r\n\r\nThe story of Stone Island began, almost by chance, with research into a special material, a thick truck tarpaulin, the outstanding feature of which was that it had been resin-treated in red on one side and blue on the other. The first prototype was too stiff, so it was washed for a long period in water with pumice stones to break down the structure of the material. The result was surprising, a worn-look garment with great appeal. It was therefore decided to create seven jackets in that unique fabric called Tela Stella, and to give this product a name. The strong identity of the project called for an important name, which was identified by analyzing the most commonly occurring words in Joseph Conrad’s novels: the words Stone and Island were chosen.\r\n\r\nStone Island has a marine feel, conjuring up old oilskins corroded by the sea and a military feel, which is drawn from the fund of research completed until that time. The name also evokes a love of the sea and that first treatment selected to “process” the garments. The badge, the detachable fabric label that has distinguished Stone Island garments since the first season, showed a Compass Rose, displayed like a military badge.\r\n\r\nThe reaction is immediate. Stone Island became a success phenomenon, with no set plan or marketing research behind it: a uniquely Italian mix of creativity, intuition and entrepreneurial spirit. A star was born.",
- "__index": "1",
- "dateCreated": "Thu, 05 Nov 2015 00:27:25 GMT"
- },
- {
- "id": "carlo-rivetti",
- "title": "Carlo Rivetti",
- "image": {
- "uri": "https://ltho.s3.amazonaws.com/2fe16d85-e85f-4f12-ae55-72622c8efafd.jpg",
- "caption": ""
- },
- "body": "My family has deep roots within the clothing industry. In the 19th century, Giuseppe Rivetti – son of Giovanni Battista, Italy’s first carding machine operator, inherited his father’s passion and in order to fund his own wool factory he secretly sold cows from the family farms to buy looms. By 1872 he had his own wool factory: “Giuseppe Rivetti e Figli”, which later merged with the Turin based GFT group (Gruppo Finanziario Tessile). There, my uncle Pinot had the unique idea of rubberizing wool fabrics to increase their performance.
This fondness for research also drove my father, Silvio. In the immediate post-war period, he set off for the United States where he found the Palm Beach Incorporated company, who produced something that didn’t yet exist in Europe: clothing constructed on theoretical measurements; what we now know as sizes.
My father was stunned, working for six months as a laborer, before returning and convincing his brothers to give up their shares in the wool factories in order to buy out GFT. \r\n\r\nIn the early 1950’s GFT measured more than 25,000 Italians, which allowed them to effectively dress the whole nation for the first time with non-tailored garments. \r\n\r\nThe 1973 oil crisis brought severe yet swift recession, and something had to be done to recover sales. My cousin, Marco Rivetti, noticed a French couturier working in a women’s outerwear firm we’d acquired one year earlier. He would design and fit the garments, write orders in Paris and then use our company to manufacture them. He was Emanuel Ungaro. This led us to realize that in order to re-launch the sector we needed to add a fundamental ingredient to the clothing industry: fashion.
As a result, GFT became a licensee of the rising stars of Italian fashion, including Giorgio Armani and Valentino. The rise of Italian-made Prêt à Porter was due to the ability to combine entrepreneurial ability with creativity.\r\n\r\nI joined GFT in 1975. Towards the end of that decade, I had the idea to start a new area within the group; to generate something more timeless: sportswear. In the early 1980’s, I discovered C.P. Company, a firm known for being innovative and cutting edge in this field. The company was owned by Trabaldo Togna and Massimo Osti, a graphic artist by profession and the firm’s designer and art director. We bought first 50% in 1983 and later on the entire company.
That was the beginning of my journey. In 1993 I left GFT and, together with my sister Cristina, acquired 100% of the firm which is known today as Sportswear Company.
\r\n\r\nIt was in 1983 that I got to know Massimo Osti, who had brought Stone Island into existence almost by chance, a year earlier. A special fabric named ‘Tela Stella’ had arrived in the company: a cloth that had a different color on each side, used to make truck tarpaulins. The effect was very interesting but had little to do with the existing C.P. Company line. Osti decided to do something special with that fabric and created a collection of just seven jackets. The collection strongly referenced military style with the now iconic badge inspired by military insignia. The compass symbolized love for the sea and an aim for constant research.\r\n\r\nMassimo was at least ten years ahead of others in his field. He saw himself as a producer rather than a fashion designer.
His achievement establishing Stone Island was not only appealing and saleable, but also true to his core belief in informal wear. His ideas were drawn from military and work wear, accompanying them with endless textile research.\r\n\r\nIn the mid-nineties, Massimo our paths eventually came apart, and I found myself with the difficult task of finding someone to design Stone Island.
In 1994 as I wandered through a Munich trade fair I came across the work of designer Paul Harvey, an English designer who lived in Sant’Arcangelo di Romagna, Italy. I was struck by a strange feeling of familiarity and cried out: “so here’s the Stone of the 21st Century!”. From 1996, with Paul, we embarked on the second era of our brand.\r\n\r\nPaul designed 24 collections, each consistent in the evolution and research that has always set Stone Island apart.
He is another extraordinary character. After graduating Central Saint Martins, he decided fashion was not his career path and worked as a truck driver! Only after marrying a fantastic Italian lady and moving to Italy did he start designing clothes.
His approach to design has functionality in its blood, which allowed him to interpret Stone Island perfectly. He led the brand masterfully into the new century. \r\n\r\nAfter 12 marvelous years, Paul needed to leave the fashion world to “do something for the Planet”. With such a noble ambition, I could only accept and support his decision.
In that moment, facing another crucial decision, I came to the conclusion the era of “one man at the helm” was over.
Times had changed. It was necessary to be multicultural in order to be truly contemporary.
I built a design team. I felt that in this era it is this possible to face all aspects of a world only with several minds and several visions: and this has been Stone Island from 2008 to today.
\r\n\r\nI feel like the coach. I choose which men to send onto the pitch, depending upon who we have to play: We need to be more sensitive, faster, and ready to grasp the signs of strength and weakness.
As a result, we need multi-cultural people that travel the world and observe it from different viewpoints: people of different ages and from different cultures.\r\n\r\nThis, in short, is my story. I like to think there’s a common thread that binds us all. A desire for continual experimentation and research, not without a touch of healthy insanity: that special something that makes our Stone Island much more than a just a clothing brand.\r\n\r\n<i>Carlo Rivetti,\r\nPresident and Creative Director, Stone Island</i>",
- "__index": "2",
- "dateCreated": "Thu, 05 Nov 2015 00:27:38 GMT"
- }
- ],
- "archive": [
- {
- "id": "-010-015",
- "title": "'010'015",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/2bafd7a2-fbbb-4904-8e64-ff394888fd24.png",
- "label": "LIQUID REFLECTIVE",
- "code": "5315 42944",
- "caption": "Fabric that is highly reflective owing to its coating made up\r\nof thousands of glass microspheres. Each finished garment\r\nis hand sprayed individually and individually baked dry.\r\nThe varying intensity of the reflective element and varying\r\nintensity of color, the dribbling and speckled effect, are\r\nowing to the high level of craftsmanship involved in the\r\nprocess, making each garment unique and unrepeatable.\r\nLining in quilted microfiber with polyester padding.\r\nStone Island badge with white embroidery, reserved for\r\ngarments that are made using advanced research into\r\nfabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a0714935-2800-425f-9b34-63fdc4a7fc78.png",
- "label": "30/30 JACKET",
- "code": "5715 4TTY2",
- "caption": "The 30/30 jacket is a cross section of the state of the art of Stone Island. A testament to three decades of exploration and development, it has been designed to embody the spirit of Stone Island’s endless creativity. Linked by the signature looped rigging system, both the jacket shell and jacket liner are reversible. These can be worn, either together or alone, in a total of 10 different ways. The transformative\r\nproperties of the fabrics mean that these 10 ways can each be worn in 3 different modes: Ice, Reflective,\r\nand Normal; resulting in a total of 30 different jacket states.\r\nThis piece features is our 30th anniversary special edition badge.\r\nJACKET /SHELL _ RASO GOMMATO PRISMATIC COVER.\r\nSatin weave cotton of military origin bonded on the inside to a a shiny transparent fine-grained polyurethane film reflecting the light, magnifying the color effects and bestowing the surface with a three-dimensional and ‘liquid’ appearance.\r\nJACKET/ LINER_ THERMO REFLECTIVE / ENGINEERED WOOL\r\nThis material merges two of Stone Island’s most avant-garde research paths. It explores the interaction between light refraction and thermosensitivity technologies. The resins used to coat the nylon substrate host both the glass microspheres allowing fabric refraction and the micro-encapsulated pigments modifying the passage of light and thus enabling color changes in relation to temperature. The final effect is an organic and dynamic interaction of light and color. On the reverse side, an engineered wool face made with a double knit machine."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d51dce63-d467-45ea-88a6-5b077ffe3c3c.png",
- "label": "REFLECTIVE KNIT WITH WINDSTOPPER® 3L",
- "code": "5715 587Y5",
- "caption": "To celebrate the thirtieth anniversary of Stone Island, a yarn has been engineered that represents the\r\nheight of our tireless research. The President’S Knit 5715 has been created in Reflective yarn, made\r\nup of micro plates coated with glass microspheres trapped inside a polyester mesh. The structure of\r\nthe jumper has been made double, reflective on the outside and wool on the inside. The outer face\r\nhas then been printed in a darker shade using heat and pressure sublimation printing to amalgamate\r\nthe fibers, obtain an even surface and reduce the strong reflective appearance.\r\nThe detachable padded and quilted lining has been created in a polyester jersey laminated with a\r\nWindstopper® membrane, which provides an unbeatable balance between protection and comfort.\r\nThis piece features is our 30th anniversary special edition badge."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5883b275-a2eb-4a34-890f-69b30250a62b.png",
- "label": "RASO HAND PAINTED TORTOISE SHELL",
- "code": "6115 70565",
- "caption": "Trench coat in a satin-weave cotton fabric of military origin. The garment has been dyed and then faded in selected areas with a corrosive paste. The bleached parts have then been hand-painted with a tortoiseshell-inspired motif also appearing on the Stone Island badge on the left sleeve. This extraordinary manual process makes each piece unique and unrepeatable. Detachable hood in garment-dyed padded iridescent nylon. Detachable lining in GARMENT-DYED DOWN_26 GR X SQM_N, an ultra-light nylon weighing only 26 grams per square meter, filled with the finest down specially treated to bear the stress of the garment dyeing procedure. Garment-dyed with special dye recipes. It is secured to the outer garment by the iconic Stone Island fastening system."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a25cc013-5c2c-4221-974a-987b8fd00ab4.png",
- "label": "HAND PAINTED SHEEPSKIN",
- "code": "6115 00379",
- "caption": "Sheepskin parka. The finished piece has been hand-sprayed on the outer face with a resin based product and then hand waxed to achieve a softer feel. Hood edged by fur trim. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/fa5ed231-8b04-4ecc-b126-7a5543d5614a.png",
- "label": "ICE JACKET THERMO-SENSITIVE FABRIC",
- "code": "6115 43098",
- "caption": "Hooded jacket in thermo sensitive fabric. A water- and wind-resistant polyurethane film is embedded with micro-encapsulated pigments. The molecules of these pigments modify the path of light and change color according to the temperature. The garment is then padded with the finest down.Two chest patch pockets, with snap-flap fastening and second pocket with vertical zip fastening. Adjustable elastic at cuffs. Cotton terry lined hood. Hidden zip and button fastening."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/bfd9defc-a1ef-4322-9e53-9505ec606ed9.png",
- "label": "RASO GOMMATO REVERSE COLOR PROCESS",
- "code": "6215 42338",
- "caption": "Jacket in Raso Gommato -rubberized satin- a mil. spec. cotton satin bonded with a polyurethane cover making the fabric wind and water resistant. In this version, the transparent cover is bonded to a previously piece dyed and printed the cotton satin. The finished garment undergoes an exclusive procedure named Reverse Color Process, a fading technique followed by an overdyeing process on the finished garment, owing to the piece unparalleled shaded print effects, resist print areas and residual color deposits, unique to each single item."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/390b68f3-7f9a-41af-a09c-bd15ac7008a3.png",
- "label": "POLYPROPYLENE TELA",
- "code": "6315 40534",
- "caption": "Down filled parka in polypropylene tela treated with an anti-drop agent. Polypropylene, a material with antibacterial properties, is the lightest man-made fibre. Even very bulky garments astonish for their specific lightness. The paste colored yarn is texturized to obtain a cotton looking opaque aspect. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cc9f8c72-bbac-4d34-9762-4eae85374abf.png",
- "label": "HIDDEN REFLECTIVE",
- "code": "6315 G0598",
- "caption": "Vest in a reflective, water and wind resistant polyester fabric owing its features to a coating made of thousands of glass microspheres. An opaque black plating totally covers the refraction of the material which is unveiled when photographed in flash mode. The reflective features will be revealed through usage, with diverse effects and intensities from piece to piece, depending on its wearer usage. Stone Island logo on the back obtained through laser printing. Filled with the finest down. Sheepskin over collar. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/512029b0-f4a3-469a-9d7d-1cd7fc15c1c8.png",
- "label": "POLY COVER COMPOSITE + POLY FUR SILVER DETACHABLE LINING",
- "code": "6315 491Y1",
- "caption": "Hooded jacket in Poly Cover Composite, a matte, colorless and opaque two-component water and wind resistant film. The garment dyeing technique colors the film without affecting its transparency. Completely heat sealed seams.\r\nDetachable hooded lining in Poly Fur, a synthetic fur with external silver colored coating. Snap fastening on nylon tape."
- }
- ],
- "__index": "4",
- "dateCreated": "Thu, 05 Nov 2015 01:48:39 GMT"
- },
- {
- "id": "-000-009",
- "title": "'000'009",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/725e1b3f-58ee-49f6-8413-0a7e3dc9890f.png",
- "label": "KEVLAR®",
- "code": "3315 4031",
- "caption": "Kevlar® felt. Five times more robust than steel given the same weight, Kevlar® is lightweight and\r\nhighly insulating. It is resistant to even extreme changes in temperature and to both fresh and salt\r\nwater. Owing to its qualities, it is used in the aerospace field, in competitive sailing and for Formula\r\n1 racing. With its soft yellow color, dyeing this material is usually impossible, but with Stone Island\r\ngarment dyeing expertise, laminating the hydro-cohered Kevlar® fibers to an invisible nylon mesh and\r\na polyurethane coating on the outer side and a simple polyurethane coating on the inside this has been\r\nmade possible.\r\nDetachable lining in triple woven fabric, two nylon honeycomb patterns have been machine raised\r\nwith a further nylon yarn. The detachable lining is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world. Stone Island badge with white embroidery, reserved for\r\ngarments that are made using advanced research into fabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c1c9db4f-5aa9-4698-9fe3-04a58a631653.png",
- "label": "MONOFILAMENT-S",
- "code": "3715 4316",
- "caption": "Nylon twill monofilament mesh. On the inside, a cotton muslin\r\nlayer is laminated on the outer face with a black breathable\r\nand water resistant membrane, with the application of\r\nwhite polyester taped seams. The monofilament mesh has\r\na protecting function for the inner membrane. From the\r\naesthetic point of view, its transparency is designed to reveal\r\nthe internal construction of the garment. The piece is lined in\r\na brushed cotton fabric quilted with polyester padding. The\r\nfinished garment is over-dyed with a double cotton and nylon\r\nrecipe."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4f1783c2-1ff7-4054-9d18-faebbd617305.png",
- "label": "LIGHT",
- "code": "3715 4Q30",
- "caption": "Stone Island anticipated the use of light in clothing. Also for safety purposes in cases of\r\ndiminished visibility. The beginning of the Nineties, saw the introduction of the Reflective\r\nJacket - the first reflective garment ever - and in ‘002, to mark its twentieth anniversary,\r\nthe use of light went from being passive to active and self-generated with the use of optical\r\nfibres.\r\nThe fabric’s cotton warp is woven with polyester yarns as well as with optical fibre\r\nfilaments forming a band of light along the front fastening and around the edge of the hood.\r\nThe light is switched on using a small battery hidden inside the garment.\r\nHooded detachable lining in microfiber quilted to a polyester padding, attached to the\r\nouter garment using a system of ties, adapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c62f3de3-a639-4818-988c-3aba9db057e5.png",
- "label": "COMPACT",
- "code": "3915 4N40",
- "caption": "Compact treated linen felt. The Compact process is the transfer to finished garments of a textile process that is usually used to cleanse the natural fibers of their impurities. The garments are boiled at 130°C under pressure, with special additives. In the finished garments the material shrinks approximately 50%, the material becomes extraordinarily compact, the hand of the fabrics becomes dryer and naturally elastic. The fabrics take on an uneven, hand crafted appearance, as if they had been woven on antique looms. The fabric volume reduction involved with the Compact treatment creates very important pattern making complexities. The garment can be fitted to the body with a strings and loops system on the sides, front and hood. This system is inspired by anti-G suits of military aviators. Garment dyed; Compact pieces are very receptive to the garment dyeing recipes, the colors result far more intense than those of untreated garments.\r\nDetachable lining in peached microfiber, quilted with polyester padding. The detachable lining is attached to the outer garment using a system of ties, adapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ba287902-7b92-4128-867f-69d6b1e40cc0.png",
- "label": "OPAQUE NYLON TELA",
- "code": "4315 4C24 30GR",
- "caption": "Japanese featherweight nylon canvas, weighing just 30 grams per square\r\nmeter. The Stone Island badge is ultra light, in embroidered nylon mesh in\r\norder to avoid weighing down the sleeve. The garment is padded with the\r\nfinest down. The lightweight construction of the down bags and the direct\r\ninjection of feathers heightens the lightness of the garments."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/320c3a59-c8ae-4dec-b863-15b15ccc368a.png",
- "label": "OPAQUE NYLON CANVAS",
- "code": "4515 4H24",
- "caption": "Japanese featherweight nylon canvas, weighing just 37 grams\r\nper square meter. The Stone Island badge is ultra light, in\r\nembroidered nylon mesh in order to avoid weighing down the\r\nsleeve. The garment is padded with direct injection finest down.\r\nApart from highlighting the lightness of the fabric, the black\r\nedging under the fabric underscores the removal of the feather\r\nbags to increase the lightness of the garment. The yoke on the\r\nchest is disguised by the horizontal quilting motive. Inside the\r\nhood of the garment, an extra fabric hood with external coating\r\nand PVC print may be laced up by loops."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/35f9ec2a-fc52-42e5-b015-899e40ae9e89.png",
- "label": "DAVID-TC SUBLIMATION PRINT",
- "code": "4615 4C44",
- "caption": "Reversible garment. Star-shaped cross-section polyester / polyamide\r\nJapanese microfiber. During garment dyeing under pressure at 130°C,\r\nthe heat transforms the structure and hand of the material radically.\r\nBeyond the depth of color and despite maintaining an industrial\r\nappearance, the David-TC garments take on an appearance and\r\nhand that grant a unique tactile experience, similar to both chamois\r\nleather and non-woven coagulated fabric. One of the two faces has\r\nbeen over printed on the finished garment with a dark color, using\r\na hot sublimation / pressure printing technique that reveals the\r\nconstruction details of both sides of the garment."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/03785345-d63c-4c18-addf-fb7461949cec.png",
- "label": "ANTIQUED REFLECTIVE",
- "code": "4715 7423",
- "caption": "Cotton Batavia with a coating made up of thousands of glass microspheres. Antiqued Reflective fabric\r\nhas a strong capacity to reflect even the weakest light sources and is enhanced by a color patina that is\r\nparticularly evident in the folds of the garment, granting to the piece a three-dimensional appearance.\r\nThe shape and details of the garment have been deliberately designed with a retro style in order to\r\ncreate a contrast with the modernity of the reflective face. The hood is lined in a khaki colored wool\r\nwith parallel stripes, reminiscent of military blankets.\r\nDetachable lining in microfiber quilted to a thin polyester padding. The lining is attached to the outer\r\ngarment using a system of ties, adapted from those used in the sailing world.\r\nStone Island badge with white embroidery, reserved for garments that are made using advanced\r\nresearch into fabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b7b6db65-3688-4472-839d-38852b074790.png",
- "label": "RASO GOMMATO - HAND PAINTED CAMOUFLAGE",
- "code": "4915 4C43",
- "caption": "Drawing inspiration from the actions of soldiers during the First World War, who\r\nused earth from the trenches to make their uniforms dirty, thus inventing the\r\nconcept of camouflage, the fabric base in black satin weave cotton of military\r\norigin bonded to a black polyurethane cover on the inner face, has been faded\r\nwith a corrosive paste and then hand painted on the finished garment to create\r\na camouflage effect. By means of this manual process, each garment is rendered\r\nunique and unrepeatable.\r\nThe detachable quilted nylon lining with polyester padding, with front edging\r\nand collar in felted wool, is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9a25ed8c-2293-4d6e-b63a-c17580113d63.png",
- "label": "WAXED ICE - THERMO SENSITIVE FABRIC",
- "code": "5115 7498",
- "caption": "Cotton moleskin with a resin treatment containing thermo sensitive\r\nquartz. The color of the garment ranges from bright yellow at\r\nroom temperature to a deeper and deeper shade of olive green as\r\nthe temperature drops. The garment is washed and then waxed.\r\nThe detachable black woolen lining with Stone Island logo in the\r\ncentre is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world.\r\nStone Island badge with white embroidery, reserved for garments\r\nthat are made using advanced research into fabrics or processes."
- }
- ],
- "__index": "3",
- "dateCreated": "Thu, 05 Nov 2015 01:49:03 GMT"
- },
- {
- "id": "-990-999",
- "title": "'990'999",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/f58db57f-a469-4c7b-b248-6cab5a927c8a.png",
- "label": "RASO GOMMATO COLORED COVER",
- "code": "05 4001",
- "caption": "Satin weave cotton of military origin bonded to a\r\nmustard yellow polyurethane cover on the outside\r\nand white on the hood. The inner fabric face takes its\r\ncoloring from garment dyeing. Double parallel row\r\nof snap fasteners mounted on small rubber disks\r\nallow the garment to be tightened or loosened to fit."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/56189889-630b-4293-95e9-2c747d1209fe.png",
- "label": "ICE JACKET CAMOUFLAGE THERMO-SENSITIVE FABRIC",
- "code": "05 4N06",
- "caption": "Cotton poplin with a camouflage print in a thermo-sensitive\r\ncoating with liquid crystals that change color based on\r\nthe temperature. Over dyed on the finished garment. As the\r\ntemperature drops, the fabric print gradually disappears\r\nas it takes on the same shade as the solid color of the\r\ngarment dye."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d46fc981-d51c-4001-a72a-7d5bc3bedc15.png",
- "label": "RUBBERISED SATIN SILVER COVER",
- "code": "35 4405",
- "caption": "Satin weave cotton of military origin bonded to a silver\r\npolyurethane cover on the outside. Padded with goose down.\r\nDouble parallel row of snap fasteners mounted on small rubber\r\ndisks allow the garment to be tightened or loosened to fit.\r\nLining in colored peached polyester microfiber. Hood in the\r\nRaso Gommato Silver Cover garment dyed, with detachable wolf\r\nfur edging."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/65a6a008-a634-4155-8dba-0e2f22e1dc74.png",
- "label": "REFLECTIVE JACKET",
- "code": "1815 4N02",
- "caption": "Owing to a coating made up of thousands of glass\r\nmicrospheres on a polyester base, the Reflective\r\nfabric has a strong capacity to reflect even the\r\nweakest light sources. It reflects and intensifies\r\nthe brightness of the color of the fabric itself,\r\nparticularly if placed in the dark. If it is photographed\r\nusing a flash, it detracts light from the other\r\ncomponents in the shot, which show up as black.\r\nPocket linings in cotton mesh."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/7011fe4a-22de-4bf0-bd4d-4440c49d8409.png",
- "label": "WQR WATER RESISTANT QUILTING",
- "code": "2515 6L51",
- "caption": "Nylon jersey quilted with polyester padding,\r\nwith a special external coating used to close\r\nall the needle holes produced in the quilting\r\nprocess, rendering the garment totally\r\nwaterproof. The garment takes its final\r\ncoloring from garment dyeing."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ca0447d1-3bd3-4702-a7d5-f1da98764ffb.png",
- "label": "LINO GOMMATO REVERSE COLOR PROCESS",
- "code": "2815 4P49",
- "caption": "Black linen canvas bonded to a transparent polyurethane\r\ncover on the outside. By means of an exclusive process\r\ncarried out on the finished garment, the original color of\r\nthe fabric is corroded, with the exclusion of the Stone Island\r\nlettering, of the two parallel stripes and of the name of the\r\nprocess on the left sleeve. The collar, placket, pocket flaps,\r\ncuffs and bottom hem are less faded owing to the double\r\nlayer of fabric and the seams. Light garment over dye."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/23b746d9-311b-4f9f-b356-d1f49046bda9.png",
- "label": "THE PRESIDENT’S KNIT",
- "code": "2915 5784",
- "caption": "The President’s Knit is the name of a knitted garment introduced in the autumn winter ‘998-’999\r\nseason and then retaken with different processes in the years that followed. It is an innovative knitted\r\ngarment that takes on the functions of a jacket owing to its detachable lining.\r\nThe first of these garments was created in a double face knit, nylon chenille on the outside, cotton on\r\nthe inside. Three black nylon parallel stripes on the cuff. Ends of the sleeves and bottom hem as well\r\nin black nylon. The garment takes its final coloring from garment dyeing.\r\nDetachable lightweight nylon fabric lining with water resistant polyurethane resin finish, quilted\r\nwith polyester padding. The detachable lining is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ebaf6ae8-f465-4a8d-b6d0-ff45a93f0350.png",
- "label": "LAMINATE - NOC 1",
- "code": "3015 4C41",
- "caption": "Two ultra light cotton gauzes laminated by means of a\r\nmatte colored resin. This slightly stretch fabric provides\r\ntechnical features owing to its light lamination. This fabric\r\nhas a natural appearance but high-tech performance and\r\nis waterproof, windproof and breathable. Fully thermotaped\r\nseams on the inside.\r\nInjection moulded PVC NOC 1 hood. The shape of the\r\nhood is taken by the shape of gas masks. A research by\r\nStone Island into the making of non-fabric components."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a39caa9e-4dbe-4c31-8bda-41ebc2a508b4.png",
- "label": "PURE METAL SHELL – BRONZE",
- "code": "3115 4T43",
- "caption": "100% bronze mesh applied to a black nylon jersey base. The polyurethane adhesive\r\nprovides a light protection for the mesh. A Teflon® treatment makes the garment water\r\nresistant. The metal mesh is a living material with the features of metallic materials when\r\nused untreated, and therefore they are subject to oxidation over time, losing its shine.\r\nThe worn look, creases and breaks that form on the surface are features that make each\r\ngarment different from the next.\r\nDetachable woolen lining with raw cut edging, attached to the outer garment using a\r\nsystem of ties adapted from those used in the sailing world.\r\nThe Autumn Winter ´999-´000 collection saw the introduction of the Stone Island badge\r\nwith white embroidery, dedicated to garments created using advanced research into\r\nfabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f221b596-7cc0-493c-9cea-6755f64d1641.png",
- "label": "PURE METAL SHELL - SILVER SPRAY",
- "code": "3115 4U39",
- "caption": "Ultra light polyester fabric with the application, through\r\na patented procedure, of a micro stainless steel film in a\r\nvacuum and sterile environment. This Japanese fabric,\r\nused in airplanes to shield the on-board computers from\r\nelectromagnetic radiation. Cotton canvas lining. The garment is\r\npadded with goose down.\r\nThe Autumn Winter ´999-´000 collection saw the introduction\r\nof the Stone Island badge with white embroidery for pieces\r\ninvolving advanced research."
- }
- ],
- "__index": "2",
- "dateCreated": "Thu, 05 Nov 2015 01:49:20 GMT"
- },
- {
- "id": "-982-989",
- "title": "'982'989",
- "__index": "1",
- "dateCreated": "Wed, 02 Dec 2015 05:15:20 GMT",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/e486c7c7-798e-4bf7-9e67-973f2cb02368.png",
- "label": "TELA STELLA",
- "code": "45 4NN",
- "caption": "Stone Island was founded on this fabric. Tela Stella was born out of the study\r\nof the technical and functional characteristics of military truck tarpaulins. It\r\nis a cotton canvas impregnated on both sides with special pigmented resins\r\nin contrasting colors. The finished garment then undergoes an extended\r\nenzyme wash in order to give it a faded look and to break down the density of\r\nthe material. The result is a windproof garment that has an air of old oilskins\r\ncorroded by the sea, which, at the same time, has a marked military feel."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/757164f9-0699-482a-9187-e7d097f84319.png",
- "label": "TELA STELA DUAL COATED",
- "code": "65 404",
- "caption": "Cotton canvas impregnated on both sides with special pigmented resins in contrasting colors.\r\nWhite outside, sand colored inside. Garment dyed midnight blue; a mélange effect is obtained with\r\ndifferent textured depths of color on the outside and inside of the garment. Appliqués in reflective\r\nfabric and stretch cotton tape on the pockets. Metal buckles on the bottom hem. Long cotton strap\r\nsewn under the collar label and attached to one of the buckles by means of a snap hook to allow the\r\ngarment to be worn over the shoulders."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/eb9cadb6-9712-41cf-9984-086518c7c391.png",
- "label": "TELA STELLA DUAL COATED",
- "code": "65 410",
- "caption": "Cotton canvas impregnated on both sides with special pigmented resins in\r\ncontrasting colors. White outside, sand colored inside. Neither washed,\r\nnor garment dyed, it maintains the body and intensity of the coating.\r\nAppliqués in reflective fabric and stretch cotton tape. Adjustable straps at\r\nthe sides."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8237f317-5272-4760-a6ab-b56c475b50d3.png",
- "label": "JOCK-23",
- "code": "75 436",
- "caption": "Cotton canvas with thick matte PVC coating. Appliqués in the same fabric\r\nwith contrasting color coating. On the back, appliqué in mélange felted wool\r\npolyester on the collar. On the inside the neckline and shoulders are lined\r\nin cotton jersey. Rubber buttons created from a mould. Detachable lining in\r\ngarment dyed cotton fleece, attached with snap fasteners."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c790cbf7-0a92-449e-8557-f6174946ab68.png",
- "label": "JOCK-23",
- "code": "75 460",
- "caption": "Cotton canvas with thick matte PVC coating. Hood and buckled inserts at the cuff, with\r\ncontrasting color coating. Appliqué in latex right around the edge. Metal eyelets.\r\nRubber buttons created from a mould."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/1062f397-c1d7-4012-ae8d-9ddf13363743.png",
- "label": "JOCK-23",
- "code": "75 409",
- "caption": "Cotton canvas with thick matte PVC coating. Inner flap in a contrasting\r\ncolor. Collar in felted wool polyester, lined with latex. Latex band at cuffs.\r\nRubber buttons created from a mould. Detachable lining in garment dyed\r\ncotton fleece, attached with snap fasteners."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5f315b73-1572-460c-abfe-cda498886abe.png",
- "label": "RASO GOMMATO BLACK COVER",
- "code": "35 4NN",
- "caption": "Satin weave cotton of military origin bonded to a black\r\npolyurethane cover on the inside. The garment takes its\r\nfinal coloring from garment dyeing. Detachable hood in Silk\r\nLight, an ultra light, slightly resin treated shiny trilobate nylon\r\nfabric, quilted with polyester padding.\r\nDetachable lining in Silk Light, quilted with polyester padding.\r\nThe detachable lining is attached to the outer garment using\r\na system of ties, adapted from those used in the sailing world.\r\nThe hood and detachable lining are also garment dyed."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cd370f63-4fab-41e1-bbb6-d9e4955d068e.png",
- "label": "GLAZED SILK LIGHT",
- "code": "55 4910",
- "caption": "Fine shiny trilobate nylon with thick, glazed effect\r\nPVC coating, creating a translucent, semi-transparent\r\nappearance. Hood part lined in a layer of PVC and with a\r\nstrip of honeycomb pattern non-woven fabric in microfibre.\r\nPVC windproof cuffs inside the sleeves. Lining made with\r\na layer of heat-sealed PVC, with interlining in polyester\r\nmesh quilted with polyester padding. The piece takes its\r\nfinal color from a double cotton and nylon garment dyeing\r\nrecipe, to obtain different shades on the finished garment."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/417e64df-f318-4500-977b-2eaed1668bc4.png",
- "label": "RASO GOMMATO BLACK COVER",
- "code": "65 4A10",
- "caption": "Satin weave cotton of military origin bonded to a\r\nblack polyurethane cover on the inside. Removable\r\neye mask in the hood, which folds away in the\r\ncollar. The garment takes its final coloring from\r\ngarment dyeing."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/93d8d8fa-ad6e-4fe5-9182-c9e45c7e4ff5.png",
- "label": "NYLON RIP-STOP COVER",
- "code": "75 4503",
- "caption": "Khaki iridescent nylon with rip-stop twill, laminated on the\r\noutside with a transparent amber polyurethane film. The\r\ndepth of color is obtained by adding together the color of\r\nthe textile base and that of the coating. Lined in iridescent\r\nnylon rip-stop quilted with polyester padding."
- }
- ]
- }
- ],
- "hub": [
- {
- "id": "ss_-016-over-shirt-in-nylon-metal",
- "date": "Tue, 26 Jan 2016 12:00:00 GMT",
- "title": "SS_’016 Over Shirt in Nylon Metal",
- "subtitle": "Stone Island App Exclusive Colorway",
- "body": "NYLON METAL: The trilobate structure of the nylon yarn, with its grey weft and white ready to dye warp colors, is the grounds of the distinctive metallic and tonic sheen of Nylon Metal, one of the most versatile fabrics born of Stone Island’s textile research. The finished piece undergoes an elaborate double dye procedure providing different tones, intensities and colors to the fibers and textile accessories of the garment. The addition of a special agent to the dye formula makes the piece anti-drop.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/5f8ea79e-89b1-497a-a64d-ab1616a73d14.JPG",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/dcbdc373-b95c-4891-86ba-6dc39e13f49d.JPG",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/6828eb54-ebbf-412f-a246-5b208f8e6733.JPG",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0ef84bf3-5b79-4e34-b115-9a31821cec24.JPG",
- "caption": ""
- }
- ],
- "__index": "1",
- "dateCreated": "Tue, 26 Jan 2016 15:31:47 GMT"
- },
- {
- "id": "ss_-016-collection-preview",
- "date": "Tue, 12 Jan 2016 12:00:00 GMT",
- "title": "SS_'016 COLLECTION PREVIEW",
- "subtitle": "Stone Island App exclusive 1/12-1/19",
- "body": "The unrelenting research by Stone Island results in a collection full of textiles evolutions, finishing and dyeing, featuring pop colors and extraordinary visual effects.\r\n\r\n44447 NYLON METAL WATRO\r\nHooded blouson in Nylon Metal. Hood with half lining in cotton and half in nylon mesh. Slanting hand pockets with windproof entrance and zip fastening. Adjustable strap at cuffs. Drawstring in bottom hem. Zip fastening. \r\nNYLON METAL WATRO: The trilobate structure of the nylon yarn, with its grey weft and white ready to dye warp colors, is the grounds of the distinctive metallic and tonic sheen of Nylon Metal, one of the most versatile fabrics born of Stone Island’s textile research. The fabric is resin treated inside to achieve a mild wind and water resistance The finished piece undergoes an elaborate double dye procedure providing different tones, intensities and colors to the fibers and textile accessories of the garment. The addition of a special agent to the dye formula makes the piece anti-drop.\r\n\r\n10544 NYLON METAL \r\nOver shirt in Nylon Metal. Garment dyed. Hook fastening collar. On seam pocket along central placket, with snaps fastening. Snap-fastened cuffs. Hidden zip and snap fastening.\r\nNYLON METAL: The trilobate structure of the nylon yarn, with its grey weft and white ready to dye warp colors, is the grounds of the distinctive metallic and tonic sheen of Nylon Metal, one of the most versatile fabrics born of Stone Island’s textile research. The finished piece undergoes an elaborate double dye procedure providing different tones, intensities and colors to the fibers and textile accessories of the garment. The addition of a special agent to the dye formula makes the piece anti-drop.\r\n\r\n70532 POLYESTER SHANTUNG\r\nParka in an organic looking polyester. Hood with visor and chin strap adjustable with Velcro. Two bellows pockets on chest with flap closed by hidden snaps. Two welt pockets closed by a zip with a second snap opening that holds a cotton tape belt. Snap fasteners at cuffs. Zip and hidden button fastening.\r\nPOLYESTER SHANTUNG: organic looking polyester material with a shantung effect. The organic look is given by the highly technological spinning of the raw material and by its super tight weaving. The pieces are sewn and then garment dyed under pressure at 130°C with the addition of an anti-drop agent. The high pressure dye process compacts the material and induces the high absorption of the color recipe.\r\n\r\n41923 MEMBRANA 3L TC\r\nHooded jacket in a light 3 layers fabric. Garment dyed. Adjustable straps on hood with elasticated gathering on back. Patch pockets with zip fastening. Adjustable straps at cuffs. Elasticated adjustable drawstring on bottom edge. Zip fastening. \r\nMEMBRANA 3L TC: 3 layer light performance fabric made from an opaque nylon outer face laminated to a breathable, water resistant, windproof membrane, protected by an impalpable polyester base. Stone Island’s expertise in garment dyeing gives an outstanding color to the outer face while preserving the performance features of the inner membrane. The addition of a special agent to the dye formula makes the piece anti-drop.\r\n\r\n65260 T.CO+OLD\r\nHooded full zip sweatshirt in malfilé cotton, garment dyed to create the OLD effect, an exclusive dyeing treatment and subsequent fading on the finished garment to create a slightly worn and three-dimensional appearance. Hood drawstring in contrasting color. Pouch pockets. Ribbed side band, cuffs and bottom band. Zip fastening.\r\n\r\n530B0\r\nCardigan knit in plain stitching cotton nylon. Raised collar with concealed hood in Nylon Metal. Garment dyed. On seam pockets. Plain cuffs and bottom band with inner ribbing. Zip fastening.\r\nNYLON METAL: The trilobate structure of the nylon yarn, with its grey weft and white ready to dye warp colors, is the grounds of the distinctive metallic and tonic sheen of Nylon Metal, one of the most versatile fabrics born of Stone Island’s textile research. ",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/76ecda74-afef-406b-9b17-2d940700a1f6.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f96e6884-f558-4da4-bce6-dc6fa4137442.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b22d0c15-e948-4b74-b275-c25cfdd824ec.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/2d5d5ced-3383-4203-affc-3fd0aff991b3.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5698df03-ab54-4f08-ac64-5bdde9e9ba05.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/36c356ef-ffbd-47b4-8103-3310fc46eb6e.png",
- "caption": ""
- }
- ],
- "__index": 2,
- "dateCreated": "Wed, 27 Jan 2016 01:57:35 GMT"
- },
- {
- "id": "nikelab-x-stone-island-windrunner",
- "date": "Wed, 09 Dec 2015 12:00:00 GMT",
- "title": "NikeLab x Stone Island Windrunner",
- "subtitle": "",
- "body": "<b>NikeLab partners with Stone Island to deliver a unique interpretation of its foremost apparel icon, to celebrate the beginning of  “The Year of Windrunner.</b>\r\n\r\n “An exciting co-lab. Stone Island loves challenges. We source our strength from challenges. It’s a great satisfaction to share our knowhow and expertise with Nike”.\r\n<i>Carlo Rivetti – Stone Island President and Creative Director</i>\r\n \r\nThe Nike Windrunner was born during a time of firsts. Created by Nike’s first apparel designer in 1978 and revolutionary for its raglan sleeves and 26-degree chevron yoke, the jacket became the first piece of Nike apparel worn by athletes at track and field trials before and after competition. Today, to commemorate this running icon, the Nike Windrunner experiences another first, the fabric innovation, the engineering and garment dyeing techniques of Stone Island.\r\n \r\nIn 2016 Nike is celebrating its foremost apparel icon: the Nike Windrunner Jacket. Designed in the late ‘70s, the silhouette has been a fixture on medal stands and city streets ever since. In the launch edition of this yearlong celebration Nike and Stone Island merge the distinctiveness of two brands to create a unique garment.\r\n \r\nThe chevron and hood of the NikeLab x Stone Island Windrunner are constructed with water and wind-resistant Mussola Gommata fabric, formed by bonding lightweight cotton muslin to an opaque polyurethane film. Nylon Metal, a proprietary Stone Island fabric with a metallic sheen, is featured on the body of the garment, which is lined with PrimaLoft®.\r\n \r\nWhile the exterior of the jacket is monochromatic, it mimics the traditional Nike Windrunner color blocking through Stone Island’s garment dyeing process. The result is a subtle distinction between the shades of the Mussola Gommata and Nylon Metal fabrics. The silver PrimaLoft® lining provides a stunning contrast to the monochromatic exterior, while the oversized trims contribute to a rugged look.\r\n \r\nThe NikeLab x Stone Island Windrunner will be available on December 17th at 10am PST from the Stone Island App and selected NikeLab retailers and on nike.com/nikelab.",
- "link": "http://www.stoneisland.com/experience/us/nikelab-x-stone-island/",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/83cc1844-73f2-4b76-b968-4d8225d84c5b.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ae57c043-dc9c-43fb-a64f-867cece10c77.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ea1b402b-fc94-4363-aa97-88806b6aadd1.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/bdcfd9d4-ae84-45de-8d80-3c91c8f8ce81.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/1c194494-d6e6-45ed-8a00-d4c337c2a104.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/83832a1b-14e7-41d2-afc9-12956cae78c9.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/944abccb-b2d0-40ee-88eb-7ee027127878.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/35290536-15b7-43de-9bbe-e3ee199fe520.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b3538dbb-b203-49d4-93b7-59826fcf6298.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9e5f54c7-ae5d-432a-b45e-2cbc2c98970c.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/eb961f79-587a-4df6-bac3-7159b313a6c2.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/eada5a2f-0de2-4a40-9e7a-409e1de28b4e.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b8264d5d-d0cf-4e84-a7d2-0e241f7337c2.png",
- "caption": ""
- }
- ],
- "__index": "3",
- "dateCreated": "Wed, 27 Jan 2016 01:58:22 GMT"
- },
- {
- "id": "nikelab-x-stone-island-koth-ultra-mid-si",
- "date": "Wed, 09 Dec 2015 12:00:00 GMT",
- "title": "NikeLab x Stone Island Koth Ultra Mid SI",
- "subtitle": "",
- "body": "Inspired by the Nike Air Mowabb, the revolutionary 1991 sneaker-hiker hybrid, this all-weather Nike Koth Ultra Mid SI Shoe is made in Nike water resistant materials, real leather, and in Mussola Gommata, a fabric issued from the Stone Island research and treatment research, an exclusive panel dyed material made by bonding an extremely light cotton muslin to an opaque polyurethane film. The shoe features aggressive traction and flexible ankle support. Unitsole foam midsole for cushioning and durable support. Waffle rubber lugs for rugged traction and durability. Flex grooves allow for natural range of motion. Heel loop for easier on and off. Heel overlay for enhanced support. The shoe dust bag is made in 2 Stone Island fabrics, Nylon Metal, nylon canvas with a distinctive metallic and iridescent sheen, 50 Fili, a cotton/nylon canvas, both panel dyed.\r\n\r\nThe NikeLab x Stone Island Koth Ultra Mid SI will be available on December 17th at 10am PST from the Stone Island App and selected NikeLab retailers and on nike.com/nikelab.",
- "link": "http://www.stoneisland.com/experience/us/nikelab-x-stone-island/",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/783b5830-6f63-41df-ad3e-22e8a6ecb640.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/332d5d23-1661-4444-b9d3-fcebda25e17d.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/66ad13cd-11cd-477d-af29-1bac747c7fc7.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f11681bb-e698-4206-a147-4083ef881180.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4ae2c8e5-a7b0-4787-a564-86efee2a75f8.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f88aa2e4-0359-4114-855c-f742c3347217.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/3adb8ecb-e656-40fd-b1d3-26afd25c1443.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e13421b7-ace5-4540-a051-a6aaba198092.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4ff448bf-bd24-40a2-86ff-ead87e3abc95.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0ed0705a-7804-4ecb-871e-fb7da49d17c3.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/db63550e-4026-4dac-ae8c-23ae0c4ddcbf.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/7cde7501-df12-4849-9dc6-24e09917da4f.png",
- "caption": ""
- }
- ],
- "__index": 4,
- "dateCreated": "Wed, 27 Jan 2016 02:06:13 GMT"
- },
- {
- "id": "45546-garment-dyed-pixel-reflective-",
- "date": "Thu, 11 Feb 2016 12:00:00 GMT",
- "title": "45546 GARMENT DYED PIXEL REFLECTIVE ",
- "subtitle": "APP EXCLUSIVE 2/11 - 2/15",
- "body": "GARMENT DYED PIXEL REFLECTIVE: STONE ISLAND’s research introduces garment dyeing on reflective fabrics. The landmark iridescent Nylon Metal fabric is printed with a resin substance containing thousands of glass microspheres. The garment dyeing procedure lends extraordinary colors to the textile base while the Pixel Reflective printing provides it with a strong capacity to reflect even the weakest light sources. A special agent was added to the dyeing bath for an anti-drop effect.\r\n\r\nLong Bomber jacket in Pixel reflective fabric. Garment dyed. Ribbed neckline and cuffs. Flap pockets with button flap on front. Straight pocket on chest with nylon tape edge. Windproof pocket with Velcro fastening on arm. Zip fastening.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/6184e4f6-a1f5-483a-8151-4f425ea49da3.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e179b0eb-9476-41a5-9a83-ccc9ce824d78.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e451542c-392f-4fcc-ad80-142ab3551f16.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8c593568-64c8-4bd2-bcab-d90ed83438f8.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/adb18f34-2968-4981-a5d1-a81a09f7e9c3.jpg",
- "caption": ""
- }
- ],
- "__index": "5",
- "dateCreated": "Thu, 11 Feb 2016 15:01:24 GMT"
- },
- {
- "id": "stone-island_los-angeles",
- "date": "Tue, 23 Feb 2016 12:00:00 GMT",
- "title": "STONE ISLAND_LOS ANGELES",
- "subtitle": "",
- "body": "Stone Island opens first US retail location at 145 S La Brea Ave, Los Angeles.\r\n\r\nThe destination offers Stone Island collections, alongside curated brand experiences and presentations.\r\n\r\nThe store’s inaugural exhibition features “Reflective Research ‘992 — ‘015” which will run through March 13th, 2016\r\n\r\nSTONE ISLAND_LOS ANGELES\r\n145 S La Brea Avenue, Los Angeles, CA 90036\r\n\r\nMonday - Saturday 11AM - 7PM\r\nSunday - 11AM - 6PM",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/9d82d33c-e9ea-47b4-8aeb-8e316843bca8.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4029fc99-1fa6-41ce-b0b2-bf05657333d1.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d40cf381-c20f-4577-8326-e2f31e10875a.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0749fbcf-1bfc-41b2-8540-5c6d358eddd3.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4c13a8cc-c47e-4837-95b5-70a69f111a21.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/90c03aa2-869b-48b5-87aa-da22bffac4a7.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a0807612-4ee0-494e-9820-c0426b3ac166.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/44ab5342-68d2-410c-90e5-2130f2fdc80d.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c4aa9eea-7446-4309-a885-cdd50078880e.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/44342be6-39ef-4612-b76f-aa1c0c1b9a9c.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/60ae0f89-3d2d-4f6e-885c-fd3f2797c8a0.jpg",
- "caption": ""
- }
- ],
- "__index": "6",
- "dateCreated": "Tue, 23 Feb 2016 18:02:12 GMT"
- },
- {
- "id": "stone-island-ss_-016-icons",
- "date": "Wed, 24 Feb 2016 12:00:00 GMT",
- "title": "Stone Island SS_'016 Icons",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/afb364d3-a8fc-40e1-a922-d93d57a10f07.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ccbcec28-fe70-4f60-8806-2dcce06b3121.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/af25c582-bca2-4365-b8f8-a262eae0e1ac.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/408d6ecb-fa1f-4d65-9e29-3e94574ff26a.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/6df375f6-9261-46e2-994a-b48b4b2b33c4.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f6eb87a7-ffbb-4a65-a3e4-299c8d22f0a9.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4593fb77-3bc7-475a-ac56-a42f3a40d2ef.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8d7f419b-5342-4ccc-beeb-8354cc5823a1.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8169511b-c904-42cf-8f26-077df472d6a9.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/adf18770-73fb-4f4b-bf9a-20efd5f72a53.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/30c9f8f4-92cb-4f51-a050-0d54e73dc862.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cf274bc6-2690-4625-9902-5417d257e7e5.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/3a16057d-b939-4d82-b9b5-5f3ba5019dd8.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b9baed9e-f7b5-46d8-bedf-bdf479a73797.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/fc14ba8f-920a-490b-b881-2bfea3c225cc.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cf6f23c9-f24a-4a5c-945c-4ceed52c655f.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/061184a8-adef-4630-8fa7-527ba6a83d93.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/24c11eff-4795-4782-b8f2-8f92edfb428e.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a7bab9ac-e23e-4f65-96b8-1dbbcef0299f.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b49d11ad-02f6-4f5a-ae7b-dbc0d5782141.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ea63d777-09f9-4813-b348-aafef19f5137.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/08c31779-5223-479a-b242-dcb7c9185d71.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/79058530-adc3-4415-9a01-268731f8c439.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b5c527a5-dd95-4bfd-91d3-ae269d9aa31e.png",
- "caption": ""
- }
- ],
- "__index": "7",
- "dateCreated": "Wed, 24 Feb 2016 19:18:05 GMT"
- },
- {
- "id": "44537-water-repellent-wool-ghost-piece-",
- "date": "Tue, 01 Mar 2016 12:00:00 GMT",
- "title": "44537 WATER REPELLENT WOOL - GHOST PIECE ",
- "subtitle": "APP EXCLUSIVE 3/1 - 3/7",
- "body": "WATER REPELLENT WOOL: 100% naturally water repellent wool. The specific fiber processing allow increased yarn contractility and the ultra-tight compact density weaving with high temperature finishing make the fabric windproof, breathable and water repellent without the need of chemicals, coating or lamination techniques.\r\n\r\nHooded jacket in water repellent wool. Diagonal pockets with zip fastening. Two pockets with slanting flap closed by hidden snaps on chest. Heat sealed tapes on inner seams. Tyvek® half lining with nylon mesh, in the hood as well. Hidden zip and snap fastening. \r\n\r\nGhost pieces are based on the concept of camouflage and are entirely monochromatic. Even their STONE ISLAND badges have been created in special mono-color versions to blend with the garment.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/f5ceb26d-9830-4103-a29a-974c352617bf.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/48728c3c-5ee9-4b4c-abf3-5577eddab822.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/13fad590-9dd7-4529-a7e0-2e2685351bc8.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c4ac3668-67b4-4287-bf87-f12df58c96c4.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e4dd378e-034d-49cf-a683-7d267cb8e7c7.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/264d3e31-cf18-4e88-866c-feff0fd5377e.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/69d6714a-5b78-46f0-917e-2765f7ece13f.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0b278eda-2223-4d73-874b-c4b1f163d0c8.png",
- "caption": ""
- }
- ],
- "__index": "8",
- "dateCreated": "Tue, 01 Mar 2016 15:00:17 GMT"
- },
- {
- "id": "stone-island-supreme-",
- "date": "Mon, 14 Mar 2016 12:00:00 GMT",
- "title": "Stone Island / Supreme ",
- "subtitle": "Co-Lab SS '016_Preview",
- "body": "Third collaboration with the cult US skate brand Supreme.\r\nOuterwear, lightweight garments and accessories represent the fusion between the fabric research of Stone Island and the iconic style of Supreme.\r\n\r\nIN THE US AND CANADA THE CO-LAB WILL BE AVAILABLE FROM MARCH 17TH ON THE FOLLOWING CHANNELS: \r\nSTONE ISLAND APP AND STONE ISLAND LOS ANGELES STORE. SUPREME NEW YORK AND LOS ANGELES STORES, SUPREME APP AND ONLINE STORE.\r\n\r\nSTONE ISLAND FOR SUPREME \r\n701S1 HEAT REACTIVE – THERMOSENSITIVE FABRIC\r\nTrench coat in Heat Reactive fabric, changing color depending on temperature. The molecules of the micro pigments encapsulated in the coating change the path of light, the garment gradually turns to a lighter color as the temperature rises and becomes darker again as it drops.\r\nDetachable hood. Hand pockets with hidden snap fastening. Strap at cuffs, adjustable through snaps. Central back slit with hidden snap fastening. Hidden buttons fastening.Stone Island badge with white embroidery, reserved for garments that are made using advanced research into fabrics or processes. \r\n\r\nSTONE ISLAND FOR SUPREME \r\n401S2 NYLON METAL\r\nTrack Jacket in NYLON METAL. One of the most versatile fabrics born of Stone Island textile research. The trilobate structure of the nylon yarn and the grey weft/white warp color weave are the grounds of its distinctive metallic and iridescent sheen, when garment dyed. The finished piece undergoes an elaborate double dye procedure providing different tones, intensities and colors to the fibers and textile accessories of the garment. The addition of a special agent to the dye formula makes the piece anti-drop.\r\nStand up collar. Tonal Supreme water based print on left sleeve. Welt pockets on front with double snap fastening. Elasticated cuffs and bottom band. Inner nylon mesh lining. Zip fastening.\r\n\r\nSTONE ISLAND FOR SUPREME \r\n401S3 NYLON METAL 4C PRINTED\r\nTrack Jacket in NYLON METAL 4C PRINTED. Nylon Metal is one of the most versatile fabrics born of Stone Island textile research. The trilobate structure of the nylon yarn and the grey weft/white warp color weave are the grounds of its distinctive metallic sheen. The fabric is printed with a 4 color pigment Supreme camouflage motif. The garment is washed at 40°C (104°F) with the addition of a special anti-drop agent.\r\nStand up collar. Supreme water based print on left sleeve. Welt pockets on front with double snap fastening. Elasticated cuffs and bottom band. Inner nylon mesh lining. Zip fastening.\r\n\r\nSTONE ISLAND FOR SUPREME \r\n301S2 NYLON METAL\r\nTrack Pants in NYLON METAL, one of the most versatile fabrics born of Stone Island textile research. The trilobate structure of the nylon yarn and the grey weft/white warp color weave are the grounds of its distinctive metallic and iridescent sheen, when garment dyed. The finished piece undergoes an elaborate double dye procedure providing different tones, intensities and colors to the fibers and textile accessories of the garment. \r\nTonal Supreme water based print on left leg. On seam hand pockets with snap fastening. One slit back pocket with hidden zip fastening. Elasticated waistband with inner drawstring. Elasticated leg bottom with side zip fastening. Inner nylon mesh lining.\r\n\r\nSTONE ISLAND FOR SUPREME \r\n301S3 NYLON METAL 4C PRINTED \r\nTrack Pants in NYLON METAL 4C PRINTED. Nylon Metal is one of the most versatile fabrics born of Stone Island textile research. The trilobate structure of the nylon yarn and the grey weft/white warp color weave are the grounds of its distinctive metallic sheen. The fabric is printed with a 4 color pigment Supreme camouflage motif. The garment is washed at 40°C (104°F). \r\nSupreme water based print on one leg. On seam hand pockets with snap fastening. One slit back pocket with hidden zip fastening. Elasticated waistband with inner drawstring. Elasticated leg bottom with side zip fastening. Inner nylon mesh lining.\r\n\r\nSTONE ISLAND FOR SUPREME \r\n501S7 COMPASS PIN SWEATER IN PIMA COTTON\r\nCrewneck sweater in 100% Pima Cotton. By using only selected long staples, Pima cotton has a superior soft hand and extra smooth feel.\r\nReflective tonal Stone Island/Supreme Compass Pin transfer print on chest. Ribbed cuffs and bottom band.\r\n\r\nSTONE ISLAND FOR SUPREME\r\n201S4 ALL OVER PLACED PRINT \r\nLong-sleeve T-Shirt in slightly raw cotton. The striped motif is pigment printed. The cutting of the piece respects the stripes placement with the Supreme print on back. Slight enzyme wash to loosen the hand of the print. \r\nStand up collar. Metal zip collar fastening. Topstitch seams on shoulders, with interior taping. Side splits on bottom sides. \r\n\r\nSTONE ISLAND FOR SUPREME \r\n901S5 COMPASS PIN DRYBAG® BY ORTLIEB\r\nDuffle bag in ultra-resistant waterproof PVC. The glossy and super resistant, heat sealed PVC Drybag® by Ortlieb carries the exclusive patented airtight waterproof zip for extreme protection. When air is captured inside the duffle bag it can act as a pillow.\r\nZip fastening. Big polyester strap handles. Supreme logo print on one side, Stone Island logo print on the other. Both ends are printed with the Stone Island/Supreme Compass Pin. Adjustable shoulder strap with padded piece carrying the Stone Island Compass logo. Pockets inside.\r\n\r\n903S6 STONE ISLAND HEAT REACTIVE\r\nTHERMOSENSITIVE FABRIC\r\nSupreme crusher in Stone Island Heat Reactive fabric, changing color depending on temperature. The molecules of the micro pigments encapsulated in the coating change the path of light, the garment gradually turns to a lighter color as the temperature rises and becomes darker again as it drops. \r\nStone Island patch logo on front. \r\n\r\n902S6 STONE ISLAND HEAT REACTIVE \r\nTHERMOSENSITIVE FABRIC\r\nSupreme six panels cap in Stone Island Heat Reactive fabric, changing color depending on temperature. The molecules of the micro pigments encapsulated in the coating change the path of light, the garment gradually turns to a lighter color as the temperature rises and becomes darker again as it drops.\r\nStone Island patch logo on front. Supreme embroidered logo on back. Adjustable closure.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/69862dba-1df3-4f98-9dae-91783a4b2877.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/428df6c6-c60d-4f11-b00d-e90343118a13.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b539aa07-328a-40b6-a993-daa2e05d8ff5.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/87f32651-1a69-4e6e-bb18-769bfc0fdbb1.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/dabb2e39-5700-4440-8c99-fbeaece6ec09.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b445d653-4c81-48d5-98d3-3f4848d277d4.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/91326bed-8f98-4049-8883-bbda6226f95f.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4d74363f-3362-4948-bac0-c6c8e4eb32e6.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ddb040f9-a8b4-4f91-87a0-02fc53bfbe4f.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/358b2608-eef7-4580-b016-9cac172c1e55.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/51085eff-b0c7-4e09-af58-d68bec8b3d91.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4907a7cd-0f1e-42ce-b7d0-9ad112ae478f.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0b5f7a26-f879-4421-afe0-82996f6610f7.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/fc45fc87-a048-4fd3-8ff9-c58d5f5a7d15.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/7c6308b8-a99c-4b1b-8aad-c2d6dfc1a93f.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/681692a6-5b64-4f43-91ca-77ca7b45228e.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5f5543bc-921a-4285-a4da-034910744976.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/097d40ba-f82c-4b0e-a614-de440e21345c.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/6787ab06-a7c5-4029-ac05-4e53d67a964b.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/378a4db2-e228-448d-83d6-e2735a89bdb9.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/61ec3ce3-b8bb-4544-b51f-779721bbb7b0.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cd072dde-ec8e-4f23-b263-4fd83b04b9cf.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a50b89e8-07e4-4da2-bf69-1b02f84feae7.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/04a57bfd-5e22-42df-a415-4dbec1d7c193.jpg",
- "caption": ""
- }
- ],
- "__index": "9",
- "dateCreated": "Mon, 14 Mar 2016 13:57:55 GMT"
- },
- {
- "id": "70329-tank-shield-multi-layer-fusion-technology-",
- "date": "Thu, 21 Apr 2016 12:00:00 GMT",
- "title": "70329 TANK SHIELD - MULTI LAYER FUSION TECHNOLOGY ",
- "subtitle": "",
- "body": "Exclusive MULTI LAYER FUSION TECHNOLOGY. The garment, made in an opaque polyester tela, is preassembled and then entirely laminated with slightly overlapping panels producing a performing membrane to isolate hermetically the outer textile base and stitching. This technique guarantees improved waterproofness and breathability compared to common lamination techniques. \r\n\r\nCar coat using highly performing fabric and construction. Diagonal pockets with zip fastening. Adjustable straps at cuffs. Central vent on back. Zip and snap fastening.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/77035181-a6e8-4817-a4f2-3dfee6afd509.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f96d0cc2-a005-4c28-9dd4-467a204e6bc5.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9b2305c6-20e6-4731-84e3-64fcf4d293ab.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/65ac1990-4390-4d84-bbbc-9afcdf61a1ad.png",
- "caption": ""
- }
- ],
- "__index": "10",
- "dateCreated": "Thu, 21 Apr 2016 14:00:47 GMT"
- },
- {
- "id": "109ln-t-co-old",
- "date": "Tue, 14 Jun 2016 12:00:00 GMT",
- "title": "109LN T.CO+OLD",
- "subtitle": "",
- "body": "Hooded over shirt in stretch cotton broken twill. Garment dyed to create an OLD effect, an exclusive dyeing treatment and subsequent fading on the finished garment to create a slightly worn and three-dimensional appearance. Flat pockets at sides. Chest pockets with horizontal zip fastening. Ergonomic shaped sleeves. Hood edged with cotton tape. Zip fastening.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/b4329a3b-0349-4473-af22-4b6f5151e337.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/7f762552-b961-4ab3-9ec3-97b5221bad3d.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c003b009-79bc-491d-b3a7-3b79c8f4d0f0.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/fc12babb-8c79-423c-a1a5-68664e177952.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5ba840fd-8159-496c-a1e4-772ce0c67510.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/73287608-5669-4404-8bf3-ddae63fd9131.png",
- "caption": ""
- }
- ],
- "__index": 10,
- "dateCreated": "Tue, 14 Jun 2016 15:07:41 GMT"
- },
- {
- "id": "icon-imagery_fw-016-017",
- "date": "Thu, 07 Jul 2016 12:00:00 GMT",
- "title": "ICON IMAGERY_FW '016 '017",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/4ad2bab9-2a63-4991-bf1e-2b1f616801fd.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/3c959c20-2534-477d-a77f-9eb59dfc5d93.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e83dea7b-4672-4a02-bc85-def9929af6f0.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0aa5e8d3-dc41-4c7f-a118-9007957674bb.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/681f033b-61aa-4ec0-8faf-2ac9e9874290.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e68fdfa1-b543-42d1-84ca-db2f3b52d90d.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4abf9ef6-38ea-46fa-a0bc-9911b18fa106.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/e904dc23-a492-42ab-be30-0f3df2b3c957.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0fb47449-d80f-4478-85c9-25d53d269967.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cf1205ae-63cd-4eab-86e4-b9008322a16b.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9e601e11-75c8-49f9-bdfe-eda859a27282.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4062566b-aaf5-48af-803e-0b9ad492cad4.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/6aaf42eb-68a8-4428-9bf5-2990adefa030.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/154300df-032b-4c1c-86c2-d63f48931415.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/1ed22a93-d2cd-43f8-a9c1-aafd376a4a16.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/06b2a209-14e9-422c-acf5-633992a4c9d4.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/98889f73-3320-4ee9-9ecd-30d36c6ad123.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a2259e94-8c11-4afc-9b0f-0852b9fa5a7d.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4eecf0ec-1bc0-4f54-a0c0-21466f272ca9.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/0d6b242b-b9aa-483f-b99a-d1bfbb03bacb.png",
- "caption": ""
- }
- ],
- "__index": "11",
- "dateCreated": "Thu, 07 Jul 2016 18:14:16 GMT"
- },
- {
- "id": "457j4-stone-island-house-check-jacquard-on-nylon-metal-black-watro-",
- "date": "Tue, 12 Jul 2016 12:00:00 GMT",
- "title": "457J4 STONE ISLAND HOUSE CHECK JACQUARD ON NYLON METAL BLACK WATRO ",
- "subtitle": "App exclusive 7/12 - 7/18",
- "body": "STONE ISLAND HOUSE CHECK JACQUARD ON NYLON METAL BLACK WATRO: Long anorak in Nylon Metal Black Watro with jacquard motive. The trilobate structure of the nylon yarn, with its grey weft and white ready to dye warp colors, is the grounds of the distinctive metallic and iridescent sheen of Nylon Metal. Jacquard technique creates a rip-stop design on the surface that is derived from the Stone Island House Check and integrates the star in the vertical and horizontal checked pattern. The fabric has been resin treated inside to achieve a mild water resistance. Garment dyed through double color recipe with the addition of a special anti-drop agent.\r\n\r\nDrawstring around the raised collar. Two large pockets on the front with hidden snap fastening. The pockets are contoured by zip; the garment can be folded away and packed into the zipped front pockets. Elastic tape at cuffs. Drawstring bottom hem.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/7e1ec747-7322-43d4-b9c6-aec9104bf351.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8b75a21c-d372-4acd-99ca-9556c7c3088c.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/db0fc358-7447-4623-a0bb-3f6cee5ce8b7.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ae096f9c-3699-4e7f-b6a0-36ccf93ca5f9.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d4fa8667-27aa-4c60-a363-6493620be435.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/70fa7875-bd70-4572-9612-f7d039238126.png",
- "caption": ""
- }
- ],
- "__index": "12",
- "dateCreated": "Tue, 12 Jul 2016 15:15:33 GMT"
- },
- {
- "id": "stone-island-opens-new-york-store",
- "date": "Thu, 14 Jul 2016 12:00:00 GMT",
- "title": "STONE ISLAND OPENS NEW YORK STORE",
- "subtitle": "",
- "body": "Stone Island opens New York store, located at 41 Greene St. New York, NY 10013.\r\n\r\nThe unique location — a classic SoHo building from 1910 that last autumn hosted the exhibition “Reflective Research ‘992 – ‘015”— measures 3,500 SF and has undergone significant architectural renovation to create an archetypal Stone Island environment. Presenting both Stone Island and Stone Island Shadow Project collections, the flagship store in New York will carry special and exclusive products and installations in its dedicated Hub presentation space.\r\n\r\nStone Island New York\r\n41 Greene St, New York, NY 10013\r\nHours: Monday—Saturday, 11am-7pm, and Sunday, 11am-6pm.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/b627cfa1-0782-42c3-9487-a57428893fda.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/2ac003a6-f035-49cb-bc27-2da6a3ce4ffb.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c636b626-4fdb-4ac6-818a-35c26b520e0e.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/55a429b6-2f47-4c79-86f6-05db5d7fa7eb.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d4636f88-d11f-4fca-af70-df941378bca0.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/aaf8f0a5-a420-427b-af4b-bad00b5709fd.jpg",
- "caption": ""
- }
- ],
- "__index": "14",
- "dateCreated": "Thu, 14 Jul 2016 17:16:01 GMT"
- },
- {
- "id": "10112-nylon-metal",
- "date": "Tue, 23 Aug 2016 12:00:00 GMT",
- "title": "10112 NYLON METAL",
- "subtitle": "",
- "body": "NYLON METAL: Over shirt in Nylon Metal doubled inside in jersey. The trilobate structure of the nylon yarn, with its gray weft and white ready to dye warp colors, is the grounds of the distinctive metallic and iridescent sheen of Nylon Metal. The finished piece undergoes an elaborate double dye process providing the fibers and textile accessories of the garment with different tones, intensities and shades.\r\n\r\nFront yoke with inseam pocket alongside the closure with hidden zips. Snaps at cuffs. Zip fastening.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/b2b4036c-5b9f-4537-9b16-9b823835d1c1.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/11eb738b-98a4-4ba3-a39a-63e19915c584.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9a6f91ee-6950-4efd-9f2e-a75d47100169.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a8dfb935-a952-419e-ac89-932ec755d5ae.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/75214c5d-5840-485f-b836-6cd8e9cb9ed2.png",
- "caption": ""
- }
- ],
- "__index": "15",
- "dateCreated": "Tue, 23 Aug 2016 14:03:29 GMT"
- },
- {
- "id": "stone-island-chinatown-invitational",
- "date": "Tue, 30 Aug 2016 12:00:00 GMT",
- "title": "Stone Island Chinatown Invitational",
- "subtitle": "",
- "body": "Earlier this summer the Chinatown Soccer Club (CSC) hosted the 2016 Chinatown Invitational in Lower Manhattan. This year’s tournament featured four teams from around the world: CSC (New York), Ringleaders FC (Montreal), Soho Warriors FC (London), and Stone Island FC (Milan). The participating teams comprised an eclectic group of creatives united by a shared love of soccer.\r\n\r\nWriter, director, and CSC member, Alexander Klein, documented the invitational, capturing the diversity and camaraderie of the tournament, stating \"The short film was inspired by the pitches of downtown New York. It’s soccer infused with the sights, sounds, and energy of New York City — creating a sporting flavor unlike anything else in the world.\" Earlier this year he shot the soccer-documentary WE ARE SAN MARINO, narrated by Alex Karpovsky, for BitTorrent Now. \r\n\r\nThe short film will be presented by Stone Island from 6-9 tonight at the Nanogallery (100 Forsyth Street) and be on show through September 11. Alongside the film will be an installation of imagery, shot before and during the tournament by CSC members and photographers, Pep Kim and Dominic Neitz.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/907548da-f870-420a-aff3-d4fec07cfd55.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/197f894b-e7dd-43b8-a603-12bff46f3c2f.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b89ea6bb-0128-4259-8bb6-28ca631dd61b.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a1913c20-5c80-4303-bcdb-69dcdf261043.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/79dd20cd-08b8-490d-b678-f98210ba8692.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/df4affac-20c9-4186-9c28-1d6efcb6cd85.jpg",
- "caption": ""
- }
- ],
- "__index": "10",
- "dateCreated": "Tue, 30 Aug 2016 16:02:48 GMT"
- },
- {
- "id": "polypropylene-denim",
- "date": "Mon, 26 Sep 2016 12:00:00 GMT",
- "title": "POLYPROPYLENE DENIM",
- "subtitle": "APP EXCLUSIVE PREVIEW FROM 9/27 TO 10/3",
- "body": "A new interpretation of a classic.\r\nPolypropylene, a material with antibacterial properties, is the lightest available fiber on earth.\r\nEven very bulky garments made in this material astonish for their specific lightness.\r\nThese denim cloth weaves a polypropylene yarn into an indigo dyed cotton warp. The result is an impeccable denim tela with a drastically reduced weight: it has the look of a 19 ounce material but weighs only 10.\r\nThe jumpsuit, the outerwear pieces, the trousers and backpack have undergone the DARK treatment, a manual sanding and light stonewash as well as an enzyme wash.\r\n \r\nPOLYPROPYLENE INDIGO KNIT is made by weaving yarns, an innovative technique from the knitwear industry. For this project a yarn was especially created from indigo dyed polypropylene and cotton yarn with chain construction.\r\n \r\nThe INDIGO FLEECE features WASH treatment.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/ab51e2e6-19d6-4bfd-b8aa-7089bd49635b.jpg",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/091aa545-2605-4374-9437-e375d096d75c.jpg",
- "caption": ""
- }
- ],
- "__index": 10,
- "dateCreated": "Tue, 27 Sep 2016 14:02:10 GMT"
- },
- {
- "id": "polypropylene-denim-video",
- "date": "Tue, 27 Sep 2016 12:00:00 GMT",
- "title": "POLYPROPYLENE DENIM VIDEO",
- "subtitle": "APP EXCLUSIVE PREVIEW FROM 9/27 TO 10/3",
- "body": "",
- "link": "https://www.youtube.com/watch?v=twiCdserZ1M&feature=youtu.be",
- "store": "true",
- "__index": 11,
- "dateCreated": "Tue, 27 Sep 2016 14:02:50 GMT",
- "image": [
- {
- "uri": "https://i.ytimg.com/vi/twiCdserZ1M/maxresdefault.jpg",
- "width": "1920",
- "height": "1080",
- "caption": ""
- }
- ]
- },
- {
- "id": "garment-dyed-crinkle-reps-and-overalls-in-mussola-gommata",
- "date": "Wed, 05 Oct 2016 12:00:00 GMT",
- "title": "GARMENT DYED CRINKLE REPS AND OVERALLS IN MUSSOLA GOMMATA",
- "subtitle": "APP EXCLUSIVE FROM 10/6 TO 10/12",
- "body": "70223_Long down jacket in light nylon rep with an ultra-tight weaving construction. The resin coating of its inner face makes it wind resistant and mildly water resistant. \r\nThe dye bath gives the resin-treated fabric a slightly crinkled appearance on the surface.\r\n\r\nF0211_Overalls in Mussola Gommata, an exclusive fabric created by laminating an ultra light cotton muslin to an outer matte transparent polyurethane film. Rear and bottom front leg in Nylon Metal, with a metallic/iridescent appearance. The special double dye recipe provides the garment with unique shades. ",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/96660fe0-8b04-11e6-bd08-255bc61066e4.jpg",
- "width": "827",
- "height": "1240",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/96761570-8b04-11e6-bd08-255bc61066e4.jpg",
- "width": "827",
- "height": "1240",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/96800080-8b04-11e6-bd08-255bc61066e4.jpg",
- "width": "827",
- "height": "1240",
- "caption": ""
- }
- ],
- "__index": 12,
- "dateCreated": "Wed, 05 Oct 2016 14:04:36 GMT"
- },
- {
- "id": "limited-edition-ice-jacket-resin-t-shell-down_fluo-pink-",
- "date": "Tue, 11 Oct 2016 12:00:00 GMT",
- "title": "LIMITED EDITION: ICE JACKET RESIN-T SHELL DOWN_FLUO PINK ",
- "subtitle": "APP EXCLUSIVE FROM 10/13 TO 10/19",
- "body": "70999_Parka/Down Jacket limited edition featuring a fluorescent pink internal down. \r\n\r\nThe jacket has a very light translucent nylon shell that changes color according to temperature variations thanks to a special thermo-chromatic resin coating.
 \r\nInside the shell, a removable premium feather down jacket in fluorescent pink nylon creates further color play.

\r\n\r\nStone Island presents the new Ice Jacket, the evolution of the historical thermo-chromatic garment introduced in 1988.
\r\n\r\nThe Jacket will be on sale exclusively at Stone Island stores in New York and Los Angeles and on this App starting from 13 October.
",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/aab445e0-8fc1-11e6-bd08-255bc61066e4.jpg",
- "width": "1334",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/a997d960-8fc1-11e6-bd08-255bc61066e4.jpg",
- "width": "906",
- "height": "1181",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/a97cfe60-8fc1-11e6-bd08-255bc61066e4.jpg",
- "width": "906",
- "height": "1181",
- "caption": ""
- }
- ],
- "__index": 17,
- "dateCreated": "Tue, 11 Oct 2016 15:01:20 GMT"
- },
- {
- "id": "featherweight-leather-down",
- "date": "Wed, 19 Oct 2016 12:00:00 GMT",
- "title": "Featherweight Leather Down",
- "subtitle": "APP EXCLUSIVE FROM 10/20 TO 10/26",
- "body": "00196_Ultralight leather down jacket with inside insulation in nylon technical mesh filled with the finest down by direct injection. The insulation is heat sealed along the external leather seams with an artisan technique. 
Completely heat sealed. ",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f2c7b2d0-9607-11e6-bd08-255bc61066e4.jpg",
- "width": "1000",
- "height": "1335",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f2730320-9607-11e6-bd08-255bc61066e4.jpg",
- "width": "1000",
- "height": "749",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f2b5d880-9607-11e6-bd08-255bc61066e4.jpg",
- "width": "1000",
- "height": "749",
- "caption": ""
- }
- ],
- "__index": 18,
- "dateCreated": "Wed, 19 Oct 2016 14:26:10 GMT"
- },
- {
- "id": "prototype-research-series_video",
- "date": "Wed, 02 Nov 2016 12:00:00 GMT",
- "title": "Prototype Research Series_Video",
- "subtitle": "",
- "body": "The STONE ISLAND _ Prototype Research Series are native limited editions. Numbered garments are made in fabrics and with treatments born from research and experimentation processes that have not yet been industrialized.\r\n\r\n

Series 01 presents LASERING ON LIQUID REFLECTIVE BASE, a piece made in a highly reflective fabric, entirely hand sprayed with a resin-based color. 
A laser beam etches the surface, producing a graphic motif on the finished garment. 

\r\n\r\nThe first drop of the project will be on sale exclusively on the Stone Island App starting Friday, 4 November.",
- "link": "https://www.youtube.com/watch?v=PjhAdGglfa8",
- "store": "false",
- "__index": 19,
- "dateCreated": "Wed, 02 Nov 2016 17:05:50 GMT",
- "image": []
- },
- {
- "id": "prototype-research_series-01-br-701r1_lasering-on-liquid-reflective-base",
- "date": "Fri, 04 Nov 2016 12:00:00 GMT",
- "title": "PROTOTYPE RESEARCH_SERIES 01 <br>701R1_LASERING ON LIQUID REFLECTIVE BASE",
- "subtitle": "
LIMITED EDITION - NUMBERED 01 TO 100",
- "body": "Anorak in an exclusive custom made highly reflective fabric, thanks to a resin coating embedding thousands of glass microspheres, individually hand sprayed with a resin-based color and then oven dried.
A numerical control laser beam etches the surface, producing a three dimensional tone-on-tone effect on the finished garment.\r\n\r\nThe backside features the lasered Stone Island logo.
The high level of artisanship involved in the process makes each garment unique and unrepeatable. 

\r\n\r\nExclusively available on Stone Island App
",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/87b07d60-a29b-11e6-bd08-255bc61066e4.jpg",
- "width": "1211",
- "height": "1477",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/8832ccc0-a29b-11e6-bd08-255bc61066e4.jpg",
- "width": "1211",
- "height": "1477",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/88604560-a29b-11e6-bd08-255bc61066e4.jpg",
- "width": "1211",
- "height": "1477",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/88db8fe0-a29b-11e6-bd08-255bc61066e4.jpg",
- "width": "1211",
- "height": "1477",
- "caption": ""
- }
- ],
- "__index": 20,
- "dateCreated": "Fri, 04 Nov 2016 15:27:17 GMT"
- },
- {
- "id": "nikelab-x-stone-island_preview",
- "date": "Wed, 09 Nov 2016 12:00:00 GMT",
- "title": "NIKELAB X STONE ISLAND_PREVIEW",
- "subtitle": "",
- "body": "The third collaboration between NikeLab and Stone Island, concluding the year of the Windrunner.\r\n\r\nThe Nike Windrunner, remastered with parka length, volumes and functions, is made in JACQUARD GRID ON WOOL FUR, exclusively engineered by Stone Island for this co-lab.\r\n\r\nThe garment is composed of an outer face in a jacquard engineered tonic nylon rip stop grid that is bonded to a water and wind resistant membrane and to an inner 100% wool fur on cotton layer.\r\nNike’s distinctive Windrunner chevron is made in nylon tape. Through a complex garment dyeing recipe, the jacquard grid and the inner woolen fur both capture high definition contrasts and subtle tonal shades, while respecting the performance features of the membrane.\r\n\r\nNikeLab x Stone Island will be on sale from Thursday, November 17 in Stone Island flagship stores, on the Stone Island app, in NikeLab stores and on nike.com/nikelab.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/64ea2d80-a697-11e6-bd08-255bc61066e4.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/64f2e010-a697-11e6-bd08-255bc61066e4.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/64ed3ac0-a697-11e6-bd08-255bc61066e4.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- }
- ],
- "__index": 21,
- "dateCreated": "Wed, 09 Nov 2016 16:13:18 GMT"
- },
- {
- "id": "spring-summer_-017-lookbook",
- "date": "Tue, 13 Dec 2016 12:00:00 GMT",
- "title": "SPRING SUMMER_'017 LOOKBOOK",
- "subtitle": "",
- "body": "SS'017 Crinkle Reps Bomber special preview exclusive available from December 15th on the Stone Island App.",
- "link": "",
- "store": "false",
- "__index": 22,
- "dateCreated": "Tue, 13 Dec 2016 14:58:50 GMT",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/21ba23d0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/200ee4d0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/1e2f2850-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/1c8066e0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/197bb260-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/17803080-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/15b7f3a0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/13b4f7b0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/0579ee80-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/036dcad0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/01a9aca0-c145-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ff9ec170-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/fda98120-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/fb383300-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f918fc80-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f73bb100-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f4906720-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f27a7f70-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/f0134370-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/e950eab0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/e35404d0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/debfd6b0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/daa98b20-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d7f95f40-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d4cde8e0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d1b97cf0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ceb2cca0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/c87b4ec0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/c3b206e0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/bf0101f0-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/bac04b00-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/b823a720-c144-11e6-bd08-255bc61066e4.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- }
- ]
- },
- {
- "id": "stone-island_spring-summer_-017_video-teaser",
- "date": "Wed, 11 Jan 2017 12:00:00 GMT",
- "title": "Stone Island_Spring Summer_'017_Video teaser",
- "subtitle": "",
- "body": "",
- "link": "https://youtu.be/iia_oPZPY_Y",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/93699100-d8dd-11e6-abc7-59ceb822d9d2.jpg",
- "width": "1920",
- "height": "1080",
- "caption": ""
- }
- ],
- "__index": 23,
- "dateCreated": "Thu, 12 Jan 2017 15:42:24 GMT"
- },
- {
- "id": "stone-island_spring-summer_-017_icon-imagery",
- "date": "Thu, 12 Jan 2017 12:00:00 GMT",
- "title": "Stone Island_Spring Summer_'017_Icon Imagery",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d5f07520-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d4b13e60-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d57c7da0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d6bb1820-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d432bf90-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d4f54c40-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d33043b0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d58222f0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d28f21b0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d1f1a930-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d3219db0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d32658a0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d0611e20-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d131b490-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d07bf920-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d1d2fda0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d21006a0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/d01d5e60-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cec19ef0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cd455f30-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ce493aa0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ce8224f0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ce774f80-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cd49a4f0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cd0e49a0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cbc771c0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cac06200-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/c9ca6940-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cbbe22f0-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/cbba5260-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ca202a60-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/ca130b00-d8d8-11e6-abc7-59ceb822d9d2.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- }
- ],
- "__index": 24,
- "dateCreated": "Thu, 12 Jan 2017 15:46:04 GMT"
- },
- {
- "id": "nikelab-x-stone-island-sock-dart-mid_preview-stone-island-research-meets-nike-design",
- "date": "Thu, 19 Jan 2017 12:00:00 GMT",
- "title": "NIKELAB X STONE ISLAND SOCK DART MID_PREVIEW 
STONE ISLAND RESEARCH MEETS NIKE DESIGN",
- "subtitle": "",
- "body": "With this collaboration Stone Island has been challenged to apply its research skills on Nike fabrics in an interpretation of the Nike Sock Dart Mid Slip On Shoe. 
Applying the personal approach to investigation and the development of new technologies, Stone Island has tested several techniques in able to combine a graphic look and feel with functionality, in order to find the right meeting point between its know-how and Nike’s design.
The outcome is a glossy and elastic engineered zonal silicone print, adding structure and protection to the hyper-stretch breathable sandwich mesh used for the upper, still maintains the flexibility attributes that are signature to the Sock Dart. 

The new mid-cut silhouette has an extended collar with a leather grain deboss pattern and poly spandex lining. 
Glossy molded midfoot adjustable strap. 
New Duralon foam outsole: the forefoot features a multidirectional sipe pattern for water dispersion and improved traction.

NikeLab x Stone Island Sock Dart Mid will be released in three colorways: black, obsidian bleu and - exclusively at flagship stores - in sequoia green.
It will be on sale from Thursday, January 26 in Stone Island flagship stores, on the Stone Island app, in NikeLab stores and on nike.com/nikelab.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/a6e5c860-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "1000",
- "height": "563",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/89838140-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/89aa4320-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/89a7ab10-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/89378420-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/89548200-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/890c5570-de47-11e6-abc7-59ceb822d9d2.jpg",
- "width": "770",
- "height": "488",
- "caption": ""
- }
- ],
- "__index": 25,
- "dateCreated": "Thu, 19 Jan 2017 13:44:32 GMT"
- },
- {
- "id": "hand-corrosion_stone-island-app-exclusive-colorways",
- "date": "Sun, 22 Jan 2017 12:00:00 GMT",
- "title": "Hand Corrosion_Stone Island App Exclusive Colorways",
- "subtitle": "",
- "body": "An artisan process with corrosive paste
 that makes each garment unique and unrepeatable.
\r\n\r\nHAND CORROSION\r\nGarments are dyed with special recipes and then decolored by hand with a corrosive paste. 
The Stone Island badge is attached to the pieces during the manual fading and features the same corrosion marks.
Residual dye highlights the architecture of the garments. 
This artisan process makes each piece unique and unrepeatable.\r\n\r\nSTONE ISLAND APP EXCLUSIVE COLORWAYS \r\n\r\n45131_Yellow Field Jacket made in military-derived cotton satin, garment dyed with special corrodible colorants and then manually faded, steamed and intensely washed with the addition of an anti-drop agent.\r\n\r\n

541A1_Black cotton crew neck. Worked in brioche stitch knit. Garment dyed with special corrodible colorants and then faded by hand with a corrosive paste, steamed and intensely washed. ",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/020846f0-e17c-11e6-abc7-59ceb822d9d2.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/023d60b0-e17c-11e6-abc7-59ceb822d9d2.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- }
- ],
- "__index": 26,
- "dateCreated": "Mon, 23 Jan 2017 14:57:23 GMT"
- },
- {
- "id": "hand-corrosion-video",
- "date": "Mon, 23 Jan 2017 12:00:00 GMT",
- "title": "Hand Corrosion Video",
- "subtitle": "",
- "body": "An artisan process with corrosive paste\r\nthat makes each garment unique and unrepeatable.",
- "link": "https://youtu.be/1u6OovE0cY4",
- "store": "true",
- "__index": 27,
- "dateCreated": "Mon, 23 Jan 2017 15:21:19 GMT",
- "image": []
- },
- {
- "id": "nylon-metal-color-weft_app-exclusive-colorway",
- "date": "Tue, 14 Feb 2017 12:00:00 GMT",
- "title": "Nylon Metal Color Weft_App Exclusive Colorway",
- "subtitle": "",
- "body": "The evolution of one of the most iconic Stone Island fabrics\r\nUnprecedented iridescent colors \r\n\r\nNYLON METAL COLOR WEFT\r\n\r\n10245_Over shirt in Nylon Metal with colored weaved yarns. 
Two pockets with flap and button fastening on chest.
 Hidden zip fastening.

 \r\n\r\nThe metallic and iridescent aspect of Nylon Metal, one of the most versatile fabrics issued from the STONE ISLAND textile research, is enhanced with colored tones thanks to the tint of its weft yarns. Garments made in this fabric undergo an elaborate double recipe dye process enhancing its chromatic iridescences.

 \r\n\r\nAPP EXCLUSIVE FROM 2/16 TO 2/20",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/579783e0-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/57936530-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/57861ec0-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/57a16ef0-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/57a2a770-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/578e0e00-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/57ef67e0-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/undefined/58036510-f2c7-11e6-abc7-59ceb822d9d2.jpg",
- "width": "466",
- "height": "692",
- "caption": ""
- }
- ],
- "__index": 28,
- "dateCreated": "Tue, 14 Feb 2017 15:08:43 GMT"
- },
- {
- "id": "garment-dyed-plated-reflective",
- "date": "Thu, 02 Mar 2017 12:00:00 GMT",
- "title": "GARMENT DYED PLATED REFLECTIVE",
- "subtitle": "",
- "body": "The new Reflective Jacket is made with an innovative fabric engineered to be garment-dyed.\r\nIts nylon tela base is plated with a highly reflective resin coating, while the details in Mussola Gommata and fabric mixes highlight the garment-dye technique.\r\n\r\nSTONE ISLAND APP EXCLUSIVE COLORWAYS PINK QUARTZ AND AVIO BLUE\r\n\r\n453S6_Hooded jacket constructed with parts in Mussola Gommata. \r\nThe finished piece is garment dyed with specific double dye recipes lending color to the textile base while respecting the reflective surface.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b9fe8eb0-ff6b-11e6-8ca3-81835dc6c47b.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ba1a7b20-ff6b-11e6-8ca3-81835dc6c47b.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- }
- ],
- "__index": 29,
- "dateCreated": "Thu, 02 Mar 2017 17:17:11 GMT"
- },
- {
- "id": "stone-island-marina_tank-shield-featuring-multi-layer-fusion-technology-",
- "date": "Thu, 09 Mar 2017 12:00:00 GMT",
- "title": "STONE ISLAND MARINA_TANK SHIELD
FEATURING MULTI LAYER FUSION TECHNOLOGY ",
- "subtitle": "",
- "body": "703X1_Trench Coat characterized by highly performing 
fabric and construction. Fold-away hood into stand up collar.

\r\n\r\nGarments pre-assembled and then laminated to membrane-bonded panels, hermetically sealing the external base fabric and all seams.\r\n
The exclusive Multi Layer Fusion Technology guarantees maximum waterproofness and breathability.
\r\nStripes on sleeves and logo on back are created with laser technology, revealing the inside membrane.\r\n\r\n

APP EXCLUSIVE FROM 3/10 TO 3/16",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/782e15f0-04d9-11e7-9f22-910070d5f727.jpg",
- "width": "1304",
- "height": "1229",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/781adc10-04d9-11e7-9f22-910070d5f727.jpg",
- "width": "1571",
- "height": "2000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/779ea730-04d9-11e7-9f22-910070d5f727.jpg",
- "width": "1571",
- "height": "2000",
- "caption": ""
- }
- ],
- "__index": 30,
- "dateCreated": "Thu, 09 Mar 2017 15:03:13 GMT"
- },
- {
- "id": "stone-island-marina_corrosion-print_app-exclusive-preview",
- "date": "Thu, 23 Mar 2017 12:00:00 GMT",
- "title": "Stone Island Marina_Corrosion Print_App Exclusive Preview",
- "subtitle": "",
- "body": "T-shirt and bermuda shorts made in black printed cotton with placed reserve Stone Island Marina motif. 
A further striped motif is printed through the corrosion of the base fabric color.

\r\n\r\nBackpack in ultra-resistant waterproof PVC with waterproof zip fastening. 
Thermal printed Stone Island Marina graphic and stripes.\r\n\r\n

APP EXCLUSIVE FROM 3/24 TO 3/29",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/974bb740-0fd2-11e7-85aa-87522fc1a5c5.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/969bef40-0fd2-11e7-85aa-87522fc1a5c5.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- }
- ],
- "__index": 31,
- "dateCreated": "Thu, 23 Mar 2017 14:22:34 GMT"
- },
- {
- "id": "paper-poly-stone-island-house-check-grid",
- "date": "Mon, 10 Apr 2017 12:00:00 GMT",
- "title": "PAPER POLY STONE ISLAND HOUSE CHECK GRID",
- "subtitle": "",
- "body": "Paper Poly outerwear pieces are made in a very light resin-treated polyester rip-stop with a translucent look and a crispy paper-like feel, assembled and then garment dyed under pressure at 130°C.\r\nThe finished garments are printed with the SI House Check Grid motif using a sublimation transfer technique.\r\n\r\nAPP EXCLUSIVE FROM 4/11 TO 4/17",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8a252560-1df6-11e7-81ec-6b34eac4a5ea.jpg",
- "width": "519",
- "height": "693",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8a385f40-1df6-11e7-81ec-6b34eac4a5ea.jpg",
- "width": "519",
- "height": "693",
- "caption": ""
- }
- ],
- "__index": 32,
- "dateCreated": "Mon, 10 Apr 2017 14:04:03 GMT"
- },
- {
- "id": "prototype-research_series-02-preview_video",
- "date": "Fri, 21 Apr 2017 12:00:00 GMT",
- "title": "PROTOTYPE RESEARCH_SERIES 02 PREVIEW_VIDEO",
- "subtitle": "",
- "body": "SERIES 02_GARMENT DYED DYNEEMA® is a reversible jacket made in the strongest and most durable lightweight fiber in the world. \r\nThe result is a super light yet extremely tough Dyneema® flexible composite fabric with increased tear, puncture and abrasion resistance. \r\nSTONE ISLAND has engineered a ready-to-dye version by bonding it to an exclusive performance membrane with an ultra-light nylon tela backing. \r\nThe garments are cut and sewn, and the seams are entirely sealed by hand with Dyneema® re-enforced tape. \r\n\r\nThe limited edition jackets - 2 series of 50 pieces - are then garment dyed with 50 color recipes in the STONE ISLAND Color Laboratory.\r\n\r\nExclusively available on Stone Island App starting from Wednesday, April 26 at 10am EST.",
- "link": "https://www.youtube.com/watch?v=VZZiEbxP9Ok&t=35s",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9fa70c30-269f-11e7-91ba-a7137d42e321.jpg",
- "width": "900",
- "height": "507",
- "caption": ""
- }
- ],
- "__index": 33,
- "dateCreated": "Fri, 21 Apr 2017 14:41:09 GMT"
- },
- {
- "id": "prototype-research_series-02_-garment-dyed-dyneema-limited-edition",
- "date": "Mon, 24 Apr 2017 12:00:00 GMT",
- "title": "PROTOTYPE RESEARCH_SERIES 02_ GARMENT DYED DYNEEMA® LIMITED EDITION",
- "subtitle": "",
- "body": "Available in medium, large and extra-large, starting from Wednesday, 26th of April, from 10am EST on Stone Island App.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/48b785b0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/43b29460-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/400d0c00-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3c82acc0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3757e3f0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/327a50c0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2d6e3380-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/26359950-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/21702200-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1c69f830-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/11383760-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/0c408c80-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/05ca30e0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/00f8f9c0-290d-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fbe402e0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f722f860-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f13024a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ec3fa5b0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e6dd5220-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e02384e0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d9fe2f70-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d41fce10-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/cd9f6050-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/c1c5edd0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b9844810-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b0c5d130-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a9dcdda0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a146fd60-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9b531830-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/95c261a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8f8a95a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/89a0e9a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/811876e0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7b7f82f0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/76b29190-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/72bb18a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6d2cfa20-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/622ca990-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5c674e70-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/584f0710-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/54135930-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4fea48f0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4a6663a0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/45d39510-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/40214cc0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3b942380-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/35ca5b90-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/31d887f0-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2cb62390-290c-11e7-91ba-a7137d42e321.jpg",
- "width": "377",
- "height": "480",
- "caption": ""
- }
- ],
- "__index": 34,
- "dateCreated": "Mon, 24 Apr 2017 16:44:34 GMT"
- },
- {
- "id": "stone-island-fw_-017-018-lookbook",
- "date": "Thu, 08 Jun 2017 12:00:00 GMT",
- "title": "Stone Island FW_'017 '018 Lookbook",
- "subtitle": "",
- "body": "Fall Winter _'017 '018\r\nLookbook\r\nStoneisland.com",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ff898b60-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ff865710-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/feadf870-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fdffde20-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fdf04dc0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fcc00b20-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fe635ae0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fddd13e0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fe0f2060-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fc1dfec0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fb8170a0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fb1dccd0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fec55100-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fb4a0cf0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fb444090-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f920c450-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f9a3aff0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f9475f20-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f7138f30-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fa02e6f0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f8c29ec0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f7af8110-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f771dbd0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f61929a0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f5f61140-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f57807a0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f5d6f080-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f5994b40-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f3ce0120-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f3af0770-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f7abfea0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f272b6e0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f26856a0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f2938550-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f2a6bf30-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f2a119e0-4c23-11e7-9ac9-3bd4413ac605.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- }
- ],
- "__index": 35,
- "dateCreated": "Thu, 08 Jun 2017 14:03:03 GMT"
- },
- {
- "id": "fw_-017-018-preview_-nylon-metal-flock-exclusively-on-the-stone-island-app",
- "date": "Thu, 08 Jun 2017 12:00:00 GMT",
- "title": "FW_'017 '018 Preview_ Nylon Metal Flock Exclusively on the Stone Island App",
- "subtitle": "",
- "body": "
The grey weft and white warp color is the grounds of the metallic and tonic sheen of Nylon Metal, one of the most versatile fabrics born of STONE ISLAND textile research.\r\n
Nylon Metal Flock is paired with an adhesive film and then flocked with micronized cotton.\r\n
The finished piece undergoes an elaborate double dye procedure providing different shades, intensity and colors to all the garment textile fibers.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5abe8b20-4c24-11e7-9ac9-3bd4413ac605.jpg",
- "width": "750",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 36,
- "dateCreated": "Thu, 08 Jun 2017 14:03:07 GMT"
- },
- {
- "id": "fall-winter_-017-018-icon-imagery",
- "date": "Thu, 15 Jun 2017 12:00:00 GMT",
- "title": "FALL WINTER_'017 '018 ICON IMAGERY",
- "subtitle": "",
- "body": "Fall Winter_'017 '018\r\nIcon Imagery\r\nStoneisland.com",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9c02aaa0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9b91c060-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/99d9b020-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9a2c15e0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9a183fc0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9b491ea0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9863b1f0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/980676c0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9a40af50-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9bb749c0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/97a56b00-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/96b0d1d0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/96632700-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/96ac8c10-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9651e8f0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/955c3e50-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/93f3ada0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/955d9de0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/943e2420-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/938a3d70-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/945a1090-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9252f5f0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/912d3aa0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/910407c0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9183e620-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/92791b90-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/915d7260-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/90563b90-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8e605f00-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8834ef10-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/847994c0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8195fcd0-51f4-11e7-9ac9-3bd4413ac605.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 37,
- "dateCreated": "Thu, 15 Jun 2017 18:03:05 GMT"
- },
- {
- "id": "fw-017-018-collection-video",
- "date": "Thu, 06 Jul 2017 12:00:00 GMT",
- "title": "FW '017 '018 COLLECTION VIDEO",
- "subtitle": "",
- "body": "",
- "link": "https://www.youtube.com/watch?v=hw85wCaceMQ&feature=youtu.be",
- "store": "false",
- "__index": 38,
- "dateCreated": "Thu, 06 Jul 2017 14:29:35 GMT",
- "image": []
- },
- {
- "id": "the-new-stone-island-los-angeles-flagship-store",
- "date": "Thu, 03 Aug 2017 12:00:00 GMT",
- "title": "THE NEW STONE ISLAND LOS ANGELES FLAGSHIP STORE",
- "subtitle": "",
- "body": "Stone Island changes location in Los Angeles and moves to 101 North La Brea Avenue.\r\n\r\nThe independent building, with large show windows facing the street features 500 square meters of floor area making it the largest single-brand store for the Stone Island. \r\nLocated at the intersection of N La Brea and 1st Street, the store has been designed to give ample space to the emotional area and the Stone Island and Stone Island Shadow Project collections.\r\n\r\nSTONE ISLAND LOS ANGELES\r\n101 N. La Brea Avenue, Los Angeles, CA 90036",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ef7c14e0-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f1a9ca50-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f12c35e0-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/efc049d0-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f1c19810-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f082fd90-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f232d070-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f149d000-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f1a47320-7851-11e7-b3ab-097f24535e05.jpg",
- "width": "1200",
- "height": "640",
- "caption": ""
- }
- ],
- "__index": 39,
- "dateCreated": "Thu, 03 Aug 2017 14:00:25 GMT"
- },
- {
- "id": "featherweight-leather-with-primaloft-insulation-technology",
- "date": "Thu, 31 Aug 2017 12:00:00 GMT",
- "title": "FEATHERWEIGHT LEATHER
 WITH PRIMALOFT® INSULATION TECHNOLOGY",
- "subtitle": "",
- "body": "Featherweight Leather Down garments are made in ultra-lightweight leather bonded to a very fine polyester organza and lined with a PrimaLoft® layer, an exclusive blend of fibers which provide outstanding insulation capacity, delivering the highest warmth-to-weight ratio of all synthetic insulation.\r\n\r\n

APP EXCLUSIVE FROM 8/31 TO 9/6",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/012e9090-8e56-11e7-b3ab-097f24535e05.jpg",
- "width": "778",
- "height": "1037",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/01337290-8e56-11e7-b3ab-097f24535e05.jpg",
- "width": "778",
- "height": "1037",
- "caption": ""
- }
- ],
- "__index": 40,
- "dateCreated": "Thu, 31 Aug 2017 14:18:27 GMT"
- },
- {
- "id": "ice-knit_app-exclusive-preview",
- "date": "Fri, 08 Sep 2017 12:00:00 GMT",
- "title": "Ice Knit_App Exclusive Preview",
- "subtitle": "",
- "body": "Stone Island research experiments the thermo-sensitive sweater <u>for the first time
</u>\r\n\r\nGarments are created with a double knit construction: the outer face is made in an exclusive thermo-sensitive yarn that drastically changes color when exposed to cold, while the inner one is in pure wool.
 From yellow to orange, from emerald to military green.

\r\n\r\nAPP EXCLUSIVE FROM 9/11 TO 9/13",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bf5acb50-94a6-11e7-b3ab-097f24535e05.jpg",
- "width": "698",
- "height": "911",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bfd3cbe0-94a6-11e7-b3ab-097f24535e05.jpg",
- "width": "698",
- "height": "911",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/c0cc0e90-94a6-11e7-b3ab-097f24535e05.jpg",
- "width": "467",
- "height": "622",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bff22950-94a6-11e7-b3ab-097f24535e05.jpg",
- "width": "698",
- "height": "911",
- "caption": ""
- }
- ],
- "__index": 41,
- "dateCreated": "Fri, 08 Sep 2017 15:05:02 GMT"
- },
- {
- "id": "frost-finish_stone-island-app-exclusive-style",
- "date": "Wed, 20 Sep 2017 12:00:00 GMT",
- "title": "Frost Finish_Stone Island App Exclusive Style",
- "subtitle": "",
- "body": " A treatment that lends an ultimate frozen look
 that is unique and <u>exclusive</u> to each garment.\r\n\r\nNew treatment on the finished garment which creates a frosted look to outerwear, sweaters, sweatshirts and pants, that is unique and exclusive to each piece.
\r\nIn TELA NYLON DOWN WITH DUST COLOR FROST FINISH garments, made in a lightweight ultra-tight weave nylon tela and down filled, the addition of a special agent makes them anti-drop.\r\nOn fleecewear and knitwear pieces the WHITE FROST treatment deposits a white coating to give a frosted effect on the outer side, while sweaters realized with COLOR CORROSION TREATMENT undergo a corrosion process.
\r\n\r\nG0453_VEST IN TELA NYLON DOWN\r\n
STONE ISLAND APP EXCLUSIVE STYLE
\r\nAVAILABLE IN 2 COLORWAYS, BLACK AND PISTACHIO GREEN
\r\nFROM 9/20 TO 9/26",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e425d0b0-9de3-11e7-b3ab-097f24535e05.jpg",
- "width": "778",
- "height": "1037",
- "caption": ""
- }
- ],
- "__index": 42,
- "dateCreated": "Wed, 20 Sep 2017 13:57:48 GMT"
- },
- {
- "id": "6715-stone-island_frost-finish-watch-the-video",
- "date": "Wed, 20 Sep 2017 12:00:00 GMT",
- "title": "6715 STONE ISLAND_FROST FINISH WATCH THE VIDEO",
- "subtitle": "",
- "body": "",
- "link": "https://youtu.be/xL8KZy7bpvs",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8618cff0-9e1e-11e7-b3ab-097f24535e05.png",
- "width": "600",
- "height": "252",
- "caption": ""
- }
- ],
- "__index": 43,
- "dateCreated": "Wed, 20 Sep 2017 16:11:49 GMT"
- },
- {
- "id": "stone-island-supreme-fw_-017-018-preview",
- "date": "Mon, 02 Oct 2017 12:00:00 GMT",
- "title": "Stone Island / Supreme FW_'017 '018 Preview",
- "subtitle": "",
- "body": "Anorak in Poly Cover Composite, a matte, colorless and opaque, water and wind resistant, polyurethane film. The garment dyeing technique colors the film without affecting its transparency.\r\n\r\n

Down jacket in Lamy Cover, a hyper light nylon tela, digitally printed with exclusive Supreme artwork and then laminated with an outer polyurethane film. 
The piece is assembled and then directly injected with the finest feathers. The direct injection of feathers enhances the overall lightness of the garment. 
Even the Supreme six panels cap is made in Stone Island Lamy Cover.

\r\n\r\nHooded sweatshirt in cotton fleece. Garment dyed. Snap closure pouch pocket on front. Reflective transfer print of the Stone Island/Supreme Compass at center front. Supreme Reflective transfer print on back. Reflective transfer print patches on hood and lower sleeves. Made exclusively for Supreme.\r\nSweat pants in cotton fleece with reflective transfer print of the Stone Island/Supreme Compass on left thigh. 

\r\n\r\nShort sleeve T-shirt in cotton jersey with all over pigment print, placed Stone Island/Supreme Compass at center front and placed stripes on sleeves. Same fabric in collar. Twenty minute stonewashing. The white colorway has the Stone Island/Supreme Compass and stripes printed on cotton jersey. Made exclusively for Supreme.

\r\n\r\nAvailable starting October 5th in Europe and North America and from October 7th in the Far East - exclusively on the Stone Island App for US and Canada, at Stone Island flagship stores*, on stoneisland.com, and stoneisland.co.uk.
Available on supremenewyork.com and in Supreme** stores.

\r\n\r\n*Milan, Rome, Florence, Verona, Turin, Forte dei Marmi, Riccione, London, Paris, Cannes, Munich, Hamburg, Sylt, Amsterdam, Antwerp, Stockholm, New York, Los Angeles and Seoul.
\r\n\r\n
** New York, Los Angeles, London, Paris, Tokyo, Nagoya, Osaka and Fukuoka.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bf306b90-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "672",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bb8c42c0-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "678",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b8ded600-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "751",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b6aa69d0-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "671",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b42370d0-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "675",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b0c4dc80-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "676",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ada91d90-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "678",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a22210d0-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1200",
- "height": "800",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9f9ff9d0-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1200",
- "height": "800",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/839c3140-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "600",
- "height": "401",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/80244890-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "600",
- "height": "401",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/31d71e10-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1200",
- "height": "800",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/62a29290-a760-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1200",
- "height": "800",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6d68b5c0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/502da5b0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4cdd9050-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/49e3ff60-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/47400880-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/446215e0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/41e88a60-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3d918c50-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3aaa23d0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/35848b20-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/32a0cc20-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2e4efe30-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2b75ed90-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2867c330-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/24b876d0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1cc56640-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/149f37c0-a75f-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/caee78c0-a75e-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/c3319360-a75e-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b8d5c030-a75e-11e7-adc3-e10033f4bfaa.jpg",
- "width": "1000",
- "height": "667",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b025ef50-a75e-11e7-adc3-e10033f4bfaa.jpg",
- "width": "600",
- "height": "400",
- "caption": ""
- }
- ],
- "__index": 44,
- "dateCreated": "Mon, 02 Oct 2017 11:03:47 GMT"
- },
- {
- "id": "stone-island-porter-co-lab-br-si-house-check-jacquard-on-nylon-metal-black-watro",
- "date": "Thu, 19 Oct 2017 12:00:00 GMT",
- "title": "STONE ISLAND / PORTER® CO-LAB
<br>SI HOUSE CHECK JACQUARD ON NYLON METAL BLACK WATRO",
- "subtitle": "",
- "body": "Three models made by Porter®, the Japanese cult brand, are reinterpreted by Stone Island's research, textile experimentation and garment dyeing know how.\r\n\r\nBackpack, Duffle bag and Portfolio in Nylon Metal Black Watro with jacquard motive. 
\r\nThe rip-stop design on the surface is derived from the Stone Island House Check and integrates the star in the vertical and horizontal checked pattern.\r\n\r\nThe fabric has been resin treated inside to achieve a mild water resistance.
The bag project has been studied and engineered to use the garment dye technique: garment dyed through double color recipe with the addition of a special anti-drop agent.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b609d1a0-b4d5-11e7-adc3-e10033f4bfaa.jpg",
- "width": "720",
- "height": "960",
- "caption": ""
- }
- ],
- "__index": 45,
- "dateCreated": "Thu, 19 Oct 2017 14:00:15 GMT"
- },
- {
- "id": "stone-island-porter-co-lab-br-si-house-check-jacquard-on-nylon-metal-black-watro-video",
- "date": "Thu, 19 Oct 2017 12:00:00 GMT",
- "title": "STONE ISLAND / PORTER® CO-LAB
<br>SI HOUSE CHECK JACQUARD ON NYLON METAL BLACK WATRO VIDEO",
- "subtitle": "",
- "body": "",
- "link": "https://www.youtube.com/watch?v=ARrlueBcWb0&feature=youtu.be",
- "store": "true",
- "__index": 46,
- "dateCreated": "Thu, 19 Oct 2017 14:11:16 GMT",
- "image": []
- },
- {
- "id": "president-s-knit-david-tc_app-exclusive-preview",
- "date": "Thu, 26 Oct 2017 12:00:00 GMT",
- "title": "President's Knit & David-TC_App Exclusive Preview",
- "subtitle": "",
- "body": "546A2_PRESIDENT'S KNIT
Hooded cardigan in heavy lambswool. Hood in reversed sheepskin. 
Inside the garment, removable bomber that can be worn alone, reversible, in resin-coated nylon with welt pockets on one side and fleece patch pockets on the other, padded with a lightweight layer of PrimaLoft®.\r\n\r\n42049_DAVID-TC
Hooded jacket in David-TC. Starting with an initial star-shaped Japanese polyester/polyamide substrate, garments in DAVID-TC are assembled and then simultaneously dyed and treated with an anti-drop agent. Neck and hood in reversed sheepskin. Detachable lining in ultra light nylon weighing only 26 grams per meter squared. Direct feather injection with premium fathers. \r\n\r\nAPP EXCLUSIVE FROM 10/26 TO 11/1",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b38f1b20-ba5b-11e7-adc3-e10033f4bfaa.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b714e680-ba5b-11e7-adc3-e10033f4bfaa.jpg",
- "width": "776",
- "height": "1012",
- "caption": ""
- }
- ],
- "__index": 47,
- "dateCreated": "Thu, 26 Oct 2017 14:44:43 GMT"
- },
- {
- "id": "garment-dyed-crinkle-reps-ny",
- "date": "Thu, 02 Nov 2017 12:00:00 GMT",
- "title": "GARMENT DYED CRINKLE REPS NY",
- "subtitle": "",
- "body": "Lightweight nylon rep with an ultra-tight weaving construction.\r\n
The resin coating of its inner face makes it wind resistant and mildly water resistant.\r\nThe uneven penetration of the dye bath in the resin-coated fabric gives the surface a blurred, marbled appearance. \r\nGarment Dyed Crinkle Reps NY Down pieces are then padded with the finest down.\r\n\r\nAPP EXCLUSIVE FROM 11/2 TO 11/8",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d5f03c00-bfe0-11e7-adc3-e10033f4bfaa.jpg",
- "width": "576",
- "height": "768",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d64c65c0-bfe0-11e7-adc3-e10033f4bfaa.jpg",
- "width": "767",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d6acae30-bfe0-11e7-adc3-e10033f4bfaa.jpg",
- "width": "767",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d7f756a0-bfe0-11e7-adc3-e10033f4bfaa.jpg",
- "width": "767",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 48,
- "dateCreated": "Thu, 02 Nov 2017 15:16:58 GMT"
- },
- {
- "id": "pertex-quantum-y",
- "date": "Thu, 23 Nov 2017 12:00:00 GMT",
- "title": "PERTEX QUANTUM Y",
- "subtitle": "",
- "body": " This next generation technological performance fabric pairs extreme lightness with high strength and durability.\r\nIn Pertex Quantum Y pieces, the unique Y-shaped structure of the yarns interlocks for a more stable construction of the material and an extremely fluid and smooth surface aspect.\r\n
DWR (Durable Water Repellence) technology gives the fabric greater water-repellent properties that last over time.\r\nThe garments are padded with the finest down or a lightweight substrate in PrimaLoft®.\r\n\r\n43421_APP EXCLUSIVE FROM 11/23 TO 11/29",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3bf39860-d05f-11e7-b5b4-051373ff3553.jpg",
- "width": "559",
- "height": "729",
- "caption": ""
- }
- ],
- "__index": 49,
- "dateCreated": "Thu, 23 Nov 2017 15:02:46 GMT"
- },
- {
- "id": "ss_-018-preview_exclusively-on-the-stone-island-app",
- "date": "Tue, 12 Dec 2017 12:00:00 GMT",
- "title": "SS_'018 Preview_Exclusively on the Stone Island App",
- "subtitle": "",
- "body": "Stone Island innovation in fabrics and treatments applied to garments designed with inspiration taken from sportswear and military uniforms.\r\nReworking concepts, techniques and aesthetics from the archive.\r\nThe seasonal color card includes dark sophisticated tones such as musk and pastel tones, for instance light green.\r\n\r\nSPRING SUMMER COLLECTION PREVIEW\r\nAPP EXCLUSIVE FROM 12/12 TO 12/18",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fccc3780-df4c-11e7-ba17-01c29471a12d.jpg",
- "width": "1014",
- "height": "720",
- "caption": ""
- }
- ],
- "__index": 50,
- "dateCreated": "Tue, 12 Dec 2017 15:06:54 GMT"
- },
- {
- "id": "stone-island-ss_-018-lookbook",
- "date": "Tue, 12 Dec 2017 12:00:00 GMT",
- "title": "Stone Island SS_'018 Lookbook",
- "subtitle": "",
- "body": "
View the SS_'018 Lookbook on stoneisland.com and on the Stone Island App.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5d196270-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5d84f580-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5d7a9540-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5ca1c170-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5cf49c60-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5be5c470-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5caa9b10-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5ca32100-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5b5e6c00-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5bf13620-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5ac3b2a0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5accb350-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5bc19aa0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5a386290-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/59e64af0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/58ef8ee0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/58543940-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/582e3ab0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5953cef0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/58c04180-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5a74cf50-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/577041e0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/573beb70-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/576f5780-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/56533920-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/576e9430-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/56422220-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/554d13c0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/54f24990-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/554dfe20-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/57369440-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/551ed7d0-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/53b44b50-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/540eee70-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5925ba10-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/539eee90-df4d-11e7-ba17-01c29471a12d.jpg",
- "width": "652",
- "height": "978",
- "caption": ""
- }
- ],
- "__index": 51,
- "dateCreated": "Tue, 12 Dec 2017 15:06:58 GMT"
- },
- {
- "id": "spring-summer_-018-icon-imagery",
- "date": "Tue, 09 Jan 2018 12:00:00 GMT",
- "title": "SPRING SUMMER_'018 ICON IMAGERY",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b3c4de40-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b1745e90-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/add39120-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a7b5b5c0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a483fdd0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9c490ed0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/92414f10-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8bdddf30-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7dfaba00-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8444fc90-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/727dbf60-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/699d4190-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/59050e80-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4ff877a0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4b2ac2f0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3f61a420-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/38b19ae0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/32b9be10-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2d680c50-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1bb2f790-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/13d829f0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/0f4f9490-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/07c1ae70-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/027776c0-f54d-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fe297960-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/faff89a0-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f761a260-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e96bdf90-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e101f150-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d705a340-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d4abd4c0-f54c-11e7-ba17-01c29471a12d.jpg",
- "width": "667",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 52,
- "dateCreated": "Tue, 09 Jan 2018 14:59:41 GMT"
- },
- {
- "id": "6815-stone-island-ss-018_collection-video",
- "date": "Tue, 30 Jan 2018 12:00:00 GMT",
- "title": "6815 Stone Island SS '018_Collection Video",
- "subtitle": "",
- "body": "",
- "link": "https://youtu.be/lhEEW5fudQk",
- "store": "false",
- "__index": 53,
- "dateCreated": "Tue, 30 Jan 2018 15:51:41 GMT",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/991f2c10-05d5-11e8-ba17-01c29471a12d.jpg",
- "width": "1920",
- "height": "1080",
- "caption": ""
- }
- ]
- },
- {
- "id": "foam-resin-treated-denim",
- "date": "Thu, 15 Feb 2018 12:00:00 GMT",
- "title": "FOAM RESIN TREATED DENIM",
- "subtitle": "",
- "body": "Blouson in 11¾ stretch washed denim with a 3/1 twill weave, made with a sulfur based cotton yarn dyeing process. After weaving, the fabric undergoes a special foam treatment leaving a light and impalpable pigmented resin base on the outer side. \r\nThe finished garment undergoes the traditional denim washes.\r\n\r\nAPP EXCLUSIVE FROM 2/15 TO 2/21",
- "link": "",
- "store": "true",
- "__index": 54,
- "dateCreated": "Thu, 15 Feb 2018 15:04:37 GMT",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8ec987e0-1261-11e8-94f4-9bec9d46ff0b.jpg",
- "width": "600",
- "height": "801",
- "caption": ""
- }
- ]
- },
- {
- "id": "textured-nylon-sneaker-",
- "date": "Thu, 22 Feb 2018 12:00:00 GMT",
- "title": "TEXTURED NYLON SNEAKER ",
- "subtitle": "",
- "body": "Tennis-style sneaker in high-tenacity structured nylon. Stone Island Compass logo engraved on the leather tongue. Colored rubber sole. 
\r\nMade in Italy by Diemme.

\r\n\r\nAPP EXCLUSIVE FROM 2/22 TO 2/28",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e17a01b0-17e1-11e8-94f4-9bec9d46ff0b.jpg",
- "width": "742",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 55,
- "dateCreated": "Thu, 22 Feb 2018 15:05:58 GMT"
- },
- {
- "id": "ghost-piece",
- "date": "Thu, 01 Mar 2018 12:00:00 GMT",
- "title": "GHOST PIECE",
- "subtitle": "",
- "body": "WHITE GHOST 
\r\nSTONE ISLAND APP EXCLUSIVE COLORWAY\r\n\r\nS

702F1_Tank Shield technical trench coat, made in an opaque polyester tela, preassembled and then entirely laminated with overlapping panels made by a performing membrane. Raised collar with fold-away hood. 

\r\n\r\n559FA_Cotton crew neck, with cotton jersey insert on shoulders. Ribbed neckline, cuffs and bottom hem.

\r\n\r\nAVAILABLE FROM 03/01 TO 03/07",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d522cf10-1d44-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d4a33ed0-1d44-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- }
- ],
- "__index": 56,
- "dateCreated": "Thu, 01 Mar 2018 14:58:46 GMT"
- },
- {
- "id": "garment-dyed-plated-reflective-with-ny-jersey-r",
- "date": "Thu, 08 Mar 2018 12:00:00 GMT",
- "title": "GARMENT DYED PLATED REFLECTIVE WITH NY JERSEY-R",
- "subtitle": "",
- "body": "Garments made in two exclusive Stone Island engineered fabrics. A nylon tela base, that can be garment dyed, plated with a highly reflective resin substance containing thousands of glass microspheres and a double layer of nylon jersey with an inner performance membrane.\r\nThe finished pieces are dyed with special recipes that color all the fabric parts while respecting the reflective surface.
\r\n\r\nSTONE ISLAND APP EXCLUSIVE COLORWAY
\r\n\r\n44999_Anorak with chimney collar. The upper part is made in NY Jersey-R, the lower one in Reflective fabric.\r\n\r\nAVAILABLE FROM 3/8 TO 3/14",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/d48df820-22e1-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "290",
- "height": "407",
- "caption": ""
- }
- ],
- "__index": 57,
- "dateCreated": "Thu, 08 Mar 2018 15:03:19 GMT"
- },
- {
- "id": "hexagon-br-pertex-quantum-y-and-garments-in-quilted-jersey",
- "date": "Thu, 15 Mar 2018 12:00:00 GMT",
- "title": "HEXAGON<br>PERTEX QUANTUM Y AND GARMENTS IN QUILTED JERSEY",
- "subtitle": "",
- "body": "The hexagonal motif is explored in fleecewear garments - made in jersey padded in wadding - and in outerwear pieces in Pertex Quantum Y, quilted with an inner layer of PrimaLoft®.\r\n\r\nThis next generation technological performance fabric pairs extreme lightness with high strength and durability. The unique Y-shaped structure of the yarns provides a more stable construction of the material and an extremely fluid and smooth surface aspect.\r\n\r\naspect. 
DWR (Durable Water Repellence) technology gives the fabric greater water-repellent properties that last over time.\r\n\r\nAPP EXCLUSIVE FROM 3/15 TO 3/21",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/35d803f0-2864-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "519",
- "height": "691",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/35d19b50-2864-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "519",
- "height": "691",
- "caption": ""
- }
- ],
- "__index": 58,
- "dateCreated": "Thu, 15 Mar 2018 15:10:12 GMT"
- },
- {
- "id": "alligator-camo-preview-video",
- "date": "Mon, 19 Mar 2018 12:00:00 GMT",
- "title": "ALLIGATOR CAMO PREVIEW VIDEO",
- "subtitle": "",
- "body": "",
- "link": "https://youtu.be/oxkXZvcX6nY",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/13b753b0-2b80-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "1267",
- "height": "714",
- "caption": ""
- }
- ],
- "__index": 60,
- "dateCreated": "Mon, 19 Mar 2018 14:16:34 GMT"
- },
- {
- "id": "alligator-camo-preview",
- "date": "Mon, 19 Mar 2018 12:00:00 GMT",
- "title": "ALLIGATOR CAMO PREVIEW",
- "subtitle": "",
- "body": "The ‘’alligator’’ camouflage motif, inspired by the Polish military files, is developed in all product families, with mix fabric monocromatic details.\r\nThe pattern has been hand painted, then photographed and printed with a series of techniques and 6 colors printing process: 5 pigment colors and 1 colored polyurethane with raised rubberized aspect.\r\nOuterwear pieces and bermudas are made in LIGHT COTTON-NYLON REP and LIGHT COTTON-NYLON TELA.\r\nThe theme is also applied to sweatshirts and t-shirts.\r\n\r\nEXCLUSIVELY AVAILABLE ON THE STONE ISLAND APP
FROM 3/22 TO 4/4",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6ffed4e0-2b80-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "779",
- "height": "1037",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/701b84a0-2b80-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "1000",
- "height": "709",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6f17d040-2b80-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "519",
- "height": "691",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/713a8930-2b80-11e8-bdc7-dbb82265d0f0.jpg",
- "width": "1128",
- "height": "800",
- "caption": ""
- }
- ],
- "__index": 61,
- "dateCreated": "Mon, 19 Mar 2018 14:19:06 GMT"
- },
- {
- "id": "membrana-3l-tc_stone-island-app-preview",
- "date": "Thu, 05 Apr 2018 12:00:00 GMT",
- "title": "Membrana 3L TC_Stone Island App Preview",
- "subtitle": "",
- "body": "Parka with fold-away hood in 3 layer light performance fabric made from an opaque nylon outer face laminated to a breathable, water resistant membrane, protected by an imperceptible polyester base. Garment dyed.\r\nThe addition of a special agent to the dye formula makes the piece anti-drop.\r\n\r\nAVAILABLE ON THE STONE ISLAND APP 
FROM 4/5 TO 4/11",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/38ac44c0-38da-11e8-bedb-55eaec759d1d.jpg",
- "width": "613",
- "height": "800",
- "caption": ""
- }
- ],
- "__index": 62,
- "dateCreated": "Thu, 05 Apr 2018 14:04:20 GMT"
- },
- {
- "id": "light-soft-shell-si-check-grid",
- "date": "Thu, 12 Apr 2018 12:00:00 GMT",
- "title": "LIGHT SOFT SHELL SI CHECK GRID",
- "subtitle": "",
- "body": "Light bomber jacket in Light Soft Shell, a 2.5 layer performance fabric. The polyester jersey-look outer face is laminated to a breathable, water and wind proof inner membrane, customized with the STONE ISLAND Check Grid print. The construction of the outer fabric bestows the garment with excellent flexibility and comfort.\r\n\r\nAVAILABLE ON THE STONE ISLAND APP 
FROM 4/12 TO 4/18",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/14a6bad0-3e5a-11e8-bedb-55eaec759d1d.jpg",
- "width": "1334",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 63,
- "dateCreated": "Thu, 12 Apr 2018 14:02:07 GMT"
- },
- {
- "id": "stone-island-prototype-research_series-03-extreme-compacting-process-on-nylon-base",
- "date": "Wed, 18 Apr 2018 12:00:00 GMT",
- "title": "STONE ISLAND PROTOTYPE RESEARCH_SERIES 03 EXTREME COMPACTING PROCESS ON NYLON BASE",
- "subtitle": "",
- "body": "Stone Island continues it’s limited edition project, to give light to research themes that due to their complexity in experimentation have still not yet been industrialized. This is how unique projects with a limited number of garments come to life, created by innovative technologies with fabric and treatments still unreleased.\r\n\r\nEXTREME COMPACTING PROCESS ON NYLON BASE is made of a mix of 4 polyamide based canvas fabrics, with different weights, composition and shrinkage. \r\nThe finished piece is then treated with a complex dyeing process that colors, shrinks and compacts the materials to reproportion the aesthetics thanks to Stone Island’s expertise in pattern making and to the know-how of its color laboratory.\r\n\r\nOn sale in May.",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b5372f60-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b54ade70-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b54fe780-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b55788a0-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b586aef0-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b584b320-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b5c73a60-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b63899d0-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b5f8d1b0-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b63c4350-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b601d260-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/b60f3fe0-431f-11e8-bedb-55eaec759d1d.jpg",
- "width": "533",
- "height": "347",
- "caption": ""
- }
- ],
- "__index": 64,
- "dateCreated": "Wed, 18 Apr 2018 15:49:03 GMT"
- },
- {
- "id": "ss_-018-collection-salmon",
- "date": "Thu, 03 May 2018 12:00:00 GMT",
- "title": "SS_ '018 COLLECTION: SALMON",
- "subtitle": "",
- "body": "The color card includes pastel tones like salmon, developed in different garments.\r\n\r\n

G0124_ Vest in an ultra-light nylon fabric and filled with the finest feathers, specifically treated to withstand the garment-dyeing process.

\r\n\r\n106WN_Long sleeve shirt in brushed cotton tela and garment dyed to create the OLD effect.
\r\n\r\n1023_Bomber jacket in 3 layer light performance fabric.

\r\n\r\nAVAILABLE ON THE STONE ISLAND APP 
FROM 5/3 TO - 5/9",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8440e550-4edb-11e8-8a6b-3521187b68ec.jpg",
- "width": "750",
- "height": "1000",
- "caption": ""
- }
- ],
- "__index": 65,
- "dateCreated": "Thu, 03 May 2018 14:08:59 GMT"
- },
- {
- "id": "prototype-research_series-03-preview-br-limited-edition-numbered-01-to-100",
- "date": "Tue, 08 May 2018 12:00:00 GMT",
- "title": "PROTOTYPE RESEARCH_SERIES 03 PREVIEW <br>LIMITED EDITION - NUMBERED 01 TO 100",
- "subtitle": "",
- "body": "The Prototype Series are limited native editions created by Stone Island to give light to research that, given their complexity of experimentation, are not yet industrializable.\r\n Unique projects of a few numbered items made with innovative technologies, in new fabrics and treatments.\r\n\r\nSERIES 03_EXTREME COMPACTING PROCESS ON NYLON BASE is a jumpsuit made of a mix of 4 polyamide based canvas fabrics, with different weights, compositions and shrinkages. \r\nThe finished piece is then treated with a complex high temperature dyeing process that colors, shrinks and compacts the materials from 0 to over 25%, re-proportioning the aesthetics thanks to Stone Island’s expertise in pattern making and to the know-how of its color laboratory. \r\nThe different reactions to the treatment characterizes the hand and the appearance of all fabrics used for the garment.\r\nThe addition of a special agent to the dye formula makes the piece anti-drop.\r\n\r\nJumpsuit composed of a jacket and pants joined by a zip at waist - also wearable separately - loosely inspired by a Soviet pilot suit. On the front and on the back legs, large set up with two crossing drawstrings, to tighten the piece. Big embroidery of the Stone Island Compass logo on the back. Jacket with standing collar closed by asymmetrical zip. Pants with two patch pockets closed by hidden snaps.\r\n\r\nExclusively available online starting from Thursday, May 10 starting from 10am EST:\r\n\r\n- stoneisland.com\r\n- stoneisland.co.uk, for the United Kingdom\r\n- Stone Island App, for United States and Canada",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/265da8a0-52c4-11e8-8a6b-3521187b68ec.jpg",
- "width": "770",
- "height": "468",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2650b050-52c4-11e8-8a6b-3521187b68ec.jpg",
- "width": "770",
- "height": "468",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/266c9cc0-52c4-11e8-8a6b-3521187b68ec.jpg",
- "width": "770",
- "height": "468",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/26bdca00-52c4-11e8-8a6b-3521187b68ec.jpg",
- "width": "770",
- "height": "468",
- "caption": ""
- }
- ],
- "__index": 67,
- "dateCreated": "Tue, 08 May 2018 13:34:23 GMT"
- },
- {
- "id": "prototype-research_series-03_video",
- "date": "Tue, 08 May 2018 12:00:00 GMT",
- "title": "Prototype Research_Series 03_Video",
- "subtitle": "",
- "body": "WATCH THE VIDEO",
- "link": "https://www.youtube.com/watch?v=nHPGM0gYVsM",
- "store": "false",
- "__index": 68,
- "dateCreated": "Thu, 10 May 2018 16:58:47 GMT",
- "image": []
- },
- {
- "id": "fall-winter_-018-019-icon-imagery",
- "date": "Thu, 07 Jun 2018 12:00:00 GMT",
- "title": "FALL WINTER_'018 '019 ICON IMAGERY",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/28b00250-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/266bdeb0-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/23ae9370-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/219c7c50-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1e6ce740-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1bb938f0-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/1942e1c0-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/16793a70-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/138aa600-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/10bae430-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/0dbf5770-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/094f0500-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/06670040-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/04363d90-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/00ca14b0-6a58-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fe1f8e20-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/fb9f4be0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f93a80e0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f6e630a0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f3f663b0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f19409b0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/edb19f60-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ea2e1df0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e76cdb10-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e4d6c6e0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/e303dba0-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "800",
- "height": "1200",
- "caption": ""
- }
- ],
- "__index": 69,
- "dateCreated": "Thu, 07 Jun 2018 13:47:16 GMT"
- },
- {
- "id": "fall-winter_-018-019",
- "date": "Thu, 07 Jun 2018 12:00:00 GMT",
- "title": "FALL WINTER_'018 '019",
- "subtitle": "",
- "body": "For Fall Winter '018 '019 Stone Island investigates the concept of INDUSTRIAL STRENGTH, generating product types with different aesthetics but with the same design intent.\r\nEven the color chart reflects the industrial aspect with tonal interpretations that are full, dusty or metallic: magenta, olive green and mustard, black, grey and charcoal.\r\n\r\nFALL WINTER COLLECTION PREVIEW \r\nON STONE ISLAND APP\r\nFROM 6/7 TO 6/13",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/706ada30-6a57-11e8-8a6b-3521187b68ec.jpg",
- "width": "1600",
- "height": "850",
- "caption": ""
- }
- ],
- "__index": 70,
- "dateCreated": "Thu, 07 Jun 2018 13:47:21 GMT"
- },
- {
- "id": "reflective-tape",
- "date": "Mon, 18 Jun 2018 12:00:00 GMT",
- "title": "REFLECTIVE TAPE",
- "subtitle": "",
- "body": "Grey reflective transfers and applications, inspired by the Stone Island archive, are developed in all product categories.
\r\n\r\nJackets and over shirts are made in Cotton Metal, a fabric that achieves a distinct iridescent color through garment dyeing. \r\n\r\nThe Reflective Tape concept is also explored in the sweatshirts in lightweight brushed cotton, t-shirts in jersey and jogging pants in lightweight brushed cotton fleece.\r\n\r\nAVAILABLE ON THE STONE ISLAND APP\r\n
FROM 6/18 TO 6/25",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/05938bb0-7300-11e8-8a6b-3521187b68ec.jpg",
- "width": "519",
- "height": "692",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/02e90520-7300-11e8-8a6b-3521187b68ec.jpg",
- "width": "583",
- "height": "827",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/ffc1d480-72ff-11e8-8a6b-3521187b68ec.jpg",
- "width": "420",
- "height": "595",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f77e32f0-72ff-11e8-8a6b-3521187b68ec.jpg",
- "width": "397",
- "height": "595",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f4b2b6e0-72ff-11e8-8a6b-3521187b68ec.jpg",
- "width": "397",
- "height": "595",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/f352ffd0-72ff-11e8-8a6b-3521187b68ec.jpg",
- "width": "1000",
- "height": "563",
- "caption": ""
- }
- ],
- "__index": 71,
- "dateCreated": "Mon, 18 Jun 2018 14:17:05 GMT"
- },
- {
- "id": "6915-stone-island-fall-winter_-018-019-collection-video",
- "date": "Tue, 26 Jun 2018 12:00:00 GMT",
- "title": "6915 STONE ISLAND FALL WINTER_'018 '019 COLLECTION VIDEO",
- "subtitle": "",
- "body": "WATCH THE VIDEO",
- "link": "https://www.youtube.com/watch?v=NuQqMLvbHRo&t=6s",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/bb7dc4d0-794b-11e8-8a6b-3521187b68ec.jpg",
- "width": "1000",
- "height": "563",
- "caption": ""
- }
- ],
- "__index": 72,
- "dateCreated": "Tue, 26 Jun 2018 14:19:04 GMT"
- },
- {
- "id": "lookbook-fall-winter_-018-019",
- "date": "Thu, 12 Jul 2018 12:00:00 GMT",
- "title": "LOOKBOOK FALL WINTER_'018 '019",
- "subtitle": "",
- "body": "",
- "link": "",
- "store": "false",
- "image": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/aa55ae60-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a84ebad0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a5e4bfb0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a38b1840-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/a1485430-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9f627d30-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9d3d2c30-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9b147fd0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/985ade10-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9435ec80-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/9210c290-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8fd37cc0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8d9ee980-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/8b454210-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/891a4bc0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/86bd48f0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/83986240-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/81ba5370-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7e7a91c0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7c86d810-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7acc7de0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/781f8650-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/738ba650-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/7137f250-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6f6e07c0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6d9cf140-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/6b2b2df0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/68fb55a0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/64d63d00-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5f69fe60-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/5cc19ab0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/59850d50-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/56bc5060-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/54756da0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/51aa66c0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4ea7d520-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/488b8060-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/45c55b80-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/40892d90-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3e2d3c30-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/3bcdef70-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/396776c0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/369fa430-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/33d894f0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/31e5c5a0-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2f280530-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2c363c70-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- },
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/2a236200-85ef-11e8-8a6b-3521187b68ec.jpg",
- "width": "400",
- "height": "600",
- "caption": ""
- }
- ],
- "__index": 73,
- "dateCreated": "Thu, 12 Jul 2018 16:22:14 GMT"
- }
- ],
- "page": [
- {
- "id": "terms-and-conditions",
- "title": "Terms and Conditions",
- "image": {
- "uri": "",
- "caption": "",
- "width": "",
- "height": ""
- },
- "body": "<center><b>TERMS AND CONDITIONS OF USE</center></b>\r\nWelcome to www.stoneisland.com. These terms and conditions (the “General Terms and Conditions of Use”) govern your use of, access to, and purchase of products from the United States section of www.stoneisland.com (the \"US Site\"). By using the US Site, you agree to comply with and be bound by these General Terms and Conditions of Use. If you do not agree to these General Terms and Conditions of Use, please do not use the US Site.\r\n\r\n<b>1. GENERAL</b>\r\nwww.stoneisland.com is the property of SPORTSWEAR COMPANY, a company having an address at Galleria Cavour 4, 40124 Bologna, Italy (\"STONE ISLAND\") and is operated under license by YNAP Corporation, having an address at 100 Fifth Avenue – 12th floor, New York, NY 10011, United States of America (the \"Provider\").\r\n\r\n<b>2. OTHER SITE POLICIES</b>\r\nPlease review our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&”>General Terms and Conditions of Sale</a>, <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy& “>Return Policy</a> and <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a> (collectively, the “Site Policies\"). All Site Policies are incorporated in these General Terms and Conditions of Use by this reference and, therefore, apply to your access to, use of and purchase of products from the US Site. If you do not agree to our Site Policies, please do not use the US Site. We reserve the right to make changes to the US Site, the Site Policies, and these General Terms and Conditions of Use at any time. If any of these conditions shall be deemed invalid, void, or for any reason unenforceable, that condition shall be deemed severable and shall not affect the validity and enforceability of any remaining condition. \r\n\r\n<b>3. PURCHASE FOR PERSONAL USE ONLY</b>\r\nYou may purchase products on the US Site only for personal use and not for resale. By placing your order, you certify that you are purchasing products for personal use only and not for resale and you accept our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&”>General Terms and Conditions of Sale</a>. We reserve the right to refuse orders for any reason without explanation.\r\n\r\n<b>4. USER'S SUBMISSIONS</b>\r\nWe welcome your comments and feedback regarding the US Site, our products and our services. We do not, however, accept confidential or proprietary information. Accordingly, all comments, feedback, reviews, ideas, suggestions, materials, images, information and other submissions (collectively, the “Submissions”) disclosed, submitted or offered to the Provider via the US Site, or otherwise, are not confidential. You represent and warrant that any Submissions that you submit to the Provider are made in compliance with applicable laws, do not violate any right of any third party, including privacy and intellectual property rights. By disclosing, submitting or offering any Submissions to the Provider, you grant the Provider and STONE ISLAND a nonexclusive, royalty-free, perpetual, irrevocable, and fully sublicensable right to use, reproduce, modify, adapt, publish, translate, create derivative work from, distribute, display such Material throughout the world in any media. You are and shall remain solely responsible for any Submissions you disclose, submit or offer to the Provider or STONE ISLAND. \r\n\r\n<b>5. PRIVACY</b>\r\nWe recommend that you read our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a>, which explains our online privacy practices. \r\n\r\n<b>6. COPYRIGHT</b>\r\nAll content included on www.stoneisland.com US Site, such as works, images, pictures, dialogues, music, sounds, videos, documents, drawings, figures, logos, menus, web pages, graphics, colors, schemes, tools, fonts, designs, diagrams, layouts, methods, processes, functions and software (collectively, the \"Content\"), is the property of STONE ISLAND or its content suppliers and is protected by national and international copyright and other intellectual property laws. You may not reproduce, publish, distribute, display, modify, create derivative work from, or exploit in any way, in whole or in part, the Content without the prior express written consent of STONE ISLAND, or its content suppliers, as the case may be. STONE ISLAND and its content suppliers shall have the exclusive right to authorize or prohibit in their sole discretion any reproduction, publication, distribution, display, modification, creation of derivative work from, or exploitation in any way of, in whole or in part, the Content. STONE ISLAND and its content suppliers shall have the right, at any time, to claim the authorship of any Content posted on the US Site and to object to any use, distortion or other modification of such Content. Any reproduction, publication, distribution, display, modification, creation of derivative work from, or exploitation in any way of, the Content expressly authorized in writing by STONE ISLAND or its content suppliers shall be carried out by you for lawful purposes only and in compliance with all applicable laws. \r\n\r\n<b>7. LICENSE AND SITE ACCESS</b>\r\nThe viewing, printing or downloading of any Content from the US Site grants you only a limited, nonexclusive and nontransferable license for use solely by you for your own personal use and not for republication, distribution, assignment, sublicense, sale, preparation of derivative works or other use. No part of any Content may be reproduced in any form or incorporated into any information system, electronic or mechanical, other than for your personal use (but not for resale or redistribution). Any unauthorized use of the US Site and the Content immediately terminates the license granted by the Provider. \r\nYou will be solely responsible for all damages and other harm resulting from your use of the US Site and the Content. STONE ISLAND and the Provider shall not be deemed liable for any use of the US Site and the Content made by you in violation of any applicable laws and regulations and these General Terms and Conditions of Use. \r\n\r\n<b>8. COPYRIGHT COMPLAINTS</b>\r\nWe respect the intellectual property of others. If you believe that your work has been copied in a way that constitutes copyright infringement, please contact a STONE ISLAND copyright representative for further information at <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a>. \r\n\r\n<b>9. LINKS TO OTHER WEB SITES</b>\r\nThe US Site may provide hyperlinks to third party websites (“Third Party Websites\"). The Provider and STONE ISLAND do not operate, control, endorse or guarantee any Third Party Websites. You agree that the Provider and STONE ISLAND are not responsible for any content, services and/or products provided by any Third Party Website, nor are the Provider and STONE ISLAND responsible for any practice followed by such Third Party Website with respect to the collection and processing of personal data of their users. When you access any Third Party Website through a hyperlink posted on the US Site, please carefully read the terms and conditions of use, privacy policy and other policies of such Third Party Website. Our policies do not apply to any Third Party Website. \r\nYou The Provider provides hyperlinks to Third Party Websites only for the convenience of its users. By providing hyperlinks to Third Party Websites, the Provider does not recommend that its users access such Third Party Websites. \r\n\r\nYOU AGREE THAT YOUR USE OF ANY THIRD PARTY WEBSITE IS AT YOUR SOLE RISK AND WITHOUT WARRANTIES OF ANY KIND BY THE PROVIDER, EXPRESSED, IMPLIED OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NONINFRINGEMENT. UNDER NO CIRCUMSTANCES ARE THE PROVIDER AND/OR STONE ISLAND LIABLE FOR DAMAGES ARISING FROM ANY TRANSACTION BETWEEN YOU AND ANY THIRD PARTY WEBSITE OR FOR ANY INFORMATION APPEARING ON THIRD PARTY WEBSITES. \r\n\r\n<b>10. GOVERNING LAW AND CHOICE OF FORUM</b>\r\nThe laws of the State of New York (without giving effect to its conflicts of law principles) govern all matters arising out of or relating to these General Terms and Conditions of Sale, including, without limitation, their validity, interpretation, construction, performance, and enforcement. All legal proceedings arising out of or in connection with these General Terms and Conditions of Sale shall be brought solely in the City of New York, State of New York. \r\n\r\n<b>11. DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY</b>\r\nTHE US SITE AND ALL INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) AND SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE ARE PROVIDED BY THE PROVIDER ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS, UNLESS OTHERWISE SPECIFIED IN WRITING. THE PROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE OPERATION OF THIS SITE OR THE INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE, UNLESS OTHERWISE SPECIFIED IN WRITING. YOU EXPRESSLY AGREE THAT YOUR USE OF THIS SITE IS AT YOUR SOLE RISK. \r\n\r\nTO THE FULL EXTENT PERMISSIBLE BY APPLICABLE LAW, THE PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE PROVIDER DOES NOT WARRANT THAT THIS SITE; INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE; THEIR SERVERS; OR E-MAIL SENT FROM THE PROVIDER ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. THE PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THIS SITE OR FROM ANY INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE, INCLUDING, BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE, AND CONSEQUENTIAL DAMAGES, UNLESS OTHERWISE SPECIFIED IN WRITING. \r\n\r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<center><b>TERMS AND CONDITIONS OF SALE</center></b>\r\nThe following General Terms and Conditions of Sale govern the sale of merchandise by YOOX Corporation, an affiliate of YOOX NET-A-PORTER GROUP S.p.A. (the \"Provider\" or \"we\") to you through the US section of www.stoneisland.com (\"US Site\"). The US Site is available only for purchases made and delivered within the United States. Your use of the US Site to purchase merchandise indicates your agreement to follow and to be bound by these General Terms and Conditions of Sale.\r\n\r\n<b>1. ORDERS & PRODUCTS</b>\r\nAll orders are subject to e-mail confirmation by us. Please note that the products displayed on the US Site may be out-of-stock or discontinued, and availability is not guaranteed. Please note that while we have tried to accurately display the colors of products, the actual colors you see will depend on your monitor and may not be accurate. \r\n\r\n<b>2. PRICES</b>\r\nAll prices are in US Dollars. Prices may change without notice from time to time. The total amount due is inclusive of sales tax applied in accordance with applicable state and local regulations based on your shipping address. The applicable sales tax amount is indicated on the payment page of the cart.\r\n\r\nThe amount of sales tax charged on your order will depend upon various factors, including type of item purchased, sales price and destination of the shipment. Sales tax regulations may change between the time you place an order and the time of credit card charge authorization and this may affect the calculation of sales taxes. The amount appearing on your payment page of the cart may differ from the sales taxes ultimately charged as indicated in the invoice you will receive with the shipping confirmation e-mail.\r\n\r\nAll prices are inclusive of customs and import duties.\r\n\r\n<b>3. SHIPPING COSTS</b>\r\nYou are responsible for the shipping costs associated with the delivery of the products you purchase on the US Site as specified on your order confirmation. \r\n\r\n<b>4. SHIPMENTS AND DELIVERY</b>\r\nYou bear all risks of loss and damage to the products from the time the same have cleared our fulfillment house. Delivery is deemed complete and title to the products passes to you upon acceptance of shipment by a common carrier.\r\n\r\n<b>5. RETURNS AND REFUNDS</b>\r\nPlease refer to our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy&“>Return and Refund Policy</a>, which forms an integral part of these General Terms and Conditions of Sale. \r\n\r\n<b>6. BINDING AGREEMENT</b>\r\nOur order confirmation, these General Terms and Conditions of Sale and our other Site Policies shall be deemed the final and integrated agreement between you and us on the matters contained in these General Terms and Conditions of Sale. \r\n\r\n<b>7. GOVERNING LAW AND CHOICE OF FORUM</b>\r\nThe laws of the State of New York (without giving effect to its conflicts of law principles) govern all matters arising out of or relating to these General Terms and Conditions of Sale, including, without limitation, their validity, interpretation, construction, performance, and enforcement. All legal proceedings arising out of or in connection with these General Terms and Conditions of Sale shall be brought solely in the City of New York, State of New York. \r\n\r\n<b>8. DISCLAIMERS AND LIMITATIONS OF LIABILITY</b>\r\nTHE PROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE PRODUCTS INCLUDED IN THE www.stoneisland.com US SITE NOR AS TO THE MERCHANDISE BEING SOLD TO YOU. TO THE FULLEST EXTENT PERMISSIBLE BY APPLICABLE LAW, THE PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, AND THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, WHICH EXTEND BEYOND THE DESCRIPTION OF THE MERCHANDISE CONTAINED ON OUR ORDER CONFIRMATION. THE PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THE US SITE, INCLUDING BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE AND CONSEQUENTIAL DAMAGES \r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<b>9. SEVERABILITY</b>\r\nIf any provision of these General Terms and Conditions of Sale is determined to be invalid, illegal or unenforceable, the remaining provisions of these General Terms and Conditions of Sale remain in full force to the extent permitted by law.\r\n\r\n<b>10. PRIVACY</b>\r\nThe terms and conditions of the our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a> govern the processing of all personal data collected from you in connection with your purchase of products through the US Site.\r\n\r\n<b>11. FORCE MAJEURE</b>\r\nProvider shall not be liable for any delay or failure in performance caused by circumstances beyond its reasonable control.\r\n\r\n<b>12. ERRORS AND INACCURACIES</b>\r\nOur goal is to provide complete, accurate, and up-to-date information on our website. Unfortunately, it is not possible to ensure that any website is completely free of human or technological errors. This website may contain typographical mistakes, inaccuracies, or omissions, some of which may relate to pricing and availability, and product information. We reserve the right to correct any errors, inaccuracies or omissions, including after an order has been submitted, and to change or update information at any time without prior notice.\r\n",
- "__index": 1,
- "dateCreated": "Tue, 17 Nov 2015 20:31:52 GMT",
- "tag": "terms"
- },
- {
- "id": "privacy-policy",
- "title": "Privacy Policy",
- "image": {
- "uri": "",
- "caption": "",
- "width": "",
- "height": ""
- },
- "body": "Privacy Policy<br>\r\nWelcome to our website stoneisland.com (the Website).<br>\r\nYour privacy and the security of your personal data are very important to us, which is why we collect and process your personal data with the utmost care and take appropriate steps to keep it safe.<br>\r\nBelow you will find the key information on the processing of your personal data in relation to your use of stoneisland.com and the services offered. For detailed information on how we manage your personal data, please read our Privacy Policy.<br>\r\nPlease also read the stoneisland.com 'Cookie Policy', 'General Terms and Conditions of Use' and the 'Terms and Conditions of Registration of My Account', which contain detailed information about the terms and conditions of our services. Some services may be subject to specific legal requirements, in which case we will provide you with all the relevant information from time to time.<br>\r\n<b>Who is the Data Controller?</b><br>\r\n<b>The Data Controller</b><br>\r\nUpon consulting this website, and throughout the user's use of the services offered by the integrated Online Store, data related to identified or identifiable persons may be collected and processed. The data controllers are:<br>\r\n- SPORTSWEAR COMPANY S.p.A., with registered office at Bologna Galleria Cavour 4, 40124, and operational headquarters in Ravarino (MO), Via Confine n. 2161; <br>\r\nand<br>\r\n- YOOX NET-A-PORTER GROUP S.p.A., with registered office at via Morimondo, 17 – Milano 20143, Italy (\"YOOX NET-A-PORTER GROUP\")<br>\r\nin the persons of their pro tempore legal representatives.<br>\r\nIn particular, SPORTSWEAR COMPANY S.p.A. is the owner of stoneisland.com and of the 'Stone Island' trademark, and is the independent controller of the data processed for corporate purposes (i.e. for example but not limited to CRM, marketing activities, customer profiling, market analysis, management and strategic evaluations) that directly refers to the brand or to the company.<br>\r\nSPORTSWEAR COMPANY S.p.A. has appointed YOOX NET-A-PORTER GROUP S.p.A. as the Data Processor for the area of its responsibility and for the purposes related to the provision of the service on stoneisland.com. YOOX NET-A-PORTER GROUP S.p.A. was appointed based on its experience, competence and trustworthiness, as well as the ability of YOOX NET-A-PORTER GROUP S.p.A. to guarantee the implementation of adequate technical and organizational measures to comply with the requirements of data protection regulations and to guarantee the protection of Data Subjects' rights.<br>\r\nSPORTSWEAR COMPANY S.p.A. will ensure that the Data Processor has carried out the tasks assigned to it and that it continues to provide adequate guarantees of full compliance with the provisions on the protection of personal data.<br>\r\nYOOX NET-A-PORTER GROUP manages the website and is the independent controller of the processing connected to the e-commerce services offered through this website's Online Store.<br>\r\nAny privacy issue related to processing by SPORTSWEAR COMPANY S.p.A. may be sent to the following e-mail address: spwprivacy@spwco.it or by fax to +39 059 810337. Requests which instead refer to processing connected to the Online Store must be sent to YOOX NET-A-PORTER GROUP by contacting Customer Care and selecting “Privacy” as the topic.<br>\r\n<b>What data do we process and why?</b>\r\nThe personal data that we process is the information you provide us with when you place an order and purchase goods, and the information we collect while you browse or use the services offered on stoneisland.com. We may therefore collect data relating to you such as personal details like your first and last name, shipping address and billing address, browsing information and your buying habits.<br>\r\nYour personal data is processed for the following purposes:<br>\r\n- enter into and fulfill a contract for the purchase of goods available on stoneisland.com;<br>\r\n- provide you with stoneisland.com services such as subscription to the newsletter;<br>\r\n- allow you to register on the Website and use the services reserved for registered users;<br>\r\n- manage your requests to our Customer Care Department.<br>\r\nIn the cases referred to above, the processing of your personal data is legitimate to the extent necessary to fulfill a contract entered into with you or to provide you with the service you have specifically requested from us. We also perform statistical research and analysis using aggregate data to understand how users interact with and use the Website, and to improve our product range and services.<br>\r\nOnly if you have given us your express consent will we process your personal data to:<br>\r\n- carry out marketing communications activities;<br>\r\n- personalize the Website according to your interests.<br>\r\n<b>Who will process your data?</b><br>\r\nYour personal data will be processed by appropriately trained employees of stoneisland.com and of other companies in the Data Controllers Group and, for organizational and functional purposes related to the provision of services on stoneisland.com, by our suppliers. These suppliers have been assessed and chosen by the Controllers based on their proven trustworthiness and competence. Some of these parties may also be based in non-EU countries and, in these cases, the transfer of your personal data to these countries is carried out in compliance with the safeguards provided for in law.<br>\r\n<b>How long do we keep your data?</b><br>\r\nWe store your personal data for a limited period of time determined by the purpose for which it was collected, at the end of such period your personal data will be erased or otherwise made irreversibly anonymous. The storage period is different depending on the purpose of the processing: for example, data collected during the purchase of goods on stoneisland.com is processed until the completion of all administrative and accounting formalities, therefore it is stored in accordance with local tax laws (ten years), while the data used to send you our newsletters is stored until you ask us to stop sending them.<br>\r\nFor further information please see our Privacy Policy.<br>\r\n<b>What are your rights?<br></b>\r\nDepending on the type of processing, you may at any time: revoke your consent to the processing, be notified of what personal data we hold about you, its origin and how it is used, request that it be updated, corrected or supplemented and, in the cases provided for under current legislation, erase or restrict the processing of your personal data or object to its processing. If you wish, you can request to receive the personal data in the Controller's possession in a format readable by electronic devices and, where technically possible, we can transfer your data directly to a third party indicated by you.<br>\r\nIf you believe that your personal data has been processed unlawfully, you may file a complaint with one of the supervisory authorities responsible for ensuring compliance with data protection regulations. In Italy, complaints can be submitted to the Italian Data Protection Authority (http://www.garanteprivacy.it/).<br>\r\nThis statement may be subject to changes and additions over time, so please review its content periodically. Where possible, we will try to inform you in a timely manner of any amendments made.<br>\r\n<b>Privacy Policy<br>\r\n1. General information<br>\r\nWho is the Data Controller?</b><br>\r\nUpon consulting this website, and throughout the user's use of the services offered by the integrated Online Store, data related to identified or identifiable persons may be collected and processed. The data controllers are:<br>\r\n- SPORTSWEAR COMPANY S.p.A., with registered office at Bologna Galleria Cavour 4, 40124, and operational headquarters in Ravarino (MO), Via Confine n. 2161;<br>\r\nand\r\n- YOOX NET-A-PORTER GROUP S.p.A., with registered office at via Morimondo, 17 – Milano 20143, Italy (\"YOOX NET-A-PORTER GROUP”) <br>\r\nin the persons of their pro tempore legal representatives.<br>\r\nIn particular, SPORTSWEAR COMPANY S.p.A. is the owner of stoneisland.com and of the 'Stone Island' trademark, and is the independent controller of the data processed for corporate purposes (i.e. for example but not limited to CRM, marketing activities, customer profiling, market analysis, management and strategic evaluations) that directly refers to the brand or to the company.<br>\r\nSPORTSWEAR COMPANY S.p.A. has appointed YOOX NET-A-PORTER GROUP S.p.A. as the Data Processor for the area of its responsibility and for the purposes related to the provision of the service on stoneisland.com. YOOX NET-A-PORTER GROUP S.p.A. was appointed based on its experience, competence and trustworthiness, as well as the ability of YOOX NET-A-PORTER GROUP S.p.A. to guarantee the implementation of adequate technical and organizational measures to comply with the requirements of data protection regulations and to guarantee the protection of Data Subjects' rights.<br>\r\nSPORTSWEAR COMPANY S.p.A. will ensure that the Data Processor has carried out the tasks assigned to it and that it continues to provide adequate guarantees of full compliance with the provisions on the protection of personal data.<br>\r\nYOOX NET-A-PORTER GROUP manages the website and is the independent controller of the processing connected to the e-commerce services offered through this website's Online Store.<br>\r\nAny privacy issue related to processing by SPORTSWEAR COMPANY S.p.A. may be sent to the following e-mail address: spwprivacy@spwco.it or by fax to +39 059 810337. Requests which instead refer to processing connected to the Online Store must be sent to YOOX NET-A-PORTER GROUP by contacting Customer Care and selecting “Privacy” as the topic.<br>\r\n<b>Who is the Data Protection Officer?</b><br>\r\nYNAP has appointed a Data Protection Officer. Should you so wish, for any request regarding the protection of your personal data and the exercise of your rights, you may contact the YNAP Personal Data Protection Officer (DPO) at the address of the Data Controller indicated above or by writing to our Customer Care Department.<br>\r\n<b>2. What personal data do we collect?</b><br>\r\nThe categories of personal data that the Data Controllers collect and process when you browse or shop on stoneisland.com are:<br>\r\na. we collect the personal information necessary to complete and fulfill your purchase on stoneisland.com such as your first and last name, email address, shipping address, billing address, telephone number and payment information;<br>\r\nb. we collect your email address when you subscribe to our newsletter service;<br>\r\nc. we process the personal data you provide us with when you contact our Customer Care department in order to provide you with the assistance you require;<br>\r\nd. subject to your consent, we collect and use your personal data for marketing communications;<br>\r\ne. to register your My Account, we collect your first and last name, your email address, your password and your date of birth. If you are a registered user, we collect information about your access to the restricted area of the Website. Subject to your express consent, by analyzing your personal data, we may draw up information regarding your interests and preferences with respect to our products and services, in order to provide you with suggestions and offers in line with your tastes.<br>\r\nf. we collect information about your browsing of stoneisland.com, such as the pages you visit and how you interact with the individual page and we store this information on our servers.<br>\r\nWe want to assure you that the Data Controller does not process any personal data relating to minors. If you access stoneisland.com and use the services offered by the Controllers you agree that you are over the age of majority.<br>\r\n<b>3. How do we use the personal data we collect?</b><br>\r\nTo the extent of their respective responsibilities, the Data Controllers collect and process your personal data for the following purposes:<br>\r\na. entering into and fulfillment of the contract for the purchase of the products available on stoneisland.com. When you make your purchase we ask you for the personal data necessary to fulfill the contract, such as payment, anti-fraud checks if you choose to pay by credit or debit card, billing, shipping of the product and any return management.<br>\r\nb. registration on the Website and use of the services offered to registered users. Registration on the Website is only possible by entering certain personal information, which is necessary to carry out the services offered to registered users.<br>\r\nc. provision of the services offered on stoneisland.com. For such purposes and in relation to each service and its characteristics, the Data Controllers need to collect the personal data necessary to carry out the specific service requested by you.<br>\r\nd. management of requests to our Customer Care department, which uses the personal data you provide to deal with your requests for information and assistance.<br>\r\ne. CV submission. If you send us your CV to apply for an open position, SPORTSWEAR COMPANY S.p.A. will use the information contained in your CV solely for this purpose. The data relating to your application may be transferred to third party suppliers of candidate application management. Your CV will be retained for a maximum of six months, after which it will be erased: if you wish, you can of course send us a new updated version.<br>\r\nf. statistical analysis and research. We use some information about your use of the Website, how you browse the Website and how you use its services, to carry out statistical analysis and research in order to improve our range of products and services.<br>\r\ng. sending marketing correspondence following the purchase of one of our products, so-called soft spam. Following the purchase of one of our products on the Website, we will send you communications containing our marketing offers for similar products and services to the e-mail address you provided when you placed your order.
subject to your express consent, we may use the contact details you have provided to us for marketing communications relating to our products and services, in order to keep you updated on news, new arrivals, exclusive products, offers and promotions. In addition to this, we may with your consent use your contact information for market research purposes and customer satisfaction surveys to improve our services and our relationship with our customers.<br>\r\nh. only with your consent, SPORTSWEAR COMPANY S.p.A. will be able to personalize your experience as a registered user on stoneisland.com, offering you previews and offers in line with your tastes and sending you personalized marketing communications tailored to your interests. This personalization will be achieved by analyzing your previous purchases and the other information described in the previous section 'What personal data do we collect?’. For further information on this data and the activity that allows it to be processed, please consult the \"My Account\" section.<br>\r\nIf you wish to authorize the activities referred to in points h) and i) and subsequently do not wish to receive further communications from SPORTSWEAR COMPANY S.p.A. or wish to limit the ways in which you can be contacted, you may at any time discontinue these communications simply by clicking on the 'unsubscribe' link at the bottom of each communication, or by accessing your My Account, alternatively you can always contact SPORTSWEAR COMPANY S.p.A. through our Customer Care Department or by writing to the address above. Please note that you may receive further communications from us even after you have submitted your unsubscribe request, as some mailings may already have been planned, and our systems may take some time to process your request.<br>\r\nIn relation to all the above activities, we will mainly process your personal data through IT and electronic means; the tools we use ensure high standards of security, in full compliance with current regulations on the issue.<br>\r\n<b>4. My Account</b><br>\r\nWhen you create your My Account, we offer you access to the following services:<br>\r\n- My profile: manage your personal data and your consent<br>\r\n- My orders: track your shipping and check your order history<br>\r\n- My cards: save your credit card details for faster checkout<br>\r\n- Address Book: save all your addresses for faster checkout<br>\r\n- Wish List: create your own wish list: you can save up to 50 items, get notifications about their availability and add them to your Shopping Bag at any time.<br>\r\nSubject to your express consent, SPORTSWEAR COMPANY S.p.A. may use your contact details for marketing communications on products and services, in order to keep you updated on news, new arrivals, exclusive products, and for conducting opinion polls and market research, in order to assess your level of satisfaction and improve the services offered.<br>\r\nOnly with your prior consent, SPORTSWEAR COMPANY S.p.A. will be able to personalize your experience and the content of marketing communications and offers you will see when you browse stoneisland.com as a registered user to suit your interests. This activity makes it easier for you to find products and services that you prefer and that are in line with your interests, while at the same time improving our service to you. This personalization is made possible by analyzing the personal data we hold about you, which is described in the previous section 'What personal data do we collect?’. In particular, information about your past purchases and the sections of the Website you visit most often or the services you use most frequently helps us to understand which products and services are most relevant to you.<br>\r\nTo ensure that the information we hold is correct and allows us to properly perform the activity described above, we encourage you to access the 'My Profile' section of your My Account and, update it as necessary.<br>\r\n<b>5. Legal basis for processing</b><br>\r\nWe will only process your personal data if one of the legal requirements provided for by current legislation is met, and specifically:<br>\r\na. for the conclusion and performance of a contract to which you are party.<br>
When we process your data for the conclusion of the purchase contract to which you are a party we ensure that we use only the minimum information necessary for the completion of the same. This basis legitimizes the processing of personal data in the course of the following activities:<br>\r\n- stipulation and fulfillment of a contract for the purchase of products offered on stoneisland.com,<br>\r\n- registration on the Website and use of services reserved for registered users;<br>\r\n- provision of the services offered on stoneisland.com,<br>\r\n- management of your requests to our Customer Care department.<br>\r\nThe provision of your personal data for these activities is a contractual obligation. You are free to disclose your data to us or not, but in the absence of the requested data, we will not be able to conclude or execute the agreement and your requests. This means that you will not be able to purchase products from or use the services of the Website and that YOOX NET-A-PORTER GROUP S.p.A. will not be able to handle your requests.<br>\r\nb. to comply with a legal obligation.<br>In the event of the stipulation of a contract for the purchase of goods on stoneisland.com, the user's data will be processed in order to fulfill the legal obligations to which YOOX NET-A-PORTER GROUP S.p.A. is subject. You are free to decide whether or not to enter into a contract and whether or not to disclose your data to us, but if you do, your data will be necessary and will be processed to comply with the aforementioned legal obligations YOOX NET-A-PORTER GROUP S.p.A. is required to fulfill.<br> The processing of CVs sent spontaneously, carried out to assess candidates with respect to possible employment with SPORTSWEAR COMPANY S.p.A., is legitimate as it is expressly authorized by a legal provision, which specifies that in this case the consent of the person to whom the personal data refers is not required. You are free to send us your CV or not, but if you do not, we will not be able to assess your application for employment with SPORTSWEAR COMPANY S.p.A..<br>\r\nc. in our legitimate interest.<br>
When purchasing products on stoneisland.com by credit or debit card, some of your personal data may be used for anti-fraud purposes: we have a legitimate interest in performing this activity in order to prevent and prosecute any fraudulent activities. For internal administrative purposes, the data may be processed by companies belonging to the business group to which YOOX NET-A-PORTER GROUP S.p.A. belongs.<br>\r\nd. with your consent.<br>
We will only carry out the following processing if you have given us your express consent:<br>\r\n- carrying out marketing activities, opinion polls and market research;<br>\r\n- analyzing your browsing and shopping habits when using your My Account profile, in order to personalize your experience on our Website.<br>\r\nProviding your consent for such activities is optional. You are free to consent or not to consent, but in the absence of consent it will not be possible for SPORTSWEAR COMPANY S.p.A. to carry out marketing activities, opinion polls and market research, and to analyze your habits.<br>\r\n<b>6. Who will process your data?</b><br>\r\nYour personal data will be processed by the Data Controller's in-house staff who have been specially trained and authorized to process the same. When processing the data, it may also be transferred to companies belonging to the corporate group to which the Data Controller belongs.<br>\r\nYour personal data will also be transferred to third parties that we use to provide our services on stoneisland.com; these parties have been carefully selected and offer an adequate guarantee of compliance with the regulations regarding personal data processing. These parties have been designated as data processors and carry out their activities according to the instructions given by the Data Controllers and under their supervision.<br>\r\nThe third parties in question belong to the following categories: site manager, banks, internet providers, companies specializing in computer and telecommunications services, couriers, marketing agencies, companies specializing in market research and data processing.<br>\r\nYour data may be disclosed to the police and to the judicial and administrative authorities, in accordance with the law, for the detection and prosecution of crimes, the prevention and protection from threats to public security, to enable the Controllers to ascertain, exercise or defend a right in court, as well as for other reasons related to the protection of the rights and freedoms of others.<br>\r\n<b>7. APP version of the Website</b><br>\r\nIn addition to the information referred to in the 'What personal data do we collect?, when you use the App version of our stoneisland.com Website, the Controllers may, with your express consent:<br>\r\na. collect personal data as part of marketing activities in order to send push notifications to your device. You can disable push notifications at any time by changing your selection in your mobile device settings.<br>\r\nb. collect personal data about your location to locate the store closest to you, in order to improve your shopping experience;<br>\r\nc. access the camera on your device to make it easier for you to enter your card details to complete the purchase;<br>\r\nd. automatically collect information, such as your data about your traffic and your visit to stoneisland.com or your IP address, in order to improve our range of products and services.<br>\r\n<b>8. Web push notification</b><br>\r\nDepending on which device you use, you may receive, upon giving your consent, push notifications regarding our offers, new items, your wish list and your cart.<br>\r\nTo deactivate notifications, depending on the platform and/or browser used, follow the steps listed below:<br>\r\n- Desktop: Right-click on notification > disable notifications from stoneisland.com<br>\r\n- Mobile: Access the notification center > Site parameters > Notifications > Block notifications from stoneisland.com<br>\r\n- Common browsers:<br>\r\n- Chrome: Settings > Show Advanced Settings > Privacy – Content Settings > Notifications - Manage exceptions > Enter stoneisland.com and select “Block”<br>\r\n- Firefox: Options > Content > Notifications – Select > stoneisland.com – “Block”<br>\r\n- Safari: Preferences > Notifications > From here select \"Deny\"<br>\r\n<b>9. Data transfer outside of the EU</b><br>\r\nSome of the third parties listed in the previous section no. 6 'Who will process your data? could be based in countries outside the European Union which, however, offer an adequate level of data protection, as set out in specific decisions of the European Commission (http://www.garanteprivacy.it/home/provvedimenti-normativa/normativa/normativa community-and-intentional/transfer-of-data-to-third-countries#1).<br>\r\nThe transfer of your personal data to countries that are not members of the European Union and that do not ensure adequate levels of protection will only be carried out after specific agreements have been entered into between the Data Controllers and said parties, containing safeguarding clauses and appropriate guarantees for the protection of your personal data, known as the 'standard contractual clauses', also approved by the European Commission, or if the transfer is necessary for the stipulation and fulfillment of a contract between you and the Data Controllers (for the purchase of goods offered on our Website, for registration on the Website or for the use of services on the Website) or for the management of your requests.<br>\r\n<b>10. How long do we keep your data?</b>\r\nWe store your personal data for a limited period of time, which varies depending on the type of activity requiring the processing of your personal data. After this period, your data will be permanently deleted or irreversibly anonymized.<br>\r\nYour personal data is stored in compliance with the following terms and criteria:<br>\r\na. data collected to conclude and execute agreements for the purchase of goods on stoneisland.com: until the administrative and accounting formalities have been completed. Billing information will be retained for ten years from the invoice date;<br>\r\nb. registered user data: this data will be stored until you request the deletion of your My Account;<br>\r\nc. payment data: until authentication of payment and completion of the relevant administrative and accounting formalities following expiry of the right of withdrawal and the time limits applicable for contesting payment;<br>\r\nd. data collected in the context of the use of services offered on stoneisland.com: this data is stored until the termination of the service or the user's request to unsubscribe from the service;<br>\r\ne. data related to user requests to our Customer Care: data needed to assist you will be kept until your request is fully resolved;<br>\r\nf. CVs: for six months from receipt;<br>\r\ng. data used for marketing communications to users who purchase products on stoneisland.com (soft spam): this data is stored until the termination of the service or until the user unsubscribes from the service;<br>\r\nh. data provided for marketing communications, opinion polls and market research activities: until the user unsubscribes from the service or upon request by the user to discontinue the activity and in any event within two years of the user's last interaction of any kind with SPORTSWEAR COMPANY S.p.A.;<br>\r\ni. data used to personalize the Website and to display personalized marketing offers: until the user revokes the consent given for such activity or requests its discontinuation, and in any event within two years of the user's last interaction of any kind with SPORTSWEAR COMPANY S.p.A.;<br>\r\nIn all cases, termination of processing and subsequent permanent erasure or irreversible anonymization of personal data will be final within thirty days of the deadlines indicated above for technical reasons.<br>\r\n<b>11. Your rights</b><br>\r\nYou may exercise your rights at any time with regard to the specific processing of your personal data by the Data Controllers. Below you will find a general description of them and how to exercise them.<br>\r\na. Accessing and modifying your data: you have the right to access your personal data and to request that it be corrected, modified or supplemented with other information. If you wish, we will provide you with a copy of the data we hold about you.<br>\r\nb. Withdraw your consent: you may at any time withdraw your consent to the processing of your personal data in connection with any marketing activity. To this end, please note that marketing activities include sending marketing communications, conducting opinion polls and market research, in order to assess your level of satisfaction and improve the services offered. On receipt of your request we will ensure that the processing of your personal data based on such consent is promptly discontinued, while other processing or processing based on other grounds will continue to be carried out in full compliance with the applicable provisions.<br>\r\nc. Objecting to the processing of your data: you have the right to object at any time to the processing of your personal data carried out on the basis of our legitimate interest, explaining the reasons that justify your request; before accepting your request, the Data Controllers must assess the reasons for your request.<br>\r\nd. Erasure of your data: in the circumstance provided for by current legislation you may request the erasure of your personal data. Once your request has been received and assessed, if it is justified we will immediately discontinue the processing and erase your personal data.<br>\r\ne. Requesting that the processing of your personal data be temporarily restricted: in this case the Data Controllers will continue to store your personal data but will not process it, unless otherwise requested by you and subject to the exceptions provided for by law. You can obtain restriction of the processing when you are contesting the accuracy of your personal data, when the processing is unlawful but you oppose the erasure of your data, when your data is no longer needed but you need it to exercise your rights in court and when you object to the processing, during the period in which we are assessing the reasons for your request.<br>\r\nf. Requesting your data or transferring them to a party other than the Data Controllers (right to data portability). You can ask to be provided with your data that we process based on your consent or pursuant to a contract with you, in a standard format. If you wish, where technically possible, we may on your request transfer your data directly to a third party specified by you.<br>\r\nYou can access your My Account in order to exercise some of your rights outlined above or, alternatively, you can contact us by writing to our Customer Care Department or to the address of the Data Controller stated above.<br>\r\nTo ensure that our users' data is not compromised or misused by third parties, we may ask you to provide certain information to verify your identity before we respond to a request from you to exercise any of these rights.<br>\r\n<b>12. Children’s rights</b><br>\r\nWe do not sell products or services for purchase by children, but by adults. If you are under 18, you may use the Site only with the involvement of a parent or guardian. In accordance with the Federal Children's Online Privacy Protection Act of 1998 (COPPA), stoneisland.com/us does not knowingly collect, solicit or use personal data of children under the age of 13 provided without parental consent, and will delete any such data should we become aware that a user under the age of 13 has registered without verifiable parental con-sent. Therefore, if you are not 18 years or older, you are not authorized to use our US Site.<br>\r\n<b>13. Rights of California residents</b><br>\r\nPursuant to California Civil Code Sec. 1789.3, California resident users are entitled to know that they may file grievances and complaints with the California Department of Consumer Affairs, 400 R Street, STE 1080, Sacramento, CA 95814. For more information about protecting your privacy, you may wish to visit: www.ftc.gov. If you are a resident of California, you may request that we not share your information with certain affiliates or third parties providers for marketing purposes, and/or you may inquire as to how we have shared your information with third parties providers for marketing purposes. In connection with such request, we will identify the types of information shared and provide you with the names and addresses of the third parties with whom the information was shared. Please contact our Customer care through the appropriate form selecting “Privacy” as the topic on our contact form.<br>\r\n<b>13. Security measures</b>\r\nWe protect your personal data with specific technical and organizational security measures, aimed at preventing your personal data from being used in an illegitimate or fraudulent manner. In particular, we use security measures that ensure: the pseudonymization or encryption of your data; the confidentiality, integrity and availability of your data as well as the strength of the systems and services that process it; the ability to restore data in the event of a data breach. In addition, YOOX NET-A-PORTER GROUP S.p.A. undertakes to regularly test, check and assess the adequacy of its technical and organizational measures in order to ensure continued improvement in processing security.<br>\r\n<b>14. Complaints</b><br>\r\nIf you believe that your personal data has been processed unlawfully, you may file a complaint with one of the supervisory authorities responsible for ensuring compliance with data protection regulations.<br>\r\nIn Italy, complaints can be submitted to the Italian Data Protection Authority.<br>\r\nFurther information on submission procedures is available on the authority’s website http://www.garanteprivacy.it/.<br>\r\n<b>15. Amendments to this statement</b><br>\r\nThe continual development of our services may lead to modifications to the nature of the processing of your personal data as described above. As a result, this privacy statement may be subject to amendments and additions over time, which may also be necessary with regard to new regulations on the protection of personal data.<br>\r\nWe therefore ask you to periodically review its content: where possible, we will try to inform you in a timely manner of any amendments made and their consequences.<br>\r\nThe updated version of the privacy statement will in any event be published on this page, indicating the date it was last updated.<br>\r\n<b>16. Legal references and useful links</b><br>\r\nThe processing of your personal data is carried out by the Data Controllers in full compliance with the relevant provisions of EU Regulation 2016/679 General Data Protection Regulation, the Italian regulations governing the processing of personal data and the provisions of the Italian supervisory authority (http://www.garanteprivacy.it/) and, where applicable, the relevant foreign supervisory authorities.<br>\r\nLast update: 25/05/2018<br>",
- "__index": 2,
- "dateCreated": "Tue, 17 Nov 2015 20:32:07 GMT",
- "tag": "privacy"
- },
- {
- "id": "returns-policy",
- "title": "Returns Policy",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "We want to make sure that you are completely satisfied with your purchases on this Site. If, for any reason, you are not satisfied with your order, you may return any UNUSED products within twenty (20) days from the date of delivery. Before sending any products back to us, please make sure that all of the following conditions have been correctly satisfied. \r\nThe product you wish to return:\r\n<li>can be sent back to us only after you have completed and submitted the online <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=help/return&”>Return Form</a> available on the www.stoneisland.com US Site within twenty (20) days of delivery; by completing and submitting our online return form you will receive your Return Number, which you must include on your return shipping label;</li>\r\n<li>must be unused, unworn, unwashed and in the same condition in which it was received by you;</li>\r\n<li>must have all disposable seals still attached with the disposable seal that must still be intact;</li>\r\n<li>must be returned complete with all of its parts and accessories;</li>\r\n<li>must be sent in its original packaging;</li>\r\n<li>must be shipped back to our fulfillment house within twenty (20) days of the date of delivery;</li>\r\n<li>must be sent in one single shipment; products that belong to the same order must be returned to us at the same time; and</li>\r\n<li>must be shipped from the United States.</li>\r\nIf all of these conditions are satisfied, we will refund the value of the returned product(s), Sales Tax included, less any original shipping costs. If you send the package with UPS, return shipping costs charged to the customer will correspond to $6.00. If you prefer you can send the return at your expense, with a courier of your choice. We will not issue any refunds for returns that do not satisfy all of the conditions indicated above; provided, however, that you will have the option to request within thirty (30) days of being notified that you are not entitled to a refund that your merchandise be shipped back to you, at your own cost, in the condition in which it was received by Provider’s fulfillment house.\r\nIf you do not request the return of your merchandise within said thirty-day period, you authorize Provider, and any of its affiliates or agents, to dispose of such merchandise as it sees fit. \r\n\r\nSALES OF BEACHWEAR AND UNDERWEAR ARE FINAL. WE RESERVE THE RIGHT TO DESIGNATE ON THE SITE OTHER NON-RETURNABLE MERCHANDISE. ANY SUCH DESIGNATION WILL BE NOTED ON THE DETAIL PAGE OF THE MERCHANDISE WHICH IS NON-RETURNABLE. \r\n\r\n<b>REFUND POLICY</b>\r\nRefunds are processed within approximately three (3) business days of our receipt of your merchandise. Your refund will be credited back to the same payment method used to make the original purchase on the US Site. If you paid by credit card, refund times will depend on the credit or debit card company’s policies. Be aware that the refund date for the credit will coincide with the date of the original payment, therefore you will not be charged any interest fees. If you paid by PayPal (where available), refunds will be credited to your PayPal account and will be visible immediately. The date of reimbursement to the credit card associated with your PayPal account depends on the company that issued the card. WE OFFER NO REFUNDS ON ANY PRODUCTS DESIGNATED ON THIS SITE AS NON-RETURNABLE. \r\n\r\n<b>IDENTIFICATION TAG</b>\r\nAll of our products come with an identification tag with a disposable seal. Please try your item on before removing the tag and seal, since we do not accept returns once the disposable seal has been removed, broken or damaged in any way. Shoes come with a sticker under the sole; if you remove or alter this sticker, you may no longer return your purchase. \r\n\r\n<b>UPS</b>\r\nYour return can be sent to us by UPS, using the pre-printed label which you can find within the original shipment. If you send the package with UPS, return shipping costs charged to the customer will correspond to $6.00. Please visit <a href=“https://www.ups.com/dropoff?loc=en_US “>http://www.ups.com/dropoff?loc=en_US</a> to find the UPS drop-off location nearest to you. If you prefer you can send the return at your expense, with a courier of your choice. We are not responsible for any loss or damage to products if you ship your return without using UPS. \r\n\r\nWE OFFER NO EXCHANGES ON MERCHANDISE PURCHASED ON THE www.stoneisland.com US SITE\r\n\r\nDISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY\r\n\r\nPROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE PRODUCTS INCLUDED ON THE SITE NOR AS TO THE MERCHANDISE BEING SOLD TO YOU. TO THE FULLEST EXTENT PERMISSIBLE BY APPLICABLE LAW, PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, AND THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, WHICH EXTEND BEYOND THE DESCRIPTION OF THE MERCHANDISE CONTAINED ON OUR ORDER CONFIRMATION. PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THE SITE, INCLUDING BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE AND CONSEQUENTIAL DAMAGES. \r\n\r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<b>Force Majeure</b>\r\nProvider shall not be liable for any delay or failure in performance caused by circumstances beyond its reasonable control.",
- "__index": "3",
- "dateCreated": "Tue, 17 Nov 2015 21:03:44 GMT",
- "tag": "returns"
- },
- {
- "id": "customer-care",
- "title": "Customer Care",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam blandit in risus sit amet maximus. Phasellus ullamcorper auctor fermentum. Aenean diam libero, rhoncus vel efficitur sed, dictum vel neque. Aliquam mollis leo vitae est vehicula, non pulvinar elit congue. Phasellus sit amet mauris neque. Integer volutpat nisl est, vel finibus purus lacinia vehicula. Proin dapibus velit quis sapien ultricies accumsan. Sed accumsan dui id porta efficitur.\r\n\r\nCurabitur pretium ut libero a varius. Morbi in lacinia felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam dolor justo, consequat eu lectus at, interdum sollicitudin arcu. Nunc accumsan velit volutpat, venenatis leo eu, rhoncus nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus semper consequat ipsum, sed fringilla ligula tincidunt at.\r\n\r\nMauris vehicula, purus ut iaculis facilisis, mi leo dignissim libero, at lobortis lectus odio consequat urna. Etiam accumsan volutpat nibh, eget ultricies mi feugiat eu. Duis id aliquam enim. Pellentesque quis enim eu dolor bibendum interdum. Cras ultrices erat velit, eu volutpat erat consequat non. Nam ut nibh facilisis, egestas sapien vitae, scelerisque sapien. Nullam tortor ex, convallis vel nisi vitae, efficitur dapibus nunc. In hac habitasse platea dictumst. Nam posuere ligula lorem, sit amet ultricies odio tristique in. Etiam gravida tincidunt mollis. Duis quis nulla ligula. Etiam ut vehicula tellus. Sed ipsum lacus, tincidunt sit amet velit et, aliquet hendrerit erat. Nam sed velit dapibus, congue odio non, ultrices ligula. Suspendisse at quam eu lorem finibus ultricies id tempus lorem. Nulla vel quam luctus, viverra nulla cursus, faucibus tellus.\r\n\r\nPraesent magna ex, posuere at hendrerit varius, auctor a nisl. Nullam sodales erat ut nisl vestibulum luctus. Donec id sagittis orci. Cras imperdiet, erat non dictum feugiat, elit turpis viverra neque, interdum cursus mi turpis vitae dolor. Suspendisse potenti. Aenean et auctor diam, vel eleifend eros. Praesent viverra felis at enim elementum fermentum. Etiam convallis, elit porta molestie condimentum, arcu ligula vestibulum nisi, et aliquet massa tellus quis eros. Aliquam a dignissim tellus, non ullamcorper purus. Phasellus in risus mattis dui vehicula cursus in at urna.\r\n\r\nCurabitur laoreet lorem eu euismod volutpat. Suspendisse vulputate aliquet tempor. Pellentesque purus augue, eleifend a maximus eu, commodo nec felis. Mauris mattis turpis nec volutpat tincidunt. Mauris imperdiet ante at orci mollis sagittis. Etiam lacus risus, consectetur ut dui non, pulvinar pulvinar libero. Aliquam ut rhoncus justo, quis sollicitudin nisi. Proin et iaculis sem. Pellentesque id tempor elit, et tincidunt nunc. Quisque laoreet et massa quis imperdiet. Morbi dapibus, felis sed auctor porttitor, massa nunc sollicitudin urna, non congue odio enim eget nisi. Suspendisse semper vehicula nisl vitae vehicula. Maecenas sed justo quis nisi auctor ultrices. Nam vel dolor fringilla, accumsan nulla eu, rutrum ex. Donec ante quam, molestie vel ex eget, dictum luctus nunc. Phasellus tincidunt libero non quam finibus, at convallis sem laoreet.\r\n\r\nDonec consequat, leo tincidunt elementum consectetur, nisl augue sollicitudin dolor, vel fringilla dui lorem non enim. Morbi id arcu felis. Integer malesuada ex enim, sed consectetur massa condimentum id. In mollis libero eu neque sollicitudin, sit amet interdum orci bibendum. Curabitur tincidunt purus vel vestibulum placerat. Aliquam erat volutpat. Praesent ac eros diam. Mauris ultrices euismod sodales. Vestibulum dui leo, auctor sit amet finibus eu, suscipit eu diam. Cras ac rhoncus turpis, at sagittis mi. Praesent urna metus, euismod vitae nunc eget, suscipit auctor lectus. Pellentesque maximus arcu justo. Duis mi arcu, rutrum et vulputate nec, mattis sit amet risus. Donec posuere velit sed enim accumsan, eu lobortis nulla sagittis.\r\n\r\nDonec viverra consectetur turpis sit amet malesuada. Sed sit amet urna luctus, sodales est porta, aliquam mi. Curabitur et ullamcorper odio, dapibus facilisis nisl. Fusce tortor leo, mattis sit amet massa ut, ultrices aliquam massa. Pellentesque consectetur metus in molestie egestas. Quisque vehicula at mauris ut eleifend. Duis eu ipsum quis ipsum bibendum luctus.\r\n\r\nSed sed viverra diam. Quisque lacinia nisl orci. Fusce vulputate dui ut nunc vulputate feugiat. Praesent felis quam, semper nec dapibus eget, venenatis vitae leo. Maecenas rutrum egestas dapibus. Vestibulum sodales molestie varius. Ut ac laoreet est, nec posuere ipsum. Cras ac eros sapien. Quisque eu dui lorem. Donec congue varius tortor ac ullamcorper. Curabitur vulputate faucibus finibus. Donec tellus neque, euismod ac aliquet at, vehicula in mauris. Vivamus justo nulla, maximus sit amet quam ac, vulputate dapibus purus. Mauris ante urna, posuere varius vehicula sed, fringilla sed quam. In eget ex tincidunt, ultrices elit id, congue quam. Suspendisse congue tristique dolor, rhoncus venenatis purus tempor at.\r\n\r\nVivamus efficitur, odio in tempor rutrum, quam nunc congue orci, non posuere lorem lacus et arcu. Aenean sit amet diam quis dui dapibus semper ac vitae est. Aenean ornare arcu justo, id sodales odio maximus interdum. Curabitur sit amet augue pretium metus bibendum imperdiet vitae vitae nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc euismod ante eu justo mollis dignissim. Maecenas et velit eu lorem laoreet ornare. Sed accumsan est nec rutrum dignissim.\r\n\r\nIn bibendum mattis ligula. Pellentesque gravida felis sed congue viverra. Nam volutpat quam at velit sodales, nec egestas dolor consectetur. Etiam id tortor tincidunt, sollicitudin risus ut, lacinia diam. Morbi consequat euismod justo vitae sagittis. Pellentesque interdum orci ligula, tincidunt maximus nulla sollicitudin sed. Duis finibus odio eros, eget consequat ante tristique ac. Suspendisse at interdum leo. Nunc sagittis ante ac felis iaculis fermentum. Sed elementum dictum dictum. Aliquam eget metus molestie, varius mi ac, auctor quam.",
- "__index": "4",
- "dateCreated": "Tue, 17 Nov 2015 21:03:57 GMT",
- "tag": "care"
- },
- {
- "id": "account-terms",
- "title": "Account Terms",
- "image": {
- "uri": "",
- "caption": "",
- "width": "",
- "height": ""
- },
- "body": "<h2>1. Services</h2>\r\n\r\nStone Island - SPORTSWEAR COMPANY S.p.A. (\"Stone Island\") offers you the possibility of using the following services \"My Account\" (the \"Services\")*:\r\n\r\n<ul>\r\n<li><b>My Orders:</b> Track the shipping of your orders, change or return items that are not for you and see the history of your orders.</li>\r\n<li><b>My Profile:</b> Manage your registration data.</li>\r\n<li><b>Address Book:</b> Save or change your addresses to have them always at hand and complete your purchases faster.</li>\r\n<li><b>My Card:</b> Save or change your card information and complete your orders faster and always safely.</li>\r\n</ul>\r\n\r\n<h2>2. Registration</h2>\r\n<h3>2.1</h3>\r\n\r\nIf you want to use the Services you must be an adult user, register on stoneisland.com creating your My Account account, and accept these terms and conditions for using the Services (\"Terms\"). Registration is free of charge. To create your My Account account, you will need to fill out the registration form by entering the required information, and guarantee to Stone Island that the information provided during the registration process is complete, accurate and truthful. We will send you an email to confirm your registration. We remind you that the credentials to access your My Account account must be used exclusively by you, and they cannot be transferred to third parties. Subject to legal limitations, Stone Island cannot in any way be held responsible in the event of access to your My Account account by unauthorized third parties. You are requested to keep your credentials confidential and to immediately inform Stone Island if you suspect that there has been an unauthorized access to your My Account account or if your password has been violated.\r\n\r\n\r\n<h3>2.2</h3>\r\n\r\nFor the provision of some Services, it may be necessary to use electronic communication channels (such as e-mail, SMS or telephone). If you want to use these specific services, you will be asked to give your consent to be contacted by Stone Island for the related communications by SMS, email or other communication channel.\r\n\r\n\r\n<h3>2.3</h3>\r\n\r\nWe also request you to consult, if you have not already done so, our <a href=\"#!/page/terms\">General Terms of Use</a> which form an integral part of these Terms. For any other legal information, consult the <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&\">General Terms of Sale</a>, <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy\">Return Policy</a> and <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&\">Privacy Policy</a> of stoneisland.com.\r\n\r\n\r\n<h2>3. Duration and withdrawal</h2>\r\n\r\n<h3>3.1</h3>\r\n\r\nThe registration with the Services shall be effective from the moment you receive the confirmation email and for the entire period in which you use the Services.\r\n\r\n\r\n<h3>3.2</h3>\r\n\r\nAt any time and for any reason, you can cancel your subscription to the Services by sending a request to our Customer Service and selecting \"privacy\". In the event you exercised the right of withdrawal, we will send you an email to confirm the cancellation of the Services.\r\n\r\n\r\n<h3>3.3</h3>\r\n\r\nStone Island reserves the right to cancel your registration with the Services in the event of a violation of the provisions contained in these Terms, or in the event that the data provided was not complete, truthful or accurate, without prejudice to the right to compensation for the damage suffered. Stone Island also reserves the right to temporarily suspend, without any prior communication, the provision of the Services, for the time necessary and / or appropriate, to perform all the technical interventions required to improve the quality of the Services. Stone Island may, at any time, interrupt the provision of the Services for security reasons.\r\n\r\n\r\n<h2>4. Warning on the Services</h2>\r\n\r\nStone Island shall do its best to provide an accurate services. Without prejudice to the legal limits, the Services are provided free of charge \"AS IS\". Stone Island does not provide any guarantee, by way of example but not limited to, relating to the quality, the good functioning, the absence of interruptions or the suitability of the Services for an end or a particular result set by the user.\r\n\r\n\r\n<h2>5. Rectification and Update</h2>\r\n\r\nThe present Terms can be amended from time to time in consideration of possible regulatory changes. The new Terms shall be effective as of their date of publication in stoneisland.com You are requested to regularly access this section in order to check the publication of the most recent and updated Privacy Policy.\r\n\r\n\r\n*The availability of the Service may vary by country or region. Verify your My Account account to see which Services are available.\r\n\r\n",
- "tag": "account_terms",
- "__index": 5,
- "dateCreated": "Tue, 24 Jul 2018 13:59:23 GMT"
- }
- ],
- "store": [
- {
- "id": "stone-island",
- "title": "STONE ISLAND",
- "StoreIsOpen": "false",
- "ClosedStoreImages": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/4b3949c0-7300-11e8-8a6b-3521187b68ec.jpg",
- "width": "519",
- "height": "692",
- "caption": ""
- }
- ],
- "__index": 0,
- "dateCreated": "Fri, 20 Nov 2015 00:45:03 GMT",
- "collection": "",
- "FitsLarge": "false",
- "BackgroundIsGray": "false",
- "CollectionId": "PPTSTTLSSC",
- "StoreStatus": "closed",
- "OpensOn": "",
- "DepartmentId": "PPTSTTLSSC",
- "StoreClosedMessageOne": "",
- "StoreClosedMessageTwo": "",
- "FittingCodes": "",
- "DepartmentStoreStatus": "closed",
- "Departments": [
- {
- "text": "REFLECTIVE TAPE",
- "uri": "PPTSTTLSSC"
- }
- ],
- "GroupBy": "none",
- "FilterBy": "none",
- "ShowProductNameOnCollectionPage": false,
- "NotAvailableInCanada": false,
- "FitsLargeText": ""
- },
- {
- "id": "test-environment",
- "title": "TEST ENVIRONMENT",
- "collection": "",
- "CollectionId": "",
- "DepartmentId": "",
- "Departments": [
- {
- "text": "Test",
- "uri": "PPPRVWFWSC1"
- }
- ],
- "StoreStatus": "closed",
- "DepartmentStoreStatus": "closed",
- "GroupBy": "none",
- "FilterBy": "none",
- "ShowProductNameOnCollectionPage": false,
- "OpensOn": "",
- "StoreClosedMessageOne": "",
- "StoreClosedMessageTwo": "",
- "FitsLarge": "false",
- "FittingCodes": "54160889KL",
- "BackgroundIsGray": "false",
- "ClosedStoreImages": [
- {
- "uri": "https://marsupial.s3.amazonaws.com/stoneisland/cfffd4b0-14b7-11e7-b4a1-69af24d3ff84.jpg",
- "width": "580",
- "height": "813",
- "caption": ""
- }
- ],
- "__index": 1,
- "dateCreated": "Sat, 15 Apr 2017 00:26:23 GMT",
- "NotAvailableInCanada": false,
- "FitsLargeText": "M (size on the label) &rarr; fits M/L\r\nL (size on the label) &rarr; fits L/XL\r\nXL (size on the label) &rarr; fits XL/XXL"
- }
- ]
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/CDVNotification.bundle/beep.wav b/StoneIsland/platforms/android/assets/www/img/Resources/CDVNotification.bundle/beep.wav
deleted file mode 100755
index 05f5997f..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/CDVNotification.bundle/beep.wav
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-568h@2x~iphone.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-568h@2x~iphone.png
deleted file mode 100755
index 47079c45..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-568h@2x~iphone.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-667h.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-667h.png
deleted file mode 100755
index 57a8f40e..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-667h.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-736h.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-736h.png
deleted file mode 100755
index 2f00da21..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-736h.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape-736h.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape-736h.png
deleted file mode 100755
index fc6512f7..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape-736h.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape@2x~ipad.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape@2x~ipad.png
deleted file mode 100755
index f0fa0658..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape@2x~ipad.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape~ipad.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape~ipad.png
deleted file mode 100755
index 89964903..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Landscape~ipad.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait@2x~ipad.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait@2x~ipad.png
deleted file mode 100755
index 9002f6f3..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait@2x~ipad.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait~ipad.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait~ipad.png
deleted file mode 100755
index 2916e875..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default-Portrait~ipad.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default@2x~iphone.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default@2x~iphone.png
deleted file mode 100755
index 13ada67a..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default@2x~iphone.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default~iphone.png b/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default~iphone.png
deleted file mode 100755
index 19d2b2ae..00000000
--- a/StoneIsland/platforms/android/assets/www/img/Resources/splash/Default~iphone.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/angle-down.png b/StoneIsland/platforms/android/assets/www/img/angle-down.png
deleted file mode 100644
index e0b3b00f..00000000
--- a/StoneIsland/platforms/android/assets/www/img/angle-down.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/bottom-fade.png b/StoneIsland/platforms/android/assets/www/img/bottom-fade.png
deleted file mode 100755
index 2765c9bf..00000000
--- a/StoneIsland/platforms/android/assets/www/img/bottom-fade.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/cart-box.png b/StoneIsland/platforms/android/assets/www/img/cart-box.png
deleted file mode 100755
index 4f2ff471..00000000
--- a/StoneIsland/platforms/android/assets/www/img/cart-box.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/cart-handle.png b/StoneIsland/platforms/android/assets/www/img/cart-handle.png
deleted file mode 100755
index 96b9e400..00000000
--- a/StoneIsland/platforms/android/assets/www/img/cart-handle.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/compass-logo.png b/StoneIsland/platforms/android/assets/www/img/compass-logo.png
deleted file mode 100755
index bdc8d946..00000000
--- a/StoneIsland/platforms/android/assets/www/img/compass-logo.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/compass-logo.png.old b/StoneIsland/platforms/android/assets/www/img/compass-logo.png.old
deleted file mode 100755
index d280a7fa..00000000
--- a/StoneIsland/platforms/android/assets/www/img/compass-logo.png.old
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/fade-to-bottom-threshold.gif b/StoneIsland/platforms/android/assets/www/img/fade-to-bottom-threshold.gif
deleted file mode 100755
index 808757e9..00000000
--- a/StoneIsland/platforms/android/assets/www/img/fade-to-bottom-threshold.gif
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/fade-to-bottom.png b/StoneIsland/platforms/android/assets/www/img/fade-to-bottom.png
deleted file mode 100755
index 2765c9bf..00000000
--- a/StoneIsland/platforms/android/assets/www/img/fade-to-bottom.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/left-arrow.png b/StoneIsland/platforms/android/assets/www/img/left-arrow.png
deleted file mode 100755
index d19f48f3..00000000
--- a/StoneIsland/platforms/android/assets/www/img/left-arrow.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/right-arrow.png b/StoneIsland/platforms/android/assets/www/img/right-arrow.png
deleted file mode 100755
index 00b62502..00000000
--- a/StoneIsland/platforms/android/assets/www/img/right-arrow.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/small-cart-box.png b/StoneIsland/platforms/android/assets/www/img/small-cart-box.png
deleted file mode 100755
index 59ebcd70..00000000
--- a/StoneIsland/platforms/android/assets/www/img/small-cart-box.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/small-cart-handle.png b/StoneIsland/platforms/android/assets/www/img/small-cart-handle.png
deleted file mode 100755
index 6b3567c2..00000000
--- a/StoneIsland/platforms/android/assets/www/img/small-cart-handle.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/small-logo.png b/StoneIsland/platforms/android/assets/www/img/small-logo.png
deleted file mode 100755
index 7b6e1b0d..00000000
--- a/StoneIsland/platforms/android/assets/www/img/small-logo.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/spinner.gif b/StoneIsland/platforms/android/assets/www/img/spinner.gif
deleted file mode 100755
index d9e986d3..00000000
--- a/StoneIsland/platforms/android/assets/www/img/spinner.gif
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/img/wide-logo.png b/StoneIsland/platforms/android/assets/www/img/wide-logo.png
deleted file mode 100755
index a7f4a2ac..00000000
--- a/StoneIsland/platforms/android/assets/www/img/wide-logo.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/assets/www/index.html b/StoneIsland/platforms/android/assets/www/index.html
deleted file mode 100755
index 568161e5..00000000
--- a/StoneIsland/platforms/android/assets/www/index.html
+++ /dev/null
@@ -1,1387 +0,0 @@
-<!doctype html>
-<html>
-<head>
- <!--
- Customize this policy to fit your own app's needs. For more guidance, see:
- https://github.com/apache/cordova-plugin-whitelist/blob/master/README.md#content-security-policy
- Some notes:
- * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
- * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
- * Disables use of inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
- * Enable inline JS: add 'unsafe-inline' to default-src
- -->
-
-
-<meta http-equiv="Content-Security-Policy" content="default-src * gap: 'unsafe-inline' 'unsafe-eval'; script-src * 'unsafe-inline' 'unsafe-eval'; object-src * 'unsafe-inline' 'unsafe-eval'; style-src * 'unsafe-inline' 'unsafe-eval'; img-src * 'unsafe-inline' 'unsafe-eval'; media-src * 'unsafe-inline' 'unsafe-eval'; frame-src * gap: 'unsafe-inline' 'unsafe-eval'; font-src * 'unsafe-inline' 'unsafe-eval'; connect-src * 'unsafe-inline' 'unsafe-eval'">
- <meta name="format-detection" content="telephone=no">
- <meta name="msapplication-tap-highlight" content="no">
- <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height">
- <meta charset="utf-8">
- <link rel="stylesheet" type="text/css" href="css/fonts/fonts.css">
- <link rel="stylesheet" type="text/css" href="css/fonts/ionicons.css">
- <link rel="stylesheet" type="text/css" href="css/vendor/flickity.css">
- <link rel="stylesheet" type="text/css" href="css/vendor/imageviewer.css">
- <link rel="stylesheet" type="text/css" href="css/index.css">
- <link rel="stylesheet" type="text/css" href="css/nav.css">
- <link rel="stylesheet" type="text/css" href="css/account.css">
- <link rel="stylesheet" type="text/css" href="css/products.css">
- <link rel="stylesheet" type="text/css" href="css/cart.css">
- <link rel="stylesheet" type="text/css" href="css/blogs.css">
- <title>Stone Island</title>
-</head>
-<body class="loading" role="application">
-
-<div id="nav" role="directory">
- <div id="nav-container">
- <div id="nav-row">
- <!-- flex -->
-
- <span role="menu" class="menu">
- <div class="logo" aria-label="Stone Island"></div>
- <div class="close" role="button" aria-label="Close menu"></div>
- <div role="menu" aria-label="Main Menu" class="main_menu">
- <span role="menuitem" class="store">STORE</span>
- <span role="menuitem" class="hub">HUB</span>
- <span role="menuitem" class="story">STORY</span>
- <span role="menuitem" class="archive">ARCHIVE</span>
- </div>
- <div role="menu" aria-label="Account Menu" class="account_menu">
- <span role="menuitem" aria-label="Back to main menu" class="account_back menu-emphasis">&lt; MY ACCOUNT</span>
- <span role="menuitem" class="profile">MY PROFILE</span>
- <span role="menuitem" class="payment">MY CARD</span>
- <span role="menuitem" class="shipping">ADDRESS BOOK</span>
- <span role="menuitem" class="orders">MY ORDERS</span>
- <span role="menuitem" class="return_link_us">RETURNS (US)</span>
- <span role="menuitem" class="return_link_ca">RETURNS (CANADA)</span>
- <span role="menuitem" class="settings">NOTIFICATIONS</span>
- </div>
- <div role="menu" aria-label="FAQ Menu" class="faq_menu">
- <span role="menuitem" aria-label="Back to main menu" class="faq_back menu-emphasis">&lt; FAQ</span>
- <span role="menuitem" class="privacy">PRIVACY POLICY</span>
- <span role="menuitem" class="account_terms">MY ACCOUNT TERMS AND CONDITIONS OF USE</span>
- <span role="menuitem" class="terms">TERMS AND CONDITIONS</span>
- <span role="menuitem" class="returns">RETURN POLICY</span>
- <span role="menuitem" class="care">CUSTOMER CARE</span>
- </div>
- </span>
-
- </div>
- <div id="nav-fill">
- <!-- flex fill -->
- <span role="menu" class="submenu">
- <div class="main_menu">
- <span role="menuitem" class="account">MY ACCOUNT</span>
- <span role="menuitem" class="login">LOGIN</span>
- <span role="menuitem" class="faq">FAQ</span>
- </div>
- <div class="account_menu">
- <span role="menuitem" class="logout">LOGOUT</span>
- <span role="menuitem" class="faq">FAQ</span>
- <span role="menuitem" class="main">MAIN MENU</span>
- </div>
- <div class="faq_menu">
- <span role="menuitem" class="account">MY ACCOUNT</span>
- <span role="menuitem" class="login">LOGIN</span>
- <span role="menuitem" class="logout">LOGOUT</span>
- <span role="menuitem" class="main">MAIN MENU</span>
- </div>
- </span>
- </div>
- <!-- end flex -->
- </div>
-
- <span class="social" role="list" aria-label="Social Links">
- <span role="menuitem" class="fb ion-social-facebook"></span>
- <span role="menuitem" class="insta ion-social-instagram-outline"></span>
- <span role="menuitem" class="tw ion-social-twitter"></span>
- <span role="menuitem" class="yt ion-social-youtube"></span>
- </span>
-</div>
-
-<div id="content">
-
- <div id="intro" role="menu" aria-label="Stone Island Home Screen">
- <div id="compass"></div>
- <div role="menuitem" class="store">STORE</div>
- <div role="menuitem" class="hub">HUB</div>
- <div role="menuitem" class="story">STORY</div>
- <div role="menuitem" class="archive">ARCHIVE</div>
- <div class="alert"></div>
- <span class="latlng" role="note" aria-label="Your Latitude and Longitude">+40&deg; 58' 90.9" N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;74&deg; 04' 46.3" W</span>
- </div>
-
- <div id="header" role="menubar" aria-label="Menu bar">
- <span role="link" aria-label="Show main menu" class="burger ion-android-menu"></span>
- <span role="link" aria-label="Homepage. Stone Island logo" class="logo"></span>
- <span role="link" aria-label="View cart" class="cart_rapper"><span class="cart"><span role="display" class="cart_count">0</span></span></span>
- </div>
-
- <!-- BLOGS ================================================ -->
-
- <div id="story" role="region" aria-label="Stone Island Story">
- <div class="scroll">
- <h1 aria-label="Current section: Stone Island Story">STORY</h1>
- <img>
- <ul class="links"></ul>
- <div class="content">
- <script type="text/html" class="template">
- <div data-id="{{id}}">
- <div class="body">{{body}}</div>
- </div>
- </script>
- </div>
- </div>
- </div>
-
- <div id="hub" role="region" aria-label="Stone Island Hub">
- <div class="scroll">
- <h1 aria-label="Current section: Stone Island Hub">HUB</h1>
- <div class="content">
- <script type="text/html" class="template">
- <div class="hub_item" data-id="{{id}}">
- <div class="gallery gallery-{{id}}" role="carousel"></div>
- <div role="button" class="gallery-target gallery-target-{{id}}"></div>
- <div role="button" aria-label='Scroll gallery to the left' class="gallery-left"></div>
- <div role="button" aria-label='Scroll gallery to the right' class="gallery-right"></div>
- <div role="heading" class="content-header">
- <div role="button" class="content-share" aria-label="Share this post">
- SHARE +
- </div>
- <span role="heading" aria-details="{{cleantitle}}" class="title">{{title}}</span>
- <span role="heading" aria-details="{{cleansubtitle}}"class="subtitle">{{subtitle}}</span>
- <span class="date">
- {{date}}
- <span class="store">
- | <b><u>STORE</u></b>
- </span>
- </span>
- </div>
- <div class="body">{{body}}</div>
- </div>
- </script>
- </div>
- </div>
- <div class="fade-cover"></div>
- </div>
-
- <div id="archive" role="region" aria-label="Stone Island Archive">
- <div class="scroll">
- <div class="content">
-
- <script type="text/html" class="template">
- <div class="image" aria-label="{{label}}" style="background-image:url({{image}})"></div>
- <div class="text">
- <div>
- <h2>
- <b>{{code}}</b><br>
- {{label}}
- </h2>
- <div class="body">
- {{caption}}
- </div>
- </div>
- </div>
-
- </script>
-
- </div>
- </div>
- <div class="menu" role="menu">
- <div class="items">
- <script type="text/html" class="template">
- <div role="button" class="item">{{title}}</div>
- </script>
- </div>
- </div>
- <div class="heading">
- <h1 role="heading" aria-label="Current section: Stone Island Archive">ARCHIVE</h1>
- <div role="heading" class="subtitle" aria-label="1982 to 2015">'982'015</div>
- </div>
- </div>
-
- <div id="privacy" role="region" aria-label="Privacy Policy" class="page">
- <div class="scroll">
- <h1 aria-label="Current section: Privacy Policy">PRIVACY POLICY</h1>
- <div class="content"></div>
- </div>
- </div>
-
- <div id="account_terms" role="region" aria-label="My Account Terms and Conditions of Use" class="page">
- <div class="scroll">
- <h1 aria-label="Current section: My Account terms and conditions of use">MY ACCOUNT TERMS AND CONDITIONS OF USE</h1>
- <div class="content">
- <h2>1. Services</h2>
- <p>
- Stone Island - SPORTSWEAR COMPANY S.p.A. ("Stone Island") offers you the possibility of using the following services "My Account" (the "Services")*:
- </p>
-
- <ul>
- <li><b>My Orders:</b> Track the shipping of your orders, change or return items that are not for you and see the history of your orders.</li>
- <li><b>My Profile:</b> Manage your registration data.</li>
- <li><b>Address Book:</b> Save or change your addresses to have them always at hand and complete your purchases faster.</li>
- <li><b>My Card:</b> Save or change your card information and complete your orders faster and always safely.</li>
- </ul>
-
- <h2>2. Registration</h2>
- <h3>2.1</h3>
-
- <p>If you want to use the Services you must be an adult user, register on stoneisland.com creating your My Account account, and accept these terms and conditions for using the Services ("Terms"). Registration is free of charge. To create your My Account account, you will need to fill out the registration form by entering the required information, and guarantee to Stone Island that the information provided during the registration process is complete, accurate and truthful. We will send you an email to confirm your registration. We remind you that the credentials to access your My Account account must be used exclusively by you, and they cannot be transferred to third parties. Subject to legal limitations, Stone Island cannot in any way be held responsible in the event of access to your My Account account by unauthorized third parties. You are requested to keep your credentials confidential and to immediately inform Stone Island if you suspect that there has been an unauthorized access to your My Account account or if your password has been violated.</p>
-
- <h3>2.2</h3>
-
- <p>For the provision of some Services, it may be necessary to use electronic communication channels (such as e-mail, SMS or telephone). If you want to use these specific services, you will be asked to give your consent to be contacted by Stone Island for the related communications by SMS, email or other communication channel.</p>
-
- <h3>2.3</h3>
-
- <p>We also request you to consult, if you have not already done so, our <a href="#!/page/terms">General Terms of Use</a> which form an integral part of these Terms. For any other legal information, consult the <a href="http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&">General Terms of Sale</a>, <a href="http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy">Return Policy</a> and <a href="http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&">Privacy Policy</a> of stoneisland.com.</p>
-
- <h2>3. Duration and withdrawal</h2>
-
- <h3>3.1</h3>
-
- <p>The registration with the Services shall be effective from the moment you receive the confirmation email and for the entire period in which you use the Services.</p>
-
- <h3>3.2</h3>
-
- <p>At any time and for any reason, you can cancel your subscription to the Services by sending a request to our Customer Service and selecting "privacy". In the event you exercised the right of withdrawal, we will send you an email to confirm the cancellation of the Services.</p>
-
- <h3>3.3</h3>
-
- <p>Stone Island reserves the right to cancel your registration with the Services in the event of a violation of the provisions contained in these Terms, or in the event that the data provided was not complete, truthful or accurate, without prejudice to the right to compensation for the damage suffered. Stone Island also reserves the right to temporarily suspend, without any prior communication, the provision of the Services, for the time necessary and / or appropriate, to perform all the technical interventions required to improve the quality of the Services. Stone Island may, at any time, interrupt the provision of the Services for security reasons.</p>
-
- <h2>4. Warning on the Services</h2>
-
- <p>Stone Island shall do its best to provide an accurate services. Without prejudice to the legal limits, the Services are provided free of charge "AS IS". Stone Island does not provide any guarantee, by way of example but not limited to, relating to the quality, the good functioning, the absence of interruptions or the suitability of the Services for an end or a particular result set by the user.</p>
-
- <h2>5. Rectification and Update</h2>
-
- <p>The present Terms can be amended from time to time in consideration of possible regulatory changes. The new Terms shall be effective as of their date of publication in stoneisland.com You are requested to regularly access this section in order to check the publication of the most recent and updated Privacy Policy.</p>
-
- <p>* The availability of the Service may vary by country or region. Verify your My Account account to see which Services are available.</p>
- </div>
- </div>
- </div>
-
- <div id="terms" role="region" aria-label="Terms and Conditions" class="page">
- <div class="scroll">
- <h1 aria-label="Current section: Terms and conditions">TERMS AND CONDITIONS</h1>
- <div class="content"></div>
- </div>
- </div>
-
- <div id="returns" role="region" aria-label="Return Policy" class="page">
- <div class="scroll">
- <h1 aria-label="Current section: Return policy">RETURN POLICY</h1>
- <div class="content"></div>
- </div>
- </div>
-
- <div id="care" role="region" aria-label="Customer Care" class="page">
- <div class="scroll">
- <h1 aria-label="Current section: Customer care">CUSTOMER CARE</h1>
- <div class="content"></div>
- </div>
- </div>
-
-
- <!-- STORE ================================================ -->
-
- <div id="collection" role="region" aria-label="Store">
- <div class="scroll">
- <h1 aria-label="Current section: Store">LOADING...</h1>
- <div class="loader"></div>
- <div class="content">
- <script type="text/html" class="template">
- <div role="link" class="item" data-code="{{code8}}" aria-label="{{title}}">
- <img src="{{image}}" alt="{{title}}">
- </div>
- </script>
- </div>
- </div>
- </div>
-
- <div id="search" role="search" aria-label="Search">
- <div class="scroll">
- <h1 aria-label="Current section: Search">SEARCH</h1>
- <div class="form">
- <input type="text" class="q" placeholder="ENTER YOUR SEARCH">
- </div>
- </div>
- </div>
-
- <div id="product" role="region" aria-label="Product view">
- <div class="scroll">
- <div class="loader"></div>
- <div id="gallery" class="gallery" role="carousel">
- <script type="text/html" class="template">
- <div role="link" class="item" aria-label="{{alt}}" style="background-image:url({{image}})"></div>
- </script>
- </div>
- <div role="button" class="gallery-target"></div>
- <div role="button" class="gallery-left" aria-label="Scroll gallery left"></div>
- <div role="button" class="gallery-right" aria-label="Scroll gallery right"></div>
- <div class="content">
- <div class="product-header">
- <span role="heading" class="title"></span>
- </div>
- <div class="type-price">
- <span class="type"></span>
- <span class="price"></span>
- </div>
- <div class="style-share">
- <span class="style">
- <div class="size-color">
- <div role="button" class="size" aria-label="Tap to select size. Current size">
- <div class="label"></div>
- <select name="size"></select>
- </div>
- <div role="button" class="color" aria-label="Tap to select color. Current color">
- <div class="label"></div>
- <select name="color"></select>
- </div>
- </div>
- </span>
- <span role="button" class="share" aria-label="Share this product">SHARE +</span>
- </div>
- <div class="fit">Fits Large</div>
- <div class='fitHeader'></div>
- <div class="notAvailableInCanada">Not Available In Canada</div>
- <div class="body">
- </div>
- <div class="sizing">
- <b>Sizing:</b> The products of this collaboration fit slightly larger than the classic Stone Island garments.
- <br><br>
- We suggest you choose a smaller size than yours.
- </div>
- </div>
- </div>
- </div>
-
- <div id="closed" role="region" aria-label="The store is closed">
- <div class="closed_target" role="button" aria-label="The store is closed. Placeholder image of a Stone Island model wearing a jacket."></div>
- <div class="closed_store_msg">
- <h3>
- LOADING THE STORE, PLEASE WAIT
- </h3>
- <h4>
- </h4>
- <div role="link" class="website_link" aria-label='Visit w w w dot stone island dot com'>
- visit<br>
- <b role='link' aria-label='w w w dot stone island dot com'>www.stoneisland.com</b>
- </div>
- </div>
- </div>
-
-
- <!-- ACCOUNT ================================================ -->
-
- <div id="login" role="region" aria-label="Log In">
- <div class="scroll">
- <h1 aria-label="Current section: Log In">LOGIN</h1>
- <div class="form">
- <div class="container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
- <label for="login_email_address">Email Address</label>
- <input type="email" id="login_email_address" name="Email" aria-placeholder="EMAIL ADDRESS" required tabindex="1">
- <span class='err'></span>
-
- <label for="login_password">Password</label>
- <form><input type="password" id="login_password" name="Password" aria-placeholder="PASSWORD" required tabindex="2"></form>
- <span class='err'></span>
- </div>
- <div class="container-fill">
- <div class="container-message premessage">
- <div rel="link" class="newuser">New User?</div>
- <div rel="link" class="forgotpassword">Forgot Password?</div>
- </div>
- <div class="container-message submessage">
- <span class="msg"></span>
- </div>
- </div>
- </div>
- <input type="submit" aria-label="Submit form" style="position: absolute; left: -9999px; width: 1px; height: 1px;">
- </div>
- </div>
- </div>
-
- <div id="logout" role="region" aria-label="You are now logged out">
- <div class="scroll">
- <h1 aria-label="Current section: You are now Logged Out">LOGOUT</h1>
- <div class="container">
- <div class="container-fill">
- <span class="container-message msg">
- You are now logged out.
- </span>
- </div>
- </div>
- </div>
- </div>
-
- <div id="signup" role="region" aria-label="New User. Create an account">
- <div class="scroll">
- <h1 aria-label="Current section: New User. Create an account">NEW USER</h1>
- <div class="form">
- <div class="container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
- <label for="signup_name">First Name</label>
- <input type="text" id="signup_name" name="Name" aria-placeholder="FIRST NAME" required tabindex="1">
- <span class='err'></span>
-
- <label for="signup_surname">Last Name</label>
- <input type="text" id="signup_surname" name="Surname" aria-placeholder="LAST NAME" required tabindex="2">
- <span class='err'></span>
-
- <label for="signup_email">Email Address</label>
- <input type="email" id="signup_email" name="Email" aria-placeholder="EMAIL ADDRESS" required tabindex="3">
- <span class='err'></span>
-
- <label for="signup_confirmemail">Confirm Email Address</label>
- <input type="email" id="signup_confirmemail" name="ConfirmEmail" aria-placeholder="CONFIRM EMAIL ADDRESS" required tabindex="4">
- <span class='err'></span>
-
- <label for="signup_birthday">Birthday (MM/DD/YYYY)</label>
- <div class="select-wrapper date-wrapper">
- <span></span>
- <input type="date" id="signup_birthday" name="BirthDay" aria-label="Birthday" min="1900-01-01" aria-placeholder="BIRTHDAY (MM/DD/YYYY)" required tabindex="5">
- </div>
- <span class='err'></span>
-
- <h2>PASSWORD</h2>
- <label for="signup_password">Password (7 Characters or more)</label>
- <input type="password" id="signup_password" name="Password" aria-placeholder="PASSWORD (7 CHARACTERS OR MORE)" required tabindex="6">
- <span class='err'></span>
-
- <label for="signup_confirm_password">Confirm Password</label>
- <input type="password" id="signup_confirm_password" name="Password2" aria-placeholder="CONFIRM PASSWORD" required tabindex="7">
- <span class='err'></span>
- </div>
-
- <div class="container-row">
- <div class="checkbox-container">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input type="checkbox" id="checkbox-data-profiling" aria-labelledby="checkbox-data-profiling-label" name="YooxLetter" value="true" required tabindex="8">
- <label for="checkbox-data-profiling"></label>
- </div>
- <label class="checkbox-caption" for="checkbox-data-profiling" id="checkbox-data-profiling-label">
- I AGREE TO STONE ISLAND - SPORTSWEAR COMPANY COLLECTING AND PROCESSING MY PERSONAL INFORMATION FOR MARKETING PURPOSES.
- </label>
- </div>
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input type="checkbox" id="checkbox-shopping-data-profiling" aria-labelledby="checkbox-shopping-data-profiling-label" name="DataProfiling" value="true" required tabindex="9">
- <label for="checkbox-shopping-data-profiling"></label>
- </div>
- <label class="checkbox-caption" for="checkbox-shopping-data-profiling" id="checkbox-shopping-data-profiling-label">
- I AGREE TO STONE ISLAND - SPORTSWEAR COMPANY COLLECTING AND PROCESSING MY PERSONAL INFORMATION TO CUSTOMIZE MY SHOPPING EXPERIENCE BASED ON MY INTERESTS AND HABITS.
- </label>
- </div>
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input type="checkbox" id="checkbox-shopping-account-terms" aria-labelledby="checkbox-gdpr-terms-label" name="GdprTerms" value="true" required tabindex="10">
- <label for="checkbox-shopping-data-profiling"></label>
- </div>
- <label class="checkbox-caption" for="checkbox-shopping-account-terms" id="checkbox-gdpr-terms-label">
- I ACCEPT MY ACCOUNT TERMS AND CONDITIONS OF USE *
- </label>
- </div>
- <div class="container-message submessage">
- <span class="msg"></span>
- </div>
- <div class="privacy-msg">
- Personal data will be electronically processed by SPORTSWEAR COMPANY and YOOX NET-A-PORTER GROUP in order to complete your request. Please note that you are responsible for third party data that you disclose to SPORTSWEAR COMPANY and YOOX NET-A-PORTER GROUP.
- <br>
- Consult our <a href="#/page/privacy">PRIVACY POLICY</a> for further information.
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="profile" role="region" aria-label="My Profile">
- <div class="scroll">
- <h1 aria-label="Current section: My Profile">MY PROFILE</h1>
- <div class="form">
- <div class="container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
- <label for="profile_name">First Name</label>
- <input type="text" id="profile_name" name="Name" aria-placeholder="FIRST NAME" required tabindex="1">
- <span class='err'></span>
-
- <label for="profile_surname">Last Name</label>
- <input type="text" id="profile_surname" name="Surname" aria-placeholder="LAST NAME" required tabindex="2">
- <span class='err'></span>
-
- <label for="profile_email">Email Address</label>
- <input type="email" id="profile_email" name="Email" aria-placeholder="EMAIL ADDRESS" required tabindex="3">
- <span class='err'></span>
-
- <label for="profile_birthday">Birthday (MM/DD/YYYY)</label>
- <div class="select-wrapper date-wrapper">
- <span></span>
- <input type="date" id="profile_birthday" name="BirthDay" aria-label="Birthday" min="1900-01-01" aria-placeholder="BIRTHDAY (MM/DD/YYYY)" required tabindex="5">
- </div>
- <span class='err'></span>
-
- <h2>CHANGE PASSWORD</h2>
- <label for="profile_password">Current Password</label>
- <input type="password" id="profile_password" name="CurrentPassword" aria-placeholder="CURRENT PASSWORD" required tabindex="6">
- <span class='err'></span>
-
- <label for="profile_confirm_password">New Password (7 characters or more)</label>
- <input type="password" id="profile_confirm_password" name="NewPassword" aria-placeholder="NEW PASSWORD (7 CHARACTERS OR MORE)" required tabindex="7">
- <span class='err'></span>
- </div>
-
- <div class="container-fill container-fill-condensed">
- <div class="container-message container-message-condensed">
- <span class="msg msg-condensed">
- </span>
- </div>
- </div>
- <div class="container-row">
- <div class="checkbox-container">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input type="checkbox" id="checkbox-data-profiling-profile" aria-labelledby="yoox-letter-checkbox" name="YooxLetter" value="true" required tabindex="7">
- <label for="checkbox-data-profiling-profile"></label>
- </div>
- <label class="checkbox-caption" for="checkbox-data-profiling-profile" id="yoox-letter-checkbox">
- I AGREE TO STONE ISLAND - SPORTSWEAR COMPANY COLLECTING AND PROCESSING MY PERSONAL INFORMATION FOR MARKETING PURPOSES.
- </label>
- </div>
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input type="checkbox" id="checkbox-shopping-data-profiling-profile" aria-labelledby="yoox-data-profiling-checkbox" name="DataProfiling" value="true" required tabindex="8">
- <label for="checkbox-shopping-data-profiling-profile"></label>
- </div>
- <label class="checkbox-caption" for="checkbox-shopping-data-profiling-profile" id="yoox-data-profiling-checkbox">
- I AGREE TO STONE ISLAND - SPORTSWEAR COMPANY COLLECTING AND PROCESSING MY PERSONAL INFORMATION TO CUSTOMIZE MY SHOPPING EXPERIENCE BASED ON MY INTERESTS AND HABITS.
- </label>
- </div>
- <div class="privacy-msg">
- Personal data will be electronically processed by SPORTSWEAR COMPANY and YOOX NET-A-PORTER GROUP in order to complete your request. Please note that you are responsible for third party data that you disclose to SPORTSWEAR COMPANY and YOOX NET-A-PORTER GROUP.
- <br>
- Consult our <a href="#/page/privacy">PRIVACY POLICY</a> for further information.
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="shipping" role="region" aria-label="Address Book">
- <div class="scroll">
- <h1 aria-label="Current section: Your address book">ADDRESS BOOK</h1>
- <div class="form">
- <div class="container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
- <div class="address"></div>
- </div>
- <div class="container-fill">
- <div class="container-message">
- <span class="msg">
- * Your personal and payment<br>
- information will always remain private
- </span>
- </div>
- <div rel="link" class="privacy-msg">
- Consult our <u>PRIVACY POLICY</u> for further information.
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="payment" role="region" aria-label="My Card">
- <div class="scroll">
- <h1 aria-label="Current section: My Card">MY CARD</h1>
- <div class="form">
- <div class="container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
- <div class="cc"></div>
- <div class="address"></div>
- </div>
- <div class="container-fill">
- <div class="container-message">
- <span class="msg">
- * Your personal and payment<br>
- information will always remain private
- </span>
- </div>
- <div rel="link" class="privacy-msg">
- Consult our <u>PRIVACY POLICY</u> for further information.
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="settings" role="region" aria-label="Notifications">
- <div class="scroll">
- <h1 aria-label="Current section: Notifications">NOTIFICATIONS</h1>
- <div class="form">
- <div class="toggle-container">
- <div class="toggle-row">
- <div class="caption">
- <h3>Store</h3>
- Receive notifications for Store
- </div>
- <div class="toggle">
- <input type="checkbox" aria-label="Receive notifications for Store" id="store-notifications" name="store" class="switch">
- <label for="store-notifications"></label>
- </div>
- </div>
- <div class="toggle-row">
- <div class="caption">
- <h3>Hub</h3>
- Receive notifications for Hub
- </div>
- <div class="toggle">
- <input type="checkbox" aria-label="Receive notifications for Hub" id="hub-notifications" name="hub" class="switch">
- <label for="hub-notifications"></label>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="orders" role="region" aria-label="My Orders">
- <div class="scroll">
- <h1 aria-label="Current section: My orders">MY ORDERS</h1>
- <div id="order_list">
- <div class="list"></div>
- <div class="empty">You have no orders.</div>
- <script type="text/html" class="list_template">
- <div class="item" data-id="{{id}}">
- <div class="details-container">
- <div class="details">
- Details &gt;
- </div>
- <div class="txt">
-
- <span class="text-date">{{date}}</span>
- <span class="text-id">ORDER #: {{id}}</span>
- <span class="text-total">ORDER TOTAL: {{total}}</span>
- </div>
- </div>
- <div class="images">
- </div>
- </div>
- </script>
- </div>
-
- <div id="single_order">
- <div class="order_section">
- <h2>ORDER SUMMARY</h2>
-
- <div class="rows">
- <script type="text/html" class="item_template">
- <div class="cart_item_info">
- <span class="sku">{{sku}}</span>
- <span class="title">{{title}}</span>
- <span class="type">{{type}}</span>
- <div class="meta">
- <div class="meta-size"><b>SIZE:</b> {{size}}</div>
- <div class="meta-color"><b>COLOR:</b> {{color}}</div>
- <div class="meta-quantity"><b>QUANTITY:</b> {{quantity}}</div>
- </div>
- </div>
- <div class="cart_item_price">
- <span class="price">{{price}}</span>
- </div>
- </script>
- </div>
- <div class="cart-summary">
- <div class="cart-summary-row">
- <span class="label">SUB TOTAL</span>
- <span class="subtotal"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">ESTIMATED SHIPPING &amp; HANDLING</span>
- <span class="shipping"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TAX</span>
- <span class="tax"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TOTAL</span>
- <span class="total"></span>
- </div>
- </div>
- </div>
-
- <div class="order_section">
- <h2>SHIP TO</h2>
- <div class="order_section_container">
- <div class="shipping_address"></div>
- <div class="shipping_method"></div>
- </div>
- </div>
-
- </div>
- </div>
- </div>
-
- <!-- CART ================================================ -->
-
- <div id="cart" role="region" aria-label="Your Cart">
- <h1 role="presentation">
- <span class="full_msg" role="heading" aria-label="Current section: Your cart">
- YOUR CART / <span class="itemcount"></span>
- </span>
- <span class="empty_msg" role="heading" aria-label="Current section: Your cart is empty">
- YOUR CART IS EMPTY
- </span>
- </h1>
-
- <div class="steps">
- <span class="summary_step">SUMMARY</span>
- <span class="shipping_step">SHIPPING</span>
- <span class="payment_step">PAYMENT</span>
- </div>
-
- <div id="cart_summary" role="region" aria-label="Cart Summary">
- <div class="scroll">
- <div class="summary-container container">
- <div class="container-row">
- <div class="cart_body">
- <div class="rows">
- <script type="text/html" class="template">
- <div class="cart_item_image">
- <a href="#/store/{{code8}}" aria-label="{{cleantitle}}"><img src="{{image}}"></a>
- </div>
- <div class="cart_item_info">
- <span class="sku" aria-label="SKU">{{sku}}</span>
- <span class="title" aria-label="Product name: {{cleantitle}}">{{title}}</span>
- <span class="type" aria-label="Product type">{{type}}</span>
- <div class="meta">
- <div class="meta-size" aria-label="Size"><b>SIZE:</b> {{size}}</div>
- <div class="meta-color" aria-label="Color"><b>COLOR:</b> {{color}}</div>
- <div class="meta-quantity" aria-label="Quantity"><b>QUANTITY:</b> {{quantity}}</div>
- </div>
- </div>
- <div class="cart_item_price">
- <span class="remove" aria-label="Remove item from your cart. Item to be removed: {{cleantitle}}"></span>
- <span class="price">{{price}}</span>
- </div>
- </script>
- </div>
- <div class="cart-summary">
- <div class="cart-summary-row">
- <span class="label">SUB TOTAL</span>
- <span class="subtotal"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">ESTIMATED SHIPPING<br>& HANDLING</span>
- <span class="shipping"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TAX</span>
- <span class="tax"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TOTAL</span>
- <span class="total"></span>
- </div>
- </div>
- </div>
- </div>
- <div class="container-fill">
- <div class="container-message cart_empty">
- You have nothing in your cart.
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="cart_shipping" role="region" aria-label="Cart Shipping">
- <div class="scroll">
- <div class="form">
- <div class="dropdown-wrapper">
- <div class="dropdown-title add_edit">add / edit</div>
- <div class="dropdown select_address">
- ADDRESS
- </div>
- </div>
- <div class="address_list checkbox-container">
- <script type="text/html" class="template">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="address-checkbox-{{id}}" type="radio" name="AddressId" value="{{id}}" {{checked}}>
- <label for="address-checkbox-{{id}}"></label>
- </div>
- <label class="checkbox-caption" for="address-checkbox-{{id}}">
- {{name}}<br>
- {{address}}, {{city}}, {{state}} {{zip}}
- </label>
- </div>
- </script>
- </div>
- <div class="address"></div>
-
- <h3>SHIPPING METHOD</h3>
-
- <div class="checkbox-container">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="express-shipping" type="radio" name="ShippingType" value="Express" checked required>
- <label for="express-shipping"></label>
- </div>
- <label class="checkbox-caption" for="express-shipping">
- <b>COMPLIMENTARY EXPRESS</b><br>
- (DELIVERY IN 2-4 WORKING DAYS)
- </label>
- </div>
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="standard-shipping" type="radio" name="ShippingType" value="Standard" required>
- <label for="standard-shipping"></label>
- </div>
- <label class="checkbox-caption" for="standard-shipping">
- <b>STANDARD SHIPPING</b><br>
- (DELIVERY IN 5-8 WORKING DAYS)
- </label>
- </div>
- </div>
-
- <div class="container-row">
- <div class="container-fill">
- <div class="container-message">
- <span class="msg">
- * Your personal and payment<br>
- information will always remain private
- </span>
- </div>
- <a href="#/page/privacy">
- <div class="privacy-msg">
- Consult our <u>PRIVACY POLICY</u> for further information.
- </div>
- </a>
- </div>
- </div>
-
- </div>
- </div>
- </div>
-
- <div id="cart_payment" role="region" aria-label="Cart Payment">
- <div class="scroll">
- <div class="form">
-
- <div class="billing-container container">
- <div class="container-row">
- <span class='err_heading'>There was a problem submitting the form. Please correct the form below and try again.</span>
-
- <div class="checkbox-container">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="same-as-shipping" type="checkbox" name="SameAsShipping" value="true">
- <label for="same-as-shipping"></label>
- </div>
- <label class="checkbox-caption" for="same-as-shipping">
- SAME AS SHIPPING ADDRESS
- </label>
- </div>
- </div>
-
- <div class="billing_address_rapper">
-
- <div class="address_dropdown dropdown-wrapper">
- <div class="dropdown-title add_edit"> </div>
- <div class="dropdown select_address">
- BILLING ADDRESS
- </div>
- </div>
- <div class="address_list checkbox-container">
- <script type="text/html" class="address_row_template">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="address-checkbox-{{id}}" type="radio" name="AddressId" value="{{id}}" {{checked}}>
- <label for="address-checkbox-{{id}}"></label>
- </div>
- <label class="checkbox-caption" for="address-checkbox-{{id}}">
- {{name}}<br>
- {{address}}, {{city}}, {{state}} {{zip}}
- </label>
- </div>
- </script>
- </div>
-
- <div class="address"></div>
-
- </div>
-
- <div class="cc_dropdown dropdown-wrapper">
- <div class="dropdown-title add_edit"></div>
- <div class="dropdown select_address">
- PAYMENT METHOD
- </div>
- </div>
-
- <div class="cc_list checkbox-container">
- <script type="text/html" class="cc_template">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="cc-checkbox-{{id}}" aria-label="Select this credit card" type="radio" name="CCId" value="{{id}}" {{checked}}>
- <label for="cc-checkbox-{{id}}"></label>
- </div>
- <label class="checkbox-caption" for="cc-checkbox-{{id}}">
- {{number}}<br>
- {{type}} {{exp}}
- </label>
- </div>
- </script>
- </div>
-
- <div class="cc"></div>
-
- <div class="cc_confirm">
- <h3>PLEASE ENTER YOUR SECURITY CODE TO CONFIRM</h3>
- <input type="number" name="CvvConfirm" placeholder="SECURITY CODE" required>
- </div>
- </div>
-
- <div class="container-fill">
- <div class="container-message">
- <span class="msg">
- * Your personal and payment<br>
- information will always remain private
- </span>
- </div>
- <a class='privacy-link'> href="#/page/privacy">
- <div class="privacy-msg">
- Consult our <u>PRIVACY POLICY</u> for further information.
- </div>
- </a>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div id="cart_confirm" role="region" aria-label="Confirm your order">
- <div class="scroll">
- <h1 aria-label="Current section: Confirm your cart">CONFIRM</h1>
-
- <div class="order_section">
- <h2>ORDER SUMMARY</h2>
-
- <div class="rows">
- <script type="text/html" class="template">
- <div class="cart_item_info">
- <span class="sku">{{sku}}</span>
- <span class="title">{{title}}</span>
- <span class="type">{{type}}</span>
- <div class="meta">
- <div class="meta-size"><b>SIZE:</b> {{size}}</div>
- <div class="meta-color"><b>COLOR:</b> {{color}}</div>
- <div class="meta-quantity"><b>QUANTITY:</b> {{quantity}}</div>
- </div>
- </div>
- <div class="cart_item_price">
- <span class="price">{{price}}</span>
- </div>
- </script>
- </div>
- <div class="cart-summary">
- <div class="cart-summary-row">
- <span class="label">SUB TOTAL</span>
- <span class="subtotal"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">ESTIMATED SHIPPING<br>& HANDLING</span>
- <span class="shipping"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TAX</span>
- <span class="tax"></span>
- </div>
- <div class="cart-summary-row">
- <span class="label">TOTAL</span>
- <span class="total"></span>
- </div>
- </div>
- </div>
-
- <div class="order_section">
- <h2>SHIP TO</h2>
-
- <div class="shipping_address"></div>
- <div class="shipping_method"></div>
- </div>
-
- <div class="order_section">
- <h2>BILL TO</h2>
-
- <div class="payment_name"></div>
- <div class="payment_method"></div>
- </div>
-
- <div class="container-message submessage">
- <span class="msg"></span>
- </div>
-
- </div>
- </div>
-
- <div id="cart_thanks">
- <div class="copy">
- <b>THANK YOU</b>
- <p>
- Please check your inbox for your confirmation email.
- </p>
- </div>
- </div>
-
- <div id="cart_error">
- <div class="copy">
- <b>WE'RE SORRY</b>
- <p class="errrrrrrrrrrrrrrr"></p>
- </div>
- </div>
-
- </div>
-
- <div id="footer" role="menubar" aria-label="Footer">
- <!-- 'Cancel' i think needs to go BACK in the navigation.. rather than jumping to the home screen -->
- <div role="button" class="cancel">CANCEL</div>
- <div role="button" class="ok">OK</div>
- </div>
-
- <div id="curtain">
- <div class="loader"></div>
- </div>
-
- <div class="modal" id="consent_modal" role="modal" aria-label="Please accept the new terms">
- YOUR MY ACCOUNT
- <br><br>
- We have improved the My Account Terms and Conditions of Use.
- <br><br>
- <div class="checkbox-container account_terms_consent">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="modal_account_terms_consent" type="checkbox" name="AccountTermsConsent" value="true">
- <label for="account_terms_consent"></label>
- </div>
- <label class="checkbox-caption" for="modal_account_terms_consent">
- Accept <a href='#/page/account_terms'>My Account Terms and Conditions of Use</a> *
- </label>
- </div>
- </div>
- <br><br>
- For more information, please consult our
- <a href="#/page/privacy">Privacy Policy</a> or visit
- <a href="#" id="care-link">Customer Care</a>.
- <br><br>
- To continue to My Account we invite you to click accept. Otherwise you can continue to navigate as an unregistered user.
- <br><br>
- <div id="consent_error">Please note that if you do not consent to terms, you cannot use the app.</div>
- <br><br>
- <button id="consent_proceed">PROCEED</button>
- <button id="consent_logout">LOG OUT</button>
- </div>
-
- <div id="selector">
- <div class="options" role="select">
- <script type="text/html" class="template">
- <div aria-label="Pick {{label}}" data-id="{{id}}">{{label}}</div>
- </script>
- </div>
- </div>
-
-</div>
-
-<!-- Forms -->
-
-<script type="text/html" id="creditcard_template">
- <label for="creditcard_id_{{_id}}">Credit Card Number</label>
- <input type="number" id="creditcard_id_{{_id}}" name="Number" aria-placeholder="CREDIT CARD NUMBER" required>
- <span class='err'></span>
-
- <div class="half-input">
- <label for="cc_expiration_month_{{_id}}">EXPIRATION MONTH</label>
- <label for="cc_expiration_year_{{_id}}">EXPIRATION YEAR</label>
- </div>
-
- <div class="half-input">
- <div class="select-wrapper">
- <span></span>
- <select name="ExpirationMonth" id="cc_expiration_month_{{_id}}">
- <option value="NONE">EXPIRATION MONTH</option>
- <option value="01">01</option>
- <option value="02">02</option>
- <option value="03">03</option>
- <option value="04">04</option>
- <option value="05">05</option>
- <option value="06">06</option>
- <option value="07">07</option>
- <option value="08">08</option>
- <option value="09">09</option>
- <option value="10">10</option>
- <option value="11">11</option>
- <option value="12">12</option>
- </select>
- </div>
- <div class="select-wrapper">
- <span></span>
- <select name="ExpirationYear" id="cc_expiration_year_{{_id}}">
- <option value="NONE">EXPIRATION YEAR</option>
- <option value="2019">2019</option>
- <option value="2020">2020</option>
- <option value="2021">2021</option>
- <option value="2022">2022</option>
- <option value="2023">2023</option>
- <option value="2024">2024</option>
- <option value="2025">2025</option>
- <option value="2026">2026</option>
- <option value="2027">2027</option>
- <option value="2028">2028</option>
- <option value="2029">2029</option>
- <option value="2030">2030</option>
- </select>
- </div>
- </div>
- <label for="cc_cvv_{{_id}}">Security Code</label>
- <input type="number" id="cc_cvv_{{_id}}" name="Cvv" aria-placeholder="SECURITY CODE" required>
- <span class='err'></span>
-</script>
-
-<script type="text/html" id="address_template">
- <label for="address_name_{{_id}}">First Name</label>
- <input type="text" id="address_name_{{_id}}" name="Name" aria-placeholder="First Name">
- <span class="err"></span>
-
- <label for="address_surname_{{_id}}">Last Name</label>
- <input type="text" id="address_surname_{{_id}}" name="Surname" aria-placeholder="Last Name">
- <span class="err"></span>
-
- <label for="address_address1_{{_id}}">Address line 1</label>
- <input type="text" id="address_address1_{{_id}}" name="Address1" aria-placeholder="Address Line 1">
- <span class="err"></span>
-
- <label for="address_address2_{{_id}}">Address line 2</label>
- <input type="text" id="address_address2_{{_id}}" name="Address2" aria-placeholder="Address Line 2">
- <span class="err"></span>
-
- <div class="half-input">
- <label for="address_city_{{_id}}">City</label>
- <label for="address_state_{{_id}}">State</label>
- </div>
-
- <div class="half-input">
- <input type="text" id="address_city_{{_id}}" name="City" aria-placeholder="City">
- <div class="select-wrapper">
- <span></span>
- <select id="address_state_{{_id}}" name="Province">
- {{PROVINCES}}
- </select>
- </div>
- </div>
-
- <div class="half-input">
- <label for="address_zip_{{_id}}">Zip</label>
- <label>Country</label>
- </div>
-
- <div class="half-input">
- <input type="text" id="address_zip_{{_id}}" name="ZipCode" aria-placeholder="ZIP" required>
- <div class="country-wrapper-static">
- <span class="country-label">UNITED STATES</span>
-<!--
- <div id="country-select">
- <input type="text" name="Country" placeholder="UNITED STATES" required>
- </div>
- -->
- </div>
- </div>
-
- <label for="address_phone_{{_id}}">Phone Number</label>
- <input type="number" id="address_phone_{{_id}}" name="Phone" aria-placeholder="PHONE NUMBER">
- <span class="err"></span>
-<!--
- <div class="checkbox-container save_as_default">
- <div class="checkbox-row">
- <div class="checkbox-toggle">
- <input id="save_as_default_cart_shipping" type="checkbox" name="IsDefault" value="true">
- <label for="save_as_default_cart_shipping"></label>
- </div>
- <label class="checkbox-caption" for="save_as_default_cart_shipping">
- SAVE AS DEFAULT
- </label>
- </div>
- </div>
--->
-</script>
-
-<script type="text/html" id="us_states">
- <option value="NONE" selected>State</option>
- <option value="AL">Alabama</option>
- <option value="AK">Alaska</option>
- <option value="AZ">Arizona</option>
- <option value="AR">Arkansas</option>
- <option value="CA">California</option>
- <option value="CO">Colorado</option>
- <option value="CT">Connecticut</option>
- <option value="DE">Delaware</option>
- <option value="DC">District Of Columbia</option>
- <option value="FL">Florida</option>
- <option value="GA">Georgia</option>
- <option value="HI">Hawaii</option>
- <option value="ID">Idaho</option>
- <option value="IL">Illinois</option>
- <option value="IN">Indiana</option>
- <option value="IA">Iowa</option>
- <option value="KS">Kansas</option>
- <option value="KY">Kentucky</option>
- <option value="LA">Louisiana</option>
- <option value="ME">Maine</option>
- <option value="MD">Maryland</option>
- <option value="MA">Massachusetts</option>
- <option value="MI">Michigan</option>
- <option value="MN">Minnesota</option>
- <option value="MS">Mississippi</option>
- <option value="MO">Missouri</option>
- <option value="MT">Montana</option>
- <option value="NE">Nebraska</option>
- <option value="NV">Nevada</option>
- <option value="NH">New Hampshire</option>
- <option value="NJ">New Jersey</option>
- <option value="NM">New Mexico</option>
- <option value="NY">New York</option>
- <option value="NC">North Carolina</option>
- <option value="ND">North Dakota</option>
- <option value="OH">Ohio</option>
- <option value="OK">Oklahoma</option>
- <option value="OR">Oregon</option>
- <option value="PA">Pennsylvania</option>
- <option value="RI">Rhode Island</option>
- <option value="SC">South Carolina</option>
- <option value="SD">South Dakota</option>
- <option value="TN">Tennessee</option>
- <option value="TX">Texas</option>
- <option value="UT">Utah</option>
- <option value="VT">Vermont</option>
- <option value="VA">Virginia</option>
- <option value="WA">Washington</option>
- <option value="WV">West Virginia</option>
- <option value="WI">Wisconsin</option>
- <option value="WY">Wyoming</option>
-</script>
-
-<script type="text/html" id="ca_states">
- <option disabled>_________________</option>
- <option value="AB">Alberta</option>
- <option value="BC">British Columbia</option>
- <option value="MB">Manitoba</option>
- <option value="NB">New Brunswick</option>
- <option value="NL">Newfoundland and Labrador</option>
- <option value="NS">Nova Scotia</option>
- <option value="NT">Northwest Territories</option>
- <option value="NU">Nunavut</option>
- <option value="ON">Ontario</option>
- <option value="PE">Prince Edward Island</option>
- <option value="SK">Saskatchewan</option>
- <option value="QC">Quebec</option>
- <option value="YT">Yukon</option>
-</script>
-
-</body>
-<script src="cordova.js"></script>
-<script src="js/vendor/jquery-2.1.4.min.js"></script>
-<script src="js/vendor/fastclick.js"></script>
-<script src="js/vendor/iscroll.js"></script>
-<script src="js/vendor/loader.js"></script>
-<script src="js/vendor/lodash.min.js"></script>
-<script src="js/vendor/moment.js"></script>
-<script src="js/vendor/oktween.js"></script>
-<script src="js/vendor/imageviewer.js"></script>
-<script src="js/vendor/prefixfree.js"></script>
-<script src="js/vendor/promise.js"></script>
-<script src="js/vendor/flickity.pkgd.js"></script>
-<script src="js/vendor/util.js"></script>
-<script src="js/vendor/jquery.creditCardValidator.js"></script>
-
-<script src="js/sdk/_sdk.js"></script>
-<script src="js/sdk/account.js"></script>
-<script src="js/sdk/address.js"></script>
-<script src="js/sdk/auth.js"></script>
-<script src="js/sdk/cart.js"></script>
-<script src="js/sdk/payment.js"></script>
-<script src="js/sdk/product.js"></script>
-<script src="js/sdk/shipping.js"></script>
-
-<script src="js/lib/etc/push.js"></script>
-<script src="js/lib/etc/deeplink.js"></script>
-<script src="js/lib/etc/geo.js"></script>
-<script src="js/lib/etc/sim.js"></script>
-<script src="js/lib/etc/backup_db.js"></script>
-<script src="js/lib/etc/accessibility.js"></script>
-<script src="js/lib/etc/scroll.js"></script>
-
-<script src="js/lib/view/View.js"></script>
-<script src="js/lib/view/Router.js"></script>
-<script src="js/lib/view/Scrollable.js"></script>
-<script src="js/lib/view/Serializable.js"></script>
-
-<script src="js/lib/cart/CartView.js"></script>
-<script src="js/lib/cart/CartPayment.js"></script>
-<script src="js/lib/cart/CartShipping.js"></script>
-<script src="js/lib/cart/CartSummary.js"></script>
-<script src="js/lib/cart/CartConfirm.js"></script>
-<script src="js/lib/cart/CartThanks.js"></script>
-<script src="js/lib/cart/CartError.js"></script>
-
-<script src="js/lib/nav/IntroView.js"></script>
-<script src="js/lib/nav/CurtainView.js"></script>
-<script src="js/lib/nav/HeaderView.js"></script>
-<script src="js/lib/nav/FooterView.js"></script>
-<script src="js/lib/nav/SearchView.js"></script>
-<script src="js/lib/nav/AddressView.js"></script>
-<script src="js/lib/nav/CreditCardView.js"></script>
-<script src="js/lib/nav/NavView.js"></script>
-
-<script src="js/lib/auth/LoginView.js"></script>
-<script src="js/lib/auth/LogoutView.js"></script>
-<script src="js/lib/auth/SignupView.js"></script>
-
-<script src="js/lib/account/AccountView.js"></script>
-<script src="js/lib/account/ConsentModal.js"></script>
-<script src="js/lib/account/ProfileView.js"></script>
-<script src="js/lib/account/PaymentView.js"></script>
-<script src="js/lib/account/ShippingView.js"></script>
-<script src="js/lib/account/SettingsView.js"></script>
-<script src="js/lib/account/OrdersView.js"></script>
-
-<script src="js/lib/products/CollectionView.js"></script>
-<script src="js/lib/products/filters/CategoryFilter.js"></script>
-<script src="js/lib/products/filters/DepartmentFilter.js"></script>
-<script src="js/lib/products/filters/SizeFilter.js"></script>
-<script src="js/lib/products/ClosedStoreView.js"></script>
-<script src="js/lib/products/ProductView.js"></script>
-<script src="js/lib/products/GalleryView.js"></script>
-<script src="js/lib/products/Selector.js"></script>
-
-<script src="js/lib/blogs/BlogView.js"></script>
-<script src="js/lib/blogs/ArchiveView.js"></script>
-<script src="js/lib/blogs/HubView.js"></script>
-<script src="js/lib/blogs/StoryView.js"></script>
-<script src="js/lib/blogs/PageView.js"></script>
-
-<script src="js/lib/_router.js"></script>
-
-<script src="js/index.js"></script>
-</html>
diff --git a/StoneIsland/platforms/android/assets/www/js/index.js b/StoneIsland/platforms/android/assets/www/js/index.js
deleted file mode 100755
index 42cec6f1..00000000
--- a/StoneIsland/platforms/android/assets/www/js/index.js
+++ /dev/null
@@ -1,165 +0,0 @@
-var app = (function(){
- var app = {}
-
- app.init = function(){
- console.log("init")
-
- if (window.location.hostname === 'lvh.me' || window.location.hostname === 'dev.stone.giraffe.life' || window.location.hostname === 'staging.stone.giraffe.life') {
- console.log('launching in test mode')
- sdk.init({ env: "test" })
- }
- else {
- sdk.init({ env: "production" })
- }
-
- if (window.cordova) {
- document.addEventListener('deviceready', app.device_ready, false)
- }
- else {
- app.device_ready()
- }
- }
-
- app.bind = function(){
- document.addEventListener('touchmove', function(e){ e.preventDefault() })
- FastClick.attach(document.body)
- }
-
- app.build = function(){
- app.blog = new BlogView ()
- app.archive = new ArchiveView ()
- app.hub = new HubView ()
- app.story = new StoryView ()
- app.cart = new CartView ()
-
- app.intro = new IntroView ()
- app.header = new HeaderView ()
- app.footer = new FooterView ()
- app.curtain = new CurtainView ()
- app.nav = new NavView ()
-
- app.account = new AccountView ()
- app.login = new LoginView ()
- app.logout = new LogoutView ()
- app.signup = new SignupView ()
- app.profile = new ProfileView ()
- app.payment = new PaymentView ()
- app.shipping = new ShippingView ()
- app.settings = new SettingsView ()
- app.orders = new OrdersView ()
-
- app.terms = new PageView ({ page: "terms" })
- app.privacy = new PageView ({ page: "privacy" })
- app.account_terms = new PageView ({ page: "account_terms" })
- app.returns = new PageView ({ page: "returns" })
- app.care = new PageView ({ page: "care" })
-
- app.collection = new CollectionView ()
- app.product = new ProductView ()
- app.closed = new ClosedStoreView ()
- app.search = new SearchView ()
-
- app.selector = new Selector ()
- }
-
- app.device_ready = function(){
- accessibility.init(app.ready) // check if we can do native scrolling before build
- }
-
- app.ready = function(){
- console.log(">> READY")
-
- app.bind()
- app.build()
-
- app.iscroll_options = {
- mouseWheel: true,
- scrollbars: true,
- disablePointer: is_android ? true : false, // important to disable the pointer events that causes the issues
- disableTouch: false, // false if you want the slider to be usable with touch devices
- disableMouse: false // false if you want the slider to be usable with a mouse (desktop)
- }
-
- if (window.cordova) {
- document.addEventListener('pause', app.paused, false)
- document.addEventListener('resume', app.resumed, false)
- document.addEventListener('online', app.online, false)
- document.addEventListener('offline', app.offline, false)
- cordova.plugins.Keyboard.disableScroll(true)
- cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false)
- geo.fetch()
- sim.fetch(app.api_ready)
- var image = new Image
- image.src = "./img/compass-logo.png"
- }
- else {
- app.api_ready()
- }
- }
-
- app.api_ready = function(){
- if (is_iphone_x && 'StatusBar' in window) {
- window.StatusBar.hide()
- }
-
- app.view = null
- app.router = new SiteRouter ()
-
- // if (sdk.env == "test") {
- // app.router.launch()
- // }
- // else {
- // }
- push.init()
-
- if (navigator.onLine) {
- app.account.connect(window.deepLinkRoute || '/intro')
- app.blog.fetch(function(){
- console.log("navigating to deep link route after fetch")
- app.router.initial_route = window.deepLinkRoute || null
- app.router.launch()
- })
- }
- else {
- console.log(">> LAUNCHED WHILE OFFLINE")
- app.router.go("intro")
- app.finished_launching()
- }
- }
-
- app.finished_launching = function(){
- console.log(">> FINISHED LAUNCHING")
- if (window.cordova) {
- navigator.splashscreen.hide()
- }
- if (window.deepLinkRoute) {
- app.router.go(window.deepLinkRoute)
- }
- app.fullscreenViewer = ImageViewer()
- $("body").removeClass("loading")
- }
-
- var refresh_time = +Date.now()
- app.paused = function(){}
- app.resumed = function(){
- console.log( "app is ready?", app.is_ready )
-
- geo.fetch()
- var now = +Date.now()
- if (now - refresh_time > 60 * 60 * 1000) {
- refresh_time = now
- app.blog.refresh()
- }
- }
-
- app.online = function(){
- console.log(">> ONLINE")
- }
- app.offline = function(){
- console.log(">> OFFLINE")
- }
-
- return app
-})()
-
-app.init()
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/_router.js b/StoneIsland/platforms/android/assets/www/js/lib/_router.js
deleted file mode 100755
index 75f598e9..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/_router.js
+++ /dev/null
@@ -1,138 +0,0 @@
-var SiteRouter = Router.extend({
-
- el: 'body',
- routeByHash: true,
-
- routes: {
- '/': 'intro',
- '/intro': 'intro',
- '/hub': 'hub',
- '/story': 'story',
- '/archive': 'archive',
-
- '/store': 'collection',
- '/store/closed': 'closed',
- '/store/:code': 'product',
-
- '/account/login': 'login',
- '/account/logout': 'logout',
- '/account/signup': 'signup',
- '/account/profile': 'profile',
- '/account/payment': 'payment',
- '/account/shipping': 'shipping',
- '/account/orders': 'orders',
- '/account/settings': 'settings',
-
- '/page/terms': 'terms',
- '/page/account_terms': 'account_terms',
- '/page/privacy': 'privacy',
- '/page/returns': 'returns',
- '/page/care': 'care',
-
- '/search': 'search',
-
- '/cart': 'cart.summary',
- '/cart/summary': 'cart.summary',
- '/cart/payment': 'cart.payment',
- '/cart/shipping': 'cart.shipping',
- '/cart/confirm': 'cart.confirm',
- '/cart/thanks': 'cart.thanks',
- '/cart/error': 'cart.error',
- },
-
- terms_routes: [
- 'terms',
- 'account_terms',
- 'privacy',
- 'returns',
- 'care',
- 'logout',
- ],
-
- initialize: function(){
- var fn
- for (var route in this.routes) {
- fn = this.routes[route]
- if (! this[fn]) {
- this[fn] = this.default_view(fn)
- }
- }
- },
-
- initial_route: null,
- launch: function(){
- console.log("LAUNCH!")
- if (this.initial_route) {
- this.parseRoute( this.initial_route )
- }
- else {
- this.route()
- }
- this.initial_route = null
-
- app.finished_launching()
- },
-
- go: function(url){
- if (app.view && app.view.hide) {
- app.view.hide()
- }
- window.location.href = "#/" + url
- this.parseRoute(url)
- },
-
- default_view: function(name){
- var fn = function(){
- console.log(name)
- var n = [name]
- if (app.view != app.login && app.view != app.signin) {
- app.last_view = app.view
- }
- if (app.view && app.view.hide) {
- app.view.hide()
- }
- if (name.match(/\./)) {
- n = name.split(".")
- console.log(name, n)
- app.view = app[n[0]][n[1]]
- }
- else {
- app.view = app[name]
- }
-
- // window.FirebasePlugin && window.FirebasePlugin.setScreenName(name)
- console.log("view >>", app.view)
- app.header.set_back( !! app.view.back )
- app.view.show()
-
- // var isTermsRoute = this.terms_routes.indexOf(name) !== -1
- // var isCartRoute = n[0] === 'cart'
- // if ( (isCartRoute || app.demand_consent && !isTermsRoute) && app.account.consent.check()) {
- // console.log('showed consent modal')
- // return
- // }
-
- var isNotTermsRoute = this.terms_routes.indexOf(name) === -1
- var isCartRoute = n[0] === 'cart'
- var userMightActuallyViewCart = isCartRoute && auth.logged_in()
- var demandingConsent = app.demand_consent && isNotTermsRoute
- if ((userMightActuallyViewCart || demandingConsent) && app.account.consent.check()) {
- console.log('showed consent modal')
- return
- }
- }.bind(this)
- return fn
- },
-
- product: function(code){
- if (app.view && app.view.hide) {
- app.view.hide()
- }
- app.view = app.product
- app.header.set_back( true )
- app.product.load(code)
- app.product.show()
- },
-
-})
-
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/AccountView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/AccountView.js
deleted file mode 100755
index af035f6a..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/AccountView.js
+++ /dev/null
@@ -1,176 +0,0 @@
-var AccountView = View.extend({
-
- initialize: function(){
- this.consent = new ConsentModal({ parent: this })
- },
-
- connect: function(initialLoginPath){
- auth.init(this.ready.bind(this, function(){}, initialLoginPath))
- },
-
- ready: function(cb, initialLoginPath){
- if (auth.logged_in()) {
- this.logged_in(cb, initialLoginPath)
- }
- else {
- this.logged_out(cb)
- }
- },
-
- addresses: [],
- addressLookup: {},
- ccs: [],
- ccLookup: {},
-
- listAddresses: function(opt){
- opt = opt || {}
- sdk.address.list({
- success: function(data){
- this.populateAddresses(data, opt.success)
- }.bind(this),
- error: function(data){
- console.log("error listing addresses!")
- console.log(data.responseText)
- opt.error && opt.error()
- }.bind(this),
- })
- },
-
- populateAddresses: function(data, cb){
- console.log("populate addresses:", data.AddressBook.addressBookItem)
-
- if (! data.AddressBook) {
- console.log("no addresses")
- cb && cb()
- return
- }
-
- this.addresses = data.AddressBook.addressBookItem
- this.addressLookup = {}
- data.AddressBook.addressBookItem.forEach(function(item){
- this.addressLookup[ item.Id ] = item
- if (item.IsDefault) {
- console.log("SHIPPING ADDRESS", item)
- app.shipping.populate(item)
- }
- if (item.IsBillingDefault) {
- console.log("BILLING ADDRESS")
- app.payment.populate(item)
- }
- }.bind(this))
-
- app.cart.shipping.populate()
- app.cart.payment.populate()
-
- cb && cb()
- },
-
- listCreditCards: function(cb){
- sdk.payment.list_credit_cards({
- success: function(data){
- this.populateCreditCards(data, cb)
- }.bind(this)
- })
- },
-
- populateCreditCards: function(data, cb){
- // console.log("populate ccs:", data.CreditCards)
- this.ccs = data.CreditCards
- this.ccLookup = {}
- if (! data.CreditCards || ! data.CreditCards.length) {
- }
- else {
- data.CreditCards.forEach(function(cc){
- this.ccLookup[cc.Id] = cc
- }.bind(this))
- app.payment.populate( data.CreditCards[0] )
- app.cart.payment.populate()
- }
- cb && cb()
- },
-
- logged_in: function(cb, initialLoginPath){
- this.listAddresses()
- this.listCreditCards()
- $("#nav .login").hide()
- $("#nav .account, #nav .logout").show()
- if (! auth.deferred_product && app.last_view) {
- if (app.last_view != app.login && app.last_view != app.signin && app.last_view != app.logout) {
- app.view && app.view.hide && app.view.hide()
- app.view = app.last_view
- app.view.show()
- }
- }
- else {
- cb && cb()
- }
- console.log('logged in')
- app.account.consent.check()
- if ( ! auth.has_cart() ) {
- console.log('no cart')
- app.curtain.show("loading")
- auth.create_cart({
- success: function(){
- console.log('got cart')
- if (auth.deferred_product) {
- console.log('adding deferred product')
- auth.add_deferred_product_to_cart({
- success: function(){
- console.log('success!')
- app.router.go("cart")
- setTimeout(function(){
- app.curtain.hide("loading")
- }, 500)
- },
- error: function(){
- // TODO: should not be called because cart was just created
- console.log("ERROR ADDING PRODUCT TO NEW CART")
- },
- })
- }
- else {
- if (initialLoginPath) {
- console.log("navigating to deep link route from logged_in")
- app.router.go(initialLoginPath)
- }
- else if (!app.last_view) {
- app.router.go("account/profile")
- }
- app.account.consent.check()
- app.curtain.hide("loading")
- }
- },
- error: function(){
- // error CREATING cart...
- console.log("ERROR CREATING CART")
- auth.log_out()
- app.account.logged_out()
- },
- })
- }
- else {
- if (auth.deferred_product) {
- auth.add_deferred_product_to_cart({
- success: function(){
- app.router.go("cart")
- },
- error: function(){
- // TODO: cart might be invalid..
- console.log("CALLED LOGGED_IN, HAD DEFERRED PRODUCT")
- },
- })
- }
- else {
- app.cart.load()
- }
- }
- },
-
- logged_out: function(cb){
- $("#nav .login").show()
- $("#nav .account, #nav .logout").hide()
- $("#nav").removeClass("account")
- cb && cb()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/ConsentModal.js b/StoneIsland/platforms/android/assets/www/js/lib/account/ConsentModal.js
deleted file mode 100644
index c9235498..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/ConsentModal.js
+++ /dev/null
@@ -1,90 +0,0 @@
-var ConsentModal = View.extend({
-
- el: "#consent_modal",
-
- events: {
- "change [name=AccountTermsConsent]": "changeConsent",
- "click #consent_proceed": "proceed",
- "click #consent_logout": "logout",
- "click a": "navigate",
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.$checkbox = this.$("[name=AccountTermsConsent]")
- this.$consentError = this.$("#consent_error")
- },
-
- check: function(){
- var status = localStorage.getItem('account_terms.consent')
- console.log('account_terms.consent', status)
- if (status !== 'true') {
- console.log('we demand consent!')
- app.demand_consent = true
- this.show()
- return true
- } else {
- console.log('already received consent!')
- this.hide()
- app.demand_consent = false
- return false
- }
- },
-
- show: function(){
- app.demand_consent = true
- this.$el.show()
- setTimeout(function(){
- this.$el.addClass('visible')
- }.bind(this), 20)
- app.curtain.show('opaque')
- setTimeout(function(){
- app.curtain.show('opaque')
- }, 300)
- },
-
- hide: function(){
- app.curtain.hide()
- this.$el.removeClass('visible')
- setTimeout(function(){
- this.$el.hide()
- app.curtain.$el.removeClass('opaque')
- }.bind(this), 300)
- },
-
- navigate: function(e){
- var href = $(e.currentTarget).attr('href').replace('#', '')
- console.log(href)
- this.hide()
- app.router.go(href)
- },
-
- changeConsent: function(){
- var state = this.$checkbox.prop("checked")
- if (state) {
- this.$consentError.removeClass('visible')
- } else {
- this.$consentError.addClass('visible')
- }
- },
-
- proceed: function(){
- var state = this.$checkbox.prop("checked")
- if (!state) {
- this.$consentError.addClass('visible')
- return
- }
- app.demand_consent = false
- this.hide()
- localStorage.setItem('account_terms.consent', 'true')
- },
-
- logout: function(){
- app.demand_consent = false
- this.hide()
- localStorage.setItem('account_terms.consent', 'false')
- app.router.go("account/logout")
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/OrdersView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/OrdersView.js
deleted file mode 100755
index 1522a096..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/OrdersView.js
+++ /dev/null
@@ -1,195 +0,0 @@
-var OrdersView = ScrollableView.extend({
-
- el: "#orders",
-
- loaded: false,
-
- list_template: $("#orders .list_template").html(),
- item_template: $("#orders .item_template").html(),
-
- events: {
- "click .back": "back",
- "click .item": "load_single",
- },
-
- initialize: function(){
- this.$list = this.$(".list")
- this.$empty = this.$(".empty")
- this.$single_order = this.$("#single_order")
-
- this.$rows = this.$(".rows")
- this.$subtotal = this.$(".subtotal")
- this.$shipping = this.$(".shipping")
- this.$tax = this.$(".tax")
- this.$total = this.$(".total")
-
- this.$shipping_address = this.$(".shipping_address")
- this.$shipping_method = this.$(".shipping_method")
-
- this.scroller = ScrollFactory('#orders', app.iscroll_options)
- },
-
- show: function(){
- if (! auth.logged_in()) { return app.router.go("intro") }
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO VIEW<br>YOUR ORDERS.", "")
- return
- }
- app.account.consent.check()
- app.header.set_back(false)
- app.footer.hide()
- document.body.className = "orders"
- this.deferScrollToTop()
- this.el.className = ""
-
- if (this.loaded) {
- this.populate()
- }
- else {
- this.fetch()
- }
- },
-
- orders: null,
- orderLookup: {},
-
- fetch: function(){
- this.$list.empty()
- this.$empty.hide()
- this.loader = new Loader(this.ready.bind(this))
- app.curtain.show("loading")
- sdk.account.fetch_orders({
- success: function(data){
- this.loader.register("orders")
- this.orders = data.OrderDetails
- data.OrderDetails.forEach(function(row){
- this.loader.register(row.OrderNumber)
- sdk.account.fetch_single_order({
- id: row.OrderNumber,
- success: function(row_data){
- this.orderLookup[ row.OrderNumber ] = row_data.OrderFullDetails
- this.loader.ready(row.OrderNumber)
- }.bind(this),
- error: function(){
- this.orderLookup[ row.OrderNumber ] = null
- this.loader.ready(row.OrderNumber)
- }.bind(this),
- })
- }.bind(this))
- this.loader.ready("orders")
- }.bind(this),
- error: function(){
- console.log("error fetching orders")
- }.bind(this),
- })
- },
-
- ready: function(){
- this.populate()
- app.curtain.hide("loading")
- },
-
- populate: function(){
- this.$list.empty()
-
- if (! this.orders.length) {
- this.$empty.show()
- return
- }
- else {
- this.$empty.hide()
- }
- this.orders.forEach(function(row){
- var order = this.orderLookup[ row.OrderNumber ]
- if (! order) { return }
- var t = this.list_template.replace(/{{date}}/g, moment(order['Date']).format("ddd MM/DD/YYYY").toUpperCase())
- .replace(/{{id}}/g, row.OrderNumber)
- .replace(/{{total}}/g, as_cash( order.TotalAmount ))
- var $t = $(t), $images = $t.find(".images")
- order.Items.forEach(function(item){
- var img = new Image ()
- img.src = sdk.image(item['Code10'], "11_f")
- $images.append(img)
- }.bind(this))
- this.$list.append($t)
- }.bind(this))
-
- this.refreshScroller()
- },
-
- load_single: function(e){
- var id = $(e.currentTarget).data("id")
- var order = this.orderLookup[ id ]
- if (! order) { return }
-
- console.log(order)
-
- this.$rows.empty()
-
- order.Items.forEach(function(item){
- var $el = $("<div class='item'><img src='img/spinner.gif'></div>")
- this.$rows.append($el)
- var code_ten = item.Code10
-
- var code = code_ten.substr(0, 8)
- app.product.find(code, function(data, details){
- var descriptions = app.product.get_descriptions( details )
-
- var name_partz = descriptions['ModelNames'].split(' ')
- var num = name_partz.shift()
- var title = name_partz.join(' ')
- var type = title_case( descriptions['MicroCategory'] )
-
- var color_name, size_name
-
- details.Item.ModelColors.some(function(color){
- if (color['Code10'] == code_ten) {
- color_name = color['ColorDescription']
- return true
- }
- return false
- })
- size_name = item.DefaultSize + " " + item.DefaultSizeClassFamily
-
- var t = this.item_template
- .replace(/{{image}}/, sdk.image(item['Code10'], '11_f'))
- .replace(/{{sku}}/, num)
- .replace(/{{title}}/, title)
- .replace(/{{type}}/, type)
- .replace(/{{size}}/, size_name || "DEFAULT")
- .replace(/{{color}}/, color_name || "DEFAULT")
- .replace(/{{quantity}}/, 1)
- .replace(/{{price}}/, as_cash(details.Item.Price.DiscountedPrice))
- $el.data("price", details.Item.Price.DiscountedPrice)
- $el.html(t)
- this.refreshScroller()
- }.bind(this))
- }.bind(this))
-
- var subtotal = order.ItemsTotalAmount
- var shipping_cost = order.Delivery.Amount
- var tax = order.SalesTaxAmount
- var total = order.TotalToPay
-
- this.$subtotal.html( as_cash(subtotal) )
- this.$shipping.html( as_cash(shipping_cost) )
- this.$tax.html( as_cash(tax) )
- this.$total.html( as_cash(total) )
-
- var street = order.Delivery.Address.replace(/\n$/,"").replace("\n","<br>")
- var address = order.Delivery.Name + "<br>" + street + "<br>" + order.Delivery.City + " " + order.Delivery.ZipCode
- this.$shipping_address.html(address)
- this.$shipping_method.html(order.Delivery.Type + " - " + order.Delivery.Time)
-
- app.header.set_back(true)
- this.$el.addClass("single")
- },
-
- back: function(){
- app.header.set_back(false)
- this.el.className = ""
- },
-
-})
-
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/PaymentView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/PaymentView.js
deleted file mode 100755
index 8767b39f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/PaymentView.js
+++ /dev/null
@@ -1,128 +0,0 @@
-var PaymentView = FormView.extend({
-
- el: "#payment",
-
- action: sdk.payment.add_credit_card,
-
- events: {
- },
-
- test_data: {
- "Name":"Name",
- "Surname":"Surname",
- "Address1":"address",
- "Address2":"address2",
- "City":"Ferrara",
- "Province":"NY",
- "HolderIsoCountry":"IT",
- "CreditCardCountry": "US",
- "ZipCode":"40200",
- "Type":"Visa",
- "Number":"4111111111111111",
- "ExpirationMonth":"09",
- "ExpirationYear":"2017",
- "Cvv":"1233",
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.address = new AddressView ({ parent: this, checkPhone: false })
- this.cc = new CreditCardView ({ parent: this })
- this.scroller = ScrollFactory('#payment', app.iscroll_options)
- },
-
- show: function(){
- if (! auth.logged_in()) { return app.router.go("intro") }
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO CHANGE<br>YOUR PAYMENT INFO.", "")
- return
- }
- app.account.consent.check()
- app.footer.show("SAVE")
- document.body.className = "payment"
- this.deferScrollToTop()
- // this.preload()
- },
-
- populate: function(data){
- this.data = data || this.data
- this.address.populate(data)
- this.cc.populate(data)
- },
-
- finalize: function(data){
- if (this.cc.data && this.cc.data.Guid) {
- sdk.payment.delete_credit_card({
- guid: this.cc.data.Guid,
- success: function(){ console.log("deleted credit card") },
- error: function(){ console.log("error deleting credit card") },
- })
- }
-
- data.IsDefault = "true" // this.$isDefault.prop("checked") ? "true" : "false"
- data.UserId = sdk.auth.user_id
- data.HolderIsoCountry = "US"
- data.CreditCardNumber = data.Number
- data.IsPreferred = "true"
-
- console.log(data)
- return data
- },
-
- success: function(data){
- app.curtain.show("loading")
- app.account.listAddresses({
- success: function(){
- this.$msg.html('Your payment information has been saved.')
- app.curtain.hide("loading")
- }.bind(this),
- error: function(){
- app.curtain.hide("loading")
- },
- })
- },
-
- error: function(data){
- console.log("ERROR WITH PAYMENT")
- console.log(data)
- },
-
- cancel: function(){
- app.router.go("intro")
- },
-
-})
-
-/*
- var new_card = {
- "Name":"Name",
- "Surname":"Surname",
- "Address":"address",
- "City":"Ferrara",
- "Province":"FE",
- "HolderIsoCountry":"IT",
- "ZipCode":"40200",
- "Type":"Visa",
- "Number":"0000567890124285",
- "ExpirationMonth":"02",
- "ExpirationYear":"2017",
- }
- promise(sdk.payment.add_credit_card, { data: new_card }).then(function(data){
- last_guid = data['CreditCard']['Guid']
- assert(data.Header.StatusCode == 201)
- assert(!! last_guid)
- done()
- })
-
- promise(sdk.payment.list_credit_cards, { data: {} }).then(function(data){
- assert(data.Header.StatusCode == 201)
- console.log(data)
- done()
- })
-
- promise(sdk.payment.delete_credit_card, { guid: last_guid }).then(function(data){
- assert(data.Header.StatusCode == 200)
- done()
-*/ \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/ProfileView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/ProfileView.js
deleted file mode 100755
index 1bbfff22..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/ProfileView.js
+++ /dev/null
@@ -1,129 +0,0 @@
-var ProfileView = FormView.extend({
-
- el: "#profile",
-
- events: {
- "click .privacy-msg": "privacy_link",
- },
-
- action: sdk.account.update,
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.scroller = ScrollFactory('#profile', app.iscroll_options)
- },
-
- show: function(){
- if (! auth.logged_in()) { return app.router.go("intro") }
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO<br>EDIT YOUR PROFILE.", "")
- return
- }
- if (! auth.user) return
- app.account.consent.check()
- app.footer.show("SAVE")
- document.body.className = "profile"
- if (auth.user.BirthDay.match(/T/)) {
- auth.user.BirthDay = auth.user.BirthDay.split("T")[0]
- }
- if (auth.user.BirthDay === '1900-01-01') {
- auth.user.BirthDay = ''
- }
- if (auth.user.name && ! auth.user.Name) {
- auth.user.Name = auth.user.name
- }
- if (auth.user.surname && ! auth.user.Surname) {
- auth.user.Surname = auth.user.surname
- }
- if (auth.user.email && ! auth.user.Email) {
- auth.user.Email = auth.user.email
- }
- console.log(auth.user)
- this.preload(auth.user)
- this.deferScrollToTop()
- },
-
- validate_presence: {
- "Name": "Please enter your first name.",
- "Surname": "Please enter your last name.",
- "Email": "Please enter a valid email address.",
- // "BirthDay": "Please enter your birthday.",
- },
-
- validate_fields: function(data, errors){
- if (! data.Email.match("@")) { errors.push([ "Email", "Email address is not valid." ]) }
- if (! data.CurrentPassword && (data.NewPassword || data.Email !== auth.user.Email)) { errors.push([ "CurrentPassword", "Please enter your current password." ]) }
- if (data.CurrentPassword && ! data.NewPassword) { errors.push([ "NewPassword", "Please enter your new password." ]) }
- if (data.NewPassword && data.NewPassword.length < 7) { errors.push([ "CurrentPassword", "New password must be 7 characters or more." ]) }
- var now = new Date ()
- var year = now.getFullYear()
- if (! data.BirthDay) data.BirthDay = year + '-01-01'
- if (data.BirthDay.split('-')[0] || '2018')
- var birthday = new Date (data.BirthDay)
- if (isNaN(birthday) || (now - birthday) / (365*24*60*60*1000) < 18) {
- errors.push(['BirthDay', 'You must be 18 or older to use the Stone Island app.'])
- }
- // if (data.Gender === "NONE") { errors.push([ "Gender", "Please supply your gender." ]) }
- },
-
- finalize: function(data){
- if (data.CurrentPassword && (data.NewPassword || data.Email !== auth.user.Email)) {
- data.NewPassword = data.NewPassword || data.CurrentPassword
- data.NewEmail = data.NewEmail || auth.user.Email
-
- sdk.account.update_mail_and_password({
- data: {
- Password: data.CurrentPassword,
- NewPassword: data.NewPassword || data.CurrentPassword,
- Email: auth.user,
- NewEmail: data.NewEmail || auth.user.Email,
- },
- success: function(){ console.log("updated password") },
- error: function(){ console.log("error updating password") },
- })
- }
-
- var submissible_data = _.pick(data, "Name Surname BirthDay YooxLetter".split(" "))
- submissible_data.Gender = "U"
-// submissible_data.idUser = auth.user_id
-// submissible_data.AccessToken = auth.access_token
-// submissible_data.Premium = "false"
-// submissible_data.LanguageId = ""
-// submissible_data.SiteCode = "STONEISLAND_US"
-// submissible_data.FuriganaName = ""
-// submissible_data.FuriganaSurname = ""
-// submissible_data.UserPromocode = ""
- submissible_data.BirthDay += "T00:00:00Z"
- submissible_data.YooxLetter = this.$("[name=YooxLetter]").prop("checked")
- submissible_data.DataProfiling = this.$("[name=DataProfiling]").prop("checked")
-
- console.log(data.DataProfiling, submissible_data.DataProfiling)
- console.log(submissible_data)
-
- return submissible_data
- },
-
- privacy_link: function(){
- // rewrite app.privacy instance temporarily
- app.privacy.back = function(){
- app.router.go("account/profile")
- }
- app.privacy.hide = function(){
- app.privacy.back = app.privacy.hide = null
- }
- app.router.go("page/privacy")
- },
-
- success: function(data){
- },
-
- error: function(data){
- },
-
- cancel: function(){
- app.router.go("intro")
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/SettingsView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/SettingsView.js
deleted file mode 100755
index 196b7759..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/SettingsView.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var SettingsView = FormView.extend({
-
- el: "#settings",
-
- events: {
- "change [name=store]": "changeStore",
- "change [name=hub]": "changeHub",
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.$store = this.$("[name=store]")
- this.$hub = this.$("[name=hub]")
- this.scroller = ScrollFactory('#settings', app.iscroll_options)
- },
-
- show: function(){
- if (! auth.logged_in()) { return app.router.go("intro") }
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO CHANGE<br>YOUR NOTIFICATION SETTINGS.", "")
- return
- }
- app.account.consent.check()
- document.body.className = "settings"
- this.deferScrollToTop()
-
- this.$store.prop("checked", !! push.settings.store)
- this.$hub.prop("checked", !! push.settings.hub)
- // push.subscribe("store")
- // push.subscribe("hub")
- },
-
- changeStore: function(){
- var state = app.settings.$store.prop("checked")
- if (state) { push.subscribe("store") }
- else { push.unsubscribe('store') }
- },
- changeHub: function(){
- var state = app.settings.$hub.prop("checked")
- if (state) { push.subscribe("hub") }
- else { push.unsubscribe('hub') }
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/account/ShippingView.js b/StoneIsland/platforms/android/assets/www/js/lib/account/ShippingView.js
deleted file mode 100755
index 4c45e97f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/account/ShippingView.js
+++ /dev/null
@@ -1,89 +0,0 @@
-var ShippingView = FormView.extend({
-
- el: "#shipping",
-
- action: sdk.address.add,
-
- events: {
- },
-
- test_data: {
- "Name":"name",
- "Surname":"surname",
- "Address":"address1\naddress2",
- "IsDefault":false,
- "IsBillingDefault":false,
- "IsOwner":false,
- "ZipCode":"88040",
- "City":"City",
- "Province":"NY",
- "Phone":"1234567890",
- "Mobile":"Mobile",
- "Mail":"Mail",
- "UserId": sdk.auth.user_id,
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.address = new AddressView ({ parent: this })
- this.scroller = ScrollFactory('#shipping', app.iscroll_options)
- },
-
- show: function(){
- if (! auth.logged_in()) { return app.router.go("intro") }
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO<br>EDIT YOUR SHIPPING INFO.", "")
- return
- }
-// this.preload( this.data || this.test_data )
- app.account.consent.check()
- app.footer.show("SAVE")
- document.body.className = "shipping"
- this.deferScrollToTop()
- },
-
- populate: function(data){
- this.data = data || this.data
- this.address.populate(data)
- },
-
- finalize: function(data){
- if (this.address.data && this.address.data.Id) {
- sdk.address.destroy({
- id: this.address.data.Id,
- success: function(){},
- error: function(){},
- })
- }
-
- data.IsDefault = "true" // this.$isDefault.prop("checked") ? "true" : "false"
- data.UserId = sdk.auth.user_id
-
- console.log(data)
- return data
- },
-
- success: function(data){
- app.curtain.show("loading")
- app.account.listAddresses({
- success: function(){
- this.$msg.html('Your address has been saved.')
- app.curtain.hide("loading")
- }.bind(this),
- error: function(){
- app.curtain.hide("loading")
- },
- })
- },
-
- error: function(data){
- console.log(data)
- },
-
- cancel: function(){
- app.router.go("intro")
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/auth/LoginView.js b/StoneIsland/platforms/android/assets/www/js/lib/auth/LoginView.js
deleted file mode 100755
index 4927bea2..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/auth/LoginView.js
+++ /dev/null
@@ -1,58 +0,0 @@
-var LoginView = FormView.extend({
-
- el: "#login",
-
- action: sdk.account.login,
-
- events: {
- "click .newuser": "new_user",
- "click .forgotpassword": "forgot_password",
- "submit form": "save",
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.scroller = ScrollFactory('#login', app.iscroll_options)
- },
-
- show: function(){
- if (auth.logged_in()) {
- app.router.go("intro")
- return
- }
- var msg = "* Your personal and payment<br>information will always remain private"
- app.footer.show("SUBMIT")
- this.$("input").val("")
- this.$msg.html(msg)
- document.body.className = "login"
- },
-
- new_user: function(){
- app.router.go("account/signup")
- },
-
- forgot_password: function(){
- window.open("https://www.stoneisland.com/yTos/Plugins/AreaLocalizer/Redirectarea?area=Account&controllerName=User&actionName=Index", '_system')
- },
-
- validate_presence: {
- "Email": "Please enter a valid email address.",
- "Password": "Please enter your password.",
- },
-
- success: function(data){
- console.log(data)
- app.account.logged_in(null, "store")
- },
-
- error: function(data){
- this.$msg.html("There was an error logging you in. Bad password?")
- this.$msg.addClass('alert-notice')
- },
-
- cancel: function(){
- auth.deferred_product = null
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/auth/LogoutView.js b/StoneIsland/platforms/android/assets/www/js/lib/auth/LogoutView.js
deleted file mode 100755
index d3f76428..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/auth/LogoutView.js
+++ /dev/null
@@ -1,19 +0,0 @@
-var LogoutView = View.extend({
-
- el: "#logout",
-
- events: {
- },
-
- show: function(){
- document.body.className = "logout"
- app.header.set_cart_count(0)
- app.footer.hide()
- auth.log_out()
- localStorage.setItem('account_terms.consent', 'false')
- app.demand_consent = false
- app.account.consent.hide()
- app.account.logged_out()
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/auth/SignupView.js b/StoneIsland/platforms/android/assets/www/js/lib/auth/SignupView.js
deleted file mode 100755
index b16ff887..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/auth/SignupView.js
+++ /dev/null
@@ -1,137 +0,0 @@
-var SignupView = FormView.extend({
-
- el: "#signup",
-
- action: sdk.account.signup,
- last_data: null,
-
-/*
- test_data: {
- "Email": "testit.account" + Math.floor(Math.random() * 10000000) + "@yoox.com",
- "Password": "TestPassword",
- "Password2": "TestPassword",
- "Gender": "U",
- "Name": "TestName",
- "Surname": "TestSurname",
- "BirthDay": "1978-11-12",
- "DataProfiling": true,
- },
-*/
-
- events: {
- "click .privacy-msg": "privacy_link",
- "submit form": "save",
- },
-
- initialize: function(){
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.scroller = ScrollFactory('#signup', app.iscroll_options)
- },
-
- show: function(){
- if (auth.logged_in()) {
- app.router.go("intro")
- return
- }
- var msg = "* Your personal and payment<br>information will always remain private"
- app.footer.show("SUBMIT")
- this.$("input").val("")
- this.$msg.html(msg)
- document.body.className = "signup"
-
- this.preload()
- this.deferScrollToTop()
- },
-
- validate_presence: {
- "Name": "Please enter your first name.",
- "Surname": "Please enter your last name.",
- "Email": "Please enter a valid email address.",
- "ConfirmEmail": "Please enter a valid email address.",
- "BirthDay": "Please enter your birthday. You must be 18 or older to use the Stone Island app.",
- "Password": "Please enter your password.",
- "Password2": "Please enter your password again.",
- "DataProfiling": "You must consent to data profiling to use the Stone Island app.",
- "GdprTerms": "You must agree to the Your My Account terms.",
- },
-
- validate_fields: function(data, errors){
- console.log(data)
- if (data.Password.length < 7) { errors.push([ "Password", "Password must be 7 characters or more." ]) }
- if (data.Password !== data.Password2) { errors.push([ "Password2", "Passwords don't match." ]) }
- if (! data.Email.match("@")) { errors.push([ "Email", "Email address is not valid." ]) }
- if (data.Email.toLowerCase() !== data.ConfirmEmail.toLowerCase()) { errors.push([ "ConfirmEmail", "Email addresses don't match." ]) }
- // if (data.Gender === "NONE") { errors.push([ "Gender", "Please supply your gender." ]) }
- if (data.DataProfiling !== "true") { errors.push([ "DataProfiling", "You must consent to data profiling to use the Stone Island app." ]) }
- if (data.GdprTerms !== "true") { errors.push([ "GdprTerms", "You must agree to the Your My Account terms to use the Stone Island app." ]) }
-
- var now = new Date ()
- var year = now.getFullYear()
- if (! data.BirthDay) {
- data.BirthDay = year + '-01-01'
- }
- // if (data.BirthDay.split('-')[0] || '2018')
- var birthday = new Date (data.BirthDay)
- if (isNaN(birthday) || (new Date () - birthday) / (365*24*60*60*1000) < 18) {
- errors.push(['BirthDay', 'You must be 18 or older to use the Stone Island app.'])
- }
-
- data.YooxLetter = this.$("[name=YooxLetter]").prop("checked")
- },
-
- finalize: function(data){
- delete data.ConfirmEmail
-
- data.Gender = "U"
- data.BirthDay += "T00:00:00Z"
-
- this.last_data = data
- console.log(data)
- return data
- },
-
- privacy_link: function(){
- // rewrite app.privacy instance temporarily
- app.privacy.back = function(){
- app.router.go("account/signup")
- }
- app.privacy.hide = function(){
- app.privacy.back = app.privacy.hide = null
- }
- app.router.go("page/privacy")
- },
-
- success: function(data){
- console.log('success', data)
- auth.user = auth.user || {}
- auth.user.Name = this.last_data.Name
- auth.user.Surname = this.last_data.Surname
- auth.user.Email = this.last_data.Email
- auth.user.BirthDay = this.last_data.BirthDay
- localStorage.setItem('account_terms.consent', 'true')
- app.account.logged_in(null, "store")
- },
-
- error: function(data){
- switch (data.status) {
- case 409:
- app.signup.show_errors([[ 'Email', "Email is already in use." ]])
- break
- default:
- try {
- data = JSON.parse(data.responseText)
- app.signup.show_errors([[ 'Name', data['Error']['Description'] ]])
- }
- catch (e) {
- app.signup.show_errors([[ 'Name', "There was an unknown error." ]])
- }
- break
- }
- },
-
- cancel: function(){
- auth.deferred_product = null
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
deleted file mode 100755
index 92427b6f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/blogs/ArchiveView.js
+++ /dev/null
@@ -1,235 +0,0 @@
-var ArchiveView = ScrollableView.extend({
-
- el: "#archive",
- menu_template: $("#archive .menu .template").html(),
- row_template: $("#archive .scroll .template").html(),
-
- events: {
- "click .item": "pick",
- "mousedown .row": "mousedown",
- "touchstart .row": "touchstart",
- "mousemove .row": "mousemove",
- "touchmove .row": "touchmove",
- "mouseup .row": "mouseup",
- "touchend .row": "touchend",
- },
-
- initialize: function(){
- this.$menu_items = this.$(".menu .items")
- this.$content = this.$(".content")
- this.$loader = this.$(".loader")
- this.scroller = ScrollFactory('#archive .scroll', app.iscroll_options)
- this.$subtitle = this.$('.subtitle')
- this.subtitle_html = this.$subtitle.html()
- },
-
- back: function(){
- this.$el.addClass("menu")
- app.header.set_back(false)
- this.scroller.scrollTo(0, 0)
- this.$subtitle.html( this.subtitle_html )
- },
-
- pick: function(e){
- this.$el.removeClass("menu")
- app.header.set_back(true)
- var index = $(e.currentTarget).data("index")
- this.$subtitle.html( $(e.currentTarget).text() )
- this.populateDecade(index)
- this.deferScrollToTop()
- },
-
- show: function(){
- this.deferScrollToTop()
- app.footer.hide()
- this.back()
- document.body.className = "archive"
- if (! this.populated) {
- this.populate( BACKUP_DB.archive )
- }
- },
-
- populate: function(data){
- if (this.loaded) { return }
- this.loaded = true
- this.data = data
- this.$loader.hide()
- this.$content.empty()
-
- // id title images[ uri label code caption ]
- this.data.forEach(function(row, index){
- var t = this.menu_template.replace(/{{title}}/, row.title)
- var $t = $(t)
- $t.data("aria-label", stonewash(row.title.replace(/'0/g, " 20").replace(/'9/g, " 19").trim()))
- $t.data("title", row.title)
- $t.data("index", index)
- this.$menu_items.append($t)
- }.bind(this))
-
- this.back()
- this.populateDecade(0, 3)
- this.deferScrollToTop()
- },
-
- populateDecade: function(index, count){
- this.$content.empty()
-
- var loader = new Loader()
-
- var row = this.data[index]
-
- count = count || row.images.length
-
- row.images.forEach(function(cell, i){
- if (count && i > count) { return }
- var $t = $("<div>")
- $t.addClass("row").addClass("loading")
- var t = this.row_template.replace(/{{image}}/, cell.uri)
- .replace(/{{label}}/g, cell.label)
- .replace(/{{code}}/, cell.code)
- .replace(/{{caption}}/, cell.caption)
- $t.html(t)
- $t.data("flipped", false)
- this.$content.append($t)
-
- var item = $t[0]
- var aa = this.build_aa_item( item )
- aa.q = 0
- this.render( aa, 0 )
- aa.flipped = true
- this.fix_z_index( aa )
-
- var $text = $t.find(".text")
- if ( ($text.height() % 2) == 1) {
- $text.css("margin-bottom", "1px")
- }
-
- loader.preloadImage(cell.uri, function(){
- aa.flipped = false
- this.fix_z_index( aa )
- $t.removeClass('loading')
- }.bind(this))
- }.bind(this))
-
- this.deferRefresh()
- setTimeout(function(){
- this.deferScrollToTop()
- }.bind(this), 100)
- },
-
-// ['transformProp'] = "translateZ(0) translateX(-50%) translateY(-50%) ";
-// .image, .text
-
- touchstart: function(e){
- app.archive.row = e.currentTarget
- app.archive.mousedown(e.originalEvent.touches[0])
- },
- touchmove: function(e){
- app.archive.mousemove(e.originalEvent.touches[0])
- },
- touchend: function(e){
- app.archive.mouseup()
- },
-
- row: null,
- image: null,
- text: null,
- flipped: false,
- q: 0,
-
- mousedown: function(e){
- var aa = app.archive.item = app.archive.build_aa_item( app.archive.row || e.currentTarget )
- aa.mouse_x = e.pageX
- aa.mouse_y = e.pageY
- },
-
- build_aa_item: function(el){
- var aa = {}
- aa.row = el
- aa.flipped = $(aa.row).data('flipped')
- aa.image = $(aa.row).find(".image")[0]
- aa.text = $(aa.row).find(".text")[0]
- aa.q = 0
- return aa
- },
-
- mousemove: function(e){
- if (! app.archive.item) return
- aa = app.archive.item
- var dx = ( aa.mouse_x - e.pageX ) / window.innerWidth
- var dy = ( aa.mouse_y - e.pageY ) / window.innerWidth
-
- var gray, opacity, q
-
- dx = Math.abs(dx)
- dx *= 2
- q = clamp( dx, 0, 1 )
-
- this.render(aa, q)
-
- aa.q = q
-/*
- aa.row.style['transformProp'] = [
- "translateZ(0)",
- "translateX(-50%)",
- "translateY(-50%)",
- "rotateY(" + dx + "deg)",
- ].join(" ")
-*/
- },
-
- render: function(aa, q){
- if ( aa.flipped ) {
- gray = Math.round( (1-q) * 100 )
- opacity = lerp(q, 0.2, 1)
- text_opacity = lerp(q, 1, 0.3)
- }
- else {
- gray = Math.round( q * 100 )
- opacity = lerp(q, 1, 0.2)
- text_opacity = lerp(q, 0.3, 1)
- }
- aa.image.style.WebkitFilter = "grayscale(" + gray + "%)"
- aa.image.style.opacity = opacity
- aa.text.style.opacity = text_opacity
- },
-
- margin: 0.3,
-
- mouseup: function(e){
- aa = app.archive.item
- app.archive.row = null
- app.archive.item = null
- var was_flipped = aa.flipped
- var flipped = aa.flipped ? (aa.q < app.archive.margin) : (aa.q > app.archive.margin)
- var dest = was_flipped == flipped ? 0 : 1
- $(aa.row).data('flipped', flipped)
-
- oktween.add({
- obj: {q: aa.q},
- to: {q: dest},
- duration: 200 * Math.abs(aa.q-dest),
- update: function(o, dt){
- app.archive.render(aa, o.q)
- },
- })
-
- this.fix_z_index(aa)
- },
-
- fix_z_index: function (aa) {
- if ( aa.flipped ) {
- console.log(aa.q)
- z = aa.q > app.archive.margin ? 2 : 1
- zz = aa.q > app.archive.margin ? 1 : 2
- }
- else {
- z = aa.q < app.archive.margin ? 2 : 1
- zz = aa.q < app.archive.margin ? 1 : 2
- }
- aa.image.style.zIndex = z
- aa.text.style.zIndex = zz
-
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/BlogView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/BlogView.js
deleted file mode 100755
index 9190634c..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/blogs/BlogView.js
+++ /dev/null
@@ -1,115 +0,0 @@
-var BlogView = View.extend({
-
- data: null,
- loaded: false,
-
- us_states: $("#us_states").html(),
- ca_states: $("#ca_states").html(),
-
- initialize: function(){
- this.loader = new Loader ()
- },
-
- fetch: function(fn){
- $.ajax({
- method: "GET",
- url: sdk.env === 'test' ? '/db.json' : sdk.cms() + '/db.json',
- // url: "https://stone.giraffe.life/db.json",
- success: function(data){
- this.success(data)
- fn && fn()
- }.bind(this),
- cache: true,
- })
- },
-
- refresh: function(){
- this.loaded = false
- this.fetch()
- },
-
- success: function(data){
-
- if (this.loaded) return
-
- this.loaded = true
- this.data = data = typeof data == "string" ? JSON.parse(data) : data
-
- // sdk.env = 'test'
-
- if (sdk.env === 'test') {
- app.store = data.store[1]
- }
- else {
- app.store = data.store[0]
- }
-
- switch (app.store.DepartmentStoreStatus) {
- case "open":
- app.closed.storeIsClosed = false
- break
- case "closed":
- app.closed.storeIsClosed = true
- app.closed.storeClosedMessageOne = app.store.StoreClosedMessageOne
- app.closed.storeClosedMessageTwo = app.store.StoreClosedMessageTwo
- break
- }
- // console.log(data)
-
- if (app.closed.storeIsClosed && sdk.env !== 'test') {
- app.closed.populate(app.store.ClosedStoreImages)
- }
- else {
- app.departments = app.store.Departments
- app.department_id = app.store.Departments[0].uri
- $("#collections h1").toggleClass("single-dept", app.store.Departments.length == 1)
- app.collection.setCollectionName( app.store.Departments[0].text )
- //// demo department for shoes with weird SizeTypeId
- // app.department_id = "NKDrtSC"
- if (sdk.env === 'test') {
- app.department_id = window.location.search.substr(1) || app.department_id
- console.log('using test department id', app.department_id)
- // app.department_id = 'TSTSZS'
- }
- app.collection.loaded = false
- app.collection.fetch()
- }
-
- app.archive.populate(data.archive)
- this.loader.preloadImage(data.hub[0].image[0].uri, function(img){
- app.hub.populate(data.hub)
- }.bind(this))
- this.loader.preloadImage(data.story[0].image.uri, function(img){
- app.story.populate(data.story)
- setTimeout(function(){
- this.loader.preloadImage(data.story[1].image.uri)
- this.loader.preloadImage(data.story[2].image.uri)
- }.bind(this), 2000)
- }.bind(this))
-
- data.page.forEach(function(page){
- app[page.tag] && app[page.tag].populate(page)
- })
-
- console.log(app.store.StoreStatus)
-
- app.product.fitLargeCodes = {}
- if (app.store.FittingCodes.length) {
- app.store.FittingCodes.split("\n").forEach(function(code){
- app.product.fitLargeCodes[code] = true
- })
- }
-
- if (app.store.BackgroundIsGray === "true") {
- app.collection.$el.addClass("gray")
- app.product.gallery.$el.addClass("gray")
- }
-
- var states = this.us_states
- if (! app.store.NotAvailableInCanada) {
- states += this.ca_states
- }
- $('[name=Province]').html(states)
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/HubView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/HubView.js
deleted file mode 100755
index d3b15f77..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/blogs/HubView.js
+++ /dev/null
@@ -1,226 +0,0 @@
-var HubView = ScrollableView.extend({
-
- el: "#hub",
- template: $("#hub .template").html(),
-
- events: {
- "click .content-share": "share",
- "click .store": "store_link",
- "click .gallery-left": "gallery_left",
- "click .gallery-right": "gallery_right",
- "click .play": "play_video",
- },
-
- initialize: function(){
- this.$content = this.$(".content")
- this.$loader = this.$(".loader")
- this.scroller = ScrollFactory('#hub', app.iscroll_options)
- HubLoader.init(this)
- },
-
- show: function(){
- this.deferScrollToTop()
- app.footer.hide()
- document.body.className = "hub"
- HubLoader.isNeeded()
- if (! this.populated) {
- this.populate( BACKUP_DB.hub )
- }
- },
-
- galleries: {},
- populated: false,
- populate: function(data){
- // sort posts by date, reversed
- this.populated = true
- this.data = data.map(function(s){
- return [ +moment(s.date), s ]
- }).sort(function(a,b){
- return a[0] > b[0] ? -1 : a[0] == b[0] ? 0 : 1
- }).map(function(pair){
- // console.log(pair[1])
- return pair[1]
- })
- this.$loader.hide()
- this.$content.empty()
- this.galleries = {}
- HubLoader.add(this.data)
-
- this.deferScrollToTop()
- },
-
- append: function(row){
- // id date subtitle body link store image[uri caption]
- // console.log(row)
- // console.log(moment(row.date))
- var t = this.template.replace(/{{id}}/g, row.id)
- .replace(/{{date}}/, moment(row.date).format("MM.DD.YYYY"))
- .replace(/{{title}}/, row.title)
- .replace(/{{subtitle}}/, row.subtitle)
- .replace(/{{cleantitle}}/, stonewash(row.title))
- .replace(/{{cleansubtitle}}/, stonewash(row.subtitle))
- .replace(/{{link}}/, row.link)
- .replace(/{{body}}/, row.body.replace(/\n/g, "<br>"))
- var $t = $(t)
- if (row.store != "true") {
- $t.find(".store").remove()
- }
- this.$content.append($t)
-
- if (row.image && row.image.length > 1) {
- // image gallery
- var $gallery = $(".gallery-" + row.id)
- row.image.forEach(function(img){
- var el = document.createElement("div")
- el.style.backgroundImage = "url(" + img.uri + ")"
- el.setAttribute('aria-label', img.caption)
- el.className = "item"
- $gallery.append(el)
- })
- var gallery = this.galleries[row.id] = new Flickity( ".gallery-" + row.id, {
- selector: '.item',
- cellAlign: 'center',
- autoPlay: false,
- freeScroll: false,
- wrapAround: true,
- imagesLoaded: true,
- prevNextButtons: false,
- pageDots: false,
- contain: true,
- draggable: true,
- })
- gallery.on('staticClick', function(e){
- var url = gallery.selectedElement.style.backgroundImage.replace(/url\(\"?/,"").replace(/\"?\)/,"")
- app.fullscreenViewer.show(url, url)
- })
- $(".gallery-" + row.id).attr('aria-label', stonewash(row.title) + ". Image gallery, use the arrows to scroll.")
- if (accessibility.voiceOver) {
- $(".gallery-target-" + row.id).attr('aria-label', stonewash(row.title) + ". Image gallery, use the arrows to scroll.")
- $(".gallery-target-" + row.id).click(function(e){
- e && e.preventDefault()
- var url = gallery.selectedElement.style.backgroundImage.replace(/url\(\"?/,"").replace(/\"?\)/,"")
- app.fullscreenViewer.show(url, url)
- })
- }
- }
- else {
- // single image
- var el = document.createElement(accessibility.voiceOver ? "a" : "div")
- if (row.image && row.image.length) {
- el.style.backgroundImage = "url(" + row.image[0].uri + ")"
- }
- el.className = "item"
- $(".gallery-" + row.id).append(el)
- $(".gallery-" + row.id).data("row", row)
- // video, append play button
- if (row.link.match(/youtube|youtu.be|vimeo/)) {
- var play = document.createElement("div")
- play.className = "play"
- $(".gallery-" + row.id).append(play)
- $(".gallery-" + row.id).addClass("gallery-video-post")
- $(".gallery-" + row.id).attr('role', 'link')
- $(".gallery-" + row.id).attr('aria-label', stonewash(row.title) + ". Tap to watch the video on Youtube")
- // $(".gallery-target-" + row.id).attr('aria-label', stonewash(row.title) + ". Tap to watch the video on Youtube")
- if (! row.image) {
- var url = row.link
- var ytid = (url.match(/v=([-_a-zA-Z0-9]{11})/i) || url.match(/youtu.be\/([-_a-zA-Z0-9]{11})/i) || url.match(/embed\/([-_a-zA-Z0-9]{11})/i))[1].split('&')[0];
- e.style.backgroundImage = "url(https://i.ytimg.com/vi/" + ytid + "/maxresdefault.jpg"
- }
- // $(".gallery-target-" + row.id).click(function(e){
- // e && e.preventDefault()
- // window.open(row.link, '_system')
- // })
- $(".gallery-target-" + row.id).remove()
- } else {
- $(el).click(function(e){
- e && e.preventDefault()
- app.fullscreenViewer.show(row.image[0].uri)
- })
- $(".gallery-" + row.id).attr('aria-label', stonewash(row.title) + ". Main image")
- $(".gallery-target-" + row.id).attr('aria-label', stonewash(row.title) + ". Main image.")
- $(".gallery-target-" + row.id).click(function(e){
- e && e.preventDefault()
- app.fullscreenViewer.show(row.image[0].uri)
- })
- }
- $t.find(".gallery-left").remove()
- $t.find(".gallery-right").remove()
- }
- },
-
- store_link: function(){
- app.router.go("store")
- },
-
- play_video: function(e){
- var row = $(e.currentTarget).closest('.gallery-video-post').data("row")
- window.open(row.link, '_system')
- },
-
- gallery_left: function(e){
- var id = $(e.currentTarget).closest(".hub_item").data('id')
- this.galleries[id].previous()
- },
-
- gallery_right: function(e){
- var id = $(e.currentTarget).closest(".hub_item").data('id')
- this.galleries[id].next()
- },
-
- share: function(e){
- var title = $(e.currentTarget).parent().find(".title").text()
- console.log("share", title)
- if (window.plugins && window.plugins.socialsharing) {
- window.plugins.socialsharing.share(title, null, null, "http://deeplink.me/www.stoneisland.com/hub" )
- }
- },
-
-})
-
-var HubLoader = (function(){
- var queue, view, item, loader
- var count = 0
- var HubLoader = {}
- var loader
- var needed = false
- var loading = false
- HubLoader.init = function(v){
- view = v
- }
- HubLoader.add = function(items){
- queue = items
- HubLoader.load()
- }
- HubLoader.load = function(){
- if (!queue) return
- item = queue.shift()
- count++
- if (! item || loading) return
- loading = true
- if (item.image && item.image.length) {
- loader = new Loader (HubLoader.build)
- images = item.image.map(function(img){
- return img.uri.replace("http:", "https:")
- }).filter(function(img){
- return img.uri
- })
- loader.preloadImages(images, true)
- }
- else {
- HubLoader.build()
- }
- }
- HubLoader.isNeeded = function(){
- needed = true
- if (!loading) HubLoader.load()
- }
- HubLoader.build = function(){
- view.append(item)
- view.scroller.refresh()
- loading = false
- if (count > 3 && ! needed) return
- // if (count === 10) return
- setTimeout(HubLoader.load, count < 10 ? 1000 : 5000)
- }
- return HubLoader
-})()
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/PageView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/PageView.js
deleted file mode 100755
index 9a7b4962..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/blogs/PageView.js
+++ /dev/null
@@ -1,46 +0,0 @@
-var PageView = ScrollableView.extend({
-
- events: {
- "click a": "follow_link"
- },
-
- initialize: function(opt){
- this.page = opt.page
- this.setElement("#" + opt.page)
- this.$content = this.$(".content")
- this.$loader = this.$(".loader")
- this.scroller = ScrollFactory('#' + this.page, app.iscroll_options)
- },
-
- show: function(){
- this.deferScrollToTop()
- app.footer.hide()
- document.body.className = this.page
- },
-
- populate: function(data){
- this.$content.html(data.body.replace(/\n/g, "<br>"))
- this.$content.find("a").each(function(){
- var href = $(this).attr("href") // .substr(1, "fuck".length-2)
- if (href.indexOf("“") !== -1) {
- href = href.substr(1, href.length-2)
- $(this).attr("href", href)
- }
- // console.log(href)
- $(this).attr("target", "_system")
- })
- },
-
- follow_link: function(e){
- e.stopPropagation()
- e.preventDefault()
- var href = $(e.currentTarget).attr("href")
- console.log(href)
- if (href.indexOf('http') !== 0) {
- app.router.go(href.replace('!/', ''))
- } else {
- window.open(href, '_system')
- }
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/blogs/StoryView.js b/StoneIsland/platforms/android/assets/www/js/lib/blogs/StoryView.js
deleted file mode 100755
index 71f1cc0c..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/blogs/StoryView.js
+++ /dev/null
@@ -1,78 +0,0 @@
-var StoryView = ScrollableView.extend({
-
- loaded: false,
-
- el: "#story",
- template: $("#story .template").html(),
-
- events: {
- "click .links li": "pick",
- },
-
- initialize: function(){
- this.sections = {}
- this.$img = this.$("img")
- this.$content = this.$(".content")
- this.$links = this.$(".links")
- this.$loader = this.$(".loader")
- this.loader = new Loader ()
- this.scroller = ScrollFactory('#story', app.iscroll_options)
- },
-
- show: function(){
- this.deferScrollToTop()
- app.footer.hide()
- document.body.className = "story"
- if (! this.loaded) {
- this.populate( BACKUP_DB.story )
- }
- },
-
- populate: function(data){
- if (this.loaded) { return }
- this.loaded = true
- this.data = data
- this.$loader.hide()
- this.$content.empty()
- // id title image[uri caption] body
- this.data.forEach(function(row){
- var t = this.template.replace(/{{id}}/, row.id)
- .replace(/{{body}}/, row.body.replace(/\n/g, "<br>"))
- var li = document.createElement("li")
- li.dataset.id = row.id
- li.innerHTML = "<div>" + row.title + "</div>"
- li.setAttribute('role', "link")
- this.sections[row.id] = row
- this.$links.append(li)
- this.$content.append(t)
- }.bind(this))
-
- this.set_active( this.data[0].id )
- },
-
- pick: function(e){
- var id = e.currentTarget.dataset.id
- this.set_active(id)
- },
-
- set_active: function(id){
- this.$(".active").removeClass("active")
-
- this.$links.find("[data-id=" + id + "]").addClass("active")
- this.$content.find("[data-id=" + id + "]").addClass("active")
-
- var section = this.sections[id]
-
- if (navigator.onLine) {
- var $replace = this.$img
-
- this.$img.stop().fadeTo(110,0.65, function() {
- $replace.attr("src", section.image.uri)
- $replace.attr("alt", section.image.caption)
- }).fadeTo(130,1)
- }
-
- this.deferScrollToTop()
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartConfirm.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartConfirm.js
deleted file mode 100755
index 6909dcc3..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartConfirm.js
+++ /dev/null
@@ -1,194 +0,0 @@
-var CartConfirm = FormView.extend({
-
- el: "#cart_confirm",
-
- template: $("#cart_confirm .template").html(),
-
- events: {
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.$rows = this.$(".rows")
- this.$subtotal = this.$(".subtotal")
- this.$shipping = this.$(".shipping")
- this.$tax = this.$(".tax")
- this.$total = this.$(".total")
-
- this.$shipping_address = this.$(".shipping_address")
- this.$shipping_method = this.$(".shipping_method")
-
- this.$payment_name = this.$(".payment_name")
- this.$payment_method = this.$(".payment_method")
- this.$payment_address = this.$(".payment_address")
-
- this.scroller = ScrollFactory('#cart_confirm', app.iscroll_options)
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "confirm"
- app.footer.show("PLACE ORDER")
- window.location.hash = "#/cart/confirm"
- this.deferScrollToTop()
-
- app.view = this
- app.curtain.show("loading")
- promise(sdk.cart.get_status).then( this.populate.bind(this) )
- },
-
- populate: function(data){
- console.log(data)
-
- data = data.Cart
-
- this.$rows.empty()
-
- data.Items.forEach(function(item){
- var $el = $("<div class='item'><img src='img/spinner.gif'></div>")
- this.$rows.append($el)
- var code_ten = item.Code10
- var size_id = item.Size
-
- var code = code_ten.substr(0, 8)
- app.product.find(code, function(data, details){
- var descriptions = app.product.get_descriptions( details )
-
- var name_partz = descriptions['ModelNames'].split(' ')
- var num = name_partz.shift()
- var title = name_partz.join(' ')
- var type = title_case( descriptions['MicroCategory'] )
-
- var color_name, size_name
-
- details.Item.ModelColors.some(function(color){
- if (color['Code10'] == code_ten) {
- color_name = color['ColorDescription']
- return true
- }
- return false
- })
-
- details.Item.ModelSizes.some(function(size){
- if (size['SizeId'] == size_id) {
- // console.log(size)
- size_name = size['Default']['Text']
- size_name = SIZE_LOOKUP[ size_name ] || size_name
- if (! size_name && ! size['Default']['Labeled']) {
- size_name = size['Default']['Text'] + " " + size['Default']['ClassFamily']
- }
-
- return true
- }
- return false
- })
-
-// size_name = item.DefaultSize + " " + item.DefaultSizeClassFamily
-
- var t = this.template
- .replace(/{{image}}/, sdk.image(item['Code10'], '11_f'))
- .replace(/{{sku}}/, num)
- .replace(/{{title}}/, title)
- .replace(/{{type}}/, type)
- .replace(/{{size}}/, size_name || "DEFAULT")
- .replace(/{{color}}/, color_name || "DEFAULT")
- .replace(/{{quantity}}/, 1)
- .replace(/{{price}}/, as_cash(details.Item.Price.DiscountedPrice))
- $el.data("price", details.Item.Price.DiscountedPrice)
- $el.html(t)
- this.refreshScroller()
- }.bind(this))
- }.bind(this))
-
- var subtotal = data.Totals.TotalWithoutPromotions
- var shipping_cost = data.DeliveryMethod.Selected.Amount.Total
- var tax = data.Totals.TotalSalesTax
- var total = data.Totals.TotalToPay
-
- this.$subtotal.html( as_cash(subtotal) )
- this.$shipping.html( as_cash(shipping_cost) )
- this.$tax.html( as_cash(tax) )
- this.$total.html( as_cash(total) )
-
- if (data.Receiver) {
- var street = data.Receiver.StreetWithNumber.replace(/\n$/,"").replace("\n", ", ")
- var address = data.Receiver.Name.toUpperCase() + " " + data.Receiver.Surname.toUpperCase() + "<br>" + street + ", "
- address += data.Receiver.City + ", " + data.Receiver.Region + " " + data.Receiver.PostalCode
-
- this.$shipping_address.html(address)
- this.$shipping_method.html(data.DeliveryMethod.Selected.Type == 1 ? "* STANDARD SHIPPING" : "* EXPRESS SHIPPING")
- } else {
- this.$shipping_address.html( "Please enter your shipping information." )
- this.$shipping_method.html( "" )
- }
-
- var cc = data.Payment.CreditCard
- if (cc) {
- var cc_street = cc.HolderAddress.replace(/\n$/,"").replace("\n", ", ")
- var cc_type = cc.Type == "AmericanExpress" ? "American Express" : cc.Type
- var cc_name = cc.HolderName.toUpperCase() + " " + cc.HolderSurname.toUpperCase()
- var cc_eNcrYpTed = cc_type.toUpperCase() + " XXXX-XXXX-XXXX-" + cc.Last4
- this.$payment_name.html( cc_name )
- this.$payment_method.html( cc_eNcrYpTed )
- } else {
- this.$payment_name.html( "Please enter your credit card information." )
- this.$payment_method.html( "" )
- }
-
- app.curtain.hide("loading")
- },
-
- save: function(){
- app.curtain.show("loading")
- promise(sdk.cart.finalize, {}).then(function(){
- app.curtain.hide("loading")
- app.router.go('cart/thanks')
- }.bind(this)).error(function(res){
- const data = res.responseJSON
- console.log(data)
- app.curtain.hide("loading")
- // {"Header":{"StatusCode":403,"Description":"403 Forbidden"},"Error":{"Description":"GenericApiError:CartAlreadyClosed"}}
- // {"Header":{"StatusCode":409,"Description":"304 NotModified"},"Error":{"Description":"FinalizationError:\\"Item has been removed from cart because it is no longer available.\\"\\n235"}}'
- // {"Header":{"StatusCode":409,"Description":"304 NotModified"},"Error":{"Description":"FinalizationError:\"The cart cannot be empty.\"\n233"}}
- // {"Header":{"StatusCode":409,"Description":"304 NotModified"},"Error":{"Description":"FinalizationError:\"The reciever validation fails."}}
- // {"Header":{"StatusCode":440,"Description":"304 NotModified"},"Error":{"Description":"GenericApiError:CartFinalizationNotYetCompleted"}}
- // {"Header":{"StatusCode":441,"Description":"304 NotModified"},"Error":{"Description":"GenericApiError:EmptyCreditCard"}}
- switch (data.StatusCode || data.Header.StatusCode) {
- case 403: // cart already closed
- auth.clear_cart(auth.create_cart)
- app.router.go('thanks')
- break
- case 409: // finalization error
- this.finalization_error(data)
- break
- case 440: // genericapierror (credit card error!)
- case 441: // genericapierror (credit card empty)
- app.router.go('cart/payment')
- app.cart.payment.show_errors([["Number","There was a problem with your credit card."]])
- break
- }
- }.bind(this))
- },
-
- finalization_error: function(data){
- if (data['Error']['Description'].match(/receiver validation fails/i)) {
- console.log('cc error')
- app.router.go('cart/billing')
- app.cart.payment.show_errors([["Number","There was a problem with your credit card."]])
- }
- else if (data['Error']['Description'].match(/cart cannot be empty/i)) {
- console.log('cart empty')
- app.router.go('cart/summary')
- }
- else if (data['Error']['Description'].match(/Item has been removed/i)) {
- console.log('item does not exist')
- app.router.go('cart/error')
- app.cart.error.show_error("We're sorry, but one or more items was out of stock. Please check your cart and try again.")
- }
- },
-
- cancel: function(){
- app.router.go('cart/payment')
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartError.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartError.js
deleted file mode 100755
index f9a1963e..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartError.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var CartError = View.extend({
-
- el: "#cart_error",
-
- events: {
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.$error = this.$(".errrrrrrrrrrrrrrr")
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "error"
- app.footer.show("&lt; BACK TO CART")
- app.footer.hide()
- },
-
- show_error: function(msg){
- this.$error.html(msg)
- },
-
- ok: function(){
- app.router.go("cart/summary")
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js
deleted file mode 100755
index 40d08d9e..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartPayment.js
+++ /dev/null
@@ -1,203 +0,0 @@
-var CartPayment = FormView.extend({
-
- el: "#cart_payment",
-
- address_template: $("#cart_payment .address_row_template").html(),
- cc_template: $("#cart_payment .cc_template").html(),
-
- action: sdk.cart.set_credit_card,
-
- address_list_mode: false,
- cc_list_mode: false,
- data: {},
-
- events: {
- "change [name=SameAsShipping]": "toggle_shipping",
- "click .address_dropdown": "toggle_address",
- "click .cc_dropdown": "toggle_cc",
- "focus [name=Number]": "focus_on_cc",
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.$form = this.$(".form")
- this.$msg = this.$(".msg")
- this.$same_as_shipping = this.$("[name=SameAsShipping]")
- this.$billing_address_rapper = this.$(".billing_address_rapper")
- this.$address_list = this.$(".address_list")
- this.$address_form = this.$(".address")
- this.$address_dropdown = this.$(".address_dropdown")
- this.$cc_list = this.$(".cc_list")
- this.$cc_form = this.$(".cc")
- this.$cc_dropdown = this.$(".cc_dropdown")
- this.$cc_confirm = this.$(".cc_confirm")
-
- this.address = new AddressView ({ parent: this, checkPhone: false })
- this.cc = new CreditCardView ({ parent: this })
- this.scroller = ScrollFactory('#cart_payment', app.iscroll_options)
- this.scroller.on('scrollStart', function(){
- if (document.activeElement.tagName === 'INPUT' || document.activeElement.tagName === 'SELECT') {
- document.activeElement.blur()
- }
- })
- this.address.disabled = true
- this.cc.disabled = true
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "payment"
- app.footer.show("CONFIRM &gt;")
- window.location.hash = "#/cart/payment"
-
- app.view = this
- this.populate()
- this.deferScrollToTop()
- },
-
- toggle_shipping: function(){
- setTimeout(function(){
- var state = this.$same_as_shipping.prop("checked")
- this.$billing_address_rapper.toggle( ! state )
- this.address.disabled = state
- }.bind(this))
- },
-
- toggle_address: function(state){
- if (! app.account.ccs.length) {
- state = false
- }
- // this.$address_dropdown.toggle( !! app.account.ccs.length )
-
- this.address_list_mode = typeof state == "boolean" ? state : ! this.address_list_mode
- this.address.disabled = this.address_list_mode
- this.$address_form.toggle(! this.address_list_mode)
- this.$address_list.toggle(this.address_list_mode)
- },
-
- toggle_cc: function(state){
- if (! app.account.ccs.length) {
- state = false
- }
- // this.$cc_dropdown.toggle( !! app.account.ccs.length )
-
- this.cc_list_mode = typeof state == "boolean" ? state : ! this.cc_list_mode
- this.cc.disabled = this.cc_list_mode
- this.$cc_form.toggle(! this.cc_list_mode)
- this.$cc_list.toggle(this.cc_list_mode)
- this.$cc_confirm.toggle(this.cc_list_mode)
- },
-
- focus_on_cc: function(e){
- this.scroller.scrollToElement(e.currentTarget)
- if (e.currentTarget.textShadow === '') {
- e.currentTarget.textShadow = 'rgba(0,0,0,0) 0 0 0';
- } else {
- e.currentTarget.textShadow = '';
- }
- },
-
- populate: function(){
- this.$(".save_as_default").show()
- this.$address_list.empty()
- this.$cc_list.empty()
- this.toggle_address( !! app.account.ccs.length )
- this.toggle_cc( !! app.account.ccs.length )
-
- app.account.ccs.forEach(function(cc){
- var address_t = this.address_template.replace(/{{id}}/g, cc.Id)
- .replace(/{{checked}}/g, cc.IsDefault ? "checked" : "")
- .replace(/{{name}}/g, (cc.Name + " " + cc.Surname).toUpperCase())
- .replace(/{{address}}/g, cc.Address.replace(/\n$/,"").replace("\n", ", "))
- .replace(/{{city}}/g, cc.City)
- .replace(/{{state}}/g, cc.Province)
- .replace(/{{zip}}/g, cc.ZipCode)
-
- var cc_t = this.cc_template.replace(/{{id}}/g, cc.Id)
- .replace(/{{checked}}/g, cc.IsDefault ? "checked" : "")
- .replace(/{{number}}/g, cc['Number'])
- .replace(/{{type}}/g, cc.Type.toUpperCase())
- .replace(/{{exp}}/g, cc.ExpirationMonth + "/" + cc.ExpirationYear)
-
- this.$address_list.append(address_t)
- this.$cc_list.append(cc_t)
- }.bind(this))
- },
-
- finalize: function(data){
- var shipping_info = {}, address_data, address_id, cc_info = {}, cc_data, cc_id
- var shipping_type = $("[name=ShippingType]").filter(function(){ return $(this).prop("checked") }).val()
-
- if (this.$same_as_shipping.prop("checked")) {
- address_data = app.cart.shipping.data
- }
- else if (this.address_list_mode) {
- address_id = this.$("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val()
- address_data = app.account.addressLookup[ address_id ]
- }
- else {
- address_data = data
- }
-
- if (this.cc_list_mode) {
- cc_id = this.$("[name=CCId]").filter(function(){ return $(this).prop("checked") }).val()
- cc_data = app.account.ccLookup[ cc_id ]
-
- var card_on_file = {
- "guid": cc_data.Guid,
- "cvv": this.$("[name=CvvConfirm]"),
- }
-
- app.curtain.show("loading")
- promise(sdk.cart.use_stored_credit_card, { data: card_on_file }).then(function(data){
- app.curtain.hide("loading")
- this.success()
- }.bind(this)).error(function(data){
- app.curtain.hide("loading")
- console.log("card payment error")
- console.log(data)
- app.cart.payment.show_errors([["","There was a problem with your credit card."]])
- }.bind(this))
-
- return
- }
- else {
- cc_data = data
- }
-
- var credit_info = {
- "HolderName": address_data.Name,
- "HolderSurname": address_data.Surname,
- "HolderAddress": address_data.Address || address_data.StreetWithNumber,
- "HolderCity": address_data.City,
- "HolderProvince": address_data.Province,
- "HolderZip": address_data.PostalCode || address_data.ZipCode,
- "HolderISOCountry": CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US",
- "HolderEmail": auth.user.Email,
- "CardNumber": cc_data['Number'],
- "Type": cc_data.Type,
- "ExpirationMonth": cc_data.ExpirationMonth,
- "ExpirationYear": cc_data.ExpirationYear.substr(2,3),
- "Cvv": cc_data.Cvv,
- }
-
- console.log( credit_info )
-
- return credit_info
- },
-
- success: function(){
- app.router.go('cart/confirm')
- },
-
- error: function(data){
- console.log("card payment error")
- console.log(data)
- app.cart.payment.show_errors([["Number","There was a problem with your credit card."]])
- },
-
- cancel: function(){
- app.router.go('cart/shipping')
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartShipping.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartShipping.js
deleted file mode 100755
index b5d6647b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartShipping.js
+++ /dev/null
@@ -1,152 +0,0 @@
-var CartShipping = FormView.extend({
-
- el: "#cart_shipping",
-
- action: sdk.cart.set_shipping_address,
-
- list_mode: true,
- data: {},
-
- template: $("#cart_shipping .template").html(),
-
- events: {
- "click .dropdown-wrapper": "toggle_dropdown",
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.$form = this.$(".form")
- this.$dropdown_wrapper = this.$(".dropdown-wrapper")
- this.$address_list = this.$(".address_list")
- this.$address_form = this.$(".address")
- this.$msg = this.$(".msg")
- this.address = new AddressView ({ parent: this })
- this.scroller = ScrollFactory('#cart_shipping', app.iscroll_options)
- this.address.disabled = true
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "shipping"
- app.footer.show("PAYMENT &gt;")
- window.location.hash = "#/cart/shipping"
- app.view = this
- this.populate()
- this.deferScrollToTop()
- },
-
- populate: function(){
- // id checked name address city state zip
- this.$(".save_as_default").show()
- this.$address_list.empty()
- if (! app.account.addresses.length) {
- this.toggle_dropdown(false)
- return
- }
- app.account.addresses.forEach(function(address){
- var t = this.template.replace(/{{id}}/g, address.Id)
- .replace(/{{checked}}/g, address.IsDefault ? "checked" : "")
- .replace(/{{name}}/g, (address.Name + " " + address.Surname).toUpperCase())
- .replace(/{{address}}/g, address.Address.replace(/\n$/,"").replace("\n", ", "))
- .replace(/{{city}}/g, address.City)
- .replace(/{{state}}/g, address.Province)
- .replace(/{{zip}}/g, address.ZipCode)
- this.$address_list.append(t)
- }.bind(this))
- },
-
- load_form: function(cart_data){
- var data = cart_data.Cart.Receiver
- var addy = data.StreetWithNumber.split("\n")
- data.Address1 = addy[0] || ""
- data.Address2 = addy[1] || ""
- data.ZipCode = data.PostalCode
- data.Province = data.Region
- this.load_data(data)
-
- this.data = data
- if (cart_data.Cart.DeliveryMethod && cart_data.Cart.DeliveryMethod.Selected && cart_data.Cart.DeliveryMethod.Type) {
- $("#standard-shipping").prop("checked", cart_data.Cart.DeliveryMethod.Type == 1)
- $("#express-shipping").prop("checked", cart_data.Cart.DeliveryMethod.Type == 2)
- }
- },
-
- toggle_dropdown: function(state){
- if (! app.account.addresses.length) {
- state = false
- }
- this.list_mode = typeof state == "boolean" ? state : ! this.list_mode
- this.$dropdown_wrapper.toggle( !! app.account.addresses.length )
- this.address.disabled = this.list_mode
- this.$address_form.toggle(! this.list_mode)
- this.$address_list.toggle(this.list_mode)
- },
-
- // sdk.cart.set_shipping_address
- // sdk.shipping.get_delivery_types
- // sdk.shipping.set_delivery_type
-
- shipping_types: {
- Standard: 1,
- Express: 2,
- },
-
- finalize: function(data){
- var shipping_info = {}, address_data, address_id
- var shipping_type = $("[name=ShippingType]").filter(function(){ return $(this).prop("checked") }).val()
-
- sdk.shipping.set_delivery_type({
- id: this.shipping_types[shipping_type],
- success: function(data){ console.log("set shipping type", data) },
- error: function(data){ console.log("didnt set shipping type", data) },
- })
-
- if (this.list_mode) {
- address_id = this.$("[name=AddressId]").filter(function(){ return $(this).prop("checked") }).val()
- address_data = app.account.addressLookup[ address_id ]
- }
- else {
- address_data = data
- }
-
- shipping_info.Name = address_data.Name
- shipping_info.Surname = address_data.Surname
- shipping_info.Email = auth.user.Email
- shipping_info.Phone = address_data.Phone
- shipping_info.Mobile = address_data.Phone
- shipping_info.StreetWithNumber = address_data.Address
- shipping_info.PostalCode = address_data.ZipCode
- shipping_info.City = address_data.City
- shipping_info.Province = address_data.Province
- shipping_info.Region = address_data.Province
- shipping_info.CountryCode = CANADIAN_LOOKUP[ address_data.Province ] ? "CA" : "US"
-
- this.data = shipping_info
-
- return shipping_info
- },
-
- success: function(){
- app.router.go('cart/payment')
- },
-
- error: function(res){
- console.log('error', res.responseJSON)
- var data = res.responseJSON || { 'Error': { 'Description': 'Unknown' } }
- const errors = []
- switch(data['Error']['Description']) {
- case 'InvalidFormatParameterException:AddressPostalCode':
- errors.push(['ZipCode', 'Please enter a valid US/Canada Zip Code.'])
- break
- default:
- errors.push(['', 'An unknown error occured.'])
- break
- }
- this.show_errors(errors)
- },
-
- cancel: function(){
- app.router.go('cart/summary')
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartSummary.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartSummary.js
deleted file mode 100755
index 51aa35ef..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartSummary.js
+++ /dev/null
@@ -1,213 +0,0 @@
-var CartSummary = ScrollableView.extend({
-
- el: "#cart_summary",
-
- template: $("#cart_summary .template").html(),
-
- events: {
- "click .remove": "remove_item",
- },
-
- data: null,
-
- initialize: function(opt){
- this.parent = opt.parent
- this.$loader = this.$(".loader")
- this.$cart_body = this.$(".cart_body")
- this.$cart_empty = this.$(".cart_empty")
- this.scroller = ScrollFactory('#cart_summary', app.iscroll_options)
-
- this.$rows = this.$(".rows")
- this.$subtotal = this.$(".subtotal")
- this.$shipping = this.$(".shipping")
- this.$tax = this.$(".tax")
- this.$total = this.$(".total")
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "summary"
- window.location.hash = "#/cart/summary"
- app.view = this
- if (auth.has_cart()) {
- this.load()
- }
- else {
- this.empty()
- }
- },
-
- load: function(){
- this.el.className = "loading"
- app.footer.show("SHIPPING &gt;")
- app.curtain.show("loading")
- sdk.cart.get_status({
- success: this.populate.bind(this),
- error: this.empty.bind(this),
- })
- },
-
- populate: function(data){
- this.data = data
-
- console.log("CART", data)
-
- if (! data.Cart.Items || data.Cart.Items.length == 0) {
- return this.empty()
- }
-
- this.parent.$steps.show()
- this.updateCounts()
-
- this.$rows.empty()
-
- data.Cart.Items.forEach(function(item){
- var code_ten = item['Code10']
- var code = code_ten.substr(0, 8)
- var size_id = item['Size']
-
- var $el = $("<div>").addClass("cart_item_row")
- $el.html("<img src='img/spinner.gif'>")
- $el.data({
- code: code_ten,
- size: size_id,
- })
- this.$rows.append($el)
- app.product.find(code, function(data, details){
- // console.log(data, details)
- var descriptions = app.product.get_descriptions( details )
- // console.log(descriptions)
-
- var name_partz = descriptions['ModelNames'].split(' ')
- var num = name_partz.shift()
- var title = name_partz.join(' ')
- var type = title_case( descriptions['MicroCategory'] )
-
- var color_name, size_name
- // console.log(code)
- details.Item.ModelColors.some(function(color){
- if (color['Code10'] == code_ten) {
- color_name = color['ColorDescription']
- // console.log(color)
- return true
- }
- return false
- })
- details.Item.ModelSizes.some(function(size){
- if (size['SizeId'] == size_id) {
- // console.log(size)
- size_name = size['Default']['Text']
- size_name = SIZE_LOOKUP[ size_name ] || size_name
- if (! size_name && ! size['Default']['Labeled']) {
- size_name = size['Default']['Text'] + " " + size['Default']['ClassFamily']
- }
-
- return true
- }
- return false
- })
-
- var t = this.template
- .replace(/{{image}}/, sdk.image(item['Code10'], '11_f'))
- .replace(/{{sku}}/g, num)
- .replace(/{{code8}}/g, data['Code8'])
- .replace(/{{title}}/g, title)
- .replace(/{{cleantitle}}/g, stonewash(title))
- .replace(/{{type}}/, type)
- .replace(/{{size}}/, size_name)
- .replace(/{{color}}/, color_name)
- .replace(/{{quantity}}/, 1)
- .replace(/{{price}}/, as_cash(details.Item.Price.DiscountedPrice))
- $el.html(t)
- this.refreshScroller()
- }.bind(this))
- }.bind(this))
-
- if (data.Cart.Receiver && data.Cart.Receiver.City) {
- app.cart.shipping.load_form( data )
- }
-
- this.updateTotals()
-
- this.el.className = "full"
- this.refreshScroller()
- app.curtain.hide("loading")
- },
-
- updateCounts: function(){
- app.header.set_cart_count( this.data.Cart.Items.length )
- this.parent.setHeaderCount( this.data.Cart.Items.length )
- },
-
- updateTotals: function(){
- var subtotal = this.data.Cart.Totals.TotalWithoutPromotions
- var shipping_cost = this.data.Cart.DeliveryMethod.Selected.Amount.Total
- var tax = this.data.Cart.Totals.TotalSalesTax
- var total = this.data.Cart.Totals.TotalToPay
-
- this.$subtotal.html( as_cash(subtotal) )
- this.$shipping.html( as_cash(shipping_cost) )
- this.$tax.html( as_cash(tax) )
- this.$total.html( as_cash(total) )
- },
-
- empty: function(){
- app.footer.hide()
- app.header.set_cart_count(0)
- this.parent.setHeaderCount( 0 )
- this.parent.$itemcount.html("0 ITEMS")
- this.el.className = "empty"
- this.parent.$steps.hide()
- app.curtain.hide("loading")
- },
-
- save: function(){
- app.router.go('cart/shipping')
- },
-
- cancel: function(){
- app.router.go('intro')
- },
-
- remove_item: function(e){
- var $el = $( e.currentTarget ).closest(".cart_item_row")
- var data = $el.data()
-
- console.log("REMOVE FROM CART")
- console.log(data.size + " " + data.code)
-
- console.log(this.data.Cart)
-
- this.data.Cart.Totals.TotalWithoutPromotions -= data.price
- this.data.Cart.Totals.TotalToPay -= data.price
- this.data.Cart.Items = this.data.Cart.Items.filter(function(item){
- return ( item['Code10'] !== data.code || item['Size'] !== data.size)
- })
-
- this.updateTotals()
- this.updateCounts()
- $el.remove()
- this.refreshScroller()
-
- if (this.data.Cart.Items.length == 0) {
- this.empty()
- }
-
- app.curtain.show("loading")
- console.log("loading")
- sdk.cart.delete_item({
- data: {
- Code10: data.code,
- Size: data.size,
- },
- success: function(){
- console.log("success")
- app.curtain.hide("loading")
- },
- error: function(){
- app.curtain.hide("loading")
- },
- })
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartThanks.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartThanks.js
deleted file mode 100755
index 03a45d4d..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartThanks.js
+++ /dev/null
@@ -1,28 +0,0 @@
-var CartThanks = View.extend({
-
- el: "#cart_thanks",
-
- events: {
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- },
-
- show: function(){
- document.body.className = "cart"
- app.cart.el.className = "thanks"
- app.header.set_cart_count(0)
- app.footer.show("&lt; BACK TO COLLECTION")
- app.footer.hide()
-
- app.orders.loaded = false
-
- sdk.auth.clear_cart()
- },
-
- ok: function(){
- app.router.go("store")
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartView.js b/StoneIsland/platforms/android/assets/www/js/lib/cart/CartView.js
deleted file mode 100755
index 6ed8238f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/cart/CartView.js
+++ /dev/null
@@ -1,72 +0,0 @@
-var CartView = View.extend({
-
- el: "#cart",
-
- events: {
- "click .summary_step": "show_summary",
- "click .shipping_step": "show_shipping",
- "click .payment_step": "show_payment",
- },
-
- initialize: function(){
- this.summary = new CartSummary ({ parent: this })
- this.payment = new CartPayment ({ parent: this })
- this.shipping = new CartShipping ({ parent: this })
- this.confirm = new CartConfirm ({ parent: this })
- this.thanks = new CartThanks ({ parent: this })
- this.error = new CartError ({ parent: this })
-
- this.$steps = this.$(".steps")
- this.$full_msg = this.$(".full_msg")
- this.$empty_msg = this.$(".empty_msg")
- this.$itemcount = this.$(".itemcount")
- },
-
- load: function(){
- sdk.cart.get_status({
- success: function(data){
- this.summary.data = data
- this.summary.updateCounts()
- }.bind(this),
- error: function(data){
- console.log(data)
- auth.clear_cart()
- },
- })
- },
-
- show: function(){
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO<br>VIEW YOUR CART.", "")
- return
- }
- document.body.className = "cart"
- this.show_summary()
- },
-
- show_summary: function(){
- this.summary.show()
- },
-
- show_shipping: function(){
- this.shipping.show()
- },
-
- show_payment: function(){
- this.payment.show()
- },
-
- setHeaderCount: function(n){
- if (n) {
- this.$itemcount.html(pluralize(n, "ITEM", "S"))
- this.$full_msg.show()
- this.$empty_msg.hide()
- }
- else {
- this.$full_msg.hide()
- this.$empty_msg.show()
- }
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/accessibility.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/accessibility.js
deleted file mode 100644
index c66143cc..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/accessibility.js
+++ /dev/null
@@ -1,77 +0,0 @@
-var accessibility = (function() {
-
- var accessibility = {}
- accessibility.voiceOver = false
-
- accessibility.DEBUG = false
-
- accessibility.init = function(ready) {
- console.log('Accessibility init')
- accessibility.bind()
- if (accessibility.DEBUG) {
- console.log('Accessibility debug mode')
- app.accessible = true
- accessibility.voiceOver = true
- $('html').addClass('vscroll')
- $('html').addClass('accessible')
- return ready()
- }
- if ('MobileAccessibility' in window) {
- console.log('init accessibility')
- accessibility.build(ready)
- } else {
- console.log('MobileAccessibility not found')
- ready()
- }
- }
-
- accessibility.build = function(ready) {
- MobileAccessibility.usePreferredTextZoom(true);
- MobileAccessibility.getTextZoom(function getTextZoomCallback(textZoom) {
- console.log('WebView text should be scaled to the preferred value ' + textZoom + '%')
- if (textZoom > 100) {
- // app.accessible = true
- // $("html").addClass('accessible')
- }
- });
- MobileAccessibility.isVoiceOverRunning(function(state){
- console.log('Screen reader: ' + state)
- accessibility.voiceOver = state
- if (state) {
- console.log(">>>>>> actual debug mode!")
- app.accessible = true
- $("html").addClass('accessible')
- $('html').addClass('vscroll')
- } else {
- $('html').addClass('iscroll')
- }
- ready()
- })
- }
-
- accessibility.bind = function() {
- $("h1").each(function(){
- this['aria-label'] = 'Section title is ' + this.innerText
- })
- if ('MobileAccessibilityNotifications' in window) {
- window.addEventListener(MobileAccessibilityNotifications.SCREEN_READER_STATUS_CHANGED,
- accessibility.onScreenReaderStatusChanged, false)
- }
- }
-
- accessibility.onScreenReaderStatusChanged = function(info) {
- if (info && typeof info.isScreenReaderRunning !== "undefined") {
- if (info.isScreenReaderRunning) {
- console.log("Screen reader: ON");
- } else {
- console.log("Screen reader: OFF");
- }
- }
- }
-
- return accessibility
-})()
-
-function stonewash (s) {
- return s.replace(/'9/g, '19').replace(/'0/g, '20').replace(/_/g, ' ').replace(/-/g, ' - ').replace(/^[013456789][0-9]+/, '')
-}
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/backup_db.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/backup_db.js
deleted file mode 100755
index d4d4557b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/backup_db.js
+++ /dev/null
@@ -1,419 +0,0 @@
-var BACKUP_DB = {
- "story": [
- {
- "id": "philosophy",
- "title": "Philosophy",
- "image": {
- "uri": "http://cdn3.yoox.biz/stoneisland/wp-content/uploads/2013/11/philosophy1.jpg",
- "caption": ""
- },
- "body": "A culture of research, experimentation, function and use are the matrixes that have always defined Stone Island: the sportswear brand established in 1982, designed to become a symbol of extreme research on fibers and textiles, applied to an innovative design. Season after season, it is through the study of form and the “manipulation” of the matter that Stone Island has found its own language with the aim of establishing new boundaries in the world of garment making. \r\n\r\nThe study of uniforms and of work wear, its evolution according to new requirements of use, has become Stone Island’s observation post for defining a project in which the clothing item’s function is never just aesthetic.\r\n\r\nAn ongoing investigation, thorough and without frontiers, on the processing and ennobling of fibers and textiles, leading to discover materials and production techniques never used before in the clothing industry.\r\n\r\nJackets constructed in nylon monofilament, deriving from the water filtering technology. Highly reflective or thermo-sensitive fabrics, changing color with the variation of temperature. Featherweight polyester cloth vacuum- coated with a 100% stainless steel film used in aviation technology to protect the on-board computers. Non-woven materials, Kevlar® and polyester felt, rhomboidal nets in polyester used in the construction industry and coated in polyurethane. These are some examples of materials conceived by Stone Island philosophy.\r\n\r\nStone Island’s strength is also based on the unique ability to intervene on the finished item, through the continuous tests on dyeing and treatments carried out in the Sportswear Company’s laboratory of color. A department able to combine advanced technology, experience and human capacity and that has developed more than 60,000 different recipes of dyes throughout the years.\r\n\r\nAll the accumulated knowledge and experience, an inalienable heritage, on which great part of Stone Island’s know-how is based, is kept in the historical archive that collects the trial tests, and the recipes for textile dyeing and handling that have been developed by all those people who have worked on this project with passion.",
- "__index": "0",
- "dateCreated": "Thu, 05 Nov 2015 00:24:44 GMT"
- },
- {
- "id": "history",
- "title": "History",
- "image": {
- "uri": "https://ltho.s3.amazonaws.com/ce68408c-34b3-40ca-8ddf-c10cd1412c5f.jpg",
- "caption": ""
- },
- "body": "Stone Island, the Italian brand that reinvented the concept of casual wear, was founded in 1982 out of the passion and brilliant research into textile finishing performed by its creator and art director, intellectual from Bologna, Massimo Osti. It was Osti, in the mid-Seventies, who researched thousands of uniforms and pieces of work clothing and catalogued their functional characteristics. In Ravarino, in the province of Modena, he created a company whose hub was a full-scale center of research into materials and treatments became a sophisticated laboratory for garment and experimental dyeing.\r\n\r\nThe story of Stone Island began, almost by chance, with research into a special material, a thick truck tarpaulin, the outstanding feature of which was that it had been resin-treated in red on one side and blue on the other. The first prototype was too stiff, so it was washed for a long period in water with pumice stones to break down the structure of the material. The result was surprising, a worn-look garment with great appeal. It was therefore decided to create seven jackets in that unique fabric called Tela Stella, and to give this product a name. The strong identity of the project called for an important name, which was identified by analyzing the most commonly occurring words in Joseph Conrad’s novels: the words Stone and Island were chosen.\r\n\r\nStone Island has a marine feel, conjuring up old oilskins corroded by the sea and a military feel, which is drawn from the fund of research completed until that time. The name also evokes a love of the sea and that first treatment selected to “process” the garments. The badge, the detachable fabric label that has distinguished Stone Island garments since the first season, showed a Compass Rose, displayed like a military badge.\r\n\r\nThe reaction is immediate. Stone Island became a success phenomenon, with no set plan or marketing research behind it: a uniquely Italian mix of creativity, intuition and entrepreneurial spirit. A star was born.",
- "__index": "1",
- "dateCreated": "Thu, 05 Nov 2015 00:27:25 GMT"
- },
- {
- "id": "carlo-rivetti",
- "title": "Carlo Rivetti",
- "image": {
- "uri": "https://ltho.s3.amazonaws.com/2fe16d85-e85f-4f12-ae55-72622c8efafd.jpg",
- "caption": ""
- },
- "body": "My family has deep roots within the clothing industry. In the 19th century, Giuseppe Rivetti – son of Giovanni Battista, Italy’s first carding machine operator, inherited his father’s passion and in order to fund his own wool factory he secretly sold cows from the family farms to buy looms. By 1872 he had his own wool factory: “Giuseppe Rivetti e Figli”, which later merged with the Turin based GFT group (Gruppo Finanziario Tessile). There, my uncle Pinot had the unique idea of rubberizing wool fabrics to increase their performance.
This fondness for research also drove my father, Silvio. In the immediate post-war period, he set off for the United States where he found the Palm Beach Incorporated company, who produced something that didn’t yet exist in Europe: clothing constructed on theoretical measurements; what we now know as sizes.
My father was stunned, working for six months as a laborer, before returning and convincing his brothers to give up their shares in the wool factories in order to buy out GFT. \r\n\r\nIn the early 1950’s GFT measured more than 25,000 Italians, which allowed them to effectively dress the whole nation for the first time with non-tailored garments. \r\n\r\nThe 1973 oil crisis brought severe yet swift recession, and something had to be done to recover sales. My cousin, Marco Rivetti, noticed a French couturier working in a women’s outerwear firm we’d acquired one year earlier. He would design and fit the garments, write orders in Paris and then use our company to manufacture them. He was Emanuel Ungaro. This led us to realize that in order to re-launch the sector we needed to add a fundamental ingredient to the clothing industry: fashion.
As a result, GFT became a licensee of the rising stars of Italian fashion, including Giorgio Armani and Valentino. The rise of Italian-made Prêt à Porter was due to the ability to combine entrepreneurial ability with creativity.\r\n\r\nI joined GFT in 1975. Towards the end of that decade, I had the idea to start a new area within the group; to generate something more timeless: sportswear. In the early 1980’s, I discovered C.P. Company, a firm known for being innovative and cutting edge in this field. The company was owned by Trabaldo Togna and Massimo Osti, a graphic artist by profession and the firm’s designer and art director. We bought first 50% in 1983 and later on the entire company.
That was the beginning of my journey. In 1993 I left GFT and, together with my sister Cristina, acquired 100% of the firm which is known today as Sportswear Company.
\r\n\r\nIt was in 1983 that I got to know Massimo Osti, who had brought Stone Island into existence almost by chance, a year earlier. A special fabric named ‘Tela Stella’ had arrived in the company: a cloth that had a different color on each side, used to make truck tarpaulins. The effect was very interesting but had little to do with the existing C.P. Company line. Osti decided to do something special with that fabric and created a collection of just seven jackets. The collection strongly referenced military style with the now iconic badge inspired by military insignia. The compass symbolized love for the sea and an aim for constant research.\r\n\r\nMassimo was at least ten years ahead of others in his field. He saw himself as a producer rather than a fashion designer.
His achievement establishing Stone Island was not only appealing and saleable, but also true to his core belief in informal wear. His ideas were drawn from military and work wear, accompanying them with endless textile research.\r\n\r\nIn the mid-nineties, Massimo our paths eventually came apart, and I found myself with the difficult task of finding someone to design Stone Island.
In 1994 as I wandered through a Munich trade fair I came across the work of designer Paul Harvey, an English designer who lived in Sant’Arcangelo di Romagna, Italy. I was struck by a strange feeling of familiarity and cried out: “so here’s the Stone of the 21st Century!”. From 1996, with Paul, we embarked on the second era of our brand.\r\n\r\nPaul designed 24 collections, each consistent in the evolution and research that has always set Stone Island apart.
He is another extraordinary character. After graduating Central Saint Martins, he decided fashion was not his career path and worked as a truck driver! Only after marrying a fantastic Italian lady and moving to Italy did he start designing clothes.
His approach to design has functionality in its blood, which allowed him to interpret Stone Island perfectly. He led the brand masterfully into the new century. \r\n\r\nAfter 12 marvelous years, Paul needed to leave the fashion world to “do something for the Planet”. With such a noble ambition, I could only accept and support his decision.
In that moment, facing another crucial decision, I came to the conclusion the era of “one man at the helm” was over.
Times had changed. It was necessary to be multicultural in order to be truly contemporary.
I built a design team. I felt that in this era it is this possible to face all aspects of a world only with several minds and several visions: and this has been Stone Island from 2008 to today.
\r\n\r\nI feel like the coach. I choose which men to send onto the pitch, depending upon who we have to play: We need to be more sensitive, faster, and ready to grasp the signs of strength and weakness.
As a result, we need multi-cultural people that travel the world and observe it from different viewpoints: people of different ages and from different cultures.\r\n\r\nThis, in short, is my story. I like to think there’s a common thread that binds us all. A desire for continual experimentation and research, not without a touch of healthy insanity: that special something that makes our Stone Island much more than a just a clothing brand.\r\n\r\n<i>Carlo Rivetti,\r\nPresident and Creative Director, Stone Island</i>",
- "__index": "2",
- "dateCreated": "Thu, 05 Nov 2015 00:27:38 GMT"
- }
- ],
- "archive": [
- {
- "id": "-010-015",
- "title": "'010'015",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/2bafd7a2-fbbb-4904-8e64-ff394888fd24.png",
- "label": "LIQUID REFLECTIVE",
- "code": "5315 42944",
- "caption": "Fabric that is highly reflective owing to its coating made up\r\nof thousands of glass microspheres. Each finished garment\r\nis hand sprayed individually and individually baked dry.\r\nThe varying intensity of the reflective element and varying\r\nintensity of color, the dribbling and speckled effect, are\r\nowing to the high level of craftsmanship involved in the\r\nprocess, making each garment unique and unrepeatable.\r\nLining in quilted microfiber with polyester padding.\r\nStone Island badge with white embroidery, reserved for\r\ngarments that are made using advanced research into\r\nfabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a0714935-2800-425f-9b34-63fdc4a7fc78.png",
- "label": "30/30 JACKET",
- "code": "5715 4TTY2",
- "caption": "The 30/30 jacket is a cross section of the state of the art of Stone Island. A testament to three decades of exploration and development, it has been designed to embody the spirit of Stone Island’s endless creativity. Linked by the signature looped rigging system, both the jacket shell and jacket liner are reversible. These can be worn, either together or alone, in a total of 10 different ways. The transformative\r\nproperties of the fabrics mean that these 10 ways can each be worn in 3 different modes: Ice, Reflective,\r\nand Normal; resulting in a total of 30 different jacket states.\r\nThis piece features is our 30th anniversary special edition badge.\r\nJACKET /SHELL _ RASO GOMMATO PRISMATIC COVER.\r\nSatin weave cotton of military origin bonded on the inside to a a shiny transparent fine-grained polyurethane film reflecting the light, magnifying the color effects and bestowing the surface with a three-dimensional and ‘liquid’ appearance.\r\nJACKET/ LINER_ THERMO REFLECTIVE / ENGINEERED WOOL\r\nThis material merges two of Stone Island’s most avant-garde research paths. It explores the interaction between light refraction and thermosensitivity technologies. The resins used to coat the nylon substrate host both the glass microspheres allowing fabric refraction and the micro-encapsulated pigments modifying the passage of light and thus enabling color changes in relation to temperature. The final effect is an organic and dynamic interaction of light and color. On the reverse side, an engineered wool face made with a double knit machine."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d51dce63-d467-45ea-88a6-5b077ffe3c3c.png",
- "label": "REFLECTIVE KNIT WITH WINDSTOPPER® 3L",
- "code": "5715 587Y5",
- "caption": "To celebrate the thirtieth anniversary of Stone Island, a yarn has been engineered that represents the\r\nheight of our tireless research. The President’S Knit 5715 has been created in Reflective yarn, made\r\nup of micro plates coated with glass microspheres trapped inside a polyester mesh. The structure of\r\nthe jumper has been made double, reflective on the outside and wool on the inside. The outer face\r\nhas then been printed in a darker shade using heat and pressure sublimation printing to amalgamate\r\nthe fibers, obtain an even surface and reduce the strong reflective appearance.\r\nThe detachable padded and quilted lining has been created in a polyester jersey laminated with a\r\nWindstopper® membrane, which provides an unbeatable balance between protection and comfort.\r\nThis piece features is our 30th anniversary special edition badge."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5883b275-a2eb-4a34-890f-69b30250a62b.png",
- "label": "RASO HAND PAINTED TORTOISE SHELL",
- "code": "6115 70565",
- "caption": "Trench coat in a satin-weave cotton fabric of military origin. The garment has been dyed and then faded in selected areas with a corrosive paste. The bleached parts have then been hand-painted with a tortoiseshell-inspired motif also appearing on the Stone Island badge on the left sleeve. This extraordinary manual process makes each piece unique and unrepeatable. Detachable hood in garment-dyed padded iridescent nylon. Detachable lining in GARMENT-DYED DOWN_26 GR X SQM_N, an ultra-light nylon weighing only 26 grams per square meter, filled with the finest down specially treated to bear the stress of the garment dyeing procedure. Garment-dyed with special dye recipes. It is secured to the outer garment by the iconic Stone Island fastening system."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a25cc013-5c2c-4221-974a-987b8fd00ab4.png",
- "label": "HAND PAINTED SHEEPSKIN",
- "code": "6115 00379",
- "caption": "Sheepskin parka. The finished piece has been hand-sprayed on the outer face with a resin based product and then hand waxed to achieve a softer feel. Hood edged by fur trim. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/fa5ed231-8b04-4ecc-b126-7a5543d5614a.png",
- "label": "ICE JACKET THERMO-SENSITIVE FABRIC",
- "code": "6115 43098",
- "caption": "Hooded jacket in thermo sensitive fabric. A water- and wind-resistant polyurethane film is embedded with micro-encapsulated pigments. The molecules of these pigments modify the path of light and change color according to the temperature. The garment is then padded with the finest down.Two chest patch pockets, with snap-flap fastening and second pocket with vertical zip fastening. Adjustable elastic at cuffs. Cotton terry lined hood. Hidden zip and button fastening."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/bfd9defc-a1ef-4322-9e53-9505ec606ed9.png",
- "label": "RASO GOMMATO REVERSE COLOR PROCESS",
- "code": "6215 42338",
- "caption": "Jacket in Raso Gommato -rubberized satin- a mil. spec. cotton satin bonded with a polyurethane cover making the fabric wind and water resistant. In this version, the transparent cover is bonded to a previously piece dyed and printed the cotton satin. The finished garment undergoes an exclusive procedure named Reverse Color Process, a fading technique followed by an overdyeing process on the finished garment, owing to the piece unparalleled shaded print effects, resist print areas and residual color deposits, unique to each single item."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/390b68f3-7f9a-41af-a09c-bd15ac7008a3.png",
- "label": "POLYPROPYLENE TELA",
- "code": "6315 40534",
- "caption": "Down filled parka in polypropylene tela treated with an anti-drop agent. Polypropylene, a material with antibacterial properties, is the lightest man-made fibre. Even very bulky garments astonish for their specific lightness. The paste colored yarn is texturized to obtain a cotton looking opaque aspect. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cc9f8c72-bbac-4d34-9762-4eae85374abf.png",
- "label": "HIDDEN REFLECTIVE",
- "code": "6315 G0598",
- "caption": "Vest in a reflective, water and wind resistant polyester fabric owing its features to a coating made of thousands of glass microspheres. An opaque black plating totally covers the refraction of the material which is unveiled when photographed in flash mode. The reflective features will be revealed through usage, with diverse effects and intensities from piece to piece, depending on its wearer usage. Stone Island logo on the back obtained through laser printing. Filled with the finest down. Sheepskin over collar. "
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/512029b0-f4a3-469a-9d7d-1cd7fc15c1c8.png",
- "label": "POLY COVER COMPOSITE + POLY FUR SILVER DETACHABLE LINING",
- "code": "6315 491Y1",
- "caption": "Hooded jacket in Poly Cover Composite, a matte, colorless and opaque two-component water and wind resistant film. The garment dyeing technique colors the film without affecting its transparency. Completely heat sealed seams.\r\nDetachable hooded lining in Poly Fur, a synthetic fur with external silver colored coating. Snap fastening on nylon tape."
- }
- ],
- "__index": "4",
- "dateCreated": "Thu, 05 Nov 2015 01:48:39 GMT"
- },
- {
- "id": "-000-009",
- "title": "'000'009",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/725e1b3f-58ee-49f6-8413-0a7e3dc9890f.png",
- "label": "KEVLAR®",
- "code": "3315 4031",
- "caption": "Kevlar® felt. Five times more robust than steel given the same weight, Kevlar® is lightweight and\r\nhighly insulating. It is resistant to even extreme changes in temperature and to both fresh and salt\r\nwater. Owing to its qualities, it is used in the aerospace field, in competitive sailing and for Formula\r\n1 racing. With its soft yellow color, dyeing this material is usually impossible, but with Stone Island\r\ngarment dyeing expertise, laminating the hydro-cohered Kevlar® fibers to an invisible nylon mesh and\r\na polyurethane coating on the outer side and a simple polyurethane coating on the inside this has been\r\nmade possible.\r\nDetachable lining in triple woven fabric, two nylon honeycomb patterns have been machine raised\r\nwith a further nylon yarn. The detachable lining is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world. Stone Island badge with white embroidery, reserved for\r\ngarments that are made using advanced research into fabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c1c9db4f-5aa9-4698-9fe3-04a58a631653.png",
- "label": "MONOFILAMENT-S",
- "code": "3715 4316",
- "caption": "Nylon twill monofilament mesh. On the inside, a cotton muslin\r\nlayer is laminated on the outer face with a black breathable\r\nand water resistant membrane, with the application of\r\nwhite polyester taped seams. The monofilament mesh has\r\na protecting function for the inner membrane. From the\r\naesthetic point of view, its transparency is designed to reveal\r\nthe internal construction of the garment. The piece is lined in\r\na brushed cotton fabric quilted with polyester padding. The\r\nfinished garment is over-dyed with a double cotton and nylon\r\nrecipe."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/4f1783c2-1ff7-4054-9d18-faebbd617305.png",
- "label": "LIGHT",
- "code": "3715 4Q30",
- "caption": "Stone Island anticipated the use of light in clothing. Also for safety purposes in cases of\r\ndiminished visibility. The beginning of the Nineties, saw the introduction of the Reflective\r\nJacket - the first reflective garment ever - and in ‘002, to mark its twentieth anniversary,\r\nthe use of light went from being passive to active and self-generated with the use of optical\r\nfibres.\r\nThe fabric’s cotton warp is woven with polyester yarns as well as with optical fibre\r\nfilaments forming a band of light along the front fastening and around the edge of the hood.\r\nThe light is switched on using a small battery hidden inside the garment.\r\nHooded detachable lining in microfiber quilted to a polyester padding, attached to the\r\nouter garment using a system of ties, adapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c62f3de3-a639-4818-988c-3aba9db057e5.png",
- "label": "COMPACT",
- "code": "3915 4N40",
- "caption": "Compact treated linen felt. The Compact process is the transfer to finished garments of a textile process that is usually used to cleanse the natural fibers of their impurities. The garments are boiled at 130°C under pressure, with special additives. In the finished garments the material shrinks approximately 50%, the material becomes extraordinarily compact, the hand of the fabrics becomes dryer and naturally elastic. The fabrics take on an uneven, hand crafted appearance, as if they had been woven on antique looms. The fabric volume reduction involved with the Compact treatment creates very important pattern making complexities. The garment can be fitted to the body with a strings and loops system on the sides, front and hood. This system is inspired by anti-G suits of military aviators. Garment dyed; Compact pieces are very receptive to the garment dyeing recipes, the colors result far more intense than those of untreated garments.\r\nDetachable lining in peached microfiber, quilted with polyester padding. The detachable lining is attached to the outer garment using a system of ties, adapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ba287902-7b92-4128-867f-69d6b1e40cc0.png",
- "label": "OPAQUE NYLON TELA",
- "code": "4315 4C24 30GR",
- "caption": "Japanese featherweight nylon canvas, weighing just 30 grams per square\r\nmeter. The Stone Island badge is ultra light, in embroidered nylon mesh in\r\norder to avoid weighing down the sleeve. The garment is padded with the\r\nfinest down. The lightweight construction of the down bags and the direct\r\ninjection of feathers heightens the lightness of the garments."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/320c3a59-c8ae-4dec-b863-15b15ccc368a.png",
- "label": "OPAQUE NYLON CANVAS",
- "code": "4515 4H24",
- "caption": "Japanese featherweight nylon canvas, weighing just 37 grams\r\nper square meter. The Stone Island badge is ultra light, in\r\nembroidered nylon mesh in order to avoid weighing down the\r\nsleeve. The garment is padded with direct injection finest down.\r\nApart from highlighting the lightness of the fabric, the black\r\nedging under the fabric underscores the removal of the feather\r\nbags to increase the lightness of the garment. The yoke on the\r\nchest is disguised by the horizontal quilting motive. Inside the\r\nhood of the garment, an extra fabric hood with external coating\r\nand PVC print may be laced up by loops."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/35f9ec2a-fc52-42e5-b015-899e40ae9e89.png",
- "label": "DAVID-TC SUBLIMATION PRINT",
- "code": "4615 4C44",
- "caption": "Reversible garment. Star-shaped cross-section polyester / polyamide\r\nJapanese microfiber. During garment dyeing under pressure at 130°C,\r\nthe heat transforms the structure and hand of the material radically.\r\nBeyond the depth of color and despite maintaining an industrial\r\nappearance, the David-TC garments take on an appearance and\r\nhand that grant a unique tactile experience, similar to both chamois\r\nleather and non-woven coagulated fabric. One of the two faces has\r\nbeen over printed on the finished garment with a dark color, using\r\na hot sublimation / pressure printing technique that reveals the\r\nconstruction details of both sides of the garment."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/03785345-d63c-4c18-addf-fb7461949cec.png",
- "label": "ANTIQUED REFLECTIVE",
- "code": "4715 7423",
- "caption": "Cotton Batavia with a coating made up of thousands of glass microspheres. Antiqued Reflective fabric\r\nhas a strong capacity to reflect even the weakest light sources and is enhanced by a color patina that is\r\nparticularly evident in the folds of the garment, granting to the piece a three-dimensional appearance.\r\nThe shape and details of the garment have been deliberately designed with a retro style in order to\r\ncreate a contrast with the modernity of the reflective face. The hood is lined in a khaki colored wool\r\nwith parallel stripes, reminiscent of military blankets.\r\nDetachable lining in microfiber quilted to a thin polyester padding. The lining is attached to the outer\r\ngarment using a system of ties, adapted from those used in the sailing world.\r\nStone Island badge with white embroidery, reserved for garments that are made using advanced\r\nresearch into fabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/b7b6db65-3688-4472-839d-38852b074790.png",
- "label": "RASO GOMMATO - HAND PAINTED CAMOUFLAGE",
- "code": "4915 4C43",
- "caption": "Drawing inspiration from the actions of soldiers during the First World War, who\r\nused earth from the trenches to make their uniforms dirty, thus inventing the\r\nconcept of camouflage, the fabric base in black satin weave cotton of military\r\norigin bonded to a black polyurethane cover on the inner face, has been faded\r\nwith a corrosive paste and then hand painted on the finished garment to create\r\na camouflage effect. By means of this manual process, each garment is rendered\r\nunique and unrepeatable.\r\nThe detachable quilted nylon lining with polyester padding, with front edging\r\nand collar in felted wool, is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/9a25ed8c-2293-4d6e-b63a-c17580113d63.png",
- "label": "WAXED ICE - THERMO SENSITIVE FABRIC",
- "code": "5115 7498",
- "caption": "Cotton moleskin with a resin treatment containing thermo sensitive\r\nquartz. The color of the garment ranges from bright yellow at\r\nroom temperature to a deeper and deeper shade of olive green as\r\nthe temperature drops. The garment is washed and then waxed.\r\nThe detachable black woolen lining with Stone Island logo in the\r\ncentre is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world.\r\nStone Island badge with white embroidery, reserved for garments\r\nthat are made using advanced research into fabrics or processes."
- }
- ],
- "__index": "3",
- "dateCreated": "Thu, 05 Nov 2015 01:49:03 GMT"
- },
- {
- "id": "-990-999",
- "title": "'990'999",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/f58db57f-a469-4c7b-b248-6cab5a927c8a.png",
- "label": "RASO GOMMATO COLORED COVER",
- "code": "05 4001",
- "caption": "Satin weave cotton of military origin bonded to a\r\nmustard yellow polyurethane cover on the outside\r\nand white on the hood. The inner fabric face takes its\r\ncoloring from garment dyeing. Double parallel row\r\nof snap fasteners mounted on small rubber disks\r\nallow the garment to be tightened or loosened to fit."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/56189889-630b-4293-95e9-2c747d1209fe.png",
- "label": "ICE JACKET CAMOUFLAGE THERMO-SENSITIVE FABRIC",
- "code": "05 4N06",
- "caption": "Cotton poplin with a camouflage print in a thermo-sensitive\r\ncoating with liquid crystals that change color based on\r\nthe temperature. Over dyed on the finished garment. As the\r\ntemperature drops, the fabric print gradually disappears\r\nas it takes on the same shade as the solid color of the\r\ngarment dye."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/d46fc981-d51c-4001-a72a-7d5bc3bedc15.png",
- "label": "RUBBERISED SATIN SILVER COVER",
- "code": "35 4405",
- "caption": "Satin weave cotton of military origin bonded to a silver\r\npolyurethane cover on the outside. Padded with goose down.\r\nDouble parallel row of snap fasteners mounted on small rubber\r\ndisks allow the garment to be tightened or loosened to fit.\r\nLining in colored peached polyester microfiber. Hood in the\r\nRaso Gommato Silver Cover garment dyed, with detachable wolf\r\nfur edging."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/65a6a008-a634-4155-8dba-0e2f22e1dc74.png",
- "label": "REFLECTIVE JACKET",
- "code": "1815 4N02",
- "caption": "Owing to a coating made up of thousands of glass\r\nmicrospheres on a polyester base, the Reflective\r\nfabric has a strong capacity to reflect even the\r\nweakest light sources. It reflects and intensifies\r\nthe brightness of the color of the fabric itself,\r\nparticularly if placed in the dark. If it is photographed\r\nusing a flash, it detracts light from the other\r\ncomponents in the shot, which show up as black.\r\nPocket linings in cotton mesh."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/7011fe4a-22de-4bf0-bd4d-4440c49d8409.png",
- "label": "WQR WATER RESISTANT QUILTING",
- "code": "2515 6L51",
- "caption": "Nylon jersey quilted with polyester padding,\r\nwith a special external coating used to close\r\nall the needle holes produced in the quilting\r\nprocess, rendering the garment totally\r\nwaterproof. The garment takes its final\r\ncoloring from garment dyeing."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ca0447d1-3bd3-4702-a7d5-f1da98764ffb.png",
- "label": "LINO GOMMATO REVERSE COLOR PROCESS",
- "code": "2815 4P49",
- "caption": "Black linen canvas bonded to a transparent polyurethane\r\ncover on the outside. By means of an exclusive process\r\ncarried out on the finished garment, the original color of\r\nthe fabric is corroded, with the exclusion of the Stone Island\r\nlettering, of the two parallel stripes and of the name of the\r\nprocess on the left sleeve. The collar, placket, pocket flaps,\r\ncuffs and bottom hem are less faded owing to the double\r\nlayer of fabric and the seams. Light garment over dye."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/23b746d9-311b-4f9f-b356-d1f49046bda9.png",
- "label": "THE PRESIDENT’S KNIT",
- "code": "2915 5784",
- "caption": "The President’s Knit is the name of a knitted garment introduced in the autumn winter ‘998-’999\r\nseason and then retaken with different processes in the years that followed. It is an innovative knitted\r\ngarment that takes on the functions of a jacket owing to its detachable lining.\r\nThe first of these garments was created in a double face knit, nylon chenille on the outside, cotton on\r\nthe inside. Three black nylon parallel stripes on the cuff. Ends of the sleeves and bottom hem as well\r\nin black nylon. The garment takes its final coloring from garment dyeing.\r\nDetachable lightweight nylon fabric lining with water resistant polyurethane resin finish, quilted\r\nwith polyester padding. The detachable lining is attached to the outer garment using a system of ties,\r\nadapted from those used in the sailing world."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/ebaf6ae8-f465-4a8d-b6d0-ff45a93f0350.png",
- "label": "LAMINATE - NOC 1",
- "code": "3015 4C41",
- "caption": "Two ultra light cotton gauzes laminated by means of a\r\nmatte colored resin. This slightly stretch fabric provides\r\ntechnical features owing to its light lamination. This fabric\r\nhas a natural appearance but high-tech performance and\r\nis waterproof, windproof and breathable. Fully thermotaped\r\nseams on the inside.\r\nInjection moulded PVC NOC 1 hood. The shape of the\r\nhood is taken by the shape of gas masks. A research by\r\nStone Island into the making of non-fabric components."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/a39caa9e-4dbe-4c31-8bda-41ebc2a508b4.png",
- "label": "PURE METAL SHELL – BRONZE",
- "code": "3115 4T43",
- "caption": "100% bronze mesh applied to a black nylon jersey base. The polyurethane adhesive\r\nprovides a light protection for the mesh. A Teflon® treatment makes the garment water\r\nresistant. The metal mesh is a living material with the features of metallic materials when\r\nused untreated, and therefore they are subject to oxidation over time, losing its shine.\r\nThe worn look, creases and breaks that form on the surface are features that make each\r\ngarment different from the next.\r\nDetachable woolen lining with raw cut edging, attached to the outer garment using a\r\nsystem of ties adapted from those used in the sailing world.\r\nThe Autumn Winter ´999-´000 collection saw the introduction of the Stone Island badge\r\nwith white embroidery, dedicated to garments created using advanced research into\r\nfabrics or processes."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/f221b596-7cc0-493c-9cea-6755f64d1641.png",
- "label": "PURE METAL SHELL - SILVER SPRAY",
- "code": "3115 4U39",
- "caption": "Ultra light polyester fabric with the application, through\r\na patented procedure, of a micro stainless steel film in a\r\nvacuum and sterile environment. This Japanese fabric,\r\nused in airplanes to shield the on-board computers from\r\nelectromagnetic radiation. Cotton canvas lining. The garment is\r\npadded with goose down.\r\nThe Autumn Winter ´999-´000 collection saw the introduction\r\nof the Stone Island badge with white embroidery for pieces\r\ninvolving advanced research."
- }
- ],
- "__index": "2",
- "dateCreated": "Thu, 05 Nov 2015 01:49:20 GMT"
- },
- {
- "id": "-982-989",
- "title": "'982'989",
- "__index": "1",
- "dateCreated": "Wed, 02 Dec 2015 05:15:20 GMT",
- "images": [
- {
- "uri": "https://ltho.s3.amazonaws.com/e486c7c7-798e-4bf7-9e67-973f2cb02368.png",
- "label": "TELA STELLA",
- "code": "45 4NN",
- "caption": "Stone Island was founded on this fabric. Tela Stella was born out of the study\r\nof the technical and functional characteristics of military truck tarpaulins. It\r\nis a cotton canvas impregnated on both sides with special pigmented resins\r\nin contrasting colors. The finished garment then undergoes an extended\r\nenzyme wash in order to give it a faded look and to break down the density of\r\nthe material. The result is a windproof garment that has an air of old oilskins\r\ncorroded by the sea, which, at the same time, has a marked military feel."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/757164f9-0699-482a-9187-e7d097f84319.png",
- "label": "TELA STELA DUAL COATED",
- "code": "65 404",
- "caption": "Cotton canvas impregnated on both sides with special pigmented resins in contrasting colors.\r\nWhite outside, sand colored inside. Garment dyed midnight blue; a mélange effect is obtained with\r\ndifferent textured depths of color on the outside and inside of the garment. Appliqués in reflective\r\nfabric and stretch cotton tape on the pockets. Metal buckles on the bottom hem. Long cotton strap\r\nsewn under the collar label and attached to one of the buckles by means of a snap hook to allow the\r\ngarment to be worn over the shoulders."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/eb9cadb6-9712-41cf-9984-086518c7c391.png",
- "label": "TELA STELLA DUAL COATED",
- "code": "65 410",
- "caption": "Cotton canvas impregnated on both sides with special pigmented resins in\r\ncontrasting colors. White outside, sand colored inside. Neither washed,\r\nnor garment dyed, it maintains the body and intensity of the coating.\r\nAppliqués in reflective fabric and stretch cotton tape. Adjustable straps at\r\nthe sides."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/8237f317-5272-4760-a6ab-b56c475b50d3.png",
- "label": "JOCK-23",
- "code": "75 436",
- "caption": "Cotton canvas with thick matte PVC coating. Appliqués in the same fabric\r\nwith contrasting color coating. On the back, appliqué in mélange felted wool\r\npolyester on the collar. On the inside the neckline and shoulders are lined\r\nin cotton jersey. Rubber buttons created from a mould. Detachable lining in\r\ngarment dyed cotton fleece, attached with snap fasteners."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/c790cbf7-0a92-449e-8557-f6174946ab68.png",
- "label": "JOCK-23",
- "code": "75 460",
- "caption": "Cotton canvas with thick matte PVC coating. Hood and buckled inserts at the cuff, with\r\ncontrasting color coating. Appliqué in latex right around the edge. Metal eyelets.\r\nRubber buttons created from a mould."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/1062f397-c1d7-4012-ae8d-9ddf13363743.png",
- "label": "JOCK-23",
- "code": "75 409",
- "caption": "Cotton canvas with thick matte PVC coating. Inner flap in a contrasting\r\ncolor. Collar in felted wool polyester, lined with latex. Latex band at cuffs.\r\nRubber buttons created from a mould. Detachable lining in garment dyed\r\ncotton fleece, attached with snap fasteners."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/5f315b73-1572-460c-abfe-cda498886abe.png",
- "label": "RASO GOMMATO BLACK COVER",
- "code": "35 4NN",
- "caption": "Satin weave cotton of military origin bonded to a black\r\npolyurethane cover on the inside. The garment takes its\r\nfinal coloring from garment dyeing. Detachable hood in Silk\r\nLight, an ultra light, slightly resin treated shiny trilobate nylon\r\nfabric, quilted with polyester padding.\r\nDetachable lining in Silk Light, quilted with polyester padding.\r\nThe detachable lining is attached to the outer garment using\r\na system of ties, adapted from those used in the sailing world.\r\nThe hood and detachable lining are also garment dyed."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/cd370f63-4fab-41e1-bbb6-d9e4955d068e.png",
- "label": "GLAZED SILK LIGHT",
- "code": "55 4910",
- "caption": "Fine shiny trilobate nylon with thick, glazed effect\r\nPVC coating, creating a translucent, semi-transparent\r\nappearance. Hood part lined in a layer of PVC and with a\r\nstrip of honeycomb pattern non-woven fabric in microfibre.\r\nPVC windproof cuffs inside the sleeves. Lining made with\r\na layer of heat-sealed PVC, with interlining in polyester\r\nmesh quilted with polyester padding. The piece takes its\r\nfinal color from a double cotton and nylon garment dyeing\r\nrecipe, to obtain different shades on the finished garment."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/417e64df-f318-4500-977b-2eaed1668bc4.png",
- "label": "RASO GOMMATO BLACK COVER",
- "code": "65 4A10",
- "caption": "Satin weave cotton of military origin bonded to a\r\nblack polyurethane cover on the inside. Removable\r\neye mask in the hood, which folds away in the\r\ncollar. The garment takes its final coloring from\r\ngarment dyeing."
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/93d8d8fa-ad6e-4fe5-9182-c9e45c7e4ff5.png",
- "label": "NYLON RIP-STOP COVER",
- "code": "75 4503",
- "caption": "Khaki iridescent nylon with rip-stop twill, laminated on the\r\noutside with a transparent amber polyurethane film. The\r\ndepth of color is obtained by adding together the color of\r\nthe textile base and that of the coating. Lined in iridescent\r\nnylon rip-stop quilted with polyester padding."
- }
- ]
- }
- ],
- "hub": [
- {
- "id": "loading",
- "date": "Tue, 12 Jan 2016 12:00:00 GMT",
- "title": "STONE ISLAND",
- "subtitle": "",
- "body": "The unrelenting research by Stone Island results in a collection full of textiles evolutions, finishing and dyeing, featuring pop colors and extraordinary visual effects.",
- "link": "",
- "store": "true",
- "image": [
- {
- "uri": "https://ltho.s3.amazonaws.com/1ee6abef-0677-41a6-91eb-029303995073.png",
- "caption": ""
- },
- ],
- "__index": 1,
- "dateCreated": "Tue, 12 Jan 2016 15:55:24 GMT"
- }
- ],
- "page": [
- {
- "id": "terms-and-conditions",
- "title": "Terms and Conditions",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "<center><b>TERMS AND CONDITIONS OF USE</center></b>\r\nWelcome to www.stoneisland.com. These terms and conditions (the “General Terms and Conditions of Use”) govern your use of, access to, and purchase of products from the United States section of www.stoneisland.com (the \"US Site\"). By using the US Site, you agree to comply with and be bound by these General Terms and Conditions of Use. If you do not agree to these General Terms and Conditions of Use, please do not use the US Site.\r\n\r\n<b>1. GENERAL</b>\r\nwww.stoneisland.com is the property of SPORTSWEAR COMPANY, a company having an address at Galleria Cavour 4, 40124 Bologna, Italy (\"STONE ISLAND and STONE ISLAND DENIMS\") and is operated under license by YOOX Corporation, a Delaware corporation having an address at 148 Lafayette Street, 10th Floor, New York, NY, 10013, United States of America (the \"Provider\"). \r\n\r\n<b>2. OTHER SITE POLICIES</b>\r\nPlease review our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&”>General Terms and Conditions of Sale</a>, <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy& “>Return Policy</a> and <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a> (collectively, the “Site Policies\"). All Site Policies are incorporated in these General Terms and Conditions of Use by this reference and, therefore, apply to your access to, use of and purchase of products from the US Site. If you do not agree to our Site Policies, please do not use the US Site. We reserve the right to make changes to the US Site, the Site Policies, and these General Terms and Conditions of Use at any time. If any of these conditions shall be deemed invalid, void, or for any reason unenforceable, that condition shall be deemed severable and shall not affect the validity and enforceability of any remaining condition. \r\n\r\n<b>3. PURCHASE FOR PERSONAL USE ONLY</b>\r\nYou may purchase products on the US Site only for personal use and not for resale. By placing your order, you certify that you are purchasing products for personal use only and not for resale and you accept our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&”>General Terms and Conditions of Sale</a>. WE RESERVE THE RIGHT TO REFUSE ORDERS FOR ANY REASON WITHOUT EXPLANATION. \r\n\r\n<b>4. USER'S SUBMISSIONS</b>\r\nWe welcome your comments and feedback regarding the US Site, our products and our services. We do not, however, accept confidential or proprietary information. Accordingly, all comments, feedback, reviews, ideas, suggestions, materials, images, information and other submissions (collectively, the “Submissions”) disclosed, submitted or offered to the Provider via the US Site, or otherwise, are not confidential. You represent and warrant that any Submissions that you submit to the Provider are made in compliance with applicable laws, do not violate any right of any third party, including privacy and intellectual property rights. By disclosing, submitting or offering any Submissions to the Provider, you grant the Provider and STONE ISLAND and STONE ISLAND DENIMS a nonexclusive, royalty-free, perpetual, irrevocable, and fully sublicensable right to use, reproduce, modify, adapt, publish, translate, create derivative work from, distribute, display such Material throughout the world in any media. You are and shall remain solely responsible for any Submissions you disclose, submit or offer to the Provider or STONE ISLAND and STONE ISLAND DENIMS. \r\n\r\n<b>5. PRIVACY</b>\r\nWe recommend that you read our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a>, which explains our online privacy practices. \r\n\r\n<b>6. COPYRIGHT</b>\r\nAll content included on www.stoneisland.com US Site, such as works, images, pictures, dialogues, music, sounds, videos, documents, drawings, figures, logos, menus, web pages, graphics, colors, schemes, tools, fonts, designs, diagrams, layouts, methods, processes, functions and software (collectively, the \"Content\"), is the property of STONE ISLAND and STONE ISLAND DENIMS or its content suppliers and is protected by national and international copyright and other intellectual property laws. You may not reproduce, publish, distribute, display, modify, create derivative work from, or exploit in any way, in whole or in part, the Content without the prior express written consent of STONE ISLAND and STONE ISLAND DENIMS, or its content suppliers, as the case may be. STONE ISLAND and STONE ISLAND DENIMS and its content suppliers shall have the exclusive right to authorize or prohibit in their sole discretion any reproduction, publication, distribution, display, modification, creation of derivative work from, or exploitation in any way of, in whole or in part, the Content. STONE ISLAND and STONE ISLAND DENIMS and its content suppliers shall have the right, at any time, to claim the authorship of any Content posted on the US Site and to object to any use, distortion or other modification of such Content. Any reproduction, publication, distribution, display, modification, creation of derivative work from, or exploitation in any way of, the Content expressly authorized in writing by STONE ISLAND and STONE ISLAND DENIMS or its content suppliers shall be carried out by you for lawful purposes only and in compliance with all applicable laws. \r\n\r\n<b>7. LICENSE AND SITE ACCESS</b>\r\nThe viewing, printing or downloading of any Content from the US Site grants you only a limited, nonexclusive and nontransferable license for use solely by you for your own personal use and not for republication, distribution, assignment, sublicense, sale, preparation of derivative works or other use. No part of any Content may be reproduced in any form or incorporated into any information system, electronic or mechanical, other than for your personal use (but not for resale or redistribution). Any unauthorized use of the US Site and the Content immediately terminates the license granted by the Provider. \r\nYou will be solely responsible for all damages and other harm resulting from your use of the US Site and the Content. STONE ISLAND and STONE ISLAND DENIMS and the Provider shall not be deemed liable for any use of the US Site and the Content made by you in violation of any applicable laws and regulations and these General Terms and Conditions of Use. \r\n\r\n<b>8. COPYRIGHT COMPLAINTS</b>\r\nWe respect the intellectual property of others. If you believe that your work has been copied in a way that constitutes copyright infringement, please contact a STONE ISLAND and STONE ISLAND DENIMS copyright representative for further information at <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a>. \r\n\r\n<b>9. LINKS TO OTHER WEB SITES</b>\r\nThe US Site may provide hyperlinks to third party websites (“Third Party Websites\"). The Provider and STONE ISLAND and STONE ISLAND DENIMS do not operate, control, endorse or guarantee any Third Party Websites. You agree that the Provider and STONE ISLAND and STONE ISLAND DENIMS are not responsible for any content, services and/or products provided by any Third Party Website, nor are the Provider and STONE ISLAND and STONE ISLAND DENIMS responsible for any practice followed by such Third Party Website with respect to the collection and processing of personal data of their users. When you access any Third Party Website through a hyperlink posted on the US Site, please carefully read the terms and conditions of use, privacy policy and other policies of such Third Party Website. Our policies do not apply to any Third Party Website. \r\nYou The Provider provides hyperlinks to Third Party Websites only for the convenience of its users. By providing hyperlinks to Third Party Websites, the Provider does not recommend that its users access such Third Party Websites. \r\n\r\nYOU AGREE THAT YOUR USE OF ANY THIRD PARTY WEBSITE IS AT YOUR SOLE RISK AND WITHOUT WARRANTIES OF ANY KIND BY THE PROVIDER, EXPRESSED, IMPLIED OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NONINFRINGEMENT. UNDER NO CIRCUMSTANCES ARE THE PROVIDER AND/OR STONE ISLAND and STONE ISLAND DENIMS LIABLE FOR DAMAGES ARISING FROM ANY TRANSACTION BETWEEN YOU AND ANY THIRD PARTY WEBSITE OR FOR ANY INFORMATION APPEARING ON THIRD PARTY WEBSITES. \r\n\r\n<b>10. GOVERNING LAW AND CHOICE OF FORUM</b>\r\nThe laws of the State of New York (without giving effect to its conflicts of law principles) govern all matters arising out of or relating to these General Terms and Conditions of Sale, including, without limitation, their validity, interpretation, construction, performance, and enforcement. All legal proceedings arising out of or in connection with these General Terms and Conditions of Sale shall be brought solely in the City of New York, State of New York. \r\n\r\n<b>11. DISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY</b>\r\nTHE US SITE AND ALL INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) AND SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE ARE PROVIDED BY THE PROVIDER ON AN \"AS IS\" AND \"AS AVAILABLE\" BASIS, UNLESS OTHERWISE SPECIFIED IN WRITING. THE PROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE OPERATION OF THIS SITE OR THE INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE, UNLESS OTHERWISE SPECIFIED IN WRITING. YOU EXPRESSLY AGREE THAT YOUR USE OF THIS SITE IS AT YOUR SOLE RISK. \r\n\r\nTO THE FULL EXTENT PERMISSIBLE BY APPLICABLE LAW, THE PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE PROVIDER DOES NOT WARRANT THAT THIS SITE; INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE; THEIR SERVERS; OR E-MAIL SENT FROM THE PROVIDER ARE FREE OF VIRUSES OR OTHER HARMFUL COMPONENTS. THE PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THIS SITE OR FROM ANY INFORMATION, CONTENT, MATERIALS, PRODUCTS (INCLUDING SOFTWARE) OR SERVICES INCLUDED ON OR OTHERWISE MADE AVAILABLE TO YOU THROUGH THIS SITE, INCLUDING, BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE, AND CONSEQUENTIAL DAMAGES, UNLESS OTHERWISE SPECIFIED IN WRITING. \r\n\r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<center><b>TERMS AND CONDITIONS OF SALE</center></b>\r\nThe following General Terms and Conditions of Sale govern the sale of merchandise by YOOX Corporation, an affiliate of YOOX NET-A-PORTER GROUP S.p.A. (the \"Provider\" or \"we\") to you through the US section of www.stoneisland.com (\"US Site\"). The US Site is available only for purchases made and delivered within the United States. Your use of the US Site to purchase merchandise indicates your agreement to follow and to be bound by these General Terms and Conditions of Sale.\r\n\r\n<b>1. ORDERS & PRODUCTS</b>\r\nAll orders are subject to e-mail confirmation by us. Please note that the products displayed on the US Site may be out-of-stock or discontinued, and availability is not guaranteed. Please note that while we have tried to accurately display the colors of products, the actual colors you see will depend on your monitor and may not be accurate. \r\n\r\n<b>2. PRICES</b>\r\nAll prices are in US Dollars. Prices may change without notice from time to time. The total amount due is inclusive of sales tax applied in accordance with applicable state and local regulations based on your shipping address. The applicable sales tax amount is indicated on the payment page of the cart.\r\n\r\nThe amount of sales tax charged on your order will depend upon various factors, including type of item purchased, sales price and destination of the shipment. Sales tax regulations may change between the time you place an order and the time of credit card charge authorization and this may affect the calculation of sales taxes. The amount appearing on your payment page of the cart may differ from the sales taxes ultimately charged as indicated in the invoice you will receive with the shipping confirmation e-mail.\r\n\r\nAll prices are inclusive of customs and import duties.\r\n\r\n<b>3. SHIPPING COSTS</b>\r\nYou are responsible for the shipping costs associated with the delivery of the products you purchase on the US Site as specified on your order confirmation. \r\n\r\n<b>4. SHIPMENTS AND DELIVERY</b>\r\nYou bear all risks of loss and damage to the products from the time the same have cleared our fulfillment house. Delivery is deemed complete and title to the products passes to you upon acceptance of shipment by a common carrier.\r\n\r\n<b>5. RETURNS AND REFUNDS</b>\r\nPlease refer to our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy&“>Return and Refund Policy</a>, which forms an integral part of these General Terms and Conditions of Sale. \r\n\r\n<b>6. BINDING AGREEMENT</b>\r\nOur order confirmation, these General Terms and Conditions of Sale and our other Site Policies shall be deemed the final and integrated agreement between you and us on the matters contained in these General Terms and Conditions of Sale. \r\n\r\n<b>7. GOVERNING LAW AND CHOICE OF FORUM</b>\r\nThe laws of the State of New York (without giving effect to its conflicts of law principles) govern all matters arising out of or relating to these General Terms and Conditions of Sale, including, without limitation, their validity, interpretation, construction, performance, and enforcement. All legal proceedings arising out of or in connection with these General Terms and Conditions of Sale shall be brought solely in the City of New York, State of New York. \r\n\r\n<b>8. DISCLAIMERS AND LIMITATIONS OF LIABILITY</b>\r\nTHE PROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE PRODUCTS INCLUDED IN THE www.stoneisland.com US SITE NOR AS TO THE MERCHANDISE BEING SOLD TO YOU. TO THE FULLEST EXTENT PERMISSIBLE BY APPLICABLE LAW, THE PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, AND THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, WHICH EXTEND BEYOND THE DESCRIPTION OF THE MERCHANDISE CONTAINED ON OUR ORDER CONFIRMATION. THE PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THE US SITE, INCLUDING BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE AND CONSEQUENTIAL DAMAGES \r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<b>9. SEVERABILITY</b>\r\nIf any provision of these General Terms and Conditions of Sale is determined to be invalid, illegal or unenforceable, the remaining provisions of these General Terms and Conditions of Sale remain in full force to the extent permitted by law.\r\n\r\n<b>10. PRIVACY</b>\r\nThe terms and conditions of the our <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&”>Privacy Policy</a> govern the processing of all personal data collected from you in connection with your purchase of products through the US Site.\r\n\r\n<b>11. FORCE MAJEURE</b>\r\nProvider shall not be liable for any delay or failure in performance caused by circumstances beyond its reasonable control.\r\n\r\n<b>12. ERRORS AND INACCURACIES</b>\r\nOur goal is to provide complete, accurate, and up-to-date information on our website. Unfortunately, it is not possible to ensure that any website is completely free of human or technological errors. This website may contain typographical mistakes, inaccuracies, or omissions, some of which may relate to pricing and availability, and product information. We reserve the right to correct any errors, inaccuracies or omissions, including after an order has been submitted, and to change or update information at any time without prior notice.\r\n",
- "__index": "1",
- "dateCreated": "Tue, 17 Nov 2015 20:31:52 GMT",
- "tag": "terms"
- },
- {
- "id": "privacy-policy",
- "title": "Privacy Policy",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "Welcome to www.stoneisland.com. Please read our Privacy Policy carefully. This Privacy Policy applies when you visit and surf the United States section of www.stoneisland.com (the \"www.stoneisland.com US Site\") regardless of whether you purchase products or not, when you register with the www.stoneisland.com US Site, and when you use our services. By using the www.stoneisland.com US Site, you accept the practices described in this Privacy Policy. If you do not want to accept the practices described in this Privacy Policy, please do not use the www.stoneisland.com US Site. \r\nThe www.stoneisland.com US Site is operated under license by , a Delaware corporation having an address at 148 Lafayette Street, 10th Floor, New York, NY, 10013, United States of America (\"YOOX USA\"). YOOX USA is a subsidiary of YOOX NET-A-PORTER GROUP S.p.A., an Italian company having its registered address at via Morimondo, 17 – Milano 20143 (\"YOOX\") and controls the personal data of users and customers of the www.stoneisland.com US Site together with SPORTSWEAR COMPANY, having address at Galleria Cavour 4, 40124 Bologna, Italy, Italy, VAT, 01046470371 (jointly referred to as \"YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY\"). \r\nSince personal data of users and customers of the www.stoneisland.com US Site may be processed in Italy, any such processing of personal data will be conducted in compliance with applicable US law as well as the Italian Data Protection Code (Legislative Decree no. 196 dated June 30, 2003). Pursuant to the Italian Data Protection Code, YOOX USA is the controller of personal data of users and customers of the www.stoneisland.com US Site. As controller of personal data, YOOX USA independently determines the purposes and means by which your personal data are processed, including all security measures. As required by the Italian Data Protection Code, YOOX USA has appointed YOOX NET-A-PORTER GROUP as its data protection representative in Italy. As our data protection representative in Italy, YOOX, together with SPORTSWEAR COMPANY, independently ensures that personal data are processed in Italy in a correct and lawful manner and in accordance with good practice.\r\n\r\n<b>1. OUR POLICY</b>\r\nEveryone has the right to the protection of his/her personal data. YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY respect our users' right to be informed about the collection and processing of their personal data. The www.stoneisland.com US Site has been designed in such a way that the use of your personal data will be minimal and will not exceed the original purpose for which your personal data are collected and/or processed. In particular, we do not disclose your identity when the purpose for which your personal data are being processed can be achieved by using anonymous aggregate information. This Privacy Policy is intended to provide you with all the information you need in order to understand our privacy practices.\r\nHowever, if you have any questions regarding our privacy practices and this Privacy Policy, please contact us at the following e-mail address:<a target=\"_blank\" href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a>.\r\nThe www.stoneisland.com US Site is not directed at, nor do we knowingly collect personally identifiable information from children under the age of 13, although we may sell children's products or services for purchase by adults. If you are under 18, you may use the www.stoneisland.com US Site only with the involvement of a parent or guardian. \r\n\r\n<b>2. WHO PROCESSES YOUR PERSONAL DATA</b>\r\nFor organizational and operational purposes only, YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY have appointed certain entities that will also process personal data of users and customers of the www.stoneisland.com US Site. Such purposes are strictly connected to the performance of services provided on the www.stoneisland.com US Site by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY, including the sale of products.\r\nThe above-mentioned data processors have been chosen by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY because of their experience in processing personal data, their sufficient guarantees with respect to compliance with applicable laws and regulations, including the Italian Data Protection Code (Legislative Decree no. 196 of 30 June 2003) as well as the technical security measures adopted by them in connection with the processing of personal data. In processing personal data of the users of the www.stoneisland.com US Site, our processors will act only in accordance with instructions provided by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY. We regularly verify that our processors comply with our instructions and that they provide sufficient guarantees with respect to their compliance with applicable laws and regulations. The following is a list of the companies primarily involved in the processing of personal data of users and customers of the www.stoneisland.com US Site:\r\n\t•\t<a href=“http://www.ups.com/“>United Parcel Service S.p.A.(“UPS\")</a>. We provide UPS, by electronic means, with customers' addresses and other personal data for the purpose of shipping, delivering and returning products purchased on the www.stoneisland.com US Site;\r\n\t•\tBT Italia S.p.A., for purposes related to the maintenance of YOOX NET-A-PORTER GROUP servers;\r\n\t•\t<a href=“http://www.yoox.com/“>YOOX NET-A-PORTER GROUP Italy</a>. We provide YOOX NET-A-PORTER GROUP Italy with personal data of users and customers for purposes related to direct marketing services of YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY and in connection with other services provided by YOOX NET-A-PORTER GROUP Italy to YOOX USA, such as call center and help desk services.\r\nPlease contact our Customer Care or send us an e-mail at <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a> if you would like to receive a full list of our data processors.\r\n\r\n<b>3. HOW DO WE USE PERSONAL DATA AND FOR WHAT PURPOSES</b>\r\nYour personal data are collected and processed by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY for purposes which are strictly connected to the use of the www.stoneisland.com US Site, its services and the purchase of products on the www.stoneisland.com US Site. However, your personal data may also be used for other processing operations within the limits of such purposes. In particular, your personal data may be processed for the following purposes:\r\n\t•\twhen you register with the www.stoneisland.com US Site we collect your personal data (for example, your personal information, e-mail address, gender) through the relevant registration form (My Account) in order to provide you with services in reserved access areas of the www.stoneisland.com US Site and in order to send you our Newsletter, when specifically requested;\r\n\t•\twhen you request Customer Care services, we collect your personal data (for example, your password) for purposes strictly necessary to provide you with customer care services relevant to the US Site and to the purchase of products on the US Site;\r\n\t•\twhen you request Customer Service assistance, we collect your personal data (for example, your first and last names, e-mail address and password) for purposes strictly necessary to provide you with Customer Service relevant to the www.stoneisland.com US Site and to the purchase of products on the www.stoneisland.com US Site;\r\n\t•\twhen you are executing purchasing procedures for products sold on the www.stoneisland.com US Site, including conclusion of an agreement for the purchase of products, we collect your personal data (for example, personal information, e-mail address, address, Credit Card numbers, bank account number and telephone number) on your order form only for the purpose of selling the products ordered by you;\r\n\t•\twhen you request technical assistance, we collect your personal data in order to provide you with information on net-surfing, Internet browsing or viewing and downloading web pages;\r\n\t•\twhen creating your Wish List, we process your personal data in order to customize our services for the purchase of products on the www.stoneisland.com US Site.\r\nYour personal data are generally processed by electronic means; however, in certain circumstances, paper-based means may be used (for example, when the processing of your personal data is required for the prevention of fraud against us). Your personal data are stored in a way which allows YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY to identify you for the period that is strictly necessary for the original purposes for which such personal data are collected and subsequently processed, all in accordance with applicable laws.\r\nPlease report any changes to your personal data to the e-mail address <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a> in order to ensure that your personal data are always accurate and kept up-to-date.\r\nYour personal data will not be disclosed to third parties for purposes not permitted by law or without your explicit consent. Your personal data may only be disclosed to third parties when it is necessary to process an order placed by you. For example, your personal data are disclosed to Banca Sella S.p.A. for the performance electronic payment services, through Credit/Debit Cards. Moreover, your personal data may be disclosed to the police or to judicial authorities, in compliance with applicable laws and regulations and upon a formal request by such authorities for the purposes of preventing a fraud against us (anti-fraud services). Data processors will also have access to your personal data, as stated in Section 2 of this Privacy Policy, for the specific purposes stated in that Section. In all the above circumstances, your consent for data processing will not be specifically requested.\r\nYour personal data will not be transferred to any countries outside the United States and Italy if such countries do not provide for an adequate level of protection of the privacy of individuals. Should the above be necessary in order to supply services to you or to execute contracts for the purchase of products, the transfer of your personal data to any such countries will be carried out only after the execution of specific contracts between YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY and all parties involved, in accordance with applicable laws and regulations.\r\nWe wish to inform you that YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY process users' personal data for purposes that are strictly connected to the supply of services through the www.stoneisland.com US Site, the execution of contracts related to the sale and purchase of products on the www.stoneisland.com US Site and, after receiving your consent, in order to send you information on new commercial initiatives which are strictly related to the www.stoneisland.com US Site's activities and services. YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY process your personal data for direct marketing purposes, including by e-mail, only after receiving your consent.\r\nYOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY may have access to third parties' personal data which is directly disclosed by their users to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY, for instance when the user buys a product to be sent to a friend, when the user who pays the purchase price for a product is different from the recipient of such product, or when a user wishes to recommend to a friend a service provided through the www.stoneisland.com US Site or the sale of a particular product posted on the www.stoneisland.com US Site.\r\nIn all cases involving the disclosure of information of a third party, you must obtain the consent of such individuals before disclosing their personal data to YOOX USA, YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY and have informed said individuals about this Privacy Policy. You will be the only person liable in connection with the disclosure of information and data relevant to such third parties and with any other incompatible and unlawful use of such data if they have not provided you with their consent. You agree to indemnify, defend and hold each of YOOX USA, YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY harmless from any liability, claims and expenses, including reasonable attorneys' fees, arising from or related to any unauthorized disclosure of personally identifiable information of third parties.\r\n\r\n<b>4. WHAT HAPPENS IF YOU DO NOT DISCLOSE YOUR PERSONAL DATA</b>\r\nThe personal data we request you to provide to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY, including your e-mail address, your address, your Credit/Debit Card numbers, bank account number and your telephone number, is necessary for the processing of your order for the purchase of products on the www.stoneisland.com US Site, to supply other services provided on the www.stoneisland.com US Site upon your request, or to carry out obligations arising out of applicable laws and regulations.\r\nYour refusal to provide certain personal data to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY may prevent YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY from processing your order for the purchase of products sold on the www.stoneisland.com US Site or from providing other services through the www.stoneisland.com US Site, such as Customer Services, sending the Newsletter, use of the Wish List, recommending a product to a friend.\r\nYour failure to provide personal data to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY may prevent the processing of your order for the purchase of products sold or to provide services through the www.stoneisland.com US Site. \r\nThe disclosure of personal data to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY other than that required in order to fulfill legal or contractual obligations or to provide the services requested by you is optional and does not have any effect on the use of the www.stoneisland.com US Site and its services or on the purchase of products on the www.stoneisland.com US Site. We will inform you if the personal data we ask you to provide is necessary or optional by marking with an asterisk (*) the information that is necessary. Your failure to disclose optional personal data will not pose any obligation or disadvantage to you, except to the extent that we may no be able to offer you some of our optional, personalized features of the www.stoneisland.com US Site. \r\n\r\n<b>5. TO WHOM YOUR PERSONAL DATA WILL BE DISCLOSED</b> \r\nYour personal data may be disclosed to third parties who provide specific services as Data Processors on behalf of YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY or who autonomously process personal data collected by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY in connection with the performance of a contract for the purchase of products on the www.stoneisland.com US Site (for example, Banca Sella, S.p.A.). \r\nAny such disclosure will be conducted, in each instance, without exceeding the original purposes for which your personal data were collected and subsequently processed. In addition, your personal data may be disclosed to third parties in order to (1) comply with applicable laws, (2) respond to governmental and judiciary inquiries, (3) comply with valid legal process, and (4) protect the rights or property of YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY. \r\nAny third party information disclosed to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY in accordance with this Privacy Policy will not be used for any purpose other than as required to technically operate the service, to complete a transaction, or as otherwise required by law. \r\nIn the event there is a change in the corporate structure of YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY including, without limitation, by merger, consolidation, sale, liquidation, or transfer of substantial assets, YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY may, in their sole discretion, transfer, sell or assign personal data collected on and through the www.stoneisland.com US Site, including, without limitation, personally identifiable information and aggregate information concerning users and customers, to one or more affiliated or unaffiliated third parties. \r\nIn any event, your personal data will not be disclosed to third parties without you being informed or without your consent, when such consent is required by law.\r\n\r\n<b>6. HOW DO WE COLLECT YOUR DATA ON www.stoneisland.com</b> \r\nCookies\r\nWhen you are using the www.stoneisland.com US Site, some personal data may be collected automatically through so-called \"cookies\". A cookie is a device transmitted to the hard drive of an Internet user. While cookies do not contain intelligible information, they allow us to link an Internet user to personal information provided by such user through the www.stoneisland.com US Site. YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY process information collected by cookies in a collective and anonymous way, in order to optimize our services and the www.stoneisland.com US Site for the needs and preferences of its users. We use cookies to collect users' IP addresses and other information regarding users' data traffic or preferences in the choice of services provided and products purchased through the www.stoneisland.com US Site.\r\nWe disseminate cookies in connection with functions such as browsing the catalogue, purchasing products on-line and supplying \"My Account\" services.\r\nAs you may know, each Internet browser allows the deletion of cookies after each session. Your Internet browser contains instructions on how to carry out these procedures of deletion. Please access the appropriate instructions section on your Internet browser if you wish to delete cookies. \r\nYour acceptance of our automatic procedures of collection of data and the use of cookies is necessary to take advantage of many features and services offered by the www.stoneisland.com US Site, including the purchase of products. If you set your browser to block or delete cookies, we cannot guarantee that you will have access to all the features and services offered by the US Site (for example, your computer may not be able to display the image of the product you are in the process of purchasing).\r\nOther Methods of Collecting User Information. \r\nYOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY directly collect personal data and information from users when they register on-line with the www.stoneisland.com US Site or when they send purchase orders for products sold on the www.stoneisland.com US Site in order to finalize their transactions.\r\n\r\n<b>7. SECURITY MEASURES</b>\r\nWe have adopted security measures to protect personal data against accidental or unlawful destruction, loss, alteration, unauthorized disclosure or access and against other unlawful forms of data processing, as provided in our Privacy Policy. \r\nNevertheless, YYOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY cannot guarantee that the security measures adopted for the protection of the www.stoneisland.com US Site and the transmission of data and information through the www.stoneisland.com US Site will prevent or exclude any risk of unauthorized access to or loss of data. It is advisable that your computer be equipped with software devices for the protection of network data transmission and receipt (such as, updated antivirus systems) and that your Internet service provider take appropriate measures for the security of network data transmission (such as, firewalls and anti-spam filtering).\r\n\r\n<b>8. OPT-IN/OPT OUT</b> Advertising material and direct marketing or other commercial communications which are not specifically requested by you or necessary to provide a service you requested, including the purchase of products on the US Site, will be sent to you only after we receive your consent. Please note that each time your consent is required, we will inform you in advance and we will give you the option to either provide or refuse your consent by selecting the appropriate box.\r\nYOOX and STONE ISLAND and STONE ISLAND DENIMS may process your personal data without your consent when such processing is necessary to comply with applicable laws and regulations or to provide you with services you requested, including the purchase of products on the US Site.\r\nEven when your prior consent is not necessary, you may exercise, at any time, your right not to receive future communications regarding services you requested, such as the Newsletter.\r\n\r\n<b>9. YOUR RIGHT TO ACCESS PERSONAL DATA AND FURTHER RIGHTS</b>\r\nYou are entitled to obtain, at any time, confirmation from YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY as to whether or not data relating to you is being processed, even if not yet registered, and the communication of any such data in an intelligible form. \r\nMoreover, you are entitled to receive from YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY information on the source from which we received your personal data; the purposes and means of processing your personal data; the logic involved in any electronic data processing; information regarding the data controller and the data processors and the names of subjects and categories of subjects to whom your personal data may be disclosed or who may access your personal data (for example, the names of data processors). You can also find the above information in our Privacy Policy. \r\nYou are entitled to obtain at any time from YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY:\r\n\t•\tthe updating, rectification or integration of your personal data;\r\n\t•\tthe deletion, transformation into anonymous form or blocking of your personal data, which are processed in violation of the law, including when the storage of data is not necessary for the purposes for which it has been collected and subsequently processed;\r\n\t•\tthe confirmation that the operations under letters a) and b) have been reported to whom the data were disclosed or disseminated, except when it becomes impossible to do so or if it means exceeding the protection of the right you are claiming.\r\nYou are entitled to object, in all or in part:\r\n\t•\tfor legitimate reasons, to the processing of your personal data, even if it is related to the purposes for which it was collected;\r\n\t•\tto the processing of your personal data for advertising or direct marketing purposes or in order to carry out marketing research or commercial communications.\r\nYou may freely and at any time exercise your rights, provided that you do so in compliance with applicable laws and regulations, by sending your request to YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY at the following e-mail address: <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a>.\r\n\r\n<b>10. LINKS TO OTHER WEB SITES</b>\r\nThe www.stoneisland.com US Site may provide hyperlinks to third party websites (the \"Third Party Websites\"). YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY do not operate, control, endorse or guarantee any Third Party Websites. You agree that and SPORTSWEAR COMPANY are not responsible for any content, services and/or products provided by any Third Party Website, nor are YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY responsible for any practice followed by such Third Party Website with respect to the collection and processing of personal data of their users. When you access any Third Party Website through a hyperlink posted on the www.stoneisland.com US Site, please carefully read the Privacy Policy and other policies of such Third Party Website.\r\nOur Privacy Policy and other policies do not apply to any Third Party Website. YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY provide hyperlinks to Third Party Websites only for the convenience of our users. By providing hyperlinks to Third Party Websites, YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY do not recommend that users access such Third Party Websites.\r\nYOU AGREE THAT YOUR USE OF ANY THIRD PARTY WEBSITE IS AT YOUR SOLE RISK AND WITHOUT WARRANTIES OF ANY KIND BY YOOX, YOOX USA, AND/OR SPORTSWEAR COMPANY, EXPRESSED, IMPLIED OR OTHERWISE, INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY OR NONINFRINGEMENT. UNDER NO CIRCUMSTANCES ARE YOOX, YOOX USA, AND/OR SPORTSWEAR COMPANY LIABLE FOR DAMAGES ARISING FROM ANY TRANSACTION BETWEEN YOU AND ANY THIRD PARTY WEBSITE OR FOR ANY INFORMATION APPEARING ON THIRD PARTY WEBSITES. \r\n\r\n<b>11. CONTACTS</b>\r\nIf you wish to receive further information regarding our privacy practices, please contact us at the following e-mail address: <a href=“mailto:privacy@mail.stoneisland.com”>privacy@mail.stoneisland.com</a>. For more information regarding your rights under the Italian Data Protection Code, please go to the web site of the Italian Data Protection Authority at <a href=“http://www.garanteprivacy.it/ “>www.garanteprivacy.it</a>. \r\n\r\n<b>12. GOVERNING LAW</b>\r\nThe processing of personal data by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY will be conducted in compliance with applicable US laws. The laws of Italy, including the Italian Personal Data Protection Code (Legislative Decree no. 196 dated June 30, 2003), also apply to the processing of personal data carried out by YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY (see the Companies of YOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY Group). The Italian Personal Data Protection Code guarantees that the processing of your personal data will be carried out in compliance with the fundamental rights and freedoms of individuals and their dignity, with particular reference to confidentiality, identity and the right to personal data protection. \r\n\r\n<b>13. MODIFICATION AND UPDATING</b>\r\nYOOX NET-A-PORTER GROUP and SPORTSWEAR COMPANY may amend or update from time to time all or any part of this Privacy Policy, whether or not required by a change in the applicable laws and regulation. Our users will be notified of any amendment to or update of our Privacy Policy on our homepage. All amendments and updates will become effective upon publication on this section of the www.stoneisland.com US Site. You should regularly access this section of the www.stoneisland.com US Site in order to review the most recent and updated version of our Privacy Policy.",
- "__index": "2",
- "dateCreated": "Tue, 17 Nov 2015 20:32:07 GMT",
- "tag": "privacy"
- },
- {
- "id": "returns-policy",
- "title": "Returns Policy",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "We want to make sure that you are completely satisfied with your purchases on this Site. If, for any reason, you are not satisfied with your order, you may return any UNUSED products within twenty (20) days from the date of delivery. Before sending any products back to us, please make sure that all of the following conditions have been correctly satisfied. \r\nThe product you wish to return:\r\n<li>can be sent back to us only after you have completed and submitted the online <a href=“http://www.stoneisland.com/localize.asp?tskay=4036416C&page=help/return&”>Return Form</a> available on the www.stoneisland.com US Site within twenty (20) days of delivery; by completing and submitting our online return form you will receive your Return Number, which you must include on your return shipping label;</li>\r\n<li>must be unused, unworn, unwashed and in the same condition in which it was received by you;</li>\r\n<li>must have all disposable seals still attached with the disposable seal that must still be intact;</li>\r\n<li>must be returned complete with all of its parts and accessories;</li>\r\n<li>must be sent in its original packaging;</li>\r\n<li>must be shipped back to our fulfillment house within twenty (20) days of the date of delivery;</li>\r\n<li>must be sent in one single shipment; products that belong to the same order must be returned to us at the same time; and</li>\r\n<li>must be shipped from the United States.</li>\r\nIf all of these conditions are satisfied, we will refund the value of the returned product(s), Sales Tax included, less any original shipping costs. If you send the package with UPS, return shipping costs charged to the customer will correspond to $6.00. If you prefer you can send the return at your expense, with a courier of your choice. We will not issue any refunds for returns that do not satisfy all of the conditions indicated above; provided, however, that you will have the option to request within thirty (30) days of being notified that you are not entitled to a refund that your merchandise be shipped back to you, at your own cost, in the condition in which it was received by Provider’s fulfillment house.\r\nIf you do not request the return of your merchandise within said thirty-day period, you authorize Provider, and any of its affiliates or agents, to dispose of such merchandise as it sees fit. \r\n\r\nSALES OF BEACHWEAR AND UNDERWEAR ARE FINAL. WE RESERVE THE RIGHT TO DESIGNATE ON THE SITE OTHER NON-RETURNABLE MERCHANDISE. ANY SUCH DESIGNATION WILL BE NOTED ON THE DETAIL PAGE OF THE MERCHANDISE WHICH IS NON-RETURNABLE. \r\n\r\n<b>REFUND POLICY</b>\r\nRefunds are processed within approximately three (3) business days of our receipt of your merchandise. Your refund will be credited back to the same payment method used to make the original purchase on the US Site. If you paid by credit card, refund times will depend on the credit or debit card company’s policies. Be aware that the refund date for the credit will coincide with the date of the original payment, therefore you will not be charged any interest fees. If you paid by PayPal (where available), refunds will be credited to your PayPal account and will be visible immediately. The date of reimbursement to the credit card associated with your PayPal account depends on the company that issued the card. WE OFFER NO REFUNDS ON ANY PRODUCTS DESIGNATED ON THIS SITE AS NON-RETURNABLE. \r\n\r\n<b>IDENTIFICATION TAG</b>\r\nAll of our products come with an identification tag with a disposable seal. Please try your item on before removing the tag and seal, since we do not accept returns once the disposable seal has been removed, broken or damaged in any way. Shoes come with a sticker under the sole; if you remove or alter this sticker, you may no longer return your purchase. \r\n\r\n<b>UPS</b>\r\nYour return can be sent to us by UPS, using the pre-printed label which you can find within the original shipment. If you send the package with UPS, return shipping costs charged to the customer will correspond to $6.00. Please visit <a href=“https://www.ups.com/dropoff?loc=en_US “>http://www.ups.com/dropoff?loc=en_US</a> to find the UPS drop-off location nearest to you. If you prefer you can send the return at your expense, with a courier of your choice. We are not responsible for any loss or damage to products if you ship your return without using UPS. \r\n\r\nWE OFFER NO EXCHANGES ON MERCHANDISE PURCHASED ON THE www.stoneisland.com US SITE\r\n\r\nDISCLAIMER OF WARRANTIES AND LIMITATION OF LIABILITY\r\n\r\nPROVIDER MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, AS TO THE PRODUCTS INCLUDED ON THE SITE NOR AS TO THE MERCHANDISE BEING SOLD TO YOU. TO THE FULLEST EXTENT PERMISSIBLE BY APPLICABLE LAW, PROVIDER DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT, AND THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, WHICH EXTEND BEYOND THE DESCRIPTION OF THE MERCHANDISE CONTAINED ON OUR ORDER CONFIRMATION. PROVIDER WILL NOT BE LIABLE FOR ANY DAMAGES OF ANY KIND ARISING FROM THE USE OF THE SITE, INCLUDING BUT NOT LIMITED TO DIRECT, INDIRECT, INCIDENTAL, PUNITIVE AND CONSEQUENTIAL DAMAGES. \r\n\r\nCERTAIN STATE LAWS DO NOT ALLOW LIMITATIONS ON IMPLIED WARRANTIES OR THE EXCLUSION OR LIMITATION OF CERTAIN DAMAGES. IF THESE LAWS APPLY TO YOU, SOME OR ALL OF THE ABOVE DISCLAIMERS, EXCLUSIONS, OR LIMITATIONS MAY NOT APPLY TO YOU, AND YOU MIGHT HAVE ADDITIONAL RIGHTS.\r\n\r\n<b>Force Majeure</b>\r\nProvider shall not be liable for any delay or failure in performance caused by circumstances beyond its reasonable control.",
- "__index": "3",
- "dateCreated": "Tue, 17 Nov 2015 21:03:44 GMT",
- "tag": "returns"
- },
- {
- "id": "customer-care",
- "title": "Customer Care",
- "image": {
- "uri": "",
- "caption": ""
- },
- "body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam blandit in risus sit amet maximus. Phasellus ullamcorper auctor fermentum. Aenean diam libero, rhoncus vel efficitur sed, dictum vel neque. Aliquam mollis leo vitae est vehicula, non pulvinar elit congue. Phasellus sit amet mauris neque. Integer volutpat nisl est, vel finibus purus lacinia vehicula. Proin dapibus velit quis sapien ultricies accumsan. Sed accumsan dui id porta efficitur.\r\n\r\nCurabitur pretium ut libero a varius. Morbi in lacinia felis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam dolor justo, consequat eu lectus at, interdum sollicitudin arcu. Nunc accumsan velit volutpat, venenatis leo eu, rhoncus nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Phasellus semper consequat ipsum, sed fringilla ligula tincidunt at.\r\n\r\nMauris vehicula, purus ut iaculis facilisis, mi leo dignissim libero, at lobortis lectus odio consequat urna. Etiam accumsan volutpat nibh, eget ultricies mi feugiat eu. Duis id aliquam enim. Pellentesque quis enim eu dolor bibendum interdum. Cras ultrices erat velit, eu volutpat erat consequat non. Nam ut nibh facilisis, egestas sapien vitae, scelerisque sapien. Nullam tortor ex, convallis vel nisi vitae, efficitur dapibus nunc. In hac habitasse platea dictumst. Nam posuere ligula lorem, sit amet ultricies odio tristique in. Etiam gravida tincidunt mollis. Duis quis nulla ligula. Etiam ut vehicula tellus. Sed ipsum lacus, tincidunt sit amet velit et, aliquet hendrerit erat. Nam sed velit dapibus, congue odio non, ultrices ligula. Suspendisse at quam eu lorem finibus ultricies id tempus lorem. Nulla vel quam luctus, viverra nulla cursus, faucibus tellus.\r\n\r\nPraesent magna ex, posuere at hendrerit varius, auctor a nisl. Nullam sodales erat ut nisl vestibulum luctus. Donec id sagittis orci. Cras imperdiet, erat non dictum feugiat, elit turpis viverra neque, interdum cursus mi turpis vitae dolor. Suspendisse potenti. Aenean et auctor diam, vel eleifend eros. Praesent viverra felis at enim elementum fermentum. Etiam convallis, elit porta molestie condimentum, arcu ligula vestibulum nisi, et aliquet massa tellus quis eros. Aliquam a dignissim tellus, non ullamcorper purus. Phasellus in risus mattis dui vehicula cursus in at urna.\r\n\r\nCurabitur laoreet lorem eu euismod volutpat. Suspendisse vulputate aliquet tempor. Pellentesque purus augue, eleifend a maximus eu, commodo nec felis. Mauris mattis turpis nec volutpat tincidunt. Mauris imperdiet ante at orci mollis sagittis. Etiam lacus risus, consectetur ut dui non, pulvinar pulvinar libero. Aliquam ut rhoncus justo, quis sollicitudin nisi. Proin et iaculis sem. Pellentesque id tempor elit, et tincidunt nunc. Quisque laoreet et massa quis imperdiet. Morbi dapibus, felis sed auctor porttitor, massa nunc sollicitudin urna, non congue odio enim eget nisi. Suspendisse semper vehicula nisl vitae vehicula. Maecenas sed justo quis nisi auctor ultrices. Nam vel dolor fringilla, accumsan nulla eu, rutrum ex. Donec ante quam, molestie vel ex eget, dictum luctus nunc. Phasellus tincidunt libero non quam finibus, at convallis sem laoreet.\r\n\r\nDonec consequat, leo tincidunt elementum consectetur, nisl augue sollicitudin dolor, vel fringilla dui lorem non enim. Morbi id arcu felis. Integer malesuada ex enim, sed consectetur massa condimentum id. In mollis libero eu neque sollicitudin, sit amet interdum orci bibendum. Curabitur tincidunt purus vel vestibulum placerat. Aliquam erat volutpat. Praesent ac eros diam. Mauris ultrices euismod sodales. Vestibulum dui leo, auctor sit amet finibus eu, suscipit eu diam. Cras ac rhoncus turpis, at sagittis mi. Praesent urna metus, euismod vitae nunc eget, suscipit auctor lectus. Pellentesque maximus arcu justo. Duis mi arcu, rutrum et vulputate nec, mattis sit amet risus. Donec posuere velit sed enim accumsan, eu lobortis nulla sagittis.\r\n\r\nDonec viverra consectetur turpis sit amet malesuada. Sed sit amet urna luctus, sodales est porta, aliquam mi. Curabitur et ullamcorper odio, dapibus facilisis nisl. Fusce tortor leo, mattis sit amet massa ut, ultrices aliquam massa. Pellentesque consectetur metus in molestie egestas. Quisque vehicula at mauris ut eleifend. Duis eu ipsum quis ipsum bibendum luctus.\r\n\r\nSed sed viverra diam. Quisque lacinia nisl orci. Fusce vulputate dui ut nunc vulputate feugiat. Praesent felis quam, semper nec dapibus eget, venenatis vitae leo. Maecenas rutrum egestas dapibus. Vestibulum sodales molestie varius. Ut ac laoreet est, nec posuere ipsum. Cras ac eros sapien. Quisque eu dui lorem. Donec congue varius tortor ac ullamcorper. Curabitur vulputate faucibus finibus. Donec tellus neque, euismod ac aliquet at, vehicula in mauris. Vivamus justo nulla, maximus sit amet quam ac, vulputate dapibus purus. Mauris ante urna, posuere varius vehicula sed, fringilla sed quam. In eget ex tincidunt, ultrices elit id, congue quam. Suspendisse congue tristique dolor, rhoncus venenatis purus tempor at.\r\n\r\nVivamus efficitur, odio in tempor rutrum, quam nunc congue orci, non posuere lorem lacus et arcu. Aenean sit amet diam quis dui dapibus semper ac vitae est. Aenean ornare arcu justo, id sodales odio maximus interdum. Curabitur sit amet augue pretium metus bibendum imperdiet vitae vitae nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nunc euismod ante eu justo mollis dignissim. Maecenas et velit eu lorem laoreet ornare. Sed accumsan est nec rutrum dignissim.\r\n\r\nIn bibendum mattis ligula. Pellentesque gravida felis sed congue viverra. Nam volutpat quam at velit sodales, nec egestas dolor consectetur. Etiam id tortor tincidunt, sollicitudin risus ut, lacinia diam. Morbi consequat euismod justo vitae sagittis. Pellentesque interdum orci ligula, tincidunt maximus nulla sollicitudin sed. Duis finibus odio eros, eget consequat ante tristique ac. Suspendisse at interdum leo. Nunc sagittis ante ac felis iaculis fermentum. Sed elementum dictum dictum. Aliquam eget metus molestie, varius mi ac, auctor quam.",
- "__index": "4",
- "dateCreated": "Tue, 17 Nov 2015 21:03:57 GMT",
- "tag": "care"
- },
- {
- "id": "account-terms",
- "title": "Account Terms",
- "image": {
- "uri": "",
- "caption": "",
- "width": "",
- "height": ""
- },
- "body": "<h2>1. Services</h2>\r\n\r\nStone Island - SPORTSWEAR COMPANY S.p.A. (\"Stone Island\") offers you the possibility of using the following services \"My Account\" (the \"Services\")*:\r\n\r\n<ul>\r\n<li><b>My Orders:</b> Track the shipping of your orders, change or return items that are not for you and see the history of your orders.</li>\r\n<li><b>My Profile:</b> Manage your registration data.</li>\r\n<li><b>Address Book:</b> Save or change your addresses to have them always at hand and complete your purchases faster.</li>\r\n<li><b>My Card:</b> Save or change your card information and complete your orders faster and always safely.</li>\r\n</ul>\r\n\r\n<h2>2. Registration</h2>\r\n<h3>2.1</h3>\r\n\r\nIf you want to use the Services you must be an adult user, register on stoneisland.com creating your My Account account, and accept these terms and conditions for using the Services (\"Terms\"). Registration is free of charge. To create your My Account account, you will need to fill out the registration form by entering the required information, and guarantee to Stone Island that the information provided during the registration process is complete, accurate and truthful. We will send you an email to confirm your registration. We remind you that the credentials to access your My Account account must be used exclusively by you, and they cannot be transferred to third parties. Subject to legal limitations, Stone Island cannot in any way be held responsible in the event of access to your My Account account by unauthorized third parties. You are requested to keep your credentials confidential and to immediately inform Stone Island if you suspect that there has been an unauthorized access to your My Account account or if your password has been violated.\r\n\r\n\r\n<h3>2.2</h3>\r\n\r\nFor the provision of some Services, it may be necessary to use electronic communication channels (such as e-mail, SMS or telephone). If you want to use these specific services, you will be asked to give your consent to be contacted by Stone Island for the related communications by SMS, email or other communication channel.\r\n\r\n\r\n<h3>2.3</h3>\r\n\r\nWe also request you to consult, if you have not already done so, our <a href=\"#!/page/terms\">General Terms of Use</a> which form an integral part of these Terms. For any other legal information, consult the <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/saleterms&\">General Terms of Sale</a>, <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/returnpolicy\">Return Policy</a> and <a href=\"http://www.stoneisland.com/localize.asp?tskay=4036416C&page=legal/privacypolicy&\">Privacy Policy</a> of stoneisland.com.\r\n\r\n\r\n<h2>3. Duration and withdrawal</h2>\r\n\r\n<h3>3.1</h3>\r\n\r\nThe registration with the Services shall be effective from the moment you receive the confirmation email and for the entire period in which you use the Services.\r\n\r\n\r\n<h3>3.2</h3>\r\n\r\nAt any time and for any reason, you can cancel your subscription to the Services by sending a request to our Customer Service and selecting \"privacy\". In the event you exercised the right of withdrawal, we will send you an email to confirm the cancellation of the Services.\r\n\r\n\r\n<h3>3.3</h3>\r\n\r\nStone Island reserves the right to cancel your registration with the Services in the event of a violation of the provisions contained in these Terms, or in the event that the data provided was not complete, truthful or accurate, without prejudice to the right to compensation for the damage suffered. Stone Island also reserves the right to temporarily suspend, without any prior communication, the provision of the Services, for the time necessary and / or appropriate, to perform all the technical interventions required to improve the quality of the Services. Stone Island may, at any time, interrupt the provision of the Services for security reasons.\r\n\r\n\r\n<h2>4. Warning on the Services</h2>\r\n\r\nStone Island shall do its best to provide an accurate services. Without prejudice to the legal limits, the Services are provided free of charge \"AS IS\". Stone Island does not provide any guarantee, by way of example but not limited to, relating to the quality, the good functioning, the absence of interruptions or the suitability of the Services for an end or a particular result set by the user.\r\n\r\n\r\n<h2>5. Rectification and Update</h2>\r\n\r\nThe present Terms can be amended from time to time in consideration of possible regulatory changes. The new Terms shall be effective as of their date of publication in stoneisland.com You are requested to regularly access this section in order to check the publication of the most recent and updated Privacy Policy.\r\n\r\n\r\n*The availability of the Service may vary by country or region. Verify your My Account account to see which Services are available.\r\n\r\n",
- "tag": "account_terms",
- "__index": 5,
- "dateCreated": "Tue, 24 Jul 2018 13:59:23 GMT"
- }
- ],
- "store": [
- {
- "id": "stone-island",
- "title": "Stone Island",
- "StoreIsOpen": "false",
- "ClosedStoreImages": [
- {
- "uri": "https://ltho.s3.amazonaws.com/fe9a4c24-eb7f-42be-9c36-d0ab5936bb13.png",
- "caption": ""
- },
- {
- "uri": "https://ltho.s3.amazonaws.com/52b447ec-8635-4182-ae39-25dca98afae1.png",
- "caption": ""
- }
- ],
- "__index": "0",
- "dateCreated": "Fri, 20 Nov 2015 00:45:03 GMT",
- "collection": "SS_'016 PREVIEW",
- "FitsLarge": "false",
- "BackgroundIsGray": "true",
- "CollectionId": "33064",
- "StoreStatus": "closed",
- "OpensOn": "Invalid Date"
- }
- ]
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/deeplink.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/deeplink.js
deleted file mode 100755
index 252a94c9..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/deeplink.js
+++ /dev/null
@@ -1,6 +0,0 @@
-function handleOpenURL (url) {
- console.log("DEEP LINKING DETECTED", url)
- url = url.replace("stoneisland:/", "")
- app.router && app.router.parseRoute( url )
- window.deepLinkRoute = url
-} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/geo.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/geo.js
deleted file mode 100755
index 22899141..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/geo.js
+++ /dev/null
@@ -1,71 +0,0 @@
-var geo = (function(){
- var geo = {}
-
- var polling = false, fetching = false, poll_timeout = null
-
- geo.fetch = function(){
- fetching = true
- navigator.geolocation.getCurrentPosition(geo.success, geo.error, {timeout: 15000})
- }
-
- geo.success = function(position){
- var lat_str = as_degrees( position.coords.latitude || 40.99167, "N", "S" )
- var lng_str = as_degrees( position.coords.longitude || -74.07944, "E", "W" )
- $(".latlng").html( lat_str + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + lng_str )
- geo.done()
- }
-
- geo.error = function(error){
- $(".latlng").html( "+40&deg; 58' 90.9\" N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;74&deg; 04' 46.3\" W" )
- geo.done()
- }
-
- geo.done = function(){
- fetching = false
- if (polling) {
- clearTimeout( poll_timeout )
- poll_timeout = setTimeout(geo.fetch, 15000)
- }
- }
-
- geo.start_polling = function(){
- polling = true
- if (! fetching) {
- geo.fetch()
- }
- }
-
- geo.stop_polling = function(){
- polling = false
- clearTimeout(poll_timeout)
- }
-
- function as_degrees (n, pos, neg) {
- var s = ""
- var sig = n >= 0 ? pos : neg
-
- n = Math.abs(n)
- s += Math.floor(n) + "&deg; "
-
- n %= 1
- n *= 60
- nn = Math.floor(n)
- if (nn < 10) nn = "0" + nn
- s += nn + "' "
-
- n %= 1
- n *= 60
- nn = Math.floor(n)
- if (nn < 10) nn = "0" + nn
- s += nn
-
- n %= 1
- n *= 10
- nn = Math.floor(n)
- s += "." + nn + '\" ' + sig
-
- return s
- }
-
- return geo
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js
deleted file mode 100755
index 74aaf7b5..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js
+++ /dev/null
@@ -1,154 +0,0 @@
-var push = (function(){
- var push = { settings: {}, disabled: false }
- var pushPlugin
- push.init = function(){
- if (! ('device' in window) || (device.platform || "").toLowerCase() !== "ios") {
- console.log("push disabled")
- push.disabled = true
- return
- }
-
- pushPlugin = PushNotification.init({
- ios: {
- alert: true,
- badge: true,
- sound: false,
- clearBadge: true,
- },
- })
-
- console.log("push init")
-
- PushNotification.hasPermission(push.did_initialize)
- pushPlugin.on('registration', push.got_registration)
- pushPlugin.on('notification', push.got_push_notification)
- }
- push.did_initialize = function(data) {
- // console.log(data)
- if (! data.isEnabled) {
- console.log("push did not initialize")
- return
- }
- console.log("push did initialize")
- var hub_status = localStorage.getItem("yoox.push_hub")
- var store_status = localStorage.getItem("yoox.push_store")
-
- push.settings.requested = localStorage.getItem("yoox.push_requested") == "true"
- push.settings.hub = hub_status == "true"
- push.settings.store = store_status == "true"
-
- if (push.settings.requested) {
- return
- }
- // not sure why we're also signing up for notifications here??
- if (! hub_status || hub_status == "true") {
- push.subscribe("hub")
- }
- if (! store_status || store_status == "true") {
- push.subscribe("store")
- }
- }
- push.got_registration = function(data){
- var registrationId = data.registrationId
- var oldRegistrationId = localStorage.getItem("yoox.registrationId")
- // console.log(registrationId, oldRegistrationId)
-
- if (registrationId !== oldRegistrationId || ! push.settings.requested) {
- localStorage.setItem("yoox.registrationId", registrationId)
- push.subscribe("hub", function(){
- push.subscribe("store")
- })
- }
- }
- push.subscribe = function(channel, cb){
- if (push.disabled) return
- push.settings[channel] = true
- localStorage.setItem("yoox.push_" + channel, "true")
- var data = {
- registrationId: localStorage.getItem("yoox.registrationId"),
- channel: channel,
- platform: device.platform,
- }
- pushPlugin.subscribe(channel, function(){
- console.log("subscribed to", channel)
- })
- $.ajax({
- method: "POST",
- url: push.url('add'),
- data: data,
- contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
- success: function(){
- console.log("subscribed to", channel)
- cb && cb()
- },
- error: push.error,
- })
- }
- push.unsubscribe = function(channel, cb){
- if (push.disabled) return
- push.settings[channel] = false
- localStorage.setItem("yoox.push_" + channel, "false")
- var data = {
- registrationId: localStorage.getItem("yoox.registrationId"),
- channel: channel,
- platform: device.platform,
- }
- $.ajax({
- method: "POST",
- url: push.url('remove'),
- data: data,
- contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
- success: function(){
- console.log("unsubscribed from", channel)
- cb && cb()
- },
- error: push.error,
- })
- }
- push.url = function(key){
- return sdk.cms() + '/_services/push/' + key
- }
- push.got_push_notification = function(push_obj) {
- // console.log('We received this push notification: ' + JSON.stringify(push_obj));
-
- app.blog.refresh()
-
- push_obj.additionalData = push_obj.additionalData || {}
-
- var is_hub = true
-
- try {
- is_hub = JSON.stringify(push_obj || {}).match(/hub/i)
- }
- catch (e) {
- }
-
- if (is_hub) {
- app.intro.$alert.show().html("[ HUB UPDATED ]")
- }
- else if (! push_obj.additionalData.url) {
- auth.clear_cart()
- app.intro.$alert.show().html("[ STORE UPDATED ]")
- }
-
- if (push_obj.additionalData.foreground === false) {
- // TODO: route the user to the uri in push_obj
- pushPlugin.finish(function(){}, function(){})
-
- if (push_obj.additionalData.url) {
- app.deepLinkRoute = push_obj.additionalData.url
- app.router.go(push_obj.additionalData.url)
- }
- }
- else if (is_hub) {
- app.router.go("hub")
- }
- else {
- app.router.go("intro")
- }
- }
- push.error = function(e){
- console.log("push error")
- }
- return push
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/scroll.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/scroll.js
deleted file mode 100644
index 253921e1..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/scroll.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// stub for native scroller when in voiceover mode
-function NativeScroll(el) {
- var Scroller = {
- x: 0,
- y: 0,
- $el: $(el),
- }
-
- Scroller.refresh = function(){}
- Scroller.on = function(){}
- Scroller.off = function(){}
-
- Scroller.scrollTo = function(x, y) {
- Scroller.$el.scrollTop(y)
- }
- Scroller.scrollToElement = function(selector) {
- var y = $(selector).offset().top
- Scroller.$el.scrollTop(y)
- }
-
- return Scroller
-}
-
-function ScrollFactory (el, opt) {
- if (accessibility.voiceOver) {
- return NativeScroll(el)
- }
- return new IScroll(el, opt)
-}
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/sim.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/sim.js
deleted file mode 100644
index 65be02b0..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/etc/sim.js
+++ /dev/null
@@ -1,49 +0,0 @@
-var sim = (function(){
- var sim = {}
-
- sim.loaded = false
- sim.data = {
- carrierName: 'unknown',
- countryCode: 'us',
- mcc: '0',
- mnc: '0',
- }
-
- sim.fetch = function(cb){
- console.log('fetching sim data')
- sim.afterFetch = cb
- window.plugins.sim.getSimInfo(sim.success, sim.error)
- }
-
- sim.afterFetch = function(){}
-
- sim.success = function(data){
- console.log(data)
- if (sim.data.countryCode) {
- sim.data = data
- sim.data.countryCode = sim.data.countryCode.toLowerCase()
- // app is only available in US or Canada, so call the US API regardless
- if (sim.data.countryCode !== 'ca') {
- sim.data.countryCode = 'us'
- }
- }
- sim.loaded = true
- sim.afterFetch()
- }
-
- sim.error = function(){
- console.log("no SIM card detected")
- $.ajax({
- url: "http://ip-api.com/json/",
- jsonp: "callback",
- dataType: "jsonp",
- success: sim.success,
- error: function(){
- sim.loaded = true
- sim.afterFetch()
- }
- })
- }
-
- return sim
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/AddressView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/AddressView.js
deleted file mode 100755
index fd0fa59d..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/AddressView.js
+++ /dev/null
@@ -1,303 +0,0 @@
-
-var AddressViewID = Math.round(Date.now() % 1000)
-
-var AddressView = SerializableView.extend({
-
- template: $("#address_template").html(),
-
- disabled: false,
-
- events: {
- "change [name=Province]": 'update_country',
- "focus [name]": 'scroll_up_to_phone',
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.checkPhone = 'checkPhone' in opt ? opt.checkPhone : true
- this.setElement( this.parent.$(".address") )
- this.$el.html(this.template.replace(/{{_id}}/g, AddressViewID++))
- },
-
- populate: function(data){
- // console.log( this.$('[name=Province]') )
- this.data = data
- var address = data.Address.split("\n")
- data.Address1 = address[0]
- data.Address2 = address[1]
- this.$(".address input").val("")
- this.load_data(data)
- this.update_country()
- },
-
- validate_presence: {
- "Name": "Please enter your first name.",
- "Surname": "Please enter your last name.",
- "Address1": "Please enter your street address.",
- "City": "Please enter your city.",
- "ZipCode": "Please enter your zip code.",
- "Phone": "Please enter your phone number.",
- },
-
- validate_fields: function(data, errors){
- if (this.disabled) { return }
- if (this.checkPhone) {
- var phone_number = data.Phone ? String(data.Phone).replace(/[^0-9]/g, "").replace(/^[01]+/, '') : ""
- data.Phone = phone_number
- this.$('[name=Phone]').val(phone_number)
- var phone_length = phone_number.length
- if (phone_length === 0 || ! data.Phone) {
- errors.push([ "Phone", "Please enter your phone number." ])
- }
- else if (phone_length < 10) {
- errors.push([ "Phone", "Please enter a valid 10 digit US/Canada phone number." ])
- }
- else if (phone_length > 10) {
- errors.push([ "Phone", "International phone numbers are not accepted." ])
- }
- else if (phone_number.charAt(0) === '+') {
- errors.push([ "Phone", "Please enter a valid 10 digit US/Canada phone number. International phone numbers are not accepted." ])
- }
- else if (phone_number.charAt(0) === '1') {
- errors.push([ "Phone", "Please enter a valid 10 digit US/Canada phone number. International phone numbers are not accepted." ])
- }
- }
- if (! data.Province || data.Province == "NONE") {
- errors.push([ "Province", "Please choose your state." ])
- }
- if (data.ZipCode && data.ZipCode.length < 5) {
- errors.push([ "ZipCode", "Please enter a valid zip code." ])
- }
- data.Address = data.Address1 + "\n" + data.Address2
- data.UserId = auth.user_id
- delete data.Address1
- delete data.Address2
- },
-
- update_country: function(){
- var state = this.$("[name=Province]").val()
- console.log(state)
- if (CANADIAN_LOOKUP[state]) {
- this.$(".country-label").html("CANADA")
- }
- else {
- this.$(".country-label").html("UNITED STATES")
- }
- },
-
- scroll_up_to_phone: function(e){
- var position = $(e.currentTarget).prev('label').position()
- if (app.view.scroller && position) {
- app.view.scroller.scrollTo(0, -position.top)
- }
- },
-
-})
-
-var CANADIAN_PROVINCES = "AB BC MB NB NL NS NT NU ON PE SK QC YT".split(" ")
-var CANADIAN_LOOKUP = {}
-CANADIAN_PROVINCES.forEach(function(k){ CANADIAN_LOOKUP[k] = true })
-
-var COUNTRIES = [
- ['Country Name', 'NONE'],
- ['United States', 'US'],
- ['Abkhazia', 'GE'],
- ['Afghanistan', 'AF'],
- ['Albania', 'AL'],
- ['Algeria', 'DZ'],
- ['Andorra', 'AD'],
- ['Angola', 'AO'],
- ['Antigua and Barbuda', 'AG'],
- ['Argentina', 'AR'],
- ['Armenia', 'AM'],
- ['Australia', 'AU'],
- ['Austria', 'AT'],
- ['Azerbaijan', 'AZ'],
- ['Bahamas', 'BS'],
- ['Bahrain', 'BH'],
- ['Bangladesh', 'BD'],
- ['Barbados', 'BB'],
- ['Belarus', 'BY'],
- ['Belgium', 'BE'],
- ['Belize', 'BZ'],
- ['Benin', 'BJ'],
- ['Bhutan', 'BT'],
- ['Bolivia', 'BO'],
- ['Bosnia and Herzegovina', 'BA'],
- ['Botswana', 'BW'],
- ['Brazil', 'BR'],
- ['Brunei', 'BN'],
- ['Bulgaria', 'BG'],
- ['Burkina Faso', 'BF'],
- ['Burundi', 'BI'],
- ['Cambodia', 'KH'],
- ['Cameroon', 'CM'],
- ['Canada', 'CA'],
- ['Cape Verde', 'CV'],
- ['Central African Republic', 'CF'],
- ['Chad', 'TD'],
- ['Chile', 'CL'],
- ['China', 'CN'],
- ['Colombia', 'CO'],
- ['Comoros', 'KM'],
- ['Congo', 'CD'],
- ['Congo-Brazzaville', 'CG'],
- ['Costa Rica', 'CR'],
- ['Cote d\'Ivoire (Ivory Coast)', 'CI'],
- ['Croatia', 'HR'],
- ['Cuba', 'CU'],
- ['Cyprus', 'CY'],
- ['Czech Republic', 'CZ'],
- ['Denmark', 'DK'],
- ['Djibouti', 'DJ'],
- ['Dominica', 'DM'],
- ['Dominican Republic', 'DO'],
- ['Ecuador', 'EC'],
- ['Egypt', 'EG'],
- ['El Salvador', 'SV'],
- ['Equatorial Guinea', 'GQ'],
- ['Eritrea', 'ER'],
- ['Estonia', 'EE'],
- ['Ethiopia', 'ET'],
- ['Fiji', 'FJ'],
- ['Finland', 'FI'],
- ['France', 'FR'],
- ['Gabon', 'GA'],
- ['Gambia', '220'],
- ['Georgia', 'GE'],
- ['Germany', 'DE'],
- ['Ghana', 'GH'],
- ['Greece', 'GR'],
- ['Grenada', 'GD'],
- ['Guatemala', 'GT'],
- ['Guinea', 'GN'],
- ['Guinea-Bissau', 'GW'],
- ['Guyana', 'GY'],
- ['Haiti', 'HT'],
- ['Honduras', 'HN'],
- ['Hungary', 'HU'],
- ['Iceland', 'IS'],
- ['India', 'IN'],
- ['Indonesia', 'ID'],
- ['Iran', 'IR'],
- ['Iraq', 'IQ'],
- ['Ireland', 'IE'],
- ['Israel', 'IL'],
- ['Italy', 'IT'],
- ['Jamaica', 'JM'],
- ['Japan', 'JP'],
- ['Jordan', 'JO'],
- ['Kazakhstan', 'KZ'],
- ['Kenya', 'KE'],
- ['Kiribati', 'KI'],
- ['Kuwait', 'KW'],
- ['Kyrgyzstan', 'KG'],
- ['Laos', 'LA'],
- ['Latvia', 'LV'],
- ['Lebanon', 'LB'],
- ['Lesotho', 'LS'],
- ['Liberia', 'LR'],
- ['Libya', 'LY'],
- ['Liechtenstein', 'LI'],
- ['Lithuania', 'LT'],
- ['Luxembourg', 'LU'],
- ['Macedonia', 'MK'],
- ['Madagascar', 'MG'],
- ['Malawi', 'MW'],
- ['Malaysia', 'MY'],
- ['Maldives', 'MV'],
- ['Mali', 'ML'],
- ['Malta', 'MT'],
- ['Marshall Islands', 'MH'],
- ['Mauritania', 'MR'],
- ['Mauritius', 'MU'],
- ['Mexico', 'MX'],
- ['Micronesia', 'FM'],
- ['Moldova', 'MD'],
- ['Monaco', 'MC'],
- ['Mongolia', 'MN'],
- ['Montenegro', 'ME'],
- ['Morocco', 'MA'],
- ['Mozambique', 'MZ'],
- ['Myanmar', 'MM'],
- ['Nagorno-Karabakh', 'AZ'],
- ['Namibia', 'NA'],
- ['Nauru', 'NR'],
- ['Nepal', 'NP'],
- ['Netherlands', 'NL'],
- ['New Zealand', 'NZ'],
- ['Nicaragua', 'NI'],
- ['Niger', 'NE'],
- ['Nigeria', 'NG'],
- ['North Korea', 'KP'],
- ['Northern Cyprus', 'CY'],
- ['Norway', 'NO'],
- ['Oman', 'OM'],
- ['Pakistan', 'PK'],
- ['Palau', 'PW'],
- ['Panama', 'PA'],
- ['Papua New Guinea', 'PG'],
- ['Paraguay', 'PY'],
- ['Peru', 'PE'],
- ['Philippines', 'PH'],
- ['Poland', 'PL'],
- ['Portugal', 'PT'],
- ['Qatar', 'QA'],
- ['Romania', 'RO'],
- ['Russia', 'RU'],
- ['Rwanda', 'RW'],
- ['Saint Kitts and Nevis', 'KN'],
- ['Saint Lucia', 'LC'],
- ['Saint Vincent and the Grenadines', 'VC'],
- ['Samoa', 'WS'],
- ['San Marino', 'SM'],
- ['Sao Tome and Principe', 'ST'],
- ['Saudi Arabia', 'SA'],
- ['Senegal', 'SN'],
- ['Serbia', 'RS'],
- ['Seychelles', 'SC'],
- ['Sierra Leone', 'SL'],
- ['Singapore', 'SG'],
- ['Slovakia', 'SK'],
- ['Slovenia', 'SI'],
- ['Solomon Islands', 'SB'],
- ['Somalia', 'SO'],
- ['Somaliland', 'SO'],
- ['South Africa', 'Rand'],
- ['South Korea', 'KR'],
- ['South Ossetia', 'GE'],
- ['Spain', 'ES'],
- ['Sri Lanka', 'LK'],
- ['Sudan', 'SD'],
- ['Suriname', 'SR'],
- ['Swaziland', 'SZ'],
- ['Sweden', 'SE'],
- ['Switzerland', 'CH'],
- ['Syria', 'SY'],
- ['Taiwan', 'TW'],
- ['Tajikistan', 'TJ'],
- ['Tanzania', 'TZ'],
- ['Thailand', 'TH'],
- ['Timor-Leste', 'TL'],
- ['Togo', 'TG'],
- ['Tonga', 'TO'],
- ['Transnistria', 'MD'],
- ['Trinidad and Tobago', 'TT'],
- ['Tunisia', 'TN'],
- ['Turkey', 'TR'],
- ['Turkmenistan', 'TM'],
- ['Tuvalu', 'TV'],
- ['Uganda', 'UG'],
- ['Ukraine', 'UA'],
- ['United Arab Emirates', 'AE'],
- ['United Kingdom', 'GB'],
- ['Uruguay', 'UY'],
- ['Uzbekistan', 'UZ'],
- ['Vanuatu', 'VU'],
- ['Vatican City', 'VA'],
- ['Venezuela', 'VE'],
- ['Vietnam', 'VN'],
- ['Yemen', 'YE'],
- ['Zambia', 'ZM'],
- ['Zimbabwe', 'ZW'],
-]
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/CreditCardView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/CreditCardView.js
deleted file mode 100755
index af53d964..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/CreditCardView.js
+++ /dev/null
@@ -1,63 +0,0 @@
-
-var CreditCardViewID = Math.round(Date.now() % 1000)
-
-var CreditCardView = SerializableView.extend({
-
- template: $("#creditcard_template").html(),
-
- cardOptions: {
- accept: ['visa', 'mastercard', 'amex', 'jcb'],
- },
-
- events: {
- },
-
- initialize: function(opt){
- this.parent = opt.parent
- this.setElement( this.parent.$(".cc") )
- this.$el.html(this.template.replace(/{{_id}}/g, CreditCardViewID++))
-
- this.$number = this.$("[name=Number]")
- this.$number.validateCreditCard(this.updateCard.bind(this), this.cardOptions)
- },
-
- populate: function(data){
- this.data = data
- data.Number = "XXXX XXXX XXXX " + data.Number
- this.$number.attr("type", "text")
- this.parent.$(".cc input").val("")
- this.$(".cc input").val("")
- this.load_data(data)
- },
-
- updateCard: function(card){
- // console.log(card)
- // card.card_type.name
- // card.card_type.valid
- },
-
- validate_presence: {
- 'Number': 'Please enter your credit card number.',
- 'Cvv': 'Please enter your security code.',
- },
-
- validate_fields: function(data, errors){
- if (this.disabled) { return }
- var card = this.$number.validateCreditCard(this.cardOptions)
- if (! card.valid) { errors.push([ "Number", "Your card number is invalid." ]) }
- if (! data.ExpirationMonth || data.ExpirationMonth == "NONE") { errors.push([ "ExpirationMonth", "Please enter the expiration month." ]) }
- if (! data.ExpirationYear || data.ExpirationYear == "NONE") { errors.push([ "ExpirationYear", "Please select the expiration month." ]) }
- data.UserId = auth.user_id
- if (card.valid) {
- data.Type = YOOX_CREDIT_CARD_NAME_LOOKUP[ card.card_type.name ]
- }
- },
-
-})
-
-var YOOX_CREDIT_CARD_NAME_LOOKUP = {
- "visa": "Visa",
- "mastercard": "Mastercard",
- "amex": "AmericanExpress",
- "jcb": "JCB",
-}
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/CurtainView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/CurtainView.js
deleted file mode 100755
index d444fd60..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/CurtainView.js
+++ /dev/null
@@ -1,39 +0,0 @@
-var CurtainView = View.extend({
-
- el: "#curtain",
-
- events: {
- "click": "click",
- },
-
- initialize: function(){
- },
-
- klass: null,
- show: function(klass){
- this.$el.addClass("visible")
- if (klass) {
- this.klass = klass
- this.$el.addClass(klass)
- }
- },
-
- hide: function(k){
- this.$el.removeClass("visible")
- if (this.klass) {
- setTimeout( function(){
- this.$el.removeClass(this.klass)
- }.bind(this), 200 )
- }
- },
-
- click: function(){
- if (document.body.classList.contains("nav")) {
- app.nav.hide()
- }
- if (app.selector.visible) {
- app.selector.hide()
- }
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/FooterView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/FooterView.js
deleted file mode 100755
index 855c37bd..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/FooterView.js
+++ /dev/null
@@ -1,43 +0,0 @@
-var FooterView = View.extend({
-
- el: "#footer",
-
- events: {
- "click .ok": "ok",
- "click .cancel": "cancel",
- },
-
- initialize: function(){
- this.$ok = this.$(".ok")
- this.$cancel = this.$(".cancel")
- this.hide()
- },
-
- show: function(ok, cancel){
- if (cancel) {
- this.$ok.removeClass("wide")
- this.$cancel.show().html(cancel)
- this.$cancel.attr('aria-label', cancel.toLowerCase())
- }
- else {
- this.$ok.addClass("wide")
- this.$cancel.hide()
- }
- this.$ok.html(ok)
- this.$ok.attr('aria-label', ok.toLowerCase())
- this.$el.show()
- },
-
- hide: function(){
- this.$el.hide()
- },
-
- ok: function(){
- (app.view.save || app.view.ok).bind(app.view)()
- },
-
- cancel: function(){
- app.view.cancel ? app.view.cancel() : app.intro.show()
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/HeaderView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/HeaderView.js
deleted file mode 100755
index 0961a5e8..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/HeaderView.js
+++ /dev/null
@@ -1,57 +0,0 @@
-var HeaderView = View.extend({
-
- el: "#header",
-
- events: {
- "click .burger": "nav",
- "click .logo": "logo",
- "click .cart_rapper": "cart",
- },
-
- initialize: function(){
- this.$burger = this.$(".burger")
- this.$cart = this.$(".cart")
- this.$cart_count = this.$(".cart_count")
- },
-
- back_state: false,
- set_back: function(state){
- this.back_state = state
- if (state) {
- this.$burger[0].className = "burger ion-ios-arrow-left"
- }
- else {
- this.$burger[0].className = "burger ion-android-menu"
- }
- },
-
- nav: function(){
- if (this.back_state) {
- app.view.back()
- }
- else {
- app.nav.show()
- }
- },
-
- logo: function(){
- app.router.go("intro")
- },
-
- cart: function(){
- app.router.go("cart")
- },
-
- count: 0,
- set_cart_count: function(n){
- this.count = n
- this.$cart_count.html(n || "0")
- },
- increment_cart_count: function(){
- this.$cart_count.html( ++this.count )
- },
- decrement_cart_count: function(){
- this.$cart_count.html( --this.count )
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/IntroView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/IntroView.js
deleted file mode 100755
index c075619a..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/IntroView.js
+++ /dev/null
@@ -1,64 +0,0 @@
-var IntroView = View.extend({
-
- el: "#intro",
-
- events: {
- "click .store": "store",
- "click .hub": "hub",
- "click .story": "story",
- "click .archive": "archive",
- },
-
- initialize: function(){
- this.$alert = this.$(".alert")
- this.compass = this.$("#compass").get(0)
- this.orient = this.deviceorientation.bind(this)
- this.$alert.hide()
- },
-
- show: function(){
- document.body.className = "intro"
- window.addEventListener("deviceorientation", this.orient)
- app.footer.hide()
- this.orient({ alpha: 0 })
- },
-
- hide: function(){
- window.removeEventListener("deviceorientation", this.orient)
- this.$alert.hide()
- },
-
- deviceorientation: function(e){
- var heading
- if ('webkitCompassHeading' in e) {
- heading = e.webkitCompassHeading || 0
- }
- else {
- heading = e.alpha || 0
- }
- heading = - heading
- this.compass.style[transformProp] = "translateZ(0) translateX(-50%) translateY(-50%) rotate(" + heading + "deg)"
- },
-
- store: function(e){
- e.preventDefault()
- e.stopPropagation()
- app.router.go("store")
- },
- hub: function(e){
- e.preventDefault()
- e.stopPropagation()
- app.router.go("hub")
- },
- story: function(e){
- e.preventDefault()
- e.stopPropagation()
- app.router.go("story")
- },
- archive: function(e){
- e.preventDefault()
- e.stopPropagation()
- app.router.go("archive")
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/NavView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/NavView.js
deleted file mode 100755
index a9a1938e..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/NavView.js
+++ /dev/null
@@ -1,182 +0,0 @@
-var NavView = View.extend({
-
- el: "#nav",
-
- events: {
- "click .logo": "intro",
-
- "click .store": "store",
- "click .hub": "hub",
- "click .story": "story",
- "click .archive": "archive",
-
- "click .login": "login",
- "click .logout": "logout",
- "click .account": "account",
- "click .faq": "faq",
- "click .search": "search",
-
- "click .main": "back",
- "click .account_back": "back",
- "click .profile": "profile",
- "click .payment": "payment",
- "click .shipping": "shipping",
- "click .settings": "settings",
- "click .orders": "orders",
- "click .return_link_us": "return_link_us",
- "click .return_link_ca": "return_link_ca",
-
- "click .faq_back": "back",
- "click .privacy": "privacy",
- "click .account_terms": "account_terms",
- "click .returns": "returns",
- "click .terms": "terms",
- "click .care": "care",
-
- "click .fb": "fb",
- "click .insta": "insta",
- "click .tw": "tw",
- "click .yt": "yt",
-
- "click .close": "close",
- },
-
- initialize: function(){
- },
-
- show: function(klass){
- $("body").addClass("nav")
- app.curtain.show("dark")
- doneShowingNav = false
- setTimeout(function(){
- doneShowingNav = true
- }, 800)
- if (klass) {
- setTimeout(function(){
- this.addClass(klass)
- }.bind(this), 500)
- }
- },
-
- hide: function(){
- if (!doneShowingNav) return
- $("body").removeClass("nav")
- app.curtain.hide("dark")
- },
-
- intro: function(){
- this.hide()
- app.router.go("intro")
- },
- store: function(){
- this.hide()
- app.router.go("store")
- },
- hub: function(){
- this.hide()
- app.router.go("hub")
- },
- story: function(){
- this.hide()
- app.router.go("story")
- },
- archive: function(){
- this.hide()
- app.router.go("archive")
- },
-
- login: function(){
- this.hide()
- auth.last_view = app.view
- app.router.go("account/login")
- },
- logout: function(){
- this.hide()
- auth.last_view = app.view
- app.router.go("account/logout")
- },
- account: function(){
- this.el.className = "account"
- },
-
- back: function(){
- this.el.className = ""
- },
-
- profile: function(){
- this.hide()
- app.router.go("account/profile")
- },
- payment: function(){
- this.hide()
- app.router.go("account/payment")
- },
- shipping: function(){
- this.hide()
- app.router.go("account/shipping")
- },
- orders: function(){
- this.hide()
- app.router.go("account/orders")
- },
- settings: function(){
- this.hide()
- app.router.go("account/settings")
- },
- return_link_us: function(){
- window.open("https://www.stoneisland.com/us/ProductExchange/SearchOrder/Index?utm_source=AppMobile&utm_medium=referral&utm_campaign=ReturnForm", '_system')
- },
- return_link_ca: function(){
- window.open("https://www.stoneisland.com/ca/ProductExchange/SearchOrder/Index?utm_source=AppMobile&utm_medium=referral&utm_campaign=ReturnForm", '_system')
- },
-
-
- faq: function(){
- this.el.className = "faq"
- },
- privacy: function(){
- this.hide()
- app.router.go("page/privacy")
- },
- account_terms: function(){
- this.hide()
- app.router.go("page/account_terms")
- },
- returns: function(){
- this.hide()
- app.router.go("page/returns")
- },
- terms: function(){
- this.hide()
- app.router.go("page/terms")
- },
- care: function(e){
- e.preventDefault()
- window.open("https://www.stoneisland.com/customercare?utm_source=AppMobile&utm_medium=referral&utm_campaign=CustomerCare", '_system')
- },
-
-
- search: function(){
- this.hide()
- app.router.go("search")
- },
-
-
- fb: function(){
- window.open("https://www.facebook.com/StoneIsland", '_system')
- },
- insta: function(){
- window.open("https://instagram.com/stoneisland_official", '_system')
- },
- tw: function(){
- window.open("https://twitter.com/stoneisland", '_system')
- },
- yt: function(){
- window.open("https://www.youtube.com/user/StoneIslandOfficial", '_system')
- },
-
- close: function(){
- this.hide()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/nav/SearchView.js b/StoneIsland/platforms/android/assets/www/js/lib/nav/SearchView.js
deleted file mode 100755
index b477d72f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/nav/SearchView.js
+++ /dev/null
@@ -1,16 +0,0 @@
-var SearchView = View.extend({
-
- el: "#search",
-
- events: {
- },
-
- show: function(){
- app.footer.show("SEARCH")
- document.body.className = "search"
- },
-
- save: function(){
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/ClosedStoreView.js b/StoneIsland/platforms/android/assets/www/js/lib/products/ClosedStoreView.js
deleted file mode 100755
index 97b46006..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/ClosedStoreView.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var ClosedStoreView = View.extend({
-
- el: "#closed",
-
- storeIsClosed: false,
-
- events: {
- "click .website_link": "website_link",
- },
-
- delay: 8000,
-
- timeout: -1,
- images: null,
- images_loaded: {},
-
- initialize: function(){
- this.loader = new Loader ()
- },
-
- show: function(){
- this.setMessage(app.closed.storeClosedMessageOne, app.closed.storeClosedMessageTwo)
- this.showElement()
- },
-
- showElement: function(){
- document.body.className = "closed"
- this.animate()
- app.footer.hide()
- },
-
- setMessage: function(msg_one, msg_two){
- $(".closed_store_msg h3").html(msg_one || "THIS STORE IS CURRENTLY CLOSED")
- if (app.closed.storeClosedMessageTwo) {
- $(".closed_store_msg h4").show().html(msg_two)
- }
- else {
- $(".closed_store_msg h4").hide()
- }
- },
-
- hide: function(){
- clearTimeout(this.timeout)
- },
-
- animate: function(){
- this.timeout = setTimeout(this.animate.bind(this), this.delay)
- this.next()
- },
-
- next: function(){
- if (! this.images) return
- var url = choice(this.images)
-
- if (this.images_loaded[url]) {
- this.el.style.backgroundImage = 'url(' + url + ')'
- }
- else {
- this.loader.preloadImage(url, function(img){
- this.el.style.backgroundImage = 'url(' + url + ')'
- this.images_loaded[url] = true
- }.bind(this))
- }
- },
-
- populate: function(data){
- this.images = data.map(function(img){ return img.uri })
- this.next()
- },
-
- website_link: function(){
- window.open("http://www.stoneisland.com/", '_system')
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/CollectionView.js b/StoneIsland/platforms/android/assets/www/js/lib/products/CollectionView.js
deleted file mode 100755
index d3343652..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/CollectionView.js
+++ /dev/null
@@ -1,254 +0,0 @@
-
-var CollectionView = ScrollableView.extend({
-
- el: "#collection",
- template: $("#collection .template").html(),
- loaded: false,
- data: null,
- filtered_items: null,
- items: {},
-
- events: {
- "touchstart .item": "touchstart",
- "touchmove .item": "touchmove",
- "touchend .item": "touchend",
- "mousedown .item": "touchstart",
- "mousemove .item": "touchmove",
- "mouseup .item": "touchend",
- "touchstart h1": "showDepartmentSelector",
- },
-
- initialize: function(){
- this.$title = this.$("h1")
- this.$content = this.$(".content")
- this.$loader = this.$(".loader")
- this.scroller = ScrollFactory('#collection', app.iscroll_options)
- this.departmentFilterView = new DepartmentFilter ({ parent: this })
- this.sizeFilterView = new SizeFilter ({ parent: this })
- },
-
- show: function(){
- if (! navigator.onLine) {
- app.closed.showElement()
- app.closed.setMessage("PLEASE GO ONLINE TO BROWSE<br>THE STONE ISLAND STORE.", "")
- return
- }
- if (sdk.env !== "test" && app.closed.storeIsClosed) {
- return app.closed.show()
- }
-
-// if (sdk.env === 'test' && this.data.SearchResponseFull.Results.Items.length < 4) {
-// var items = this.data.SearchResponseFull.Results.Items
-// items = items.concat(items).concat(items).concat(items)
-// items = items.concat(items).concat(items).concat(items)
-// this.data.SearchResponseFull.Results.Items = items
-// }
-
- if (this.data && this.data.SearchResponseFull.Results.Items.length < 4) {
- app.footer.hide()
- }
- if (app.store.FilterBy !== "none") {
- if (app.store.FilterBy === "category") {
- app.footer.show("FILTER")
- }
- else {
- app.footer.show("FILTER BY " + app.store.FilterBy.toUpperCase())
- }
- }
- document.body.className = "collection"
- if (this.loaded) {
- console.log("collection this loaded")
- return this.populate(this.data)
- }
- else {
- this.fetch()
- }
- },
-
- // called when footer is tapped - filter by (x)
- save: function(){
- switch (app.store.FilterBy) {
- case 'none':
- this.departmentFilterView.filter()
- break
- case 'size':
- this.sizeFilterView.filter()
- break
- }
- },
-
- fetch: function(){
- console.log("collection fetch")
- if (this.loaded) {
- console.log("collection loaded")
- return
- }
- this.$loader.show()
- console.log("fetching", app.department_id)
- sdk.product.collection({
- department_id: app.department_id,
- success: this.populate.bind(this)
- })
- },
-
- refresh: function(){
- this.loaded = false
- this.fetch()
- },
-
- populate: function(data){
- if (this.loaded && ! data) {
- console.log("populate 1")
- data = this.data
- }
- else {
- console.log("populate 2")
- this.data = data
- this.loaded = false
- // console.log(data)
- }
- console.log(">>>>>>>> YES ")
- if (! this.loaded) {
- console.log("populate 3", data.SearchResponseFull.Results.Items.length)
- this.loaded = true
- this.$loader.hide()
- this.$content.empty()
- // DefaultCode10
-// data.SearchResponseFull.Results.Items.length = 1
- var is_single_product = (data.SearchResponseFull.Results.Items.length < 4)
- this.$el.toggleClass("single", is_single_product)
-
- if (is_single_product) {
- console.log("IS SINGLE PRODUCT")
- var item = data.SearchResponseFull.Results.Items[0]
- // console.log(data.SearchResponseFull.Results)
- if (item) {
- var url = sdk.image(item['DefaultCode10'], '13_f')
- console.log(url)
- var img = new Image ()
- img.src = url
- }
- else {
- console.log("no products at all!")
- }
- }
-
-// if (data.SearchResponseFull.Results.Items.length == 1) {
-// app.footer.hide()
-// }
-// else {
-// app.footer.show("FILTER")
-// }
-
- console.log( data.SearchResponseFull.Results.Items.length )
-
- var items = this.filtered_items || data.SearchResponseFull.Results.Items
- if (app.store.GroupBy === 'size') {
- this.groupBySize( items, is_single_product )
- }
- else {
- this.appendItems( items, is_single_product )
- }
- // this.restoreScroll()
- // this.deferScrollToTop()
- }
- this.afterFetchCallback && this.afterFetchCallback()
- this.deferRefresh()
- this.restoreScroll()
- },
-
- groupBySize: function(items, is_single_product){
- var groups = {}
- items.forEach(function(item){
- if (! item.Sizes.length) return
- var size = item.Sizes[0]
- var id = size['Text']
- if ( ! (id in groups) ) {
- groups[id] = {
- label: SIZE_LOOKUP[ id ],
- items: [],
- }
- }
- groups[id].items.push( item )
- }.bind(this))
-
- Object.keys(groups).sort(function(a,b){
- var ao = SIZE_ORDER.indexOf( a )
- var bo = SIZE_ORDER.indexOf( b )
- return ao - bo
- }).forEach(function(id){
- var size = groups[id]
- var $el = $("<div>")
- $el.addClass("product-group")
- $el.html( size.label )
- this.$content.append($el)
- this.appendItems( size.items, is_single_product )
- }.bind(this))
- },
-
- appendItems: function(items, is_single_product){
- items.forEach(function(item){
- this.append(item, is_single_product)
- }.bind(this))
- },
-
- append: function(item, is_single_product){
- this.items[ item['Code8'] ] = item
- var t = this.template.replace(/{{image}}/, sdk.image(item['DefaultCode10'], is_single_product ? '13_f' : '11_f'))
- .replace(/{{code8}}/, item['Code8'])
- .replace(/{{title}}/, stonewash(item['ModelNames']))
- var $t = $(t)
- if (app.store.ShowProductNameOnCollectionPage) {
- var $title = $("<span>")
- $title.addClass("product-title")
- $title.html( item['ModelNames'] )
- $t.append($title)
- }
- this.$content.append($t)
- },
-
- pick: function(e){
- var code = $(e.currentTarget).data("code")
- var data = this.items[code]
- this.saveScroll()
- app.product.load(code, data)
- },
-
- collectionName: "STONE ISLAND",
- setCollectionName: function(name){
- this.collectionName = name
- this.$title.html(this.collectionName)
- this.$title.attr('aria-label', stonewash(this.collectionName))
- },
-
- // filter by department
- showDepartmentSelector: function(){
- if (this.$("h1").hasClass("single-dept")) {
- this.departmentFilterView.filter()
- }
- },
-
- firstTouch: { x: 0, y: 0, id: "" },
- lastTouch: { x: 0, y: 0, id: "" },
- touchstart: function(e){
- var p = e.originalEvent.touches ? e.originalEvent.touches[0] : e.originalEvent
- this.firstTouch.x = this.lastTouch.x = p.pageX
- this.firstTouch.y = this.lastTouch.y = p.pageY
- this.firstTouch.id = e.currentTarget.dataset.id
- },
- touchmove: function(e){
- var p = e.originalEvent.touches ? e.originalEvent.touches[0] : e.originalEvent
- this.lastTouch.x = p.pageX
- this.lastTouch.y = p.pageY
- this.lastTouch.id = e.currentTarget.dataset.id
- },
- touchend: function(e){
- var first = app.collection.firstTouch
- var last = app.collection.lastTouch
- var distance = Math.sqrt( Math.pow(first.x - last.x, 2) + Math.pow(first.y - last.y, 2) )
- if (distance < 20) {
- this.pick(e)
- }
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/GalleryView.js b/StoneIsland/platforms/android/assets/www/js/lib/products/GalleryView.js
deleted file mode 100755
index e84caa68..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/GalleryView.js
+++ /dev/null
@@ -1,109 +0,0 @@
-var GalleryView = View.extend({
-
- el: "#gallery",
- template: $("#gallery .template").html(),
-
- events: {
-// "click .left": "prev",
-// "click .right": "next",
-// "touchstart .gallery": "touchstart",
-// "touchmove .gallery": "touchmove",
-// "touchend .gallery": "touchend",
- },
-
- initialize: function(){
- this.$(".template").remove()
- },
-
- reset: function(){
- this.gallery && this.gallery.destroy()
- this.$el.empty()
- },
-
- populate: function(code, image_ids){
- var valid_styles = {}
- var large_styles = {}
- image_ids.forEach(function(id){
- if (id.indexOf("_") == -1) return
- var partz = id.split("_")
- var size = parseInt(partz[0]), style = partz[1]
-
- if (! large_styles[style] || large_styles[style] < size) {
- large_styles[style] = size
- }
- if (size > 13) return;
- if (! valid_styles[style] || valid_styles[style] < size) {
- valid_styles[style] = size
- }
- })
-
- Object.keys(valid_styles).sort(sort_image_styles).forEach(function(style){
- var id = valid_styles[style] + "_" + style
- var t = this.template
- .replace(/{{image}}/, sdk.image(code, id))
- .replace(/{{alt}}/, YOOX_IMAGE_STYLE_LABELS[style] || "Alternate view")
- this.$el.append(t)
- }.bind(this))
-
- var gallery = this.gallery = new Flickity( "#gallery", {
- selector: '.item',
- cellAlign: 'center',
- autoPlay: false,
- freeScroll: false,
- wrapAround: true,
- imagesLoaded: true,
- prevNextButtons: false,
- pageDots: false,
- contain: true,
- draggable: true,
- })
-
- this.gallery.on('change', function(){
- var currentImage = this.gallery.selectedElement.style.backgroundImage.replace(/url\(\"?/,"").replace(/\"?\)/,"")
- var partz = currentImage.split("_")
- var head = partz[0]
- var size = partz[1]
- var tail = partz[2]
- var end_partz = tail.split(/\./)
- var style = end_partz[0]
- var label = YOOX_IMAGE_STYLE_LABELS[style] || "Image: Alternate view"
- $("#product .gallery-target").attr('aria-label', label)
- })
-
- this.gallery.on('staticClick', this.static_click.bind(this))
-
- if (accessibility.voiceOver) {
- $("#product .gallery-target").click(this.static_click.bind(this))
- $("#product .gallery-target").attr('aria-label', "Image: Front view")
- } else {
- $("#product .gallery-target").remove()
- }
- },
- static_click: function(e){
- var currentImage = this.gallery.selectedElement.style.backgroundImage.replace(/url\(\"?/,"").replace(/\"?\)/,"")
- var partz = currentImage.split("_")
- var head = partz[0]
- var size = partz[1]
- var tail = partz[2]
- var end_partz = tail.split(/\./)
- var style = end_partz[0]
- var largest_size = large_styles[style]
- var hiresImage = [head, largest_size, tail].join("_")
- app.fullscreenViewer.show(currentImage, hiresImage)
- },
-
- touchstart: function(e){
- },
- touchmove: function(e){
- },
- touchend: function(e){
- },
-
-})
-
-var YOOX_IMAGE_STYLE_ORDER = "ZZZ f r d e a b c g l".split(" ")
-var YOOX_IMAGE_STYLE_LABELS = {
- f: 'Image: Front view',
- r: 'Image: Rear view',
-}
-function sort_image_styles (b,a){ return (YOOX_IMAGE_STYLE_ORDER.indexOf(b)) - (YOOX_IMAGE_STYLE_ORDER.indexOf(a)) } \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/ProductView.js b/StoneIsland/platforms/android/assets/www/js/lib/products/ProductView.js
deleted file mode 100755
index f834b1c5..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/ProductView.js
+++ /dev/null
@@ -1,605 +0,0 @@
-var ProductView = ScrollableView.extend({
-
- el: "#product",
-
- events: {
- "click .fit": "scroll_to_bottom",
- "click .notAvailableInCanada": "scroll_to_bottom",
- "change select[name=size]": "select_size",
- "change select[name=color]": "select_color",
- // "click .size": "select_size",
- // "click .color": "select_color",
- "click .share": "share",
- "click .gallery-left": "gallery_left",
- "click .gallery-right": "gallery_right",
- },
-
- initialize: function(){
- this.gallery = new GalleryView ()
- this.scroller = ScrollFactory('#product', app.iscroll_options)
-
- this.$productHeader = this.$(".product-header")
- this.$title = this.$(".title")
- this.$type = this.$(".type")
- this.$price = this.$(".price")
- this.$size = this.$(".size")
- this.$sizeSelect = this.$(".size select")
- this.$sizeLabel = this.$(".size .label")
- this.$color = this.$(".color")
- this.$colorSelect = this.$(".color select")
- this.$colorLabel = this.$(".color .label")
- this.$share = this.$(".share")
- this.$body = this.$(".body")
- this.$fit = this.$(".fit")
- this.$fitHeader = this.$('.fitHeader')
- this.$notAvailableInCanada = this.$(".notAvailableInCanada")
- this.$sizing = this.$(".sizing")
- this.$style = this.$(".style")
- },
-
- show: function(){
- this.showFooter()
- document.body.className = "product"
- },
-
- hide: function(){
- app.footer.hide()
- },
-
- showFooter: function(){
- if (this.sold_out) {
- console.log("FOOTER: SOLD OUT")
- app.footer.show("SOLD OUT")
- }
- else if (this.isNotAvailable) {
- console.log("FOOTER: NOT AVAILABLE")
- app.footer.show("NOT AVAILABLE")
- }
- else {
- app.footer.show("ADD TO CART", "BUY NOW")
- }
- },
-
- item: null,
- details: null,
- size: null,
- color: null,
- code: null,
- is_onesize: false,
- fitLargeCodes: {},
-
- sizes: null,
- colors: null,
-
- cache: {},
-
- gallery_left: function(){
- app.product.gallery.gallery.previous()
- },
- gallery_right: function(){
- app.product.gallery.gallery.next()
- },
-
- find: function(code, cb){
- data = app.collection.items[code] || {}
- if (code in this.cache) {
- return cb(data, this.cache[code])
- }
- sdk.product.item({
- code: code
- }).done(function(details){
- this.cache[code] = details
- cb(data, details)
- }.bind(this))
- },
-
- load: function(code, data){
- this.gallery.reset()
- this.show()
- if (app.view && app.view.hide) {
- app.view.hide()
- }
- app.view = this
- app.header.set_back(true)
-
- if (! app.collection.loaded) {
- this.el.className = "loading"
- app.collection.afterFetchCallback = this.load.bind(this, code, data)
- app.collection.fetch()
- return
- }
- else {
- app.collection.afterFetchCallback = null
- }
- window.location.href = "#/store/" + code
-
- if (data) {
- app.collection.items[code] = data
- }
-
- this.el.className = "loading"
- this.find(code, this.populate.bind(this))
- },
-
- populate: function(data, details){
- this.el.className = ""
-
- console.log(data, details)
-
- var descriptions = this.get_descriptions(details)
-
- var title = data['ModelNames'] || ""
- var type = title_case( data['MicroCategory'] )
- var price = "$" + data['DiscountedPrice'] + ".00"
- var details_description = descriptions['Details'] || ""
- var editorial = descriptions['EditorialDescription'] || ""
- var body = details_description + " " + editorial
- // body = body.replace(/<br>/g, "<br><br>").replace(/(<br>)+$/, "")
-
- var default_color_id = this.populate_selectors(data, details)
-
- var notAvailableInCanada = !! app.store.NotAvailableInCanada
- app.product.$notAvailableInCanada.toggle( notAvailableInCanada )
-
- if (! ('Price' in details['Item'])) {
- console.log("NO PRICE, IS NOT AVAILABLE")
- this.isNotAvailable = true
- }
- else {
- console.log("FOUND PRICE, IS AVAILABLE")
- this.isNotAvailable = false
- }
-
- if (this.sold_out || this.isNotAvailable) {
- this.$style.css("opacity", 0)
- this.$color.html("NOT AVAILABLE")
- this.$size.hide()
- this.gallery.populate( data['Code8'], details['Item']['ImageTypes'] )
- }
- else {
- this.$style.css("opacity", 1)
-
- var color = this.colors[default_color_id]
- var color_label = color.label
- var sizes = this.find_sizes_for_color(default_color_id)
- var size = sizes[0]
- var size_label = this.sizes[size].label
-
- this.gallery.populate( color.code, details['Item']['ImageTypes'] )
-
- this.color = color
- this.size = size
-
- this.is_onesize = !! this.sizes[1]
- this.set_size_label(size_label)
- this.set_color_label(color_label)
- }
-
- // console.log(color, color_label, size, size_label)
-
- this.item = data
- this.details = details['Item']
- this.code = data['DefaultCode10']
-
- console.log( data['DefaultCode10'] )
-
- // title += "<br>EXTREME COMPACTING ON NYLON BASE<br>LIMITED EDITION - NUMBERED 01 TO 100"
- if (title.indexOf('<br>') !== -1) {
- var title_lines = title.split('<br>').map(function(s){
- if (s.indexOf("LIMITED EDITION") !== -1) {
- return "<span class='red'>" + s + "</span>"
- }
- return s
- }.bind(this))
- title = title_lines.join('<br><br>') + '<br>'
- }
- this.$title.html(title)
- this.$type.html(type)
- this.$price.html(price)
- this.$body.html(body)
-
- // window.FirebasePlugin && window.FirebasePlugin.setScreenName('product:' + code)
-
- this.$productHeader.toggleClass("wide", title.length > 48)
-
- var fits_large = !!(this.fitLargeCodes[this.code])
-
- this.showFooter()
-
- console.log(app.store.FitsLarge, app.store.fitsLargeText)
- if (fits_large) {
- if (app.store.FitsLarge === 'use_alt_text' && (app.store.FitsLargeText || "").length) {
- var fit_lines = app.store.FitsLargeText.replace(/</g, "&lt;").replace(/>/g, "&rt;").split('\n').join("<br>")
- this.$fitHeader.html(fit_lines)
- this.$fitHeader.show()
- }
- else {
- this.$fitHeader.hide()
- }
-
- this.$fit.show()
-
- if (app.store.SizingFooter === 'use_alt_text' && (app.store.SizingFooterText || "").length) {
- var sizing_lines = app.store.SizingFooterText.replace(/</g, "&lt;").replace(/>/g, "&rt;").split('\n').join("<br>")
- this.$sizing.html(sizing_lines)
- this.$sizing.show()
- } else if (app.store.SizingFooter === 'true') {
- this.$sizing.show()
- }
- } else {
- this.$fitHeader.hide()
- this.$fit.hide()
- this.$sizing.hide()
- }
-
- this.populate_sizes()
- this.populate_colors()
-
- this.deferScrollToTop()
- },
-
- get_descriptions: function (details){
- var descriptions = {}
- details['Item']['Descriptions'].forEach(function(pair){
- descriptions[pair.Key] = pair.Value
- })
- return descriptions
- },
- find_sizes_for_color: function(color_id){
- return Object.keys( this.colors[color_id].sizes ).sort(function(a,b){
- var ao = SIZE_ORDER[ a.label ], bo = SIZE_ORDER[ b.label ]
- return ao<bo?-1:ao==bo?0:1
- })
- },
- find_colors_for_size: function(size_id){
- return Object.keys( this.sizes[size_id].colors )
- },
-
- populate_selectors: function(data, details){
- var sizes = {}, colors = {}, size_lookup = {}, default_color
-
- var modelColors = details['Item']['ModelColors'] || []
- console.log('colors:', modelColors.length || "none")
-
- if (! modelColors.length) {
- this.sold_out = true
- return
- }
- else {
- this.sold_out = false
- }
-
- modelColors.forEach(function(color, index){
- if (! default_color || color['Code10'] == data['DefaultCode10']) {
- default_color = color['ColorId']
- }
- colors[ color['ColorId'] ] = {
- id: color['Code10'],
- code: color['Code10'],
- label: color['ColorDescription'].toUpperCase(),
- sizes: {},
- }
- })
-
- details['Item']['ModelSizes'].forEach(function(size){
- var label = ""
- if (details['Item']['SizeTypeId'] == 412) { // shoes
- label = size['Default']['Text'] + " " + size['Default']['ClassFamily']
- console.log("shoes?", label)
- }
- else { // everything else
- label = SIZE_LOOKUP[ size['Default']['Text'] ]
- }
- if (! label) {
- label = size['Default']['Text']
- if (size['Default']['Labeled']) {
- label += " " + size['Default']['ClassFamily']
- }
- }
- console.log(size)
- size_lookup[ label ] = size['SizeId']
- console.log( label )
- sizes[ size['SizeId'] ] = {
- id: label,
- label: label.toUpperCase(),
- value: size['SizeId'],
- colors: {},
- }
- })
- details['Item']['ModelColorSize'].forEach(function(cs){
- colors[ cs['IdColor'] ].sizes[ cs['IdSize'] ] = true
- sizes[ cs['IdSize'] ].colors[ cs['IdColor'] ] = true
- })
-
- this.sizes = sizes
- this.colors = colors
- return default_color
- },
-
- populate_sizes: function() {
- console.log(this.sold_out, this.notAvailable, this.is_onesize, this.item)
- if (this.sold_out) { return }
- if (this.notAvailable) { return }
- // if (this.is_onesize) { return this.select_color() }
- if (this.details['ModelSizes'].length == 0) { return }
-
- this.$sizeSelect.empty()
- var sizes = Object.keys(this.sizes).forEach(function(key){
- var size = this.sizes[key]
- var option = document.createElement('option')
- option.value = size.value
- option.innerHTML = size.label
- this.$sizeSelect.append(option)
- }.bind(this))
- },
-
- populate_colors: function() {
- if (this.sold_out) { return }
- if (this.notAvailable) { return }
- if (this.details['ModelColors'].length == 0) { return }
-
- this.$colorSelect.empty()
- Object.keys(this.colors).forEach(function(key){
- var color = this.colors[key]
- var option = document.createElement('option')
- option.value = key
- option.innerHTML = color.label
- this.$colorSelect.append(option)
- }.bind(this))
- },
-
- select_size: function(){
- console.log(this.colors)
- var value = this.$sizeSelect.val()
- var size = this.sizes[value]
- console.log(size)
- this.set_size_label(size.label)
- this.size = size.value
- },
-
- select_color: function(){
- var value = this.$colorSelect.val()
- var color = this.colors[value]
- console.log(color)
- this.code = color.code
- this.set_color_label(color.label)
- this.gallery.populate( color.code, this.details['ImageTypes'] )
- this.gallery_right()
- },
-
- set_size_label: function(size_label){
- this.$size.show()
- this.$sizeLabel.html(size_label)
- this.$size.attr('aria-label', 'Tap to select size. Current size: ' + size_label)
- },
-
- set_color_label: function(color_label){
- if (color_label) {
- this.$color.show()
- this.$colorLabel.html(color_label)
- this.$color.attr('aria-label', 'Tap to select color. Current color: ' + color_label)
- }
- else {
- this.$color.hide()
- }
- },
-
- // ADD TO CART
- save: function(){
- if (this.sold_out) { return }
- if (this.notAvailable) { return }
- this.add_to_cart({ route: false })
- },
- // BUY NOW
- cancel: function(){
- if (this.sold_out) { return }
- if (this.notAvailable) { return }
- this.add_to_cart({ route: true })
- },
-
- add_to_cart: function(opt){
- var deferred_product = auth.deferred_product = { Size: this.size, Code10: this.code }
- console.log("ADDING " + this.size + " " + this.code )
- // if we are not logged in...
- if ( ! auth.logged_in() ) {
- app.router.go("account/login")
- app.last_view = app.cart
- }
- // if we don't have a cart setup...
- else if ( ! auth.has_cart() ) {
- this.create_cart_and_add_product()
- }
- else {
- app.curtain.show("loading")
- auth.add_deferred_product_to_cart({
- success: function(){
- app.curtain.hide("loading")
- if (opt.route) {
- app.router.go("cart")
- }
- },
- error: function(err){
- console.log("CART MIGHT BE OLD")
- this.create_cart_and_add_product()
- // console.log(err)
- //
- // // TODO - CART MIGHT BE OLD
- // app.curtain.hide("loading")
- // app.router.go("account/login")
- // auth.deferred_product = deferred_product
- // app.last_view = app.cart
- }.bind(this),
- })
- }
- },
-
- create_cart_and_add_product: function() {
- app.curtain.show("loading")
- auth.create_cart({
- success: function(){
- auth.add_deferred_product_to_cart({
- success: function(){
- app.curtain.hide("loading")
- app.router.go("cart")
- },
- error: function(){
- // SHOULD NOT BE A PROBLEM
- console.log("ERROR ADDING PRODUCT TO NEW CART SIMPLE ADD TO CART")
- app.curtain.hide("loading")
- app.router.go("account/login")
- auth.deferred_product = deferred_product
- app.last_view = app.cart
- },
- })
- },
- error: function(){
- // ERROR CREATING CART?
- console.log("ERROR CREATING CART")
- auth.log_out()
- app.account.logged_out()
- app.curtain.hide("loading")
- app.router.go("account/login")
- auth.deferred_product = deferred_product
- app.last_view = app.cart
- },
- })
- },
-
- back: function(){
- app.router.go('store')
- },
-
- scroll_to_bottom: function(){
- },
-
- share: function(){
- if (window.plugins && 'socialsharing' in window.plugins) {
- window.plugins.socialsharing.share( this.item['ModelNames'], null, null, "http://deeplink.me/www.stoneisland.com/store/" + this.code)
- }
- },
-
-})
-
-var SIZE_LOOKUP = {
- "XS": "X-SMALL",
- "S": "SMALL",
- "M": "MEDIUM",
- "L": "LARGE",
- "XL": "X-LARGE",
- "XXL": "XX-LARGE",
- "3XL": "3X-LARGE",
- "OneSize": "ONESIZE",
-}
-
-var SIZE_ORDER = "XS S M L XL XXL 3XL".split(" ")
-
-/*
-{
- "Code8": "41504876",
- "BrandName": "STONE ISLAND",
- "DefaultCode10": "41504876MA",
- "MicroCategory": "Jacket",
- "MacroCategory": "COATS & JACKETS",
- "FullPrice": 728,
- "DiscountedPrice": 437,
- "PriceListId": 155702498,
- "ModelNames": "41764 FLOWING CAMO WATRO",
- "Sizes": [
- {
- "Id": 4,
- "Text": "S",
- "ClassFamily": "INT",
- "Labeled": true
- },
- {
- "Id": 6,
- "Text": "L",
- "ClassFamily": "INT",
- "Labeled": true
- },
- {
- "Id": 7,
- "Text": "XL",
- "ClassFamily": "INT",
- "Labeled": true
- },
- {
- "Id": 8,
- "Text": "XXL",
- "ClassFamily": "INT",
- "Labeled": true
- }
- ],
- "Colors": [
- {
- "Id": 3152,
- "Code10": {
- "Id": 6769575,
- "Value": "41504876MA"
- },
- "Description": "Green",
- "MacroColorId": 3152,
- "Rgb": "3C941F"
- }
- ],
- "SizeTypeId": 928,
- "HasFlipSide": false,
- "SeasonOfSale": "PE15",
- "SalesLineId": "126",
- "SalesLine": "18_STONE ISLAND",
- "MarketId": 19,
- "Criteria": {
- "Sizes": [
- "3",
- "5",
- "6",
- "7"
- ],
- "Looks": [],
- "Styles": [],
- "WashTypes": [],
- "WashStories": [],
- "WashCodes": [],
- "Waists": [],
- "Fabrics": [],
- "ColorTypes": [],
- "ModelNames": [],
- "Material": []
- },
- "NoveltyPoints": 0,
- "C10Attributes": [
- {
- "Key": "MFC",
- "Value": "621541764CC-6215-64V0050",
- "C10": "41504876MA"
- }
- ],
- "MacroCategoryId": 224,
- "MicroCategoryId": 1319
-},
-
-DESCRIPTIONS:
-
-Age: "Adult"
-Appliqué: "Logo detail"
-ColoreFoto_ID: "3140"
-Composition: "100% Cotton"
-CustomsInvoiceDescr: "Woven"
-Design: "Solid color"
-EditorialDescription: "20081 DATA DRIP PIN<br>Short sleeve T-Shirt in cotton jersey. Garment dyed.<br>Stone Island Compass logo print on the front, made up of a series of numbers."
-ItemDescription: "Logo detail<br>Jersey<br>Round collar<br>Solid color<br>"
-KeywordDescription: "Logo detail Jersey Round collar Solid color Jersey Woven not made of fur "
-Kind of fabric: "Woven"
-MFC: "631520081CC-6315-81V0060"
-MacroCategory: "POLO SHIRTS & T-SHIRTS"
-MadeIn: "Made In Turkmenistan"
-MadeInIsoCode: "TN"
-MainMaterial: "Cotton"
-Material Description: "Jersey"
-MicroCategory: "Short sleeve t-shirt"
-MicroCategoryPlural: "Short sleeve t-shirts"
-ModelFabric: "631520081CC-6315-81"
-ModelNames: "20081 DATA DRIP PIN"
-Neckline: "Claudine or round collar"
-
-*/
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/Selector.js b/StoneIsland/platforms/android/assets/www/js/lib/products/Selector.js
deleted file mode 100755
index e3376a4d..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/Selector.js
+++ /dev/null
@@ -1,70 +0,0 @@
-var Selector = View.extend({
-
- el: "#selector",
- template: $("#selector .template").html(),
-
- events: {
- "click .close": "hide",
- "touchstart .options div": "pick",
- },
-
- initialize: function(){
- this.$options = this.$(".options")
- },
-
- lookup: null,
- callback: null,
- select: function(origin, options, callback){
- this.lookup = {}
- this.callback = callback || function(item){ console.log(item) }
- this.$options.empty()
- options.forEach(function(opt){
- this.lookup[String(opt.id)] = opt
- var t = this.template.replace(/{{id}}/, opt.id)
- .replace(/{{label}}/g, opt.label)
- this.$options.append(t)
- }.bind(this))
- this.$el.show()
- app.curtain.show("white")
- this.visible = true
- $("#selector").removeClass("selector-outer-wrap")
- if ( origin == "wide") {
- $("#selector").addClass("selector-full")
- }
- else {
- $("#selector").removeClass("selector-full")
- }
- var originXY = $("." + origin).offset()
- var originWidth = $("." + origin).width()
- var selectorHeight = $('#selector').height()
- var originHeight = $("." + origin).height()
- console.log(selectorHeight)
- if ((selectorHeight > 250) && (!$("#selector").hasClass("selector-full"))) {
- $("#selector").addClass("selector-outer-wrap")
- }
- var selectorHeight = $('#selector').height()
- $("#selector").css({"top":(originXY.top - selectorHeight - originHeight + 20),"left":originXY.left})
- originXY = null;
- originWidth = null;
- originHeight = null;
- selectorHeight = null;
- },
-
- hide: function(){
- this.lookup = this.callback = null
- this.$el.hide()
- app.curtain.hide()
- this.visible = false
- },
-
- pick: function(e){
- e.preventDefault()
- e.stopPropagation()
- var $option = $(e.currentTarget)
- var id = String($option.data("id"))
- var selection = this.lookup[id]
- this.callback( selection )
- this.hide()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/CategoryFilter.js b/StoneIsland/platforms/android/assets/www/js/lib/products/filters/CategoryFilter.js
deleted file mode 100755
index 53f9a59b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/CategoryFilter.js
+++ /dev/null
@@ -1,40 +0,0 @@
-var CategoryFilter = View.extend({
-
- initialize: function(opt){
- this.parent = opt.parent
- },
-
- filter: function(){
- var cats = this.parent.data.SearchResponseFull.Refinements.Filters.Categories.map(function(cat){
- return {
- id: cat.Id,
- label: cat.Value
- }
- })
- if (this.last_choice) {
- cats.push({
- id: "__remove_filter",
- label: "REMOVE FILTER",
- })
- }
- app.selector.select("wide", cats, this.pick.bind(this))
- },
-
- last_choice: null,
-
- pick: function(choice){
- this.parent.$content.empty()
- if (choice.id == "__remove_filter") {
- this.last_choice = null
- this.parent.data.SearchResponseFull.Results.Items.forEach(this.parent.append.bind(this.parent))
- }
- else {
- this.last_choice = choice
- this.parent.data.SearchResponseFull.Results.Items.filter(function(item){
- return item.MacroCategory == choice.label
- }).forEach(this.parent.append.bind(this.parent))
- }
- this.parent.deferScrollToTop()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/DepartmentFilter.js b/StoneIsland/platforms/android/assets/www/js/lib/products/filters/DepartmentFilter.js
deleted file mode 100644
index 7d5ccf3d..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/DepartmentFilter.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var DepartmentFilter = View.extend({
-
- initialize: function(opt){
- this.parent = opt.parent
- },
-
- filter: function(){
- var deps = app.departments.map(function(dep){
- return {
- id: dep.uri,
- label: dep.text,
- }
- })
- app.selector.select("wide", deps, this.pick.bind(this))
- },
-
- last_choice: null,
-
- pick: function(choice){
- this.parent.$content.empty()
- this.last_choice = choice
- app.department_id = choice.id
- app.collection.loaded = false
- app.collection.fetch()
- app.footer.hide()
- app.collection.setCollectionName(choice.label)
- this.parent.deferScrollToTop()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/SizeFilter.js b/StoneIsland/platforms/android/assets/www/js/lib/products/filters/SizeFilter.js
deleted file mode 100644
index d0231021..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/products/filters/SizeFilter.js
+++ /dev/null
@@ -1,60 +0,0 @@
-var SizeFilter = View.extend({
-
- initialize: function(opt){
- this.parent = opt.parent
- },
-
- filter: function(){
- var seen_sizes = {}
- var sizes = []
- this.parent.data.SearchResponseFull.Results.Items.forEach(function(item){
- item.Sizes.forEach(function(size){
- if (size.Id in seen_sizes) {
- return
- }
- seen_sizes[size.Id] = true
- sizes.push(size)
- })
- })
- sizes.sort(function(a,b){
- return a.Id - b.Id
- })
-
- var cats = sizes.map(function(cat){
- return {
- id: cat.Id,
- label: cat.Text,
- }
- })
- if (this.last_choice) {
- cats.push({
- id: "__remove_filter",
- label: "REMOVE FILTER",
- })
- }
- app.selector.select("wide", cats, this.pick.bind(this))
- },
-
- last_choice: null,
-
- pick: function(choice){
- this.parent.$content.empty()
- if (choice.id == "__remove_filter") {
- this.last_choice = null
- this.parent.filtered_items = null
- this.parent.data.SearchResponseFull.Results.Items.forEach(this.parent.append.bind(this.parent))
- }
- else {
- this.last_choice = choice
- console.log("filtering for size", choice.id)
- var items = this.parent.data.SearchResponseFull.Results.Items.filter(function(item){
- console.log(item.Sizes.map(function(s){ return s }))
- return item.Sizes.some(function(size){ return size.Id == choice.id })
- })
- this.parent.filtered_items = items
- items.forEach(this.parent.append.bind(this.parent))
- }
- this.parent.deferScrollToTop()
- },
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/view/Router.js b/StoneIsland/platforms/android/assets/www/js/lib/view/Router.js
deleted file mode 100755
index a8ec331f..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/view/Router.js
+++ /dev/null
@@ -1,75 +0,0 @@
-var Router = View.extend({
-
- routeByHash: false,
-
- go: function(url){
- this.parseRoute(url)
- },
-
- route: function(){
- var path = this.routeByHash ? window.location.hash.substr(0) : window.location.pathname
- path = path || "/"
- this.originalPath = path
- this.parseRoute(path)
- },
-
- parseRoute: function(pathname){
-
- pathname = pathname.replace(/^#/, "")
-
- if (pathname[0] !== "/") { pathname = "/" + pathname }
-
- var routes = this.routes,
- path = pathname.split("/");
-
- for (var i = 0; i < path.length; i++) {
- if (! path[i].length) {
- path[i] = null
- }
- }
-
- if (pathname in routes) {
- this[this.routes[pathname]]()
- return
- }
-
- if (path[path.length-1] == null) {
- path.pop()
- }
-
- for (var route in routes) {
- var routePath = route.split("/")
- if (routePath[1] == path[1]) {
- if (routePath[2] && routePath[2].indexOf(":") !== -1 && path[2] && (path[3] === routePath[3]) ) {
- this[this.routes[route]](path[2])
- return
- }
- else if (routePath[2] == path[2]) {
- if (routePath[3] && path[3]) {
- if (routePath[3].indexOf(":") !== -1) {
- this[this.routes[route]](path[3])
- return
- }
- else if (routePath[3] == path[3]) {
- this[this.routes[route]]()
- return
- }
- }
- else if (! routePath[3] && ! path[3]) {
- this[this.routes[route]]()
- return
- }
- }
- else if (! routePath[2] && (! path[2].length || ! path[2])) {
- this[this.routes[route]]()
- return
- }
- }
- }
-
- if (is_mobile) {
- window.location.href = "/"
- }
- }
-
-})
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/view/Scrollable.js b/StoneIsland/platforms/android/assets/www/js/lib/view/Scrollable.js
deleted file mode 100755
index 7f90929a..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/view/Scrollable.js
+++ /dev/null
@@ -1,44 +0,0 @@
-var ScrollableView = View.extend({
-
- events: {
- "load img": "deferRefresh",
- },
-
- deferScrollToTop: function(){
- this.scrollPosition = 0
- setTimeout(this.scrollToTop.bind(this), 0)
- },
-
- scrollPosition: 0,
-
- resetScroll: function(){
- this.scrollPosition = 0
- },
-
- saveScroll: function(){
- this.scrollPosition = this.scroller.y
- },
-
- restoreScroll: function(){
- setTimeout(function(){
- this.scroller.scrollTo(0, this.scrollPosition)
- }.bind(this), 0)
- },
-
- refreshScroller: function(){
- this.scroller.refresh()
- clearTimeout( this.scrollerRefreshTimeout )
- },
-
- scrollerRefreshTimeout: null,
- deferRefresh: function(){
- clearTimeout( this.scrollerRefreshTimeout )
- this.scrollerRefreshTimeout = setTimeout(this.refreshScroller.bind(this))
- },
-
- scrollToTop: function(){
- this.scroller.refresh()
- this.scroller.scrollTo(0, 0)
- },
-
-}) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/view/Serializable.js b/StoneIsland/platforms/android/assets/www/js/lib/view/Serializable.js
deleted file mode 100755
index 08802fa9..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/view/Serializable.js
+++ /dev/null
@@ -1,194 +0,0 @@
-var SerializableView = View.extend({
-
- events: {
- "change select": "update_select",
- "change [type=date]": "update_date",
- "focus input": "focus_input",
- "click .date-wrapper": "focus_date",
- "submit form": "save",
- },
-
- preload: function(data){
- if (! data && sdk.env == "production") { return }
- data = data || this.test_data
- if (! data) { return }
- this.load_data(data)
- },
-
- load_data: function(data){
- Object.keys(data).forEach(function(key){
- var value = data[key]
- var $el = this.$("[name=" + key + "]")
-
- if ($el.attr("type") == "checkbox") {
- $el.prop("checked", value)
- }
- if ($el.attr("type") == "date") {
- $el.val( value )
- this.update_date({ currentTarget: $el })
- }
- else if ($el.prop("tagName") == "SELECT") {
- $el.val( value )
- this.update_select({ currentTarget: $el })
- }
- else {
- $el.val( value )
- }
- }.bind(this))
- },
-
- serialize: function(){
- var fields = {}
- this.$("input[name], select[name], textarea[name]").each( function(){
- if (this.type == "checkbox") {
- if ($(this).prop("checked")) {
- fields[this.name] = this.value || "true"
- }
- }
- else {
- fields[this.name] = this.value
- }
- })
- return fields
- },
-
- deserialize: function(data){
- this.$("input[name], textarea[name]").val("")
- Object.keys(data).forEach(function(k){
- this.$("[" + k + "]").val(data[k])
- })
- },
-
- focus_input: function(e){
- $(e.currentTarget).removeClass("error_hilite")
- },
-
- focus_date: function(e){
- $(e.currentTarget).find("input").focus()
- },
-
- update_select: function(e){
- var $target = $(e.currentTarget), value = $target.val()
- var label = $target.find("option").filter(function(){ return this.value === value }).html()
- var $parent = $target.parent()
- $parent.addClass("picked").removeClass("error_hilite")
- $parent.find("span").html(label)
- },
-
- update_date: function(e){
- var $target = $(e.currentTarget), value = $target.val()
- var label = moment(value).format("MM/DD/YYYY")
- if (label === 'Invalid date') {
- label = '' // 'BIRTHDAY (OPTIONAL)'
- }
- $target.parent().addClass("picked")
- $target.parent().find("span").html(label)
- },
-
- validate: function(data, errors){
- var data = data || this.serialize()
- var errors = errors || []
- var presence_msgs = this.validate_presence || {}
- if (! this.disabled) {
- Object.keys(presence_msgs).forEach(function(k){
- if (! data[k]) errors.push( [ k, presence_msgs[k] ] )
- })
- }
- this.validate_fields && this.validate_fields(data, errors)
- this.cc && this.cc.validate(data, errors)
- this.address && this.address.validate(data, errors)
- return { errors: errors, data: data }
- },
-
- show_errors: function(errors){
- console.log("showing errors")
- console.log(errors)
- var msgs = []
- this.$('.err_heading').addClass('error_visible')
- this.$('.error_hilite').removeClass('error_hilite')
- this.$('.err').html('')
- errors.forEach(function(e, i){
- // if (i > 0) { return }
- if (e[0]) {
- var $el = this.$("[name=" + e[0] + "]")
- var el = $el[0]
- if (el && el.nodeName === 'SELECT') {
- $el.parent().addClass('error_hilite')
- $el.parent().next('.err').html(e[1])
- } else if (el && el.type === 'date') {
- $el.parent().addClass('error_hilite')
- $el.parent().next('.err').html(e[1])
- } else {
- $el.addClass('error_hilite')
- $el.next('.err').html(e[1])
- }
- }
- // msgs.push(e[1])
- }.bind(this))
- // this.$msg.html(msgs.join("<br>"))
- this.$msg.addClass('alert-notice')
- if (app.view.scroller) {
- app.view.scroller.scrollTo(0, 0)
- }
- },
-
- hide_errors: function(){
- this.$msg.removeClass('alert-notice')
- this.$msg.html("")
- },
-
- finalize: function(data){
- return data
- },
-
- save: function(e){
- e && e.preventDefault()
-
- this.$('.err_heading').removeClass('error_visible')
-
- var valid = this.validate()
- if (valid.errors.length) {
- this.show_errors(valid.errors)
- return
- }
- else {
- this.hide_errors()
- window.cordova && cordova.plugins.Keyboard.close()
- }
-
- var finalized_data = this.finalize(valid.data)
- this.submit( finalized_data )
- },
-
- submit: function(data){
- if (! data) {
- return
- }
- app.curtain.show("loading")
- this.action({
- data: data,
- success: function(data){
- app.curtain.hide("loading")
- this.success(data)
- }.bind(this),
- error: function(data){
- app.curtain.hide("loading")
- console.log("api error")
- this.error(data)
- }.bind(this),
- })
- },
-
- success: function(data){
- console.log("SUCCESS")
- console.log(data)
- },
-
- error: function(data){
- console.log("FAIL")
- console.log(data)
- },
-
-})
-
-var FormView = View.extend(SerializableView.prototype).extend(ScrollableView.prototype)
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/view/View.js b/StoneIsland/platforms/android/assets/www/js/lib/view/View.js
deleted file mode 100755
index 2401df0d..00000000
--- a/StoneIsland/platforms/android/assets/www/js/lib/view/View.js
+++ /dev/null
@@ -1,147 +0,0 @@
-var View = (function($, _){
-
- var View = function(options) {
- this._id = _.uniqueId('view')
- this.type = "view"
- options || (options = {});
- _.extend(this, _.pick(options, viewOptions))
- this._ensureElement()
- this.initialize.apply(this, arguments)
- this.delegateEvents()
- }
-
- var delegateEventSplitter = /^(\S+)\s*(.*)$/;
-
- var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];
-
- _.extend(View.prototype, {
-
- // The default `tagName` of a View's element is `"div"`.
- tagName: 'div',
-
- $: function(selector) {
- return this.$el.find(selector);
- },
-
- initialize: function(){},
-
- setElement: function(element, delegate) {
- if (this.$el) this.undelegateEvents();
- this.$el = element instanceof $ ? element : $(element);
- this.el = this.$el[0];
- if (delegate !== false) this.delegateEvents();
- return this;
- },
-
- // Set callbacks, where `this.events` is a hash of
- //
- // *{"event selector": "callback"}*
- //
- // {
- // 'mousedown .title': 'edit',
- // 'click .button': 'save',
- // 'click .open': function(e) { ... }
- // }
- //
- // pairs. Callbacks will be bound to the view, with `this` set properly.
- // Uses event delegation for efficiency.
- // Omitting the selector binds the event to `this.el`.
- // This only works for delegate-able events: not `focus`, `blur`, and
- // not `change`, `submit`, and `reset` in Internet Explorer.
- delegateEvents: function(events) {
- if (!(events || (events = _.result(this, 'events')))) return this;
- this.undelegateEvents();
- for (var key in events) {
- var method = events[key];
- if (!_.isFunction(method)) method = this[events[key]];
- if (!method) continue;
-
- var match = key.match(delegateEventSplitter);
- var eventName = match[1], selector = match[2];
- method = _.bind(method, this);
- if (is_mobile) {
- if (eventName === 'mouseenter' || eventName === 'mouseleave') {
- continue
- }
- if (is_android && eventName === 'click') {
- eventName = 'touchstart'
- }
- }
- eventName += '.delegateEvents' + this._id;
- if (selector === '') {
- this.$el.on(eventName, method);
- } else {
- this.$el.on(eventName, selector, method);
- }
- }
- return this;
- },
-
- // Clears all callbacks previously bound to the view with `delegateEvents`.
- undelegateEvents: function() {
- this.$el.off('.delegateEvents' + this._id);
- return this;
- },
-
- // Ensure that the View has a DOM element to render into.
- // If `this.el` is a string, pass it through `$()`, take the first
- // matching element, and re-assign it to `el`. Otherwise, create
- // an element from the `id`, `className` and `tagName` properties.
- _ensureElement: function() {
- this.setElement(_.result(this, 'el'), false);
- },
-
- preventDefault: function(e){
- e && e.preventDefault()
- },
-
- stopPropagation: function(e){
- e && e.stopPropagation()
- },
-
- });
-
-
- var extend = function(protoProps, staticProps) {
- var staticProps = staticProps || {}
- var parent = this;
- var child;
- var childEvents = {};
-
- // The constructor function for the new subclass is either defined by you
- // (the "constructor" property in your `extend` definition), or defaulted
- // by us to simply call the parent's constructor.
- if (protoProps && _.has(protoProps, 'constructor')) {
- child = protoProps.constructor;
- } else {
- child = function(){ return parent.apply(this, arguments); };
- }
-
- // Extend events so we can subclass views
- _.extend(childEvents, parent.prototype.events, protoProps.events)
-
- // Add static properties to the constructor function, if supplied.
- _.extend(child, parent, staticProps);
-
- // Set the prototype chain to inherit from `parent`, without calling
- // `parent`'s constructor function.
- var Surrogate = function(){ this.constructor = child; };
- Surrogate.prototype = parent.prototype;
- child.prototype = new Surrogate;
-
- // Add prototype properties (instance properties) to the subclass,
- // if supplied.
- if (protoProps) _.extend(child.prototype, protoProps);
-
- // Set a convenience property in case the parent's prototype is needed
- // later.
- child.prototype.__super__ = parent.prototype;
- child.prototype.events = childEvents
-
- return child;
- };
-
- View.extend = extend;
-
- return View;
-})(jQuery, _)
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js b/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js
deleted file mode 100755
index aba05ca3..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/_sdk.js
+++ /dev/null
@@ -1,48 +0,0 @@
-var sdk = (function(){
- var sdk = {}
-
- sdk.env = "development"
-
- var endpoint = "https://secure.api.yoox.biz/"
- // var endpoint = "http://api.yoox.biz/"
-
- sdk.init = function(opt){
- switch (sdk.env = opt.env || "development") {
- case 'test':
- endpoint = ('window' in this ? window.location.origin + "/" : "http://lvh.me:9090/")
- break
- default:
- case 'development':
- endpoint = "/"
- break
- case 'production':
- endpoint = "https://secure.api.yoox.biz/"
- break
- }
- }
-
- sdk.path = function(api, path, cc){
- return endpoint + api + "/STONEISLAND_" + (cc || sdk.cc()) + "/" + path
- }
-
- sdk.image = function(code, size){
- return "https://cdn.yoox.biz/" + code.substr(0,2) + "/" + code + "_" + size + ".jpg"
- }
-
- sdk.cc = function(){
- return sim.data.countryCode.toUpperCase()
- // return 'CA'
- }
-
- sdk.cms = function(){
- return "https://stone.giraffe.life"
- // return "http://staging.stone.giraffe.life"
- }
-
- $.ajaxSetup({
- // possibly: application/json; charset=utf-8"
- contentType: "application/json",
- })
-
- return sdk
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/account.js b/StoneIsland/platforms/android/assets/www/js/sdk/account.js
deleted file mode 100755
index 3eb3f3bd..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/account.js
+++ /dev/null
@@ -1,133 +0,0 @@
-sdk.account = (function(){
-
- var user_id, access_token
-
- // https://gist.github.com/fanfare/d18498e7fa25acbd4486
- var account = {}
- account.signup = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Account.API/1.5", "users.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-api-key": auth.apikey,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- user_id = data['UserAccount']['UserId']
- access_token = data['UserAccount']['AccessToken']
-
- auth.set_user(user_id, access_token)
-
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.login = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Account.API/1.5", "authfull.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- auth.user = data['UserFull']
- user_id = data['UserFull']['idUser']
- access_token = data['UserFull']['AccessToken']
-
- auth.set_user(user_id, access_token)
-
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.checkin = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: "{}",
- success: function(data){
- auth.user = data.User
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.update = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.update_mail_and_password = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Account.API/1.5", "auth/" + auth.user_id + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.fetch_orders = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/orders.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- account.fetch_single_order = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/orders/" + opt.id + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- return account
-
-})()
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/address.js b/StoneIsland/platforms/android/assets/www/js/sdk/address.js
deleted file mode 100755
index 315f3172..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/address.js
+++ /dev/null
@@ -1,78 +0,0 @@
-sdk.address = (function(){
- var address = {}
-
- address.list = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: opt.data,
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- complete: function(data){
- console.log("address list complete")
- console.log(data)
- }
- })
- }
-
- address.add = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook/item.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- address.update = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/addressBook/item.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- address.destroy = function(opt){
- return $.ajax({
- method: "DELETE",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/" + opt.id + "/addressBook.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- return address
-
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/auth.js b/StoneIsland/platforms/android/assets/www/js/sdk/auth.js
deleted file mode 100755
index bcfb2d3a..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/auth.js
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- "x-yoox-device": auth.device,
- "x-yoox-api-key": auth.apikey,
- },
-*/
-
-var auth = sdk.auth = (function(){
- var auth = {}
-
- auth.appname = is_iphone ? "native-iphone-stoneisland/1.0.0" : "native-android-stoneisland/1.0.0"
- auth.apikey = "U2FsdGVkX18fThqg9bF0/ZgE9Jg948hn8O9EXli4B2729nAESCQaexv//M5+7+za"
- auth.device = "smartphone"
-
- auth.access_token = ""
- auth.user_id = -1
-
- auth.next_view = null
- auth.deferred_product = null
-
- // ios: integrate keychain api
- // android: cordova.file.externalRootDirectory api
-
- auth.init = function(fn){
- console.log("AUTH INIT")
- auth.get_user(function(){
- if (auth.logged_in()) {
- sdk.account.checkin({
- success: function(data){
- fn && fn( auth.logged_in() )
- },
- error: function(){
- auth.log_out()
- fn && fn( false )
- //
- },
- })
- auth.get_cart()
- }
- else {
- fn && fn( auth.logged_in() )
- }
- })
- }
-
- auth.set_user = function(user_id, access_token, cb){
- auth.access_token = access_token
- auth.user_id = user_id
-
- localStorage.setItem("yoox.access_token", access_token)
- localStorage.setItem("yoox.user_id", user_id)
-
- window.FirebasePlugin && window.FirebasePlugin.setUserId(user_id)
-
- cb && cb()
- }
- auth.get_user = function(cb){
- auth.access_token = localStorage.getItem("yoox.access_token") || ""
- auth.user_id = localStorage.getItem("yoox.user_id") || -1
- cb && cb()
- }
- auth.clear_user = function(cb){
- auth.access_token = ""
- auth.user_id = -1
- localStorage.removeItem("yoox.access_token")
- localStorage.removeItem("yoox.user_id")
-
- cb && cb()
- }
-
- auth.set_cart = function(cart_id, cart_token, cb){
- localStorage.setItem("yoox.cart_token", cart_token)
- localStorage.setItem("yoox.cart_id", cart_id)
- cb && cb()
- }
- auth.get_cart = function(cb){
- sdk.cart.token = localStorage.getItem("yoox.cart_token") || ""
- sdk.cart.id = localStorage.getItem("yoox.cart_id") || -1
- cb && cb()
- }
- auth.clear_cart = function(cb){
- sdk.cart.token = ""
- sdk.cart.id = -1
- localStorage.removeItem("yoox.cart_token")
- localStorage.removeItem("yoox.cart_id")
- cb && cb()
- }
- auth.create_cart = function(opt){
- opt = opt || {}
- if (auth.has_cart()) {
- opt.success && opt.success()
- return
- }
- sdk.cart.initialize({
- success: function(data){
- sdk.cart.set_user({
- success: function(){
- auth.set_cart(sdk.cart.id, sdk.cart.token, function(){
- opt.success && opt.success()
- })
- },
- error: function(){
- opt.clear_cart()
- opt.error && opt.error()
- },
- })
- },
- error: function(){
- opt.clear_cart()
- opt.error && opt.error()
- }
- })
- }
-
- auth.add_deferred_product_to_cart = function(opt){
- opt = opt || {}
- // auth.deferred_product
- if (! auth.deferred_product) {
- console.log("VV NO DEFERRED PROD")
- opt.success && opt.success()
- return
- }
- sdk.cart.add_item({
- data: auth.deferred_product,
- success: function(){
- console.log("ADDED ITEM")
- app.header.increment_cart_count()
- opt.success && opt.success()
- },
- error: function(data){
- console.log("ERROR ADDING ITEM")
- opt.error && opt.error()
- },
- })
- auth.deferred_product = null
- }
-
- auth.log_out = function(){
- auth.clear_user()
- auth.clear_cart()
- }
- auth.logged_in = function(){
- return (auth.user_id && auth.user_id !== -1 && auth.user_id !== "undefined")
- }
- auth.has_cart = function(){
- return (sdk.cart.id && sdk.cart.id !== -1 && sdk.cart.id !== "undefined")
- }
-
- return auth
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/cart.js b/StoneIsland/platforms/android/assets/www/js/sdk/cart.js
deleted file mode 100755
index 3ff2e1d2..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/cart.js
+++ /dev/null
@@ -1,248 +0,0 @@
-sdk.cart = (function(){
- var cart = {}
-
- cart.id = ""
- cart.token = ""
-
- // https://gist.github.com/fanfare/9a50c524aea417d0bf3e
- cart.initialize = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Cart.API/1.6", "carts.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-device": auth.device,
- },
- data: "{}",
- // data: opt.data,
- success: function(data){
- cart.id = data["CartSession"]["CartId"]
- cart.token = data["CartSession"]["CartToken"]
- auth.set_cart( cart.id, cart.token )
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.set_user = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/user.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify({
- "UserId": auth.user_id,
- "UserToken": auth.access_token,
- }),
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- // Code10, Size, Section
- cart.add_item = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/items.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.delete_item = function(opt){
- return $.ajax({
- method: "DELETE",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id +
- "/items/" + opt.data.Code10 +
- "/" + opt.data.Size + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: "{}",
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.get_status = function(opt){
- if (! cart.id) {
- return opt.error({ error: "no cart" })
- }
- return $.ajax({
- method: "GET",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- "x-yoox-device": auth.device,
- },
- success: function(data){
- if (data['Error']) {
- opt.error && opt.error(data)
- }
- else {
- opt.success(data)
- }
- },
- error: opt.error,
- })
- }
-
- cart.set_shipping_address = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/receiver.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify(opt.data),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- // NB: Payment type may simply be 1 (credit card)
- cart.set_payment_type = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/paymentType.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.get_card_types = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Cart.API/1.6", "cardTypes.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: "",
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- // use with full CC data if not storing it in wallet
- cart.set_credit_card = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/creditCard.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- // use with a stored GUID
- // NB: if "verification number" is 1, use CVV/CID/CVC security code
- // if "verification number" is 2, use "Issue Number"
- cart.use_stored_credit_card = function(opt){
- var data = {
- "Guid": opt.data.guid,
- "UserId": auth.user_id,
- "AccessToken": auth.access_token,
- }
- if (opt.data.cvv) {
- data["Cvv"] = opt.data.cvv
- }
- if (opt.data.issue) {
- data["Issue"] = opt.data.issue
- }
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/userCreditCard.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify(data),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.secure_finalize = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/secureFinalizer.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- "x-yoox-device": auth.device,
- },
- data: JSON.stringify( opt.data || {} ),
- success: function(data){
- console.log(data)
- // order number is:
- // "Info": "2905Y07FA13020"
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- cart.finalize = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Cart.API/1.6", "carts/" + cart.id + "/finalizer.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": cart.token,
- },
- data: JSON.stringify( opt.data || {} ),
- success: function(data){
- console.log(data)
- // order number is:
- // "Info": "2905Y07FA13020"
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- return cart
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/payment.js b/StoneIsland/platforms/android/assets/www/js/sdk/payment.js
deleted file mode 100755
index 283fee92..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/payment.js
+++ /dev/null
@@ -1,72 +0,0 @@
-sdk.payment = (function(){
- var payment = {}
-
- payment.add_credit_card = function(opt){
- return $.ajax({
- method: "POST",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: JSON.stringify( opt.data ),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- payment.list_credit_cards = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: opt.data,
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- payment.delete_credit_card = function(opt){
- return $.ajax({
- method: "DELETE",
- url: sdk.path("Account.API/1.5", "users/" + auth.user_id + "/cards/" + opt.guid + ".json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-account-token": auth.access_token,
- },
- data: "{}",
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- payment.get_payment_types = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Cart.API/1.6", "availablePaymentTypes.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-device": auth.device,
- },
- data: opt.data,
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- return payment
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/product.js b/StoneIsland/platforms/android/assets/www/js/sdk/product.js
deleted file mode 100755
index 3619b0bd..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/product.js
+++ /dev/null
@@ -1,68 +0,0 @@
-sdk.product = (function(){
- var product = {}
-
- var default_gallery = 31617
- var default_department = "NkXStnsl"
-
- product.all = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Search.API/1.3", "search.json", "US"),
- data: { format: "full", productsPerPage: 100 },
- success: opt.success,
- error: opt.error,
- })
- }
-
- product.collection = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Search.API/1.3", "search.json", "US"),
- data: { format: "full", department: opt.department_id || default_department, productsPerPage: 100 },
- success: opt.success,
- error: opt.error,
- })
- }
-
- product.department_codes = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Search.API/1.3", "search/results.json", "US"),
- data: { format: "full", department: opt.department_id || default_department, page: 1 },
- success: opt.success,
- error: opt.error,
- })
- }
-
- product.collection_by_gallery = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Search.API/1.2", "search.json", "US"),
- data: { format: "full", gallery: opt.gallery_id || default_gallery, productsPerPage: 100 },
- success: opt.success,
- error: opt.error,
- })
- }
-
- // https://gist.github.com/fanfare/2d25d1b36944188948ff
- product.item = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Item.API/1.0", "item/" + opt.code + ".json"),
- success: opt.success,
- error: opt.error,
- })
- }
-
- product.search = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Search.API/1.2", "search.json"),
- data: { format: "full", gallery: opt.gallery_id || default_gallery, textSearch: opt.query, productsPerPage: 100 },
- success: opt.success,
- error: opt.error,
- })
- }
-
- return product
-})() \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js b/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js
deleted file mode 100755
index 28a0db76..00000000
--- a/StoneIsland/platforms/android/assets/www/js/sdk/shipping.js
+++ /dev/null
@@ -1,85 +0,0 @@
-sdk.shipping = (function() {
- var shipping = {}
-
-
- // https://gist.github.com/fanfare/edb524128461b573d833
-
- // BOX TYPE
-
- shipping.get_box_types = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/availableBoxTypes.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": sdk.cart.token,
- },
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- shipping.set_box_type = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/boxType.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": sdk.cart.token,
- },
- data: JSON.stringify({
- "Type": opt.type,
- }),
- success: function(data){
- // console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
-
- // DELIVERY TYPES
-
- // The response is different than described in the API reference..
- // https://gist.github.com/fanfare/15dfbca6a16ae6bed503
-
- shipping.get_delivery_types = function(opt){
- return $.ajax({
- method: "GET",
- url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/availableDeliveryTypes.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": sdk.cart.token,
- },
- success: function(data){
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- shipping.set_delivery_type = function(opt){
- return $.ajax({
- method: "PUT",
- url: sdk.path("Cart.API/1.6", "carts/" + sdk.cart.id + "/deliveryType.json"),
- headers: {
- "x-yoox-appname": auth.appname,
- "x-yoox-cart-token": sdk.cart.token,
- },
- data: JSON.stringify({
- "Id": opt.id,
- }),
- success: function(data){
- //console.log(data)
- opt.success(data)
- },
- error: opt.error,
- })
- }
-
- return shipping
-})()
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/fastclick.js b/StoneIsland/platforms/android/assets/www/js/vendor/fastclick.js
deleted file mode 100755
index 9c746c2b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/fastclick.js
+++ /dev/null
@@ -1,790 +0,0 @@
-/**
- * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs.
- *
- * @version 1.0.1
- * @codingstandard ftlabs-jsv2
- * @copyright The Financial Times Limited [All Rights Reserved]
- * @license MIT License (see LICENSE.txt)
- */
-
-/*jslint browser:true, node:true*/
-/*global define, Event, Node*/
-
-
-/**
- * Instantiate fast-clicking listeners on the specified layer.
- *
- * @constructor
- * @param {Element} layer The layer to listen on
- * @param {Object} options The options to override the defaults
- */
-function FastClick(layer, options) {
- 'use strict';
- var oldOnClick;
-
- options = options || {};
-
- /**
- * Whether a click is currently being tracked.
- *
- * @type boolean
- */
- this.trackingClick = false;
-
-
- /**
- * Timestamp for when click tracking started.
- *
- * @type number
- */
- this.trackingClickStart = 0;
-
-
- /**
- * The element being tracked for a click.
- *
- * @type EventTarget
- */
- this.targetElement = null;
-
-
- /**
- * X-coordinate of touch start event.
- *
- * @type number
- */
- this.touchStartX = 0;
-
-
- /**
- * Y-coordinate of touch start event.
- *
- * @type number
- */
- this.touchStartY = 0;
-
-
- /**
- * ID of the last touch, retrieved from Touch.identifier.
- *
- * @type number
- */
- this.lastTouchIdentifier = 0;
-
-
- /**
- * Touchmove boundary, beyond which a click will be cancelled.
- *
- * @type number
- */
- this.touchBoundary = options.touchBoundary || 10;
-
-
- /**
- * The FastClick layer.
- *
- * @type Element
- */
- this.layer = layer;
-
- /**
- * The minimum time between tap(touchstart and touchend) events
- *
- * @type number
- */
- this.tapDelay = options.tapDelay || 200;
-
- if (FastClick.notNeeded(layer)) {
- return;
- }
-
- // Some old versions of Android don't have Function.prototype.bind
- function bind(method, context) {
- return function() { return method.apply(context, arguments); };
- }
-
-
- var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel'];
- var context = this;
- for (var i = 0, l = methods.length; i < l; i++) {
- context[methods[i]] = bind(context[methods[i]], context);
- }
-
- // Set up event handlers as required
- if (deviceIsAndroid) {
- layer.addEventListener('mouseover', this.onMouse, true);
- layer.addEventListener('mousedown', this.onMouse, true);
- layer.addEventListener('mouseup', this.onMouse, true);
- }
-
- layer.addEventListener('click', this.onClick, true);
- layer.addEventListener('touchstart', this.onTouchStart, false);
- layer.addEventListener('touchmove', this.onTouchMove, false);
- layer.addEventListener('touchend', this.onTouchEnd, false);
- layer.addEventListener('touchcancel', this.onTouchCancel, false);
-
- // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
- // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick
- // layer when they are cancelled.
- if (!Event.prototype.stopImmediatePropagation) {
- layer.removeEventListener = function(type, callback, capture) {
- var rmv = Node.prototype.removeEventListener;
- if (type === 'click') {
- rmv.call(layer, type, callback.hijacked || callback, capture);
- } else {
- rmv.call(layer, type, callback, capture);
- }
- };
-
- layer.addEventListener = function(type, callback, capture) {
- var adv = Node.prototype.addEventListener;
- if (type === 'click') {
- adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) {
- if (!event.propagationStopped) {
- callback(event);
- }
- }), capture);
- } else {
- adv.call(layer, type, callback, capture);
- }
- };
- }
-
- // If a handler is already declared in the element's onclick attribute, it will be fired before
- // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and
- // adding it as listener.
- if (typeof layer.onclick === 'function') {
-
- // Android browser on at least 3.2 requires a new reference to the function in layer.onclick
- // - the old one won't work if passed to addEventListener directly.
- oldOnClick = layer.onclick;
- layer.addEventListener('click', function(event) {
- oldOnClick(event);
- }, false);
- layer.onclick = null;
- }
-}
-
-
-/**
- * Android requires exceptions.
- *
- * @type boolean
- */
-var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0;
-
-
-/**
- * iOS requires exceptions.
- *
- * @type boolean
- */
-var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent);
-
-
-/**
- * iOS 4 requires an exception for select elements.
- *
- * @type boolean
- */
-var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent);
-
-
-/**
- * iOS 6.0(+?) requires the target element to be manually derived
- *
- * @type boolean
- */
-var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS ([6-9]|\d{2})_\d/).test(navigator.userAgent);
-
-
-/**
- * Determine whether a given element requires a native click.
- *
- * @param {EventTarget|Element} target Target DOM element
- * @returns {boolean} Returns true if the element needs a native click
- */
-FastClick.prototype.needsClick = function(target) {
- 'use strict';
- switch (target.nodeName.toLowerCase()) {
-
- // Don't send a synthetic click to disabled inputs (issue #62)
- case 'button':
- case 'select':
- case 'textarea':
- if (target.disabled) {
- return true;
- }
-
- break;
- case 'input':
-
- // File inputs need real clicks on iOS 6 due to a browser bug (issue #68)
- if ((deviceIsIOS && target.type === 'file') || target.disabled) {
- return true;
- }
-
- break;
- case 'label':
- case 'video':
- return true;
- }
-
- return (/\bneedsclick\b/).test(target.className);
-};
-
-
-/**
- * Determine whether a given element requires a call to focus to simulate click into element.
- *
- * @param {EventTarget|Element} target Target DOM element
- * @returns {boolean} Returns true if the element requires a call to focus to simulate native click.
- */
-FastClick.prototype.needsFocus = function(target) {
- 'use strict';
- switch (target.nodeName.toLowerCase()) {
- case 'textarea':
- return true;
- case 'select':
- return !deviceIsAndroid;
- case 'input':
- switch (target.type) {
- case 'button':
- case 'checkbox':
- case 'file':
- case 'image':
- case 'radio':
- case 'submit':
- return false;
- }
-
- // No point in attempting to focus disabled inputs
- return !target.disabled && !target.readOnly;
- default:
- return (/\bneedsfocus\b/).test(target.className);
- }
-};
-
-
-/**
- * Send a click event to the specified element.
- *
- * @param {EventTarget|Element} targetElement
- * @param {Event} event
- */
-FastClick.prototype.sendClick = function(targetElement, event) {
- 'use strict';
- var clickEvent, touch;
-
- // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24)
- if (document.activeElement && document.activeElement !== targetElement) {
- document.activeElement.blur();
- }
-
- touch = event.changedTouches[0];
-
- // Synthesise a click event, with an extra attribute so it can be tracked
- clickEvent = document.createEvent('MouseEvents');
- clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null);
- clickEvent.forwardedTouchEvent = true;
- targetElement.dispatchEvent(clickEvent);
-};
-
-FastClick.prototype.determineEventType = function(targetElement) {
- 'use strict';
-
- //Issue #159: Android Chrome Select Box does not open with a synthetic click event
- if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') {
- return 'mousedown';
- }
-
- return 'click';
-};
-
-
-/**
- * @param {EventTarget|Element} targetElement
- */
-FastClick.prototype.focus = function(targetElement) {
- 'use strict';
- var length;
-
- // Issue #160: on iOS 7, some input elements (e.g. date datetime) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724.
- if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time') {
- length = targetElement.value.length;
- targetElement.setSelectionRange(length, length);
- } else {
- targetElement.focus();
- }
-};
-
-
-/**
- * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it.
- *
- * @param {EventTarget|Element} targetElement
- */
-FastClick.prototype.updateScrollParent = function(targetElement) {
- 'use strict';
- var scrollParent, parentElement;
-
- scrollParent = targetElement.fastClickScrollParent;
-
- // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the
- // target element was moved to another parent.
- if (!scrollParent || !scrollParent.contains(targetElement)) {
- parentElement = targetElement;
- do {
- if (parentElement.scrollHeight > parentElement.offsetHeight) {
- scrollParent = parentElement;
- targetElement.fastClickScrollParent = parentElement;
- break;
- }
-
- parentElement = parentElement.parentElement;
- } while (parentElement);
- }
-
- // Always update the scroll top tracker if possible.
- if (scrollParent) {
- scrollParent.fastClickLastScrollTop = scrollParent.scrollTop;
- }
-};
-
-
-/**
- * @param {EventTarget} targetElement
- * @returns {Element|EventTarget}
- */
-FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) {
- 'use strict';
-
- // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node.
- if (eventTarget.nodeType === Node.TEXT_NODE) {
- return eventTarget.parentNode;
- }
-
- return eventTarget;
-};
-
-
-/**
- * On touch start, record the position and scroll offset.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchStart = function(event) {
- 'use strict';
- var targetElement, touch, selection;
-
- // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111).
- if (event.targetTouches.length > 1) {
- return true;
- }
-
- targetElement = this.getTargetElementFromEventTarget(event.target);
- touch = event.targetTouches[0];
-
- if (deviceIsIOS) {
-
- // Only trusted events will deselect text on iOS (issue #49)
- selection = window.getSelection();
- if (selection.rangeCount && !selection.isCollapsed) {
- return true;
- }
-
- if (!deviceIsIOS4) {
-
- // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23):
- // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched
- // with the same identifier as the touch event that previously triggered the click that triggered the alert.
- // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an
- // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform.
- if (touch.identifier === this.lastTouchIdentifier) {
- event.preventDefault();
- return false;
- }
-
- this.lastTouchIdentifier = touch.identifier;
-
- // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and:
- // 1) the user does a fling scroll on the scrollable layer
- // 2) the user stops the fling scroll with another tap
- // then the event.target of the last 'touchend' event will be the element that was under the user's finger
- // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check
- // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42).
- this.updateScrollParent(targetElement);
- }
- }
-
- this.trackingClick = true;
- this.trackingClickStart = event.timeStamp;
- this.targetElement = targetElement;
-
- this.touchStartX = touch.pageX;
- this.touchStartY = touch.pageY;
-
- // Prevent phantom clicks on fast double-tap (issue #36)
- if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
- event.preventDefault();
- }
-
- return true;
-};
-
-
-/**
- * Based on a touchmove event object, check whether the touch has moved past a boundary since it started.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.touchHasMoved = function(event) {
- 'use strict';
- var touch = event.changedTouches[0], boundary = this.touchBoundary;
-
- if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) {
- return true;
- }
-
- return false;
-};
-
-
-/**
- * Update the last position.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchMove = function(event) {
- 'use strict';
- if (!this.trackingClick) {
- return true;
- }
-
- // If the touch has moved, cancel the click tracking
- if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) {
- this.trackingClick = false;
- this.targetElement = null;
- }
-
- return true;
-};
-
-
-/**
- * Attempt to find the labelled control for the given label element.
- *
- * @param {EventTarget|HTMLLabelElement} labelElement
- * @returns {Element|null}
- */
-FastClick.prototype.findControl = function(labelElement) {
- 'use strict';
-
- // Fast path for newer browsers supporting the HTML5 control attribute
- if (labelElement.control !== undefined) {
- return labelElement.control;
- }
-
- // All browsers under test that support touch events also support the HTML5 htmlFor attribute
- if (labelElement.htmlFor) {
- return document.getElementById(labelElement.htmlFor);
- }
-
- // If no for attribute exists, attempt to retrieve the first labellable descendant element
- // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label
- return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea');
-};
-
-
-/**
- * On touch end, determine whether to send a click event at once.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onTouchEnd = function(event) {
- 'use strict';
- var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement;
-
- if (!this.trackingClick) {
- return true;
- }
-
- // Prevent phantom clicks on fast double-tap (issue #36)
- if ((event.timeStamp - this.lastClickTime) < this.tapDelay) {
- this.cancelNextClick = true;
- return true;
- }
-
- // Reset to prevent wrong click cancel on input (issue #156).
- this.cancelNextClick = false;
-
- this.lastClickTime = event.timeStamp;
-
- trackingClickStart = this.trackingClickStart;
- this.trackingClick = false;
- this.trackingClickStart = 0;
-
- // On some iOS devices, the targetElement supplied with the event is invalid if the layer
- // is performing a transition or scroll, and has to be re-detected manually. Note that
- // for this to function correctly, it must be called *after* the event target is checked!
- // See issue #57; also filed as rdar://13048589 .
- if (deviceIsIOSWithBadTarget) {
- touch = event.changedTouches[0];
-
- // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null
- targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement;
- targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent;
- }
-
- targetTagName = targetElement.tagName.toLowerCase();
- if (targetTagName === 'label') {
- forElement = this.findControl(targetElement);
- if (forElement) {
- this.focus(targetElement);
- if (deviceIsAndroid) {
- return false;
- }
-
- targetElement = forElement;
- }
- } else if (this.needsFocus(targetElement)) {
-
- // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through.
- // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37).
- if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) {
- this.targetElement = null;
- return false;
- }
-
- this.focus(targetElement);
- this.sendClick(targetElement, event);
-
- // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open.
- // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others)
- if (!deviceIsIOS || targetTagName !== 'select') {
- this.targetElement = null;
- event.preventDefault();
- }
-
- return false;
- }
-
- if (deviceIsIOS && !deviceIsIOS4) {
-
- // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled
- // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42).
- scrollParent = targetElement.fastClickScrollParent;
- if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) {
- return true;
- }
- }
-
- // Prevent the actual click from going though - unless the target node is marked as requiring
- // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted.
- if (!this.needsClick(targetElement)) {
- event.preventDefault();
- this.sendClick(targetElement, event);
- }
-
- return false;
-};
-
-
-/**
- * On touch cancel, stop tracking the click.
- *
- * @returns {void}
- */
-FastClick.prototype.onTouchCancel = function() {
- 'use strict';
- this.trackingClick = false;
- this.targetElement = null;
-};
-
-
-/**
- * Determine mouse events which should be permitted.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onMouse = function(event) {
- 'use strict';
-
- // If a target element was never set (because a touch event was never fired) allow the event
- if (!this.targetElement) {
- return true;
- }
-
- if (event.forwardedTouchEvent) {
- return true;
- }
-
- // Programmatically generated events targeting a specific element should be permitted
- if (!event.cancelable) {
- return true;
- }
-
- // Derive and check the target element to see whether the mouse event needs to be permitted;
- // unless explicitly enabled, prevent non-touch click events from triggering actions,
- // to prevent ghost/doubleclicks.
- if (!this.needsClick(this.targetElement) || this.cancelNextClick) {
-
- // Prevent any user-added listeners declared on FastClick element from being fired.
- if (event.stopImmediatePropagation) {
- event.stopImmediatePropagation();
- } else {
-
- // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2)
- event.propagationStopped = true;
- }
-
- // Cancel the event
- event.stopPropagation();
- event.preventDefault();
-
- return false;
- }
-
- // If the mouse event is permitted, return true for the action to go through.
- return true;
-};
-
-
-/**
- * On actual clicks, determine whether this is a touch-generated click, a click action occurring
- * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or
- * an actual click which should be permitted.
- *
- * @param {Event} event
- * @returns {boolean}
- */
-FastClick.prototype.onClick = function(event) {
- 'use strict';
- var permitted;
-
- // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early.
- if (this.trackingClick) {
- this.targetElement = null;
- this.trackingClick = false;
- return true;
- }
-
- // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target.
- if (event.target.type === 'submit' && event.detail === 0) {
- return true;
- }
-
- permitted = this.onMouse(event);
-
- // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through.
- if (!permitted) {
- this.targetElement = null;
- }
-
- // If clicks are permitted, return true for the action to go through.
- return permitted;
-};
-
-
-/**
- * Remove all FastClick's event listeners.
- *
- * @returns {void}
- */
-FastClick.prototype.destroy = function() {
- 'use strict';
- var layer = this.layer;
-
- if (deviceIsAndroid) {
- layer.removeEventListener('mouseover', this.onMouse, true);
- layer.removeEventListener('mousedown', this.onMouse, true);
- layer.removeEventListener('mouseup', this.onMouse, true);
- }
-
- layer.removeEventListener('click', this.onClick, true);
- layer.removeEventListener('touchstart', this.onTouchStart, false);
- layer.removeEventListener('touchmove', this.onTouchMove, false);
- layer.removeEventListener('touchend', this.onTouchEnd, false);
- layer.removeEventListener('touchcancel', this.onTouchCancel, false);
-};
-
-
-/**
- * Check whether FastClick is needed.
- *
- * @param {Element} layer The layer to listen on
- */
-FastClick.notNeeded = function(layer) {
- 'use strict';
- var metaViewport;
- var chromeVersion;
-
- // Devices that don't support touch don't need FastClick
- if (typeof window.ontouchstart === 'undefined') {
- return true;
- }
-
- // Chrome version - zero for other browsers
- chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1];
-
- if (chromeVersion) {
-
- if (deviceIsAndroid) {
- metaViewport = document.querySelector('meta[name=viewport]');
-
- if (metaViewport) {
- // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89)
- if (metaViewport.content.indexOf('user-scalable=no') !== -1) {
- return true;
- }
- // Chrome 32 and above with width=device-width or less don't need FastClick
- if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) {
- return true;
- }
- }
-
- // Chrome desktop doesn't need FastClick (issue #15)
- } else {
- return true;
- }
- }
-
- // IE10 with -ms-touch-action: none, which disables double-tap-to-zoom (issue #97)
- if (layer.style.msTouchAction === 'none') {
- return true;
- }
-
- return false;
-};
-
-
-/**
- * Factory method for creating a FastClick object
- *
- * @param {Element} layer The layer to listen on
- * @param {Object} options The options to override the defaults
- */
-FastClick.attach = function(layer, options) {
- 'use strict';
- return new FastClick(layer, options);
-};
-
-
-if (typeof define !== 'undefined' && define.amd) {
-
- // AMD. Register as an anonymous module.
- define(function() {
- 'use strict';
- return FastClick;
- });
-} else if (typeof module !== 'undefined' && module.exports) {
- module.exports = FastClick.attach;
- module.exports.FastClick = FastClick;
-} else {
- window.FastClick = FastClick;
-}
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/flickity.pkgd.js b/StoneIsland/platforms/android/assets/www/js/vendor/flickity.pkgd.js
deleted file mode 100755
index 0471fa5b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/flickity.pkgd.js
+++ /dev/null
@@ -1,5090 +0,0 @@
-/*!
- * Flickity PACKAGED v1.0.1
- * Touch, responsive, flickable galleries
- *
- * Licensed GPLv3 for open source use
- * or Flickity Commercial License for commercial use
- *
- * http://flickity.metafizzy.co
- * Copyright 2015 Metafizzy
- */
-
-/**
- * Bridget makes jQuery widgets
- * v1.1.0
- * MIT license
- */
-
-( function( window ) {
-
-
-
-// -------------------------- utils -------------------------- //
-
-var slice = Array.prototype.slice;
-
-function noop() {}
-
-// -------------------------- definition -------------------------- //
-
-function defineBridget( $ ) {
-
-// bail if no jQuery
-if ( !$ ) {
- return;
-}
-
-// -------------------------- addOptionMethod -------------------------- //
-
-/**
- * adds option method -> $().plugin('option', {...})
- * @param {Function} PluginClass - constructor class
- */
-function addOptionMethod( PluginClass ) {
- // don't overwrite original option method
- if ( PluginClass.prototype.option ) {
- return;
- }
-
- // option setter
- PluginClass.prototype.option = function( opts ) {
- // bail out if not an object
- if ( !$.isPlainObject( opts ) ){
- return;
- }
- this.options = $.extend( true, this.options, opts );
- };
-}
-
-// -------------------------- plugin bridge -------------------------- //
-
-// helper function for logging errors
-// $.error breaks jQuery chaining
-var logError = typeof console === 'undefined' ? noop :
- function( message ) {
- console.error( message );
- };
-
-/**
- * jQuery plugin bridge, access methods like $elem.plugin('method')
- * @param {String} namespace - plugin name
- * @param {Function} PluginClass - constructor class
- */
-function bridge( namespace, PluginClass ) {
- // add to jQuery fn namespace
- $.fn[ namespace ] = function( options ) {
- if ( typeof options === 'string' ) {
- // call plugin method when first argument is a string
- // get arguments for method
- var args = slice.call( arguments, 1 );
-
- for ( var i=0, len = this.length; i < len; i++ ) {
- var elem = this[i];
- var instance = $.data( elem, namespace );
- if ( !instance ) {
- logError( "cannot call methods on " + namespace + " prior to initialization; " +
- "attempted to call '" + options + "'" );
- continue;
- }
- if ( !$.isFunction( instance[options] ) || options.charAt(0) === '_' ) {
- logError( "no such method '" + options + "' for " + namespace + " instance" );
- continue;
- }
-
- // trigger method with arguments
- var returnValue = instance[ options ].apply( instance, args );
-
- // break look and return first value if provided
- if ( returnValue !== undefined ) {
- return returnValue;
- }
- }
- // return this if no return value
- return this;
- } else {
- return this.each( function() {
- var instance = $.data( this, namespace );
- if ( instance ) {
- // apply options & init
- instance.option( options );
- instance._init();
- } else {
- // initialize new instance
- instance = new PluginClass( this, options );
- $.data( this, namespace, instance );
- }
- });
- }
- };
-
-}
-
-// -------------------------- bridget -------------------------- //
-
-/**
- * converts a Prototypical class into a proper jQuery plugin
- * the class must have a ._init method
- * @param {String} namespace - plugin name, used in $().pluginName
- * @param {Function} PluginClass - constructor class
- */
-$.bridget = function( namespace, PluginClass ) {
- addOptionMethod( PluginClass );
- bridge( namespace, PluginClass );
-};
-
-return $.bridget;
-
-}
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'jquery-bridget/jquery.bridget',[ 'jquery' ], defineBridget );
-} else if ( typeof exports === 'object' ) {
- defineBridget( require('jquery') );
-} else {
- // get jquery from browser global
- defineBridget( window.jQuery );
-}
-
-})( window );
-
-/*!
- * classie v1.0.1
- * class helper functions
- * from bonzo https://github.com/ded/bonzo
- * MIT license
- *
- * classie.has( elem, 'my-class' ) -> true/false
- * classie.add( elem, 'my-new-class' )
- * classie.remove( elem, 'my-unwanted-class' )
- * classie.toggle( elem, 'my-class' )
- */
-
-/*jshint browser: true, strict: true, undef: true, unused: true */
-/*global define: false, module: false */
-
-( function( window ) {
-
-
-
-// class helper functions from bonzo https://github.com/ded/bonzo
-
-function classReg( className ) {
- return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
-}
-
-// classList support for class management
-// altho to be fair, the api sucks because it won't accept multiple classes at once
-var hasClass, addClass, removeClass;
-
-if ( 'classList' in document.documentElement ) {
- hasClass = function( elem, c ) {
- return elem.classList.contains( c );
- };
- addClass = function( elem, c ) {
- elem.classList.add( c );
- };
- removeClass = function( elem, c ) {
- elem.classList.remove( c );
- };
-}
-else {
- hasClass = function( elem, c ) {
- return classReg( c ).test( elem.className );
- };
- addClass = function( elem, c ) {
- if ( !hasClass( elem, c ) ) {
- elem.className = elem.className + ' ' + c;
- }
- };
- removeClass = function( elem, c ) {
- elem.className = elem.className.replace( classReg( c ), ' ' );
- };
-}
-
-function toggleClass( elem, c ) {
- var fn = hasClass( elem, c ) ? removeClass : addClass;
- fn( elem, c );
-}
-
-var classie = {
- // full names
- hasClass: hasClass,
- addClass: addClass,
- removeClass: removeClass,
- toggleClass: toggleClass,
- // short names
- has: hasClass,
- add: addClass,
- remove: removeClass,
- toggle: toggleClass
-};
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'classie/classie',classie );
-} else if ( typeof exports === 'object' ) {
- // CommonJS
- module.exports = classie;
-} else {
- // browser global
- window.classie = classie;
-}
-
-})( window );
-
-/*!
- * EventEmitter v4.2.11 - git.io/ee
- * Unlicense - http://unlicense.org/
- * Oliver Caldwell - http://oli.me.uk/
- * @preserve
- */
-
-;(function () {
-
-
- /**
- * Class for managing events.
- * Can be extended to provide event functionality in other classes.
- *
- * @class EventEmitter Manages event registering and emitting.
- */
- function EventEmitter() {}
-
- // Shortcuts to improve speed and size
- var proto = EventEmitter.prototype;
- var exports = this;
- var originalGlobalValue = exports.EventEmitter;
-
- /**
- * Finds the index of the listener for the event in its storage array.
- *
- * @param {Function[]} listeners Array of listeners to search through.
- * @param {Function} listener Method to look for.
- * @return {Number} Index of the specified listener, -1 if not found
- * @api private
- */
- function indexOfListener(listeners, listener) {
- var i = listeners.length;
- while (i--) {
- if (listeners[i].listener === listener) {
- return i;
- }
- }
-
- return -1;
- }
-
- /**
- * Alias a method while keeping the context correct, to allow for overwriting of target method.
- *
- * @param {String} name The name of the target method.
- * @return {Function} The aliased method
- * @api private
- */
- function alias(name) {
- return function aliasClosure() {
- return this[name].apply(this, arguments);
- };
- }
-
- /**
- * Returns the listener array for the specified event.
- * Will initialise the event object and listener arrays if required.
- * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.
- * Each property in the object response is an array of listener functions.
- *
- * @param {String|RegExp} evt Name of the event to return the listeners from.
- * @return {Function[]|Object} All listener functions for the event.
- */
- proto.getListeners = function getListeners(evt) {
- var events = this._getEvents();
- var response;
- var key;
-
- // Return a concatenated array of all matching events if
- // the selector is a regular expression.
- if (evt instanceof RegExp) {
- response = {};
- for (key in events) {
- if (events.hasOwnProperty(key) && evt.test(key)) {
- response[key] = events[key];
- }
- }
- }
- else {
- response = events[evt] || (events[evt] = []);
- }
-
- return response;
- };
-
- /**
- * Takes a list of listener objects and flattens it into a list of listener functions.
- *
- * @param {Object[]} listeners Raw listener objects.
- * @return {Function[]} Just the listener functions.
- */
- proto.flattenListeners = function flattenListeners(listeners) {
- var flatListeners = [];
- var i;
-
- for (i = 0; i < listeners.length; i += 1) {
- flatListeners.push(listeners[i].listener);
- }
-
- return flatListeners;
- };
-
- /**
- * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.
- *
- * @param {String|RegExp} evt Name of the event to return the listeners from.
- * @return {Object} All listener functions for an event in an object.
- */
- proto.getListenersAsObject = function getListenersAsObject(evt) {
- var listeners = this.getListeners(evt);
- var response;
-
- if (listeners instanceof Array) {
- response = {};
- response[evt] = listeners;
- }
-
- return response || listeners;
- };
-
- /**
- * Adds a listener function to the specified event.
- * The listener will not be added if it is a duplicate.
- * If the listener returns true then it will be removed after it is called.
- * If you pass a regular expression as the event name then the listener will be added to all events that match it.
- *
- * @param {String|RegExp} evt Name of the event to attach the listener to.
- * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.addListener = function addListener(evt, listener) {
- var listeners = this.getListenersAsObject(evt);
- var listenerIsWrapped = typeof listener === 'object';
- var key;
-
- for (key in listeners) {
- if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {
- listeners[key].push(listenerIsWrapped ? listener : {
- listener: listener,
- once: false
- });
- }
- }
-
- return this;
- };
-
- /**
- * Alias of addListener
- */
- proto.on = alias('addListener');
-
- /**
- * Semi-alias of addListener. It will add a listener that will be
- * automatically removed after its first execution.
- *
- * @param {String|RegExp} evt Name of the event to attach the listener to.
- * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.addOnceListener = function addOnceListener(evt, listener) {
- return this.addListener(evt, {
- listener: listener,
- once: true
- });
- };
-
- /**
- * Alias of addOnceListener.
- */
- proto.once = alias('addOnceListener');
-
- /**
- * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.
- * You need to tell it what event names should be matched by a regex.
- *
- * @param {String} evt Name of the event to create.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.defineEvent = function defineEvent(evt) {
- this.getListeners(evt);
- return this;
- };
-
- /**
- * Uses defineEvent to define multiple events.
- *
- * @param {String[]} evts An array of event names to define.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.defineEvents = function defineEvents(evts) {
- for (var i = 0; i < evts.length; i += 1) {
- this.defineEvent(evts[i]);
- }
- return this;
- };
-
- /**
- * Removes a listener function from the specified event.
- * When passed a regular expression as the event name, it will remove the listener from all events that match it.
- *
- * @param {String|RegExp} evt Name of the event to remove the listener from.
- * @param {Function} listener Method to remove from the event.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.removeListener = function removeListener(evt, listener) {
- var listeners = this.getListenersAsObject(evt);
- var index;
- var key;
-
- for (key in listeners) {
- if (listeners.hasOwnProperty(key)) {
- index = indexOfListener(listeners[key], listener);
-
- if (index !== -1) {
- listeners[key].splice(index, 1);
- }
- }
- }
-
- return this;
- };
-
- /**
- * Alias of removeListener
- */
- proto.off = alias('removeListener');
-
- /**
- * Adds listeners in bulk using the manipulateListeners method.
- * If you pass an object as the second argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.
- * You can also pass it a regular expression to add the array of listeners to all events that match it.
- * Yeah, this function does quite a bit. That's probably a bad thing.
- *
- * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.
- * @param {Function[]} [listeners] An optional array of listener functions to add.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.addListeners = function addListeners(evt, listeners) {
- // Pass through to manipulateListeners
- return this.manipulateListeners(false, evt, listeners);
- };
-
- /**
- * Removes listeners in bulk using the manipulateListeners method.
- * If you pass an object as the second argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
- * You can also pass it an event name and an array of listeners to be removed.
- * You can also pass it a regular expression to remove the listeners from all events that match it.
- *
- * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.
- * @param {Function[]} [listeners] An optional array of listener functions to remove.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.removeListeners = function removeListeners(evt, listeners) {
- // Pass through to manipulateListeners
- return this.manipulateListeners(true, evt, listeners);
- };
-
- /**
- * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.
- * The first argument will determine if the listeners are removed (true) or added (false).
- * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.
- * You can also pass it an event name and an array of listeners to be added/removed.
- * You can also pass it a regular expression to manipulate the listeners of all events that match it.
- *
- * @param {Boolean} remove True if you want to remove listeners, false if you want to add.
- * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.
- * @param {Function[]} [listeners] An optional array of listener functions to add/remove.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {
- var i;
- var value;
- var single = remove ? this.removeListener : this.addListener;
- var multiple = remove ? this.removeListeners : this.addListeners;
-
- // If evt is an object then pass each of its properties to this method
- if (typeof evt === 'object' && !(evt instanceof RegExp)) {
- for (i in evt) {
- if (evt.hasOwnProperty(i) && (value = evt[i])) {
- // Pass the single listener straight through to the singular method
- if (typeof value === 'function') {
- single.call(this, i, value);
- }
- else {
- // Otherwise pass back to the multiple function
- multiple.call(this, i, value);
- }
- }
- }
- }
- else {
- // So evt must be a string
- // And listeners must be an array of listeners
- // Loop over it and pass each one to the multiple method
- i = listeners.length;
- while (i--) {
- single.call(this, evt, listeners[i]);
- }
- }
-
- return this;
- };
-
- /**
- * Removes all listeners from a specified event.
- * If you do not specify an event then all listeners will be removed.
- * That means every event will be emptied.
- * You can also pass a regex to remove all events that match it.
- *
- * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.removeEvent = function removeEvent(evt) {
- var type = typeof evt;
- var events = this._getEvents();
- var key;
-
- // Remove different things depending on the state of evt
- if (type === 'string') {
- // Remove all listeners for the specified event
- delete events[evt];
- }
- else if (evt instanceof RegExp) {
- // Remove all events matching the regex.
- for (key in events) {
- if (events.hasOwnProperty(key) && evt.test(key)) {
- delete events[key];
- }
- }
- }
- else {
- // Remove all listeners in all events
- delete this._events;
- }
-
- return this;
- };
-
- /**
- * Alias of removeEvent.
- *
- * Added to mirror the node API.
- */
- proto.removeAllListeners = alias('removeEvent');
-
- /**
- * Emits an event of your choice.
- * When emitted, every listener attached to that event will be executed.
- * If you pass the optional argument array then those arguments will be passed to every listener upon execution.
- * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.
- * So they will not arrive within the array on the other side, they will be separate.
- * You can also pass a regular expression to emit to all events that match it.
- *
- * @param {String|RegExp} evt Name of the event to emit and execute listeners for.
- * @param {Array} [args] Optional array of arguments to be passed to each listener.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.emitEvent = function emitEvent(evt, args) {
- var listeners = this.getListenersAsObject(evt);
- var listener;
- var i;
- var key;
- var response;
-
- for (key in listeners) {
- if (listeners.hasOwnProperty(key)) {
- i = listeners[key].length;
-
- while (i--) {
- // If the listener returns true then it shall be removed from the event
- // The function is executed either with a basic call or an apply if there is an args array
- listener = listeners[key][i];
-
- if (listener.once === true) {
- this.removeListener(evt, listener.listener);
- }
-
- response = listener.listener.apply(this, args || []);
-
- if (response === this._getOnceReturnValue()) {
- this.removeListener(evt, listener.listener);
- }
- }
- }
- }
-
- return this;
- };
-
- /**
- * Alias of emitEvent
- */
- proto.trigger = alias('emitEvent');
-
- /**
- * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.
- * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.
- *
- * @param {String|RegExp} evt Name of the event to emit and execute listeners for.
- * @param {...*} Optional additional arguments to be passed to each listener.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.emit = function emit(evt) {
- var args = Array.prototype.slice.call(arguments, 1);
- return this.emitEvent(evt, args);
- };
-
- /**
- * Sets the current value to check against when executing listeners. If a
- * listeners return value matches the one set here then it will be removed
- * after execution. This value defaults to true.
- *
- * @param {*} value The new value to check for when executing listeners.
- * @return {Object} Current instance of EventEmitter for chaining.
- */
- proto.setOnceReturnValue = function setOnceReturnValue(value) {
- this._onceReturnValue = value;
- return this;
- };
-
- /**
- * Fetches the current value to check against when executing listeners. If
- * the listeners return value matches this one then it should be removed
- * automatically. It will return true by default.
- *
- * @return {*|Boolean} The current value to check for or the default, true.
- * @api private
- */
- proto._getOnceReturnValue = function _getOnceReturnValue() {
- if (this.hasOwnProperty('_onceReturnValue')) {
- return this._onceReturnValue;
- }
- else {
- return true;
- }
- };
-
- /**
- * Fetches the events object and creates one if required.
- *
- * @return {Object} The events storage object.
- * @api private
- */
- proto._getEvents = function _getEvents() {
- return this._events || (this._events = {});
- };
-
- /**
- * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.
- *
- * @return {Function} Non conflicting EventEmitter class.
- */
- EventEmitter.noConflict = function noConflict() {
- exports.EventEmitter = originalGlobalValue;
- return EventEmitter;
- };
-
- // Expose the class either via AMD, CommonJS or the global object
- if (typeof define === 'function' && define.amd) {
- define('eventEmitter/EventEmitter',[],function () {
- return EventEmitter;
- });
- }
- else if (typeof module === 'object' && module.exports){
- module.exports = EventEmitter;
- }
- else {
- exports.EventEmitter = EventEmitter;
- }
-}.call(this));
-
-/*!
- * eventie v1.0.6
- * event binding helper
- * eventie.bind( elem, 'click', myFn )
- * eventie.unbind( elem, 'click', myFn )
- * MIT license
- */
-
-/*jshint browser: true, undef: true, unused: true */
-/*global define: false, module: false */
-
-( function( window ) {
-
-
-
-var docElem = document.documentElement;
-
-var bind = function() {};
-
-function getIEEvent( obj ) {
- var event = window.event;
- // add event.target
- event.target = event.target || event.srcElement || obj;
- return event;
-}
-
-if ( docElem.addEventListener ) {
- bind = function( obj, type, fn ) {
- obj.addEventListener( type, fn, false );
- };
-} else if ( docElem.attachEvent ) {
- bind = function( obj, type, fn ) {
- obj[ type + fn ] = fn.handleEvent ?
- function() {
- var event = getIEEvent( obj );
- fn.handleEvent.call( fn, event );
- } :
- function() {
- var event = getIEEvent( obj );
- fn.call( obj, event );
- };
- obj.attachEvent( "on" + type, obj[ type + fn ] );
- };
-}
-
-var unbind = function() {};
-
-if ( docElem.removeEventListener ) {
- unbind = function( obj, type, fn ) {
- obj.removeEventListener( type, fn, false );
- };
-} else if ( docElem.detachEvent ) {
- unbind = function( obj, type, fn ) {
- obj.detachEvent( "on" + type, obj[ type + fn ] );
- try {
- delete obj[ type + fn ];
- } catch ( err ) {
- // can't delete window object properties
- obj[ type + fn ] = undefined;
- }
- };
-}
-
-var eventie = {
- bind: bind,
- unbind: unbind
-};
-
-// ----- module definition ----- //
-
-if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'eventie/eventie',eventie );
-} else if ( typeof exports === 'object' ) {
- // CommonJS
- module.exports = eventie;
-} else {
- // browser global
- window.eventie = eventie;
-}
-
-})( window );
-
-/*!
- * getStyleProperty v1.0.4
- * original by kangax
- * http://perfectionkills.com/feature-testing-css-properties/
- * MIT license
- */
-
-/*jshint browser: true, strict: true, undef: true */
-/*global define: false, exports: false, module: false */
-
-( function( window ) {
-
-
-
-var prefixes = 'Webkit Moz ms Ms O'.split(' ');
-var docElemStyle = document.documentElement.style;
-
-function getStyleProperty( propName ) {
- if ( !propName ) {
- return;
- }
-
- // test standard property first
- if ( typeof docElemStyle[ propName ] === 'string' ) {
- return propName;
- }
-
- // capitalize
- propName = propName.charAt(0).toUpperCase() + propName.slice(1);
-
- // test vendor specific properties
- var prefixed;
- for ( var i=0, len = prefixes.length; i < len; i++ ) {
- prefixed = prefixes[i] + propName;
- if ( typeof docElemStyle[ prefixed ] === 'string' ) {
- return prefixed;
- }
- }
-}
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'get-style-property/get-style-property',[],function() {
- return getStyleProperty;
- });
-} else if ( typeof exports === 'object' ) {
- // CommonJS for Component
- module.exports = getStyleProperty;
-} else {
- // browser global
- window.getStyleProperty = getStyleProperty;
-}
-
-})( window );
-
-/*!
- * getSize v1.2.2
- * measure size of elements
- * MIT license
- */
-
-/*jshint browser: true, strict: true, undef: true, unused: true */
-/*global define: false, exports: false, require: false, module: false, console: false */
-
-( function( window, undefined ) {
-
-
-
-// -------------------------- helpers -------------------------- //
-
-// get a number from a string, not a percentage
-function getStyleSize( value ) {
- var num = parseFloat( value );
- // not a percent like '100%', and a number
- var isValid = value.indexOf('%') === -1 && !isNaN( num );
- return isValid && num;
-}
-
-function noop() {}
-
-var logError = typeof console === 'undefined' ? noop :
- function( message ) {
- console.error( message );
- };
-
-// -------------------------- measurements -------------------------- //
-
-var measurements = [
- 'paddingLeft',
- 'paddingRight',
- 'paddingTop',
- 'paddingBottom',
- 'marginLeft',
- 'marginRight',
- 'marginTop',
- 'marginBottom',
- 'borderLeftWidth',
- 'borderRightWidth',
- 'borderTopWidth',
- 'borderBottomWidth'
-];
-
-function getZeroSize() {
- var size = {
- width: 0,
- height: 0,
- innerWidth: 0,
- innerHeight: 0,
- outerWidth: 0,
- outerHeight: 0
- };
- for ( var i=0, len = measurements.length; i < len; i++ ) {
- var measurement = measurements[i];
- size[ measurement ] = 0;
- }
- return size;
-}
-
-
-
-function defineGetSize( getStyleProperty ) {
-
-// -------------------------- setup -------------------------- //
-
-var isSetup = false;
-
-var getStyle, boxSizingProp, isBoxSizeOuter;
-
-/**
- * setup vars and functions
- * do it on initial getSize(), rather than on script load
- * For Firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=548397
- */
-function setup() {
- // setup once
- if ( isSetup ) {
- return;
- }
- isSetup = true;
-
- var getComputedStyle = window.getComputedStyle;
- getStyle = ( function() {
- var getStyleFn = getComputedStyle ?
- function( elem ) {
- return getComputedStyle( elem, null );
- } :
- function( elem ) {
- return elem.currentStyle;
- };
-
- return function getStyle( elem ) {
- var style = getStyleFn( elem );
- if ( !style ) {
- logError( 'Style returned ' + style +
- '. Are you running this code in a hidden iframe on Firefox? ' +
- 'See http://bit.ly/getsizebug1' );
- }
- return style;
- };
- })();
-
- // -------------------------- box sizing -------------------------- //
-
- boxSizingProp = getStyleProperty('boxSizing');
-
- /**
- * WebKit measures the outer-width on style.width on border-box elems
- * IE & Firefox measures the inner-width
- */
- if ( boxSizingProp ) {
- var div = document.createElement('div');
- div.style.width = '200px';
- div.style.padding = '1px 2px 3px 4px';
- div.style.borderStyle = 'solid';
- div.style.borderWidth = '1px 2px 3px 4px';
- div.style[ boxSizingProp ] = 'border-box';
-
- var body = document.body || document.documentElement;
- body.appendChild( div );
- var style = getStyle( div );
-
- isBoxSizeOuter = getStyleSize( style.width ) === 200;
- body.removeChild( div );
- }
-
-}
-
-// -------------------------- getSize -------------------------- //
-
-function getSize( elem ) {
- setup();
-
- // use querySeletor if elem is string
- if ( typeof elem === 'string' ) {
- elem = document.querySelector( elem );
- }
-
- // do not proceed on non-objects
- if ( !elem || typeof elem !== 'object' || !elem.nodeType ) {
- return;
- }
-
- var style = getStyle( elem );
-
- // if hidden, everything is 0
- if ( style.display === 'none' ) {
- return getZeroSize();
- }
-
- var size = {};
- size.width = elem.offsetWidth;
- size.height = elem.offsetHeight;
-
- var isBorderBox = size.isBorderBox = !!( boxSizingProp &&
- style[ boxSizingProp ] && style[ boxSizingProp ] === 'border-box' );
-
- // get all measurements
- for ( var i=0, len = measurements.length; i < len; i++ ) {
- var measurement = measurements[i];
- var value = style[ measurement ];
- value = mungeNonPixel( elem, value );
- var num = parseFloat( value );
- // any 'auto', 'medium' value will be 0
- size[ measurement ] = !isNaN( num ) ? num : 0;
- }
-
- var paddingWidth = size.paddingLeft + size.paddingRight;
- var paddingHeight = size.paddingTop + size.paddingBottom;
- var marginWidth = size.marginLeft + size.marginRight;
- var marginHeight = size.marginTop + size.marginBottom;
- var borderWidth = size.borderLeftWidth + size.borderRightWidth;
- var borderHeight = size.borderTopWidth + size.borderBottomWidth;
-
- var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;
-
- // overwrite width and height if we can get it from style
- var styleWidth = getStyleSize( style.width );
- if ( styleWidth !== false ) {
- size.width = styleWidth +
- // add padding and border unless it's already including it
- ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );
- }
-
- var styleHeight = getStyleSize( style.height );
- if ( styleHeight !== false ) {
- size.height = styleHeight +
- // add padding and border unless it's already including it
- ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );
- }
-
- size.innerWidth = size.width - ( paddingWidth + borderWidth );
- size.innerHeight = size.height - ( paddingHeight + borderHeight );
-
- size.outerWidth = size.width + marginWidth;
- size.outerHeight = size.height + marginHeight;
-
- return size;
-}
-
-// IE8 returns percent values, not pixels
-// taken from jQuery's curCSS
-function mungeNonPixel( elem, value ) {
- // IE8 and has percent value
- if ( window.getComputedStyle || value.indexOf('%') === -1 ) {
- return value;
- }
- var style = elem.style;
- // Remember the original values
- var left = style.left;
- var rs = elem.runtimeStyle;
- var rsLeft = rs && rs.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- rs.left = elem.currentStyle.left;
- }
- style.left = value;
- value = style.pixelLeft;
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- rs.left = rsLeft;
- }
-
- return value;
-}
-
-return getSize;
-
-}
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
- // AMD for RequireJS
- define( 'get-size/get-size',[ 'get-style-property/get-style-property' ], defineGetSize );
-} else if ( typeof exports === 'object' ) {
- // CommonJS for Component
- module.exports = defineGetSize( require('desandro-get-style-property') );
-} else {
- // browser global
- window.getSize = defineGetSize( window.getStyleProperty );
-}
-
-})( window );
-
-/*!
- * docReady v1.0.4
- * Cross browser DOMContentLoaded event emitter
- * MIT license
- */
-
-/*jshint browser: true, strict: true, undef: true, unused: true*/
-/*global define: false, require: false, module: false */
-
-( function( window ) {
-
-
-
-var document = window.document;
-// collection of functions to be triggered on ready
-var queue = [];
-
-function docReady( fn ) {
- // throw out non-functions
- if ( typeof fn !== 'function' ) {
- return;
- }
-
- if ( docReady.isReady ) {
- // ready now, hit it
- fn();
- } else {
- // queue function when ready
- queue.push( fn );
- }
-}
-
-docReady.isReady = false;
-
-// triggered on various doc ready events
-function onReady( event ) {
- // bail if already triggered or IE8 document is not ready just yet
- var isIE8NotReady = event.type === 'readystatechange' && document.readyState !== 'complete';
- if ( docReady.isReady || isIE8NotReady ) {
- return;
- }
-
- trigger();
-}
-
-function trigger() {
- docReady.isReady = true;
- // process queue
- for ( var i=0, len = queue.length; i < len; i++ ) {
- var fn = queue[i];
- fn();
- }
-}
-
-function defineDocReady( eventie ) {
- // trigger ready if page is ready
- if ( document.readyState === 'complete' ) {
- trigger();
- } else {
- // listen for events
- eventie.bind( document, 'DOMContentLoaded', onReady );
- eventie.bind( document, 'readystatechange', onReady );
- eventie.bind( window, 'load', onReady );
- }
-
- return docReady;
-}
-
-// transport
-if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'doc-ready/doc-ready',[ 'eventie/eventie' ], defineDocReady );
-} else if ( typeof exports === 'object' ) {
- module.exports = defineDocReady( require('eventie') );
-} else {
- // browser global
- window.docReady = defineDocReady( window.eventie );
-}
-
-})( window );
-
-/**
- * matchesSelector v1.0.3
- * matchesSelector( element, '.selector' )
- * MIT license
- */
-
-/*jshint browser: true, strict: true, undef: true, unused: true */
-/*global define: false, module: false */
-
-( function( ElemProto ) {
-
-
-
- var matchesMethod = ( function() {
- // check for the standard method name first
- if ( ElemProto.matches ) {
- return 'matches';
- }
- // check un-prefixed
- if ( ElemProto.matchesSelector ) {
- return 'matchesSelector';
- }
- // check vendor prefixes
- var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];
-
- for ( var i=0, len = prefixes.length; i < len; i++ ) {
- var prefix = prefixes[i];
- var method = prefix + 'MatchesSelector';
- if ( ElemProto[ method ] ) {
- return method;
- }
- }
- })();
-
- // ----- match ----- //
-
- function match( elem, selector ) {
- return elem[ matchesMethod ]( selector );
- }
-
- // ----- appendToFragment ----- //
-
- function checkParent( elem ) {
- // not needed if already has parent
- if ( elem.parentNode ) {
- return;
- }
- var fragment = document.createDocumentFragment();
- fragment.appendChild( elem );
- }
-
- // ----- query ----- //
-
- // fall back to using QSA
- // thx @jonathantneal https://gist.github.com/3062955
- function query( elem, selector ) {
- // append to fragment if no parent
- checkParent( elem );
-
- // match elem with all selected elems of parent
- var elems = elem.parentNode.querySelectorAll( selector );
- for ( var i=0, len = elems.length; i < len; i++ ) {
- // return true if match
- if ( elems[i] === elem ) {
- return true;
- }
- }
- // otherwise return false
- return false;
- }
-
- // ----- matchChild ----- //
-
- function matchChild( elem, selector ) {
- checkParent( elem );
- return match( elem, selector );
- }
-
- // ----- matchesSelector ----- //
-
- var matchesSelector;
-
- if ( matchesMethod ) {
- // IE9 supports matchesSelector, but doesn't work on orphaned elems
- // check for that
- var div = document.createElement('div');
- var supportsOrphans = match( div, 'div' );
- matchesSelector = supportsOrphans ? match : matchChild;
- } else {
- matchesSelector = query;
- }
-
- // transport
- if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'matches-selector/matches-selector',[],function() {
- return matchesSelector;
- });
- } else if ( typeof exports === 'object' ) {
- module.exports = matchesSelector;
- }
- else {
- // browser global
- window.matchesSelector = matchesSelector;
- }
-
-})( Element.prototype );
-
-/**
- * Fizzy UI utils v1.0.1
- * MIT license
- */
-
-/*jshint browser: true, undef: true, unused: true, strict: true */
-
-( function( window, factory ) {
- /*global define: false, module: false, require: false */
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'fizzy-ui-utils/utils',[
- 'doc-ready/doc-ready',
- 'matches-selector/matches-selector'
- ], function( docReady, matchesSelector ) {
- return factory( window, docReady, matchesSelector );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('doc-ready'),
- require('desandro-matches-selector')
- );
- } else {
- // browser global
- window.fizzyUIUtils = factory(
- window,
- window.docReady,
- window.matchesSelector
- );
- }
-
-}( window, function factory( window, docReady, matchesSelector ) {
-
-
-
-var utils = {};
-
-// ----- extend ----- //
-
-// extends objects
-utils.extend = function( a, b ) {
- for ( var prop in b ) {
- a[ prop ] = b[ prop ];
- }
- return a;
-};
-
-// ----- modulo ----- //
-
-utils.modulo = function( num, div ) {
- return ( ( num % div ) + div ) % div;
-};
-
-// ----- isArray ----- //
-
-var objToString = Object.prototype.toString;
-utils.isArray = function( obj ) {
- return objToString.call( obj ) == '[object Array]';
-};
-
-// ----- makeArray ----- //
-
-// turn element or nodeList into an array
-utils.makeArray = function( obj ) {
- var ary = [];
- if ( utils.isArray( obj ) ) {
- // use object if already an array
- ary = obj;
- } else if ( obj && typeof obj.length == 'number' ) {
- // convert nodeList to array
- for ( var i=0, len = obj.length; i < len; i++ ) {
- ary.push( obj[i] );
- }
- } else {
- // array of single index
- ary.push( obj );
- }
- return ary;
-};
-
-// ----- indexOf ----- //
-
-// index of helper cause IE8
-utils.indexOf = Array.prototype.indexOf ? function( ary, obj ) {
- return ary.indexOf( obj );
- } : function( ary, obj ) {
- for ( var i=0, len = ary.length; i < len; i++ ) {
- if ( ary[i] === obj ) {
- return i;
- }
- }
- return -1;
- };
-
-// ----- removeFrom ----- //
-
-utils.removeFrom = function( ary, obj ) {
- var index = utils.indexOf( ary, obj );
- if ( index != -1 ) {
- ary.splice( index, 1 );
- }
-};
-
-// ----- isElement ----- //
-
-// http://stackoverflow.com/a/384380/182183
-utils.isElement = ( typeof HTMLElement == 'function' || typeof HTMLElement == 'object' ) ?
- function isElementDOM2( obj ) {
- return obj instanceof HTMLElement;
- } :
- function isElementQuirky( obj ) {
- return obj && typeof obj == 'object' &&
- obj.nodeType == 1 && typeof obj.nodeName == 'string';
- };
-
-// ----- setText ----- //
-
-utils.setText = ( function() {
- var setTextProperty;
- function setText( elem, text ) {
- // only check setTextProperty once
- setTextProperty = setTextProperty || ( document.documentElement.textContent !== undefined ? 'textContent' : 'innerText' );
- elem[ setTextProperty ] = text;
- }
- return setText;
-})();
-
-// ----- getParent ----- //
-
-utils.getParent = function( elem, selector ) {
- while ( elem != document.body ) {
- elem = elem.parentNode;
- if ( matchesSelector( elem, selector ) ) {
- return elem;
- }
- }
-};
-
-// ----- getQueryElement ----- //
-
-// use element as selector string
-utils.getQueryElement = function( elem ) {
- if ( typeof elem == 'string' ) {
- return document.querySelector( elem );
- }
- return elem;
-};
-
-// ----- handleEvent ----- //
-
-// enable .ontype to trigger from .addEventListener( elem, 'type' )
-utils.handleEvent = function( event ) {
- var method = 'on' + event.type;
- if ( this[ method ] ) {
- this[ method ]( event );
- }
-};
-
-// ----- filterFindElements ----- //
-
-utils.filterFindElements = function( elems, selector ) {
- // make array of elems
- elems = utils.makeArray( elems );
- var ffElems = [];
-
- for ( var i=0, len = elems.length; i < len; i++ ) {
- var elem = elems[i];
- // check that elem is an actual element
- if ( !utils.isElement( elem ) ) {
- continue;
- }
- // filter & find items if we have a selector
- if ( selector ) {
- // filter siblings
- if ( matchesSelector( elem, selector ) ) {
- ffElems.push( elem );
- }
- // find children
- var childElems = elem.querySelectorAll( selector );
- // concat childElems to filterFound array
- for ( var j=0, jLen = childElems.length; j < jLen; j++ ) {
- ffElems.push( childElems[j] );
- }
- } else {
- ffElems.push( elem );
- }
- }
-
- return ffElems;
-};
-
-// ----- debounceMethod ----- //
-
-utils.debounceMethod = function( _class, methodName, threshold ) {
- // original method
- var method = _class.prototype[ methodName ];
- var timeoutName = methodName + 'Timeout';
-
- _class.prototype[ methodName ] = function() {
- var timeout = this[ timeoutName ];
- if ( timeout ) {
- clearTimeout( timeout );
- }
- var args = arguments;
-
- var _this = this;
- this[ timeoutName ] = setTimeout( function() {
- method.apply( _this, args );
- delete _this[ timeoutName ];
- }, threshold || 100 );
- };
-};
-
-// ----- htmlInit ----- //
-
-// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/
-utils.toDashed = function( str ) {
- return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {
- return $1 + '-' + $2;
- }).toLowerCase();
-};
-
-var console = window.console;
-/**
- * allow user to initialize classes via .js-namespace class
- * htmlInit( Widget, 'widgetName' )
- * options are parsed from data-namespace-option attribute
- */
-utils.htmlInit = function( WidgetClass, namespace ) {
- docReady( function() {
- var dashedNamespace = utils.toDashed( namespace );
- var elems = document.querySelectorAll( '.js-' + dashedNamespace );
- var dataAttr = 'data-' + dashedNamespace + '-options';
-
- for ( var i=0, len = elems.length; i < len; i++ ) {
- var elem = elems[i];
- var attr = elem.getAttribute( dataAttr );
- var options;
- try {
- options = attr && JSON.parse( attr );
- } catch ( error ) {
- // log error, do not initialize
- if ( console ) {
- console.error( 'Error parsing ' + dataAttr + ' on ' +
- elem.nodeName.toLowerCase() + ( elem.id ? '#' + elem.id : '' ) + ': ' +
- error );
- }
- continue;
- }
- // initialize
- var instance = new WidgetClass( elem, options );
- // make available via $().data('layoutname')
- var jQuery = window.jQuery;
- if ( jQuery ) {
- jQuery.data( elem, namespace, instance );
- }
- }
- });
-};
-
-// ----- ----- //
-
-return utils;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/cell',[
- 'get-size/get-size'
- ], function( getSize ) {
- return factory( window, getSize );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('get-size')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.Cell = factory(
- window,
- window.getSize
- );
- }
-
-}( window, function factory( window, getSize ) {
-
-
-
-function Cell( elem, parent ) {
- this.element = elem;
- this.parent = parent;
-
- this.create();
-}
-
-var isIE8 = 'attachEvent' in window;
-
-Cell.prototype.create = function() {
- this.element.style.position = 'absolute';
- // IE8 prevent child from changing focus http://stackoverflow.com/a/17525223/182183
- if ( isIE8 ) {
- this.element.setAttribute( 'unselectable', 'on' );
- }
- this.x = 0;
- this.shift = 0;
-};
-
-Cell.prototype.destroy = function() {
- // reset style
- this.element.style.position = '';
- var side = this.parent.originSide;
- this.element.style[ side ] = '';
-};
-
-Cell.prototype.getSize = function() {
- this.size = getSize( this.element );
-};
-
-Cell.prototype.setPosition = function( x ) {
- this.x = x;
- this.setDefaultTarget();
- this.renderPosition( x );
-};
-
-Cell.prototype.setDefaultTarget = function() {
- var marginProperty = this.parent.originSide == 'left' ? 'marginLeft' : 'marginRight';
- this.target = this.x + this.size[ marginProperty ] +
- this.size.width * this.parent.cellAlign;
-};
-
-Cell.prototype.renderPosition = function( x ) {
- // render position of cell with in slider
- var side = this.parent.originSide;
- this.element.style[ side ] = this.parent.getPositionValue( x );
-};
-
-/**
- * @param {Integer} factor - 0, 1, or -1
-**/
-Cell.prototype.wrapShift = function( shift ) {
- this.shift = shift;
- this.renderPosition( this.x + this.parent.slideableWidth * shift );
-};
-
-Cell.prototype.remove = function() {
- this.element.parentNode.removeChild( this.element );
-};
-
-return Cell;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/animate',[
- 'get-style-property/get-style-property',
- 'fizzy-ui-utils/utils'
- ], function( getStyleProperty, utils ) {
- return factory( window, getStyleProperty, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('desandro-get-style-property'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.animatePrototype = factory(
- window,
- window.getStyleProperty,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, getStyleProperty, utils ) {
-
-
-
-// -------------------------- requestAnimationFrame -------------------------- //
-
-// https://gist.github.com/1866474
-
-var lastTime = 0;
-var prefixes = 'webkit moz ms o'.split(' ');
-// get unprefixed rAF and cAF, if present
-var requestAnimationFrame = window.requestAnimationFrame;
-var cancelAnimationFrame = window.cancelAnimationFrame;
-// loop through vendor prefixes and get prefixed rAF and cAF
-var prefix;
-for( var i = 0; i < prefixes.length; i++ ) {
- if ( requestAnimationFrame && cancelAnimationFrame ) {
- break;
- }
- prefix = prefixes[i];
- requestAnimationFrame = requestAnimationFrame || window[ prefix + 'RequestAnimationFrame' ];
- cancelAnimationFrame = cancelAnimationFrame || window[ prefix + 'CancelAnimationFrame' ] ||
- window[ prefix + 'CancelRequestAnimationFrame' ];
-}
-
-// fallback to setTimeout and clearTimeout if either request/cancel is not supported
-if ( !requestAnimationFrame || !cancelAnimationFrame ) {
- requestAnimationFrame = function( callback ) {
- var currTime = new Date().getTime();
- var timeToCall = Math.max( 0, 16 - ( currTime - lastTime ) );
- var id = window.setTimeout( function() {
- callback( currTime + timeToCall );
- }, timeToCall );
- lastTime = currTime + timeToCall;
- return id;
- };
-
- cancelAnimationFrame = function( id ) {
- window.clearTimeout( id );
- };
-}
-
-// -------------------------- animate -------------------------- //
-
-var proto = {};
-
-proto.startAnimation = function() {
- if ( this.isAnimating ) {
- return;
- }
-
- this.isAnimating = true;
- this.restingFrames = 0;
- this.animate();
-};
-
-proto.animate = function() {
- this.applySelectedAttraction();
-
- var previousX = this.x;
-
- this.integratePhysics();
- this.positionSlider();
- this.settle( previousX );
- // animate next frame
- if ( this.isAnimating ) {
- var _this = this;
- requestAnimationFrame( function animateFrame() {
- _this.animate();
- });
- }
-
- /** /
- // log animation frame rate
- var now = new Date();
- if ( this.then ) {
- console.log( ~~( 1000 / (now-this.then)) + 'fps' )
- }
- this.then = now;
- /**/
-};
-
-
-var transformProperty = getStyleProperty('transform');
-var is3d = !!getStyleProperty('perspective');
-
-proto.positionSlider = function() {
- var x = this.x;
- // wrap position around
- if ( this.options.wrapAround && this.cells.length > 1 ) {
- x = utils.modulo( x, this.slideableWidth );
- x = x - this.slideableWidth;
- this.shiftWrapCells( x );
- }
-
- x = x + this.cursorPosition;
-
- // reverse if right-to-left and using transform
- x = this.options.rightToLeft && transformProperty ? -x : x;
-
- var value = this.getPositionValue( x );
-
- if ( transformProperty ) {
- // use 3D tranforms for hardware acceleration on iOS
- // but use 2D when settled, for better font-rendering
- this.slider.style[ transformProperty ] = is3d && this.isAnimating ?
- 'translate3d(' + value + ',0,0)' : 'translateX(' + value + ')';
- } else {
- this.slider.style[ this.originSide ] = value;
- }
-};
-
-proto.positionSliderAtSelected = function() {
- if ( !this.cells.length ) {
- return;
- }
- var selectedCell = this.cells[ this.selectedIndex ];
- this.x = -selectedCell.target;
- this.positionSlider();
-};
-
-proto.getPositionValue = function( position ) {
- if ( this.options.percentPosition ) {
- // percent position, round to 2 digits, like 12.34%
- return ( Math.round( ( position / this.size.innerWidth ) * 10000 ) * 0.01 )+ '%';
- } else {
- // pixel positioning
- return Math.round( position ) + 'px';
- }
-};
-
-proto.settle = function( previousX ) {
- // keep track of frames where x hasn't moved
- if ( !this.isPointerDown && Math.round( this.x * 100 ) == Math.round( previousX * 100 ) ) {
- this.restingFrames++;
- }
- // stop animating if resting for 3 or more frames
- if ( this.restingFrames > 2 ) {
- this.isAnimating = false;
- delete this.isFreeScrolling;
- // render position with translateX when settled
- if ( is3d ) {
- this.positionSlider();
- }
- this.dispatchEvent('settle');
- }
-};
-
-proto.shiftWrapCells = function( x ) {
- // shift before cells
- var beforeGap = this.cursorPosition + x;
- this._shiftCells( this.beforeShiftCells, beforeGap, -1 );
- // shift after cells
- var afterGap = this.size.innerWidth - ( x + this.slideableWidth + this.cursorPosition );
- this._shiftCells( this.afterShiftCells, afterGap, 1 );
-};
-
-proto._shiftCells = function( cells, gap, shift ) {
- for ( var i=0, len = cells.length; i < len; i++ ) {
- var cell = cells[i];
- var cellShift = gap > 0 ? shift : 0;
- cell.wrapShift( cellShift );
- gap -= cell.size.outerWidth;
- }
-};
-
-proto._unshiftCells = function( cells ) {
- if ( !cells || !cells.length ) {
- return;
- }
- for ( var i=0, len = cells.length; i < len; i++ ) {
- cells[i].wrapShift( 0 );
- }
-};
-
-// -------------------------- physics -------------------------- //
-
-proto.integratePhysics = function() {
- this.velocity += this.accel;
- this.x += this.velocity;
- this.velocity *= this.getFrictionFactor();
- // reset acceleration
- this.accel = 0;
-};
-
-proto.applyForce = function( force ) {
- this.accel += force;
-};
-
-proto.getFrictionFactor = function() {
- return 1 - this.options[ this.isFreeScrolling ? 'freeScrollFriction' : 'friction' ];
-};
-
-
-proto.getRestingPosition = function() {
- // my thanks to Steven Wittens, who simplified this math greatly
- return this.x + this.velocity / ( 1 - this.getFrictionFactor() );
-};
-
-
-proto.applySelectedAttraction = function() {
- // do not attract if pointer down or no cells
- var len = this.cells.length;
- if ( this.isPointerDown || this.isFreeScrolling || !len ) {
- return;
- }
- var cell = this.cells[ this.selectedIndex ];
- var wrap = this.options.wrapAround && len > 1 ?
- this.slideableWidth * Math.floor( this.selectedIndex / len ) : 0;
- var distance = ( cell.target + wrap ) * -1 - this.x;
- var force = distance * this.options.selectedAttraction;
- this.applyForce( force );
-};
-
-return proto;
-
-}));
-
-/*!
- * Flickity v1.0.1
- * Touch, responsive, flickable galleries
- *
- * Licensed GPLv3 for open source use
- * or Flickity Commercial License for commercial use
- *
- * http://flickity.metafizzy.co
- * Copyright 2015 Metafizzy
- */
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/flickity',[
- 'classie/classie',
- 'eventEmitter/EventEmitter',
- 'eventie/eventie',
- 'get-size/get-size',
- 'fizzy-ui-utils/utils',
- './cell',
- './animate'
- ], function( classie, EventEmitter, eventie, getSize, utils, Cell, animatePrototype ) {
- return factory( window, classie, EventEmitter, eventie, getSize, utils, Cell, animatePrototype );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('desandro-classie'),
- require('wolfy87-eventemitter'),
- require('eventie'),
- require('get-size'),
- require('fizzy-ui-utils'),
- require('./cell'),
- require('./animate')
- );
- } else {
- // browser global
- var _Flickity = window.Flickity;
-
- window.Flickity = factory(
- window,
- window.classie,
- window.EventEmitter,
- window.eventie,
- window.getSize,
- window.fizzyUIUtils,
- _Flickity.Cell,
- _Flickity.animatePrototype
- );
- }
-
-}( window, function factory( window, classie, EventEmitter, eventie, getSize,
- utils, Cell, animatePrototype ) {
-
-
-
-// vars
-var jQuery = window.jQuery;
-var getComputedStyle = window.getComputedStyle;
-var console = window.console;
-
-function moveElements( elems, toElem ) {
- elems = utils.makeArray( elems );
- while ( elems.length ) {
- toElem.appendChild( elems.shift() );
- }
-}
-
-// -------------------------- Flickity -------------------------- //
-
-// globally unique identifiers
-var GUID = 0;
-// internal store of all Flickity intances
-var instances = {};
-
-function Flickity( element, options ) {
- var queryElement = utils.getQueryElement( element );
- if ( !queryElement ) {
- if ( console ) {
- console.error( 'Bad element for Flickity: ' + ( queryElement || element ) );
- }
- return;
- }
- this.element = queryElement;
- // add jQuery
- if ( jQuery ) {
- this.$element = jQuery( this.element );
- }
- // options
- this.options = utils.extend( {}, this.constructor.defaults );
- this.option( options );
-
- // kick things off
- this._create();
-}
-
-Flickity.defaults = {
- accessibility: true,
- cellAlign: 'center',
- // cellSelector: undefined,
- // contain: false,
- freeScrollFriction: 0.075, // friction when free-scrolling
- friction: 0.28, // friction when selecting
- // initialIndex: 0,
- percentPosition: true,
- resize: true,
- selectedAttraction: 0.025,
- setGallerySize: true
- // watchCSS: false,
- // wrapAround: false
-};
-
-// hash of methods triggered on _create()
-Flickity.createMethods = [];
-
-// inherit EventEmitter
-utils.extend( Flickity.prototype, EventEmitter.prototype );
-
-Flickity.prototype._create = function() {
- // add id for Flickity.data
- var id = this.guid = ++GUID;
- this.element.flickityGUID = id; // expando
- instances[ id ] = this; // associate via id
- // initial properties
- this.selectedIndex = this.options.initialIndex || 0;
- // how many frames slider has been in same position
- this.restingFrames = 0;
- // initial physics properties
- this.x = 0;
- this.velocity = 0;
- this.accel = 0;
- this.originSide = this.options.rightToLeft ? 'right' : 'left';
- // create viewport & slider
- this.viewport = document.createElement('div');
- this.viewport.className = 'flickity-viewport';
- Flickity.setUnselectable( this.viewport );
- this._createSlider();
-
- if ( this.options.resize || this.options.watchCSS ) {
- eventie.bind( window, 'resize', this );
- this.isResizeBound = true;
- }
-
- for ( var i=0, len = Flickity.createMethods.length; i < len; i++ ) {
- var method = Flickity.createMethods[i];
- this[ method ]();
- }
-
- if ( this.options.watchCSS ) {
- this.watchCSS();
- } else {
- this.activate();
- }
-
-};
-
-/**
- * set options
- * @param {Object} opts
- */
-Flickity.prototype.option = function( opts ) {
- utils.extend( this.options, opts );
-};
-
-Flickity.prototype.activate = function() {
- if ( this.isActive ) {
- return;
- }
- this.isActive = true;
- classie.add( this.element, 'flickity-enabled' );
- if ( this.options.rightToLeft ) {
- classie.add( this.element, 'flickity-rtl' );
- }
-
- // move initial cell elements so they can be loaded as cells
- var cellElems = this._filterFindCellElements( this.element.children );
- moveElements( cellElems, this.slider );
- this.viewport.appendChild( this.slider );
- this.element.appendChild( this.viewport );
-
- this.getSize();
- // get cells from children
- this.reloadCells();
-
- if ( this.options.accessibility ) {
- // allow element to focusable
- this.element.tabIndex = 0;
- // listen for key presses
- eventie.bind( this.element, 'keydown', this );
- }
-
- this.emit('activate');
-
- this.positionSliderAtSelected();
- this.select( this.selectedIndex );
-};
-
-// slider positions the cells
-Flickity.prototype._createSlider = function() {
- // slider element does all the positioning
- var slider = document.createElement('div');
- slider.className = 'flickity-slider';
- slider.style[ this.originSide ] = 0;
- this.slider = slider;
-};
-
-Flickity.prototype._filterFindCellElements = function( elems ) {
- return utils.filterFindElements( elems, this.options.cellSelector );
-};
-
-// goes through all children
-Flickity.prototype.reloadCells = function() {
- // collection of item elements
- this.cells = this._makeCells( this.slider.children );
- this.positionCells();
- this._getWrapShiftCells();
- this.setGallerySize();
-};
-
-/**
- * turn elements into Flickity.Cells
- * @param {Array or NodeList or HTMLElement} elems
- * @returns {Array} items - collection of new Flickity Cells
- */
-Flickity.prototype._makeCells = function( elems ) {
- var cellElems = this._filterFindCellElements( elems );
-
- // create new Flickity for collection
- var cells = [];
- for ( var i=0, len = cellElems.length; i < len; i++ ) {
- var elem = cellElems[i];
- var cell = new Cell( elem, this );
- cells.push( cell );
- }
-
- return cells;
-};
-
-Flickity.prototype.getLastCell = function() {
- return this.cells[ this.cells.length - 1 ];
-};
-
-// positions all cells
-Flickity.prototype.positionCells = function() {
- // size all cells
- this._sizeCells( this.cells );
- // position all cells
- this._positionCells( 0 );
-};
-
-/**
- * position certain cells
- * @param {Integer} index - which cell to start with
- */
-Flickity.prototype._positionCells = function( index ) {
- // also measure maxCellHeight
- // start 0 if positioning all cells
- this.maxCellHeight = index ? this.maxCellHeight || 0 : 0;
- var cellX = 0;
- // get cellX
- if ( index > 0 ) {
- var startCell = this.cells[ index - 1 ];
- cellX = startCell.x + startCell.size.outerWidth;
- }
- var cell;
- for ( var len = this.cells.length, i=index; i < len; i++ ) {
- cell = this.cells[i];
- cell.setPosition( cellX );
- cellX += cell.size.outerWidth;
- this.maxCellHeight = Math.max( cell.size.outerHeight, this.maxCellHeight );
- }
- // keep track of cellX for wrap-around
- this.slideableWidth = cellX;
- // contain cell target
- this._containCells();
-};
-
-/**
- * cell.getSize() on multiple cells
- * @param {Array} cells
- */
-Flickity.prototype._sizeCells = function( cells ) {
- for ( var i=0, len = cells.length; i < len; i++ ) {
- var cell = cells[i];
- cell.getSize();
- }
-};
-
-// alias _init for jQuery plugin .flickity()
-Flickity.prototype._init =
-Flickity.prototype.reposition = function() {
- this.positionCells();
- this.positionSliderAtSelected();
-};
-
-Flickity.prototype.getSize = function() {
- this.size = getSize( this.element );
- this.setCellAlign();
- this.cursorPosition = this.size.innerWidth * this.cellAlign;
-};
-
-var cellAlignShorthands = {
- // cell align, then based on origin side
- center: {
- left: 0.5,
- right: 0.5
- },
- left: {
- left: 0,
- right: 1
- },
- right: {
- right: 0,
- left: 1
- }
-};
-
-Flickity.prototype.setCellAlign = function() {
- var shorthand = cellAlignShorthands[ this.options.cellAlign ];
- this.cellAlign = shorthand ? shorthand[ this.originSide ] : this.options.cellAlign;
-};
-
-Flickity.prototype.setGallerySize = function() {
- if ( this.options.setGallerySize ) {
- this.viewport.style.height = this.maxCellHeight + 'px';
- }
-};
-
-Flickity.prototype._getWrapShiftCells = function() {
- // only for wrap-around
- if ( !this.options.wrapAround ) {
- return;
- }
- // unshift previous cells
- this._unshiftCells( this.beforeShiftCells );
- this._unshiftCells( this.afterShiftCells );
- // get before cells
- // initial gap
- var gapX = this.cursorPosition;
- var cellIndex = this.cells.length - 1;
- this.beforeShiftCells = this._getGapCells( gapX, cellIndex, -1 );
- // get after cells
- // ending gap between last cell and end of gallery viewport
- gapX = this.size.innerWidth - this.cursorPosition;
- // start cloning at first cell, working forwards
- this.afterShiftCells = this._getGapCells( gapX, 0, 1 );
-};
-
-Flickity.prototype._getGapCells = function( gapX, cellIndex, increment ) {
- // keep adding cells until the cover the initial gap
- var cells = [];
- while ( gapX > 0 ) {
- var cell = this.cells[ cellIndex ];
- if ( !cell ) {
- break;
- }
- cells.push( cell );
- cellIndex += increment;
- gapX -= cell.size.outerWidth;
- }
- return cells;
-};
-
-// ----- contain ----- //
-
-// contain cell targets so no excess sliding
-Flickity.prototype._containCells = function() {
- if ( !this.options.contain || this.options.wrapAround || !this.cells.length ) {
- return;
- }
- var startMargin = this.options.rightToLeft ? 'marginRight' : 'marginLeft';
- var endMargin = this.options.rightToLeft ? 'marginLeft' : 'marginRight';
- var firstCellStartMargin = this.cells[0].size[ startMargin ];
- var lastCell = this.getLastCell();
- var contentWidth = this.slideableWidth - lastCell.size[ endMargin ];
- var endLimit = contentWidth - this.size.innerWidth * ( 1 - this.cellAlign );
- // content is less than gallery size
- var isContentSmaller = contentWidth < this.size.innerWidth;
- // contain each cell target
- for ( var i=0, len = this.cells.length; i < len; i++ ) {
- var cell = this.cells[i];
- // reset default target
- cell.setDefaultTarget();
- if ( isContentSmaller ) {
- // all cells fit inside gallery
- cell.target = contentWidth * this.cellAlign;
- } else {
- // contain to bounds
- cell.target = Math.max( cell.target, this.cursorPosition + firstCellStartMargin );
- cell.target = Math.min( cell.target, endLimit );
- }
- }
-};
-
-// ----- ----- //
-
-/**
- * emits events via eventEmitter and jQuery events
- * @param {String} type - name of event
- * @param {Event} event - original event
- * @param {Array} args - extra arguments
- */
-Flickity.prototype.dispatchEvent = function( type, event, args ) {
- var emitArgs = [ event ].concat( args );
- this.emitEvent( type, emitArgs );
-
- if ( jQuery && this.$element ) {
- if ( event ) {
- // create jQuery event
- var $event = jQuery.Event( event );
- $event.type = type;
- this.$element.trigger( $event, args );
- } else {
- // just trigger with type if no event available
- this.$element.trigger( type, args );
- }
- }
-};
-
-// -------------------------- select -------------------------- //
-
-/**
- * @param {Integer} index - index of the cell
- * @param {Boolean} isWrap - will wrap-around to last/first if at the end
- */
-Flickity.prototype.select = function( index, isWrap ) {
- if ( !this.isActive ) {
- return;
- }
- // wrap position so slider is within normal area
- var len = this.cells.length;
- if ( this.options.wrapAround && len > 1 ) {
- if ( index < 0 ) {
- this.x -= this.slideableWidth;
- } else if ( index >= len ) {
- this.x += this.slideableWidth;
- }
- }
-
- if ( this.options.wrapAround || isWrap ) {
- index = utils.modulo( index, len );
- }
-
- if ( this.cells[ index ] ) {
- this.selectedIndex = index;
- this.setSelectedCell();
- this.startAnimation();
- this.dispatchEvent('cellSelect');
- }
-};
-
-Flickity.prototype.previous = function( isWrap ) {
- this.select( this.selectedIndex - 1, isWrap );
-};
-
-Flickity.prototype.next = function( isWrap ) {
- this.select( this.selectedIndex + 1, isWrap );
-};
-
-Flickity.prototype.setSelectedCell = function() {
- this._removeSelectedCellClass();
- this.selectedCell = this.cells[ this.selectedIndex ];
- this.selectedElement = this.selectedCell.element;
- classie.add( this.selectedElement, 'is-selected' );
-};
-
-Flickity.prototype._removeSelectedCellClass = function() {
- if ( this.selectedCell ) {
- classie.remove( this.selectedCell.element, 'is-selected' );
- }
-};
-
-// -------------------------- get cells -------------------------- //
-
-/**
- * get Flickity.Cell, given an Element
- * @param {Element} elem
- * @returns {Flickity.Cell} item
- */
-Flickity.prototype.getCell = function( elem ) {
- // loop through cells to get the one that matches
- for ( var i=0, len = this.cells.length; i < len; i++ ) {
- var cell = this.cells[i];
- if ( cell.element == elem ) {
- return cell;
- }
- }
-};
-
-/**
- * get collection of Flickity.Cells, given Elements
- * @param {Element, Array, NodeList} elems
- * @returns {Array} cells - Flickity.Cells
- */
-Flickity.prototype.getCells = function( elems ) {
- elems = utils.makeArray( elems );
- var cells = [];
- for ( var i=0, len = elems.length; i < len; i++ ) {
- var elem = elems[i];
- var cell = this.getCell( elem );
- if ( cell ) {
- cells.push( cell );
- }
- }
- return cells;
-};
-
-/**
- * get cell elements
- * @returns {Array} cellElems
- */
-Flickity.prototype.getCellElements = function() {
- var cellElems = [];
- for ( var i=0, len = this.cells.length; i < len; i++ ) {
- cellElems.push( this.cells[i].element );
- }
- return cellElems;
-};
-
-/**
- * get parent cell from an element
- * @param {Element} elem
- * @returns {Flickit.Cell} cell
- */
-Flickity.prototype.getParentCell = function( elem ) {
- // first check if elem is cell
- var cell = this.getCell( elem );
- if ( cell ) {
- return cell;
- }
- // try to get parent cell elem
- elem = utils.getParent( elem, '.flickity-slider > *' );
- return this.getCell( elem );
-};
-
-// -------------------------- events -------------------------- //
-
-Flickity.prototype.uiChange = function() {
- this.emit('uiChange');
-};
-
-Flickity.prototype.childUIPointerDown = function( event ) {
- this.emitEvent( 'childUIPointerDown', [ event ] );
-};
-
-// ----- resize ----- //
-
-Flickity.prototype.onresize = function() {
- this.watchCSS();
- this.resize();
-};
-
-utils.debounceMethod( Flickity, 'onresize', 150 );
-
-Flickity.prototype.resize = function() {
- if ( !this.isActive ) {
- return;
- }
- this.getSize();
- // wrap values
- if ( this.options.wrapAround ) {
- this.x = utils.modulo( this.x, this.slideableWidth );
- }
- this.positionCells();
- this._getWrapShiftCells();
- this.setGallerySize();
- this.positionSliderAtSelected();
-};
-
-var supportsConditionalCSS = Flickity.supportsConditionalCSS = ( function() {
- var supports;
- return function checkSupport() {
- if ( supports !== undefined ) {
- return supports;
- }
- if ( !getComputedStyle ) {
- supports = false;
- return;
- }
- // style body's :after and check that
- var style = document.createElement('style');
- var cssText = document.createTextNode('body:after { content: "foo"; display: none; }');
- style.appendChild( cssText );
- document.head.appendChild( style );
- var afterContent = getComputedStyle( document.body, ':after' ).content;
- // check if able to get :after content
- supports = afterContent.indexOf('foo') != -1;
- document.head.removeChild( style );
- return supports;
- };
-})();
-
-// watches the :after property, activates/deactivates
-Flickity.prototype.watchCSS = function() {
- var watchOption = this.options.watchCSS;
- if ( !watchOption ) {
- return;
- }
- var supports = supportsConditionalCSS();
- if ( !supports ) {
- // activate if watch option is fallbackOn
- var method = watchOption == 'fallbackOn' ? 'activate' : 'deactivate';
- this[ method ]();
- return;
- }
-
- var afterContent = getComputedStyle( this.element, ':after' ).content;
- // activate if :after { content: 'flickity' }
- if ( afterContent.indexOf('flickity') != -1 ) {
- this.activate();
- } else {
- this.deactivate();
- }
-};
-
-// ----- keydown ----- //
-
-// go previous/next if left/right keys pressed
-Flickity.prototype.onkeydown = function( event ) {
- // only work if element is in focus
- if ( !this.options.accessibility ||
- ( document.activeElement && document.activeElement != this.element ) ) {
- return;
- }
-
- if ( event.keyCode == 37 ) {
- // go left
- var leftMethod = this.options.rightToLeft ? 'next' : 'previous';
- this.uiChange();
- this[ leftMethod ]();
- } else if ( event.keyCode == 39 ) {
- // go right
- var rightMethod = this.options.rightToLeft ? 'previous' : 'next';
- this.uiChange();
- this[ rightMethod ]();
- }
-};
-
-// -------------------------- destroy -------------------------- //
-
-// deactivate all Flickity functionality, but keep stuff available
-Flickity.prototype.deactivate = function() {
- if ( !this.isActive ) {
- return;
- }
- classie.remove( this.element, 'flickity-enabled' );
- classie.remove( this.element, 'flickity-rtl' );
- // destroy cells
- for ( var i=0, len = this.cells.length; i < len; i++ ) {
- var cell = this.cells[i];
- cell.destroy();
- }
- this._removeSelectedCellClass();
- this.element.removeChild( this.viewport );
- // move child elements back into element
- moveElements( this.slider.children, this.element );
- if ( this.options.accessibility ) {
- this.element.removeAttribute('tabIndex');
- eventie.unbind( this.element, 'keydown', this );
- }
- // set flags
- this.isActive = false;
- this.emit('deactivate');
-};
-
-Flickity.prototype.destroy = function() {
- this.deactivate();
- if ( this.isResizeBound ) {
- eventie.unbind( window, 'resize', this );
- }
- this.emit('destroy');
- if ( jQuery && this.$element ) {
- jQuery.removeData( this.element, 'flickity' );
- }
- delete this.element.flickityGUID;
- delete instances[ this.guid ];
-};
-
-// -------------------------- prototype -------------------------- //
-
-utils.extend( Flickity.prototype, animatePrototype );
-
-// -------------------------- extras -------------------------- //
-
-// quick check for IE8
-var isIE8 = 'attachEvent' in window;
-
-Flickity.setUnselectable = function( elem ) {
- if ( !isIE8 ) {
- return;
- }
- // IE8 prevent child from changing focus http://stackoverflow.com/a/17525223/182183
- elem.setAttribute( 'unselectable', 'on' );
-};
-
-/**
- * get Flickity instance from element
- * @param {Element} elem
- * @returns {Flickity}
- */
-Flickity.data = function( elem ) {
- elem = utils.getQueryElement( elem );
- var id = elem && elem.flickityGUID;
- return id && instances[ id ];
-};
-
-utils.htmlInit( Flickity, 'flickity' );
-
-if ( jQuery && jQuery.bridget ) {
- jQuery.bridget( 'flickity', Flickity );
-}
-
-Flickity.Cell = Cell;
-
-return Flickity;
-
-}));
-
-/*!
- * Unipointer v1.1.0
- * base class for doing one thing with pointer event
- * MIT license
- */
-
-/*jshint browser: true, undef: true, unused: true, strict: true */
-/*global define: false, module: false, require: false */
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'unipointer/unipointer',[
- 'eventEmitter/EventEmitter',
- 'eventie/eventie'
- ], function( EventEmitter, eventie ) {
- return factory( window, EventEmitter, eventie );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('wolfy87-eventemitter'),
- require('eventie')
- );
- } else {
- // browser global
- window.Unipointer = factory(
- window,
- window.EventEmitter,
- window.eventie
- );
- }
-
-}( window, function factory( window, EventEmitter, eventie ) {
-
-
-
-function noop() {}
-
-function Unipointer() {}
-
-// inherit EventEmitter
-Unipointer.prototype = new EventEmitter();
-
-Unipointer.prototype.bindStartEvent = function( elem ) {
- this._bindStartEvent( elem, true );
-};
-
-Unipointer.prototype.unbindStartEvent = function( elem ) {
- this._bindStartEvent( elem, false );
-};
-
-/**
- * works as unbinder, as you can ._bindStart( false ) to unbind
- * @param {Boolean} isBind - will unbind if falsey
- */
-Unipointer.prototype._bindStartEvent = function( elem, isBind ) {
- // munge isBind, default to true
- isBind = isBind === undefined ? true : !!isBind;
- var bindMethod = isBind ? 'bind' : 'unbind';
-
- if ( window.navigator.pointerEnabled ) {
- // W3C Pointer Events, IE11. See https://coderwall.com/p/mfreca
- eventie[ bindMethod ]( elem, 'pointerdown', this );
- } else if ( window.navigator.msPointerEnabled ) {
- // IE10 Pointer Events
- eventie[ bindMethod ]( elem, 'MSPointerDown', this );
- } else {
- // listen for both, for devices like Chrome Pixel
- eventie[ bindMethod ]( elem, 'mousedown', this );
- eventie[ bindMethod ]( elem, 'touchstart', this );
- }
-};
-
-// trigger handler methods for events
-Unipointer.prototype.handleEvent = function( event ) {
- var method = 'on' + event.type;
- if ( this[ method ] ) {
- this[ method ]( event );
- }
-};
-
-// returns the touch that we're keeping track of
-Unipointer.prototype.getTouch = function( touches ) {
- for ( var i=0, len = touches.length; i < len; i++ ) {
- var touch = touches[i];
- if ( touch.identifier == this.pointerIdentifier ) {
- return touch;
- }
- }
-};
-
-// ----- start event ----- //
-
-Unipointer.prototype.onmousedown = function( event ) {
- // dismiss clicks from right or middle buttons
- var button = event.button;
- if ( button && ( button !== 0 && button !== 1 ) ) {
- return;
- }
- this._pointerDown( event, event );
-};
-
-Unipointer.prototype.ontouchstart = function( event ) {
- this._pointerDown( event, event.changedTouches[0] );
-};
-
-Unipointer.prototype.onMSPointerDown =
-Unipointer.prototype.onpointerdown = function( event ) {
- this._pointerDown( event, event );
-};
-
-/**
- * pointer start
- * @param {Event} event
- * @param {Event or Touch} pointer
- */
-Unipointer.prototype._pointerDown = function( event, pointer ) {
- // dismiss other pointers
- if ( this.isPointerDown ) {
- return;
- }
-
- this.isPointerDown = true;
- // save pointer identifier to match up touch events
- this.pointerIdentifier = pointer.pointerId !== undefined ?
- // pointerId for pointer events, touch.indentifier for touch events
- pointer.pointerId : pointer.identifier;
-
- this.pointerDown( event, pointer );
-};
-
-Unipointer.prototype.pointerDown = function( event, pointer ) {
- this._bindPostStartEvents( event );
- this.emitEvent( 'pointerDown', [ event, pointer ] );
-};
-
-// hash of events to be bound after start event
-var postStartEvents = {
- mousedown: [ 'mousemove', 'mouseup' ],
- touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],
- pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],
- MSPointerDown: [ 'MSPointerMove', 'MSPointerUp', 'MSPointerCancel' ]
-};
-
-Unipointer.prototype._bindPostStartEvents = function( event ) {
- if ( !event ) {
- return;
- }
- // get proper events to match start event
- var events = postStartEvents[ event.type ];
- // IE8 needs to be bound to document
- var node = event.preventDefault ? window : document;
- // bind events to node
- for ( var i=0, len = events.length; i < len; i++ ) {
- var evnt = events[i];
- eventie.bind( node, evnt, this );
- }
- // save these arguments
- this._boundPointerEvents = {
- events: events,
- node: node
- };
-};
-
-Unipointer.prototype._unbindPostStartEvents = function() {
- var args = this._boundPointerEvents;
- // IE8 can trigger dragEnd twice, check for _boundEvents
- if ( !args || !args.events ) {
- return;
- }
-
- for ( var i=0, len = args.events.length; i < len; i++ ) {
- var event = args.events[i];
- eventie.unbind( args.node, event, this );
- }
- delete this._boundPointerEvents;
-};
-
-// ----- move event ----- //
-
-Unipointer.prototype.onmousemove = function( event ) {
- this._pointerMove( event, event );
-};
-
-Unipointer.prototype.onMSPointerMove =
-Unipointer.prototype.onpointermove = function( event ) {
- if ( event.pointerId == this.pointerIdentifier ) {
- this._pointerMove( event, event );
- }
-};
-
-Unipointer.prototype.ontouchmove = function( event ) {
- var touch = this.getTouch( event.changedTouches );
- if ( touch ) {
- this._pointerMove( event, touch );
- }
-};
-
-/**
- * pointer move
- * @param {Event} event
- * @param {Event or Touch} pointer
- * @private
- */
-Unipointer.prototype._pointerMove = function( event, pointer ) {
- this.pointerMove( event, pointer );
-};
-
-// public
-Unipointer.prototype.pointerMove = function( event, pointer ) {
- this.emitEvent( 'pointerMove', [ event, pointer ] );
-};
-
-// ----- end event ----- //
-
-
-Unipointer.prototype.onmouseup = function( event ) {
- this._pointerUp( event, event );
-};
-
-Unipointer.prototype.onMSPointerUp =
-Unipointer.prototype.onpointerup = function( event ) {
- if ( event.pointerId == this.pointerIdentifier ) {
- this._pointerUp( event, event );
- }
-};
-
-Unipointer.prototype.ontouchend = function( event ) {
- var touch = this.getTouch( event.changedTouches );
- if ( touch ) {
- this._pointerUp( event, touch );
- }
-};
-
-/**
- * pointer up
- * @param {Event} event
- * @param {Event or Touch} pointer
- * @private
- */
-Unipointer.prototype._pointerUp = function( event, pointer ) {
- this._pointerDone();
- this.pointerUp( event, pointer );
-};
-
-// public
-Unipointer.prototype.pointerUp = function( event, pointer ) {
- this.emitEvent( 'pointerUp', [ event, pointer ] );
-};
-
-// ----- pointer done ----- //
-
-// triggered on pointer up & pointer cancel
-Unipointer.prototype._pointerDone = function() {
- // reset properties
- this.isPointerDown = false;
- delete this.pointerIdentifier;
- // remove events
- this._unbindPostStartEvents();
- this.pointerDone();
-};
-
-Unipointer.prototype.pointerDone = noop;
-
-// ----- pointer cancel ----- //
-
-Unipointer.prototype.onMSPointerCancel =
-Unipointer.prototype.onpointercancel = function( event ) {
- if ( event.pointerId == this.pointerIdentifier ) {
- this._pointerCancel( event, event );
- }
-};
-
-Unipointer.prototype.ontouchcancel = function( event ) {
- var touch = this.getTouch( event.changedTouches );
- if ( touch ) {
- this._pointerCancel( event, touch );
- }
-};
-
-/**
- * pointer cancel
- * @param {Event} event
- * @param {Event or Touch} pointer
- * @private
- */
-Unipointer.prototype._pointerCancel = function( event, pointer ) {
- this._pointerDone();
- this.pointerCancel( event, pointer );
-};
-
-// public
-Unipointer.prototype.pointerCancel = function( event, pointer ) {
- this.emitEvent( 'pointerCancel', [ event, pointer ] );
-};
-
-// ----- ----- //
-
-// utility function for getting x/y cooridinates from event, because IE8
-Unipointer.getPointerPoint = function( pointer ) {
- return {
- x: pointer.pageX !== undefined ? pointer.pageX : pointer.clientX,
- y: pointer.pageY !== undefined ? pointer.pageY : pointer.clientY
- };
-};
-
-// ----- ----- //
-
-return Unipointer;
-
-}));
-
-/*!
- * Unidragger v1.1.3
- * Draggable base class
- * MIT license
- */
-
-/*jshint browser: true, unused: true, undef: true, strict: true */
-
-( function( window, factory ) {
- /*global define: false, module: false, require: false */
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'unidragger/unidragger',[
- 'eventie/eventie',
- 'unipointer/unipointer'
- ], function( eventie, Unipointer ) {
- return factory( window, eventie, Unipointer );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('eventie'),
- require('unipointer')
- );
- } else {
- // browser global
- window.Unidragger = factory(
- window,
- window.eventie,
- window.Unipointer
- );
- }
-
-}( window, function factory( window, eventie, Unipointer ) {
-
-
-
-// ----- ----- //
-
-function noop() {}
-
-// handle IE8 prevent default
-function preventDefaultEvent( event ) {
- if ( event.preventDefault ) {
- event.preventDefault();
- } else {
- event.returnValue = false;
- }
-}
-
-// -------------------------- Unidragger -------------------------- //
-
-function Unidragger() {}
-
-// inherit Unipointer & EventEmitter
-Unidragger.prototype = new Unipointer();
-
-// ----- bind start ----- //
-
-Unidragger.prototype.bindHandles = function() {
- this._bindHandles( true );
-};
-
-Unidragger.prototype.unbindHandles = function() {
- this._bindHandles( false );
-};
-
-var navigator = window.navigator;
-/**
- * works as unbinder, as you can .bindHandles( false ) to unbind
- * @param {Boolean} isBind - will unbind if falsey
- */
-Unidragger.prototype._bindHandles = function( isBind ) {
- // munge isBind, default to true
- isBind = isBind === undefined ? true : !!isBind;
- // extra bind logic
- var binderExtra;
- if ( navigator.pointerEnabled ) {
- binderExtra = function( handle ) {
- // disable scrolling on the element
- handle.style.touchAction = isBind ? 'none' : '';
- };
- } else if ( navigator.msPointerEnabled ) {
- binderExtra = function( handle ) {
- // disable scrolling on the element
- handle.style.msTouchAction = isBind ? 'none' : '';
- };
- } else {
- binderExtra = function() {
- // TODO re-enable img.ondragstart when unbinding
- if ( isBind ) {
- disableImgOndragstart( handle );
- }
- };
- }
- // bind each handle
- var bindMethod = isBind ? 'bind' : 'unbind';
- for ( var i=0, len = this.handles.length; i < len; i++ ) {
- var handle = this.handles[i];
- this._bindStartEvent( handle, isBind );
- binderExtra( handle );
- eventie[ bindMethod ]( handle, 'click', this );
- }
-};
-
-// remove default dragging interaction on all images in IE8
-// IE8 does its own drag thing on images, which messes stuff up
-
-function noDragStart() {
- return false;
-}
-
-// TODO replace this with a IE8 test
-var isIE8 = 'attachEvent' in document.documentElement;
-
-// IE8 only
-var disableImgOndragstart = !isIE8 ? noop : function( handle ) {
-
- if ( handle.nodeName == 'IMG' ) {
- handle.ondragstart = noDragStart;
- }
-
- var images = handle.querySelectorAll('img');
- for ( var i=0, len = images.length; i < len; i++ ) {
- var img = images[i];
- img.ondragstart = noDragStart;
- }
-};
-
-// ----- start event ----- //
-
-/**
- * pointer start
- * @param {Event} event
- * @param {Event or Touch} pointer
- */
-Unidragger.prototype.pointerDown = function( event, pointer ) {
- this._dragPointerDown( event, pointer );
- // kludge to blur focused inputs in dragger
- var focused = document.activeElement;
- if ( focused && focused.blur ) {
- focused.blur();
- }
- // bind move and end events
- this._bindPostStartEvents( event );
- this.emitEvent( 'pointerDown', [ event, pointer ] );
-};
-
-// base pointer down logic
-Unidragger.prototype._dragPointerDown = function( event, pointer ) {
- // track to see when dragging starts
- this.pointerDownPoint = Unipointer.getPointerPoint( pointer );
-
- // prevent default, unless touchstart or <select>
- var isTouchstart = event.type == 'touchstart';
- var targetNodeName = event.target.nodeName;
- if ( !isTouchstart && targetNodeName != 'SELECT' ) {
- preventDefaultEvent( event );
- }
-};
-
-// ----- move event ----- //
-
-/**
- * drag move
- * @param {Event} event
- * @param {Event or Touch} pointer
- */
-Unidragger.prototype.pointerMove = function( event, pointer ) {
- var moveVector = this._dragPointerMove( event, pointer );
- this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );
- this._dragMove( event, pointer, moveVector );
-};
-
-// base pointer move logic
-Unidragger.prototype._dragPointerMove = function( event, pointer ) {
- var movePoint = Unipointer.getPointerPoint( pointer );
- var moveVector = {
- x: movePoint.x - this.pointerDownPoint.x,
- y: movePoint.y - this.pointerDownPoint.y
- };
- // start drag if pointer has moved far enough to start drag
- if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {
- this._dragStart( event, pointer );
- }
- return moveVector;
-};
-
-// condition if pointer has moved far enough to start drag
-Unidragger.prototype.hasDragStarted = function( moveVector ) {
- return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;
-};
-
-
-// ----- end event ----- //
-
-/**
- * pointer up
- * @param {Event} event
- * @param {Event or Touch} pointer
- */
-Unidragger.prototype.pointerUp = function( event, pointer ) {
- this.emitEvent( 'pointerUp', [ event, pointer ] );
- this._dragPointerUp( event, pointer );
-};
-
-Unidragger.prototype._dragPointerUp = function( event, pointer ) {
- if ( this.isDragging ) {
- this._dragEnd( event, pointer );
- } else {
- // pointer didn't move enough for drag to start
- this._staticClick( event, pointer );
- }
-};
-
-// -------------------------- drag -------------------------- //
-
-// dragStart
-Unidragger.prototype._dragStart = function( event, pointer ) {
- this.isDragging = true;
- this.dragStartPoint = Unidragger.getPointerPoint( pointer );
- // prevent clicks
- this.isPreventingClicks = true;
-
- this.dragStart( event, pointer );
-};
-
-Unidragger.prototype.dragStart = function( event, pointer ) {
- this.emitEvent( 'dragStart', [ event, pointer ] );
-};
-
-// dragMove
-Unidragger.prototype._dragMove = function( event, pointer, moveVector ) {
- // do not drag if not dragging yet
- if ( !this.isDragging ) {
- return;
- }
-
- this.dragMove( event, pointer, moveVector );
-};
-
-Unidragger.prototype.dragMove = function( event, pointer, moveVector ) {
- preventDefaultEvent( event );
- this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );
-};
-
-// dragEnd
-Unidragger.prototype._dragEnd = function( event, pointer ) {
- // set flags
- this.isDragging = false;
- // re-enable clicking async
- var _this = this;
- setTimeout( function() {
- delete _this.isPreventingClicks;
- });
-
- this.dragEnd( event, pointer );
-};
-
-Unidragger.prototype.dragEnd = function( event, pointer ) {
- this.emitEvent( 'dragEnd', [ event, pointer ] );
-};
-
-// ----- onclick ----- //
-
-// handle all clicks and prevent clicks when dragging
-Unidragger.prototype.onclick = function( event ) {
- if ( this.isPreventingClicks ) {
- preventDefaultEvent( event );
- }
-};
-
-// ----- staticClick ----- //
-
-// triggered after pointer down & up with no/tiny movement
-Unidragger.prototype._staticClick = function( event, pointer ) {
- // allow click in <input>s and <textarea>s
- var nodeName = event.target.nodeName;
- if ( nodeName == 'INPUT' || nodeName == 'TEXTAREA' ) {
- event.target.focus();
- }
- this.staticClick( event, pointer );
-};
-
-Unidragger.prototype.staticClick = function( event, pointer ) {
- this.emitEvent( 'staticClick', [ event, pointer ] );
-};
-
-// ----- ----- //
-
-Unidragger.getPointerPoint = function( pointer ) {
- return {
- x: pointer.pageX !== undefined ? pointer.pageX : pointer.clientX,
- y: pointer.pageY !== undefined ? pointer.pageY : pointer.clientY
- };
-};
-
-// ----- ----- //
-
-Unidragger.getPointerPoint = Unipointer.getPointerPoint;
-
-return Unidragger;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/drag',[
- 'classie/classie',
- 'eventie/eventie',
- './flickity',
- 'unidragger/unidragger',
- 'fizzy-ui-utils/utils'
- ], function( classie, eventie, Flickity, Unidragger, utils ) {
- return factory( window, classie, eventie, Flickity, Unidragger, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('desandro-classie'),
- require('eventie'),
- require('./flickity'),
- require('unidragger'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.dragPrototype = factory(
- window,
- window.classie,
- window.eventie,
- window.Flickity,
- window.Unidragger,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, classie, eventie, Flickity, Unidragger, utils ) {
-
-
-
-// handle IE8 prevent default
-function preventDefaultEvent( event ) {
- if ( event.preventDefault ) {
- event.preventDefault();
- } else {
- event.returnValue = false;
- }
-}
-
-// ----- defaults ----- //
-
-utils.extend( Flickity.defaults, {
- draggable: true,
- touchVerticalScroll: true
-});
-
-// ----- create ----- //
-
-Flickity.createMethods.push('_createDrag');
-
-// -------------------------- drag prototype -------------------------- //
-
-var proto = {};
-utils.extend( proto, Unidragger.prototype );
-
-// -------------------------- -------------------------- //
-
-proto._createDrag = function() {
- this.on( 'activate', this.bindDrag );
- this.on( 'uiChange', this._uiChangeDrag );
- this.on( 'childUIPointerDown', this._childUIPointerDownDrag );
- this.on( 'deactivate', this.unbindDrag );
-};
-
-proto.bindDrag = function() {
- if ( !this.options.draggable || this.isDragBound ) {
- return;
- }
- classie.add( this.element, 'is-draggable' );
- this.handles = [ this.viewport ];
- this.bindHandles();
- this.isDragBound = true;
-};
-
-proto.unbindDrag = function() {
- if ( !this.isDragBound ) {
- return;
- }
- classie.remove( this.element, 'is-draggable' );
- this.unbindHandles();
- delete this.isDragBound;
-};
-
-proto._uiChangeDrag = function() {
- delete this.isFreeScrolling;
-};
-
-proto._childUIPointerDownDrag = function( event ) {
- preventDefaultEvent( event );
- this.pointerDownFocus( event );
-};
-
-// -------------------------- pointer events -------------------------- //
-
-proto.pointerDown = function( event, pointer ) {
- this._dragPointerDown( event, pointer );
-
- // kludge to blur focused inputs in dragger
- var focused = document.activeElement;
- if ( focused && focused.blur && focused != this.element &&
- // do not blur body for IE9 & 10, #117
- focused != document.body ) {
- focused.blur();
- }
- this.pointerDownFocus( event );
- // stop if it was moving
- this.velocity = 0;
- classie.add( this.viewport, 'is-pointer-down' );
- // bind move and end events
- this._bindPostStartEvents( event );
- this.dispatchEvent( 'pointerDown', event, [ pointer ] );
-};
-
-var touchStartEvents = {
- touchstart: true,
- MSPointerDown: true
-};
-
-var focusNodes = {
- INPUT: true,
- SELECT: true
-};
-
-proto.pointerDownFocus = function( event ) {
- // focus element, if not touch, and its not an input or select
- if ( this.options.accessibility && !touchStartEvents[ event.type ] &&
- !focusNodes[ event.target.nodeName ] ) {
- this.element.focus();
- }
-};
-
-// ----- move ----- //
-
-proto.pointerMove = function( event, pointer ) {
- var moveVector = this._dragPointerMove( event, pointer );
- this.touchVerticalScrollMove( event, pointer, moveVector );
- this._dragMove( event, pointer, moveVector );
- this.dispatchEvent( 'pointerMove', event, [ pointer, moveVector ] );
-};
-
-proto.hasDragStarted = function( moveVector ) {
- return !this.isTouchScrolling && Math.abs( moveVector.x ) > 3;
-};
-
-// ----- up ----- //
-
-proto.pointerUp = function( event, pointer ) {
- delete this.isTouchScrolling;
- classie.remove( this.viewport, 'is-pointer-down' );
- this.dispatchEvent( 'pointerUp', event, [ pointer ] );
- this._dragPointerUp( event, pointer );
-};
-
-// -------------------------- vertical scroll -------------------------- //
-
-var touchScrollEvents = {
- // move events
- // mousemove: true,
- touchmove: true,
- MSPointerMove: true
-};
-
-// position of pointer, relative to window
-function getPointerWindowY( pointer ) {
- var pointerPoint = Unidragger.getPointerPoint( pointer );
- return pointerPoint.y - window.pageYOffset;
-}
-
-proto.touchVerticalScrollMove = function( event, pointer, moveVector ) {
- // do not scroll if already dragging, if disabled
- var touchVerticalScroll = this.options.touchVerticalScroll;
- // if touchVerticalScroll is 'withDrag', allow scrolling and dragging
- var canNotScroll = touchVerticalScroll == 'withDrag' ? !touchVerticalScroll :
- this.isDragging || !touchVerticalScroll;
- if ( canNotScroll || !touchScrollEvents[ event.type ] ) {
- return;
- }
- // don't start vertical scrolling until pointer has moved 10 pixels in a direction
- if ( !this.isTouchScrolling && Math.abs( moveVector.y ) > 10 ) {
- // start touch vertical scrolling
- // scroll & pointerY when started
- this.startScrollY = window.pageYOffset;
- this.pointerWindowStartY = getPointerWindowY( pointer );
- // start scroll animation
- this.isTouchScrolling = true;
- }
-};
-
-// -------------------------- dragging -------------------------- //
-
-proto.dragStart = function( event, pointer ) {
- this.dragStartPosition = this.x;
- this.startAnimation();
- this.dispatchEvent( 'dragStart', event, [ pointer ] );
-};
-
-proto.dragMove = function( event, pointer, moveVector ) {
- preventDefaultEvent( event );
-
- this.previousDragX = this.x;
-
- var movedX = moveVector.x;
- // reverse if right-to-left
- var direction = this.options.rightToLeft ? -1 : 1;
- this.x = this.dragStartPosition + movedX * direction;
-
- if ( !this.options.wrapAround && this.cells.length ) {
- // slow drag
- var originBound = Math.max( -this.cells[0].target, this.dragStartPosition);
- this.x = this.x > originBound ? ( this.x - originBound ) * 0.5 + originBound : this.x;
- var endBound = Math.min( -this.getLastCell().target, this.dragStartPosition );
- this.x = this.x < endBound ? ( this.x - endBound ) * 0.5 + endBound : this.x;
- }
-
- this.previousDragMoveTime = this.dragMoveTime;
- this.dragMoveTime = new Date();
- this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );
-};
-
-proto.dragEnd = function( event, pointer ) {
- this.dragEndFlick();
- if ( this.options.freeScroll ) {
- this.isFreeScrolling = true;
- }
- // set selectedIndex based on where flick will end up
- var index = this.dragEndRestingSelect();
-
- if ( this.options.freeScroll && !this.options.wrapAround ) {
- // if free-scroll & not wrap around
- // do not free-scroll if going outside of bounding cells
- // so bounding cells can attract slider, and keep it in bounds
- var restingX = this.getRestingPosition();
- this.isFreeScrolling = -restingX > this.cells[0].target &&
- -restingX < this.getLastCell().target;
- } else if ( !this.options.freeScroll && index == this.selectedIndex ) {
- // boost selection if selected index has not changed
- index += this.dragEndBoostSelect();
- }
- // apply selection
- // TODO refactor this, selecting here feels weird
- this.select( index );
- this.dispatchEvent( 'dragEnd', event, [ pointer ] );
-};
-
-// apply velocity after dragging
-proto.dragEndFlick = function() {
- if ( !isFinite( this.previousDragX ) ) {
- return;
- }
- // set slider velocity
- var timeDelta = this.dragMoveTime - this.previousDragMoveTime;
- // prevent divide by 0, if dragMove & dragEnd happened at same time
- if ( timeDelta ) {
- // 60 frames per second, ideally
- // TODO, velocity should be in pixels per millisecond
- // currently in pixels per frame
- timeDelta /= 1000 / 60;
- var xDelta = this.x - this.previousDragX;
- this.velocity = xDelta / timeDelta;
- }
- // reset
- delete this.previousDragX;
-};
-
-proto.dragEndRestingSelect = function() {
- var restingX = this.getRestingPosition();
- // how far away from selected cell
- var distance = Math.abs( this.getCellDistance( -restingX, this.selectedIndex ) );
- // get closet resting going up and going down
- var positiveResting = this._getClosestResting( restingX, distance, 1 );
- var negativeResting = this._getClosestResting( restingX, distance, -1 );
- // use closer resting for wrap-around
- var index = positiveResting.distance < negativeResting.distance ?
- positiveResting.index : negativeResting.index;
- // for contain, force boost if delta is not greater than 1
- if ( this.options.contain && !this.options.wrapAround ) {
- index = Math.abs( index - this.selectedIndex ) <= 1 ? this.selectedIndex : index;
- }
- return index;
-};
-
-/**
- * given resting X and distance to selected cell
- * get the distance and index of the closest cell
- * @param {Number} restingX - estimated post-flick resting position
- * @param {Number} distance - distance to selected cell
- * @param {Integer} increment - +1 or -1, going up or down
- * @returns {Object} - { distance: {Number}, index: {Integer} }
- */
-proto._getClosestResting = function( restingX, distance, increment ) {
- var index = this.selectedIndex;
- var minDistance = Infinity;
- var condition = this.options.contain && !this.options.wrapAround ?
- // if contain, keep going if distance is equal to minDistance
- function( d, md ) { return d <= md; } : function( d, md ) { return d < md; };
- while ( condition( distance, minDistance ) ) {
- // measure distance to next cell
- index += increment;
- minDistance = distance;
- distance = this.getCellDistance( -restingX, index );
- if ( distance === null ) {
- break;
- }
- distance = Math.abs( distance );
- }
- return {
- distance: minDistance,
- // selected was previous index
- index: index - increment
- };
-};
-
-/**
- * measure distance between x and a cell target
- * @param {Number} x
- * @param {Integer} index - cell index
- */
-proto.getCellDistance = function( x, index ) {
- var len = this.cells.length;
- // wrap around if at least 2 cells
- var isWrapAround = this.options.wrapAround && len > 1;
- var cellIndex = isWrapAround ? utils.modulo( index, len ) : index;
- var cell = this.cells[ cellIndex ];
- if ( !cell ) {
- return null;
- }
- // add distance for wrap-around cells
- var wrap = isWrapAround ? this.slideableWidth * Math.floor( index / len ) : 0;
- return x - ( cell.target + wrap );
-};
-
-proto.dragEndBoostSelect = function() {
- var distance = this.getCellDistance( -this.x, this.selectedIndex );
- if ( distance > 0 && this.velocity < -1 ) {
- // if moving towards the right, and positive velocity, and the next attractor
- return 1;
- } else if ( distance < 0 && this.velocity > 1 ) {
- // if moving towards the left, and negative velocity, and previous attractor
- return -1;
- }
- return 0;
-};
-
-// ----- staticClick ----- //
-
-proto.staticClick = function( event, pointer ) {
- // get clickedCell, if cell was clicked
- var clickedCell = this.getParentCell( event.target );
- var cellElem = clickedCell && clickedCell.element;
- var cellIndex = clickedCell && utils.indexOf( this.cells, clickedCell );
- this.dispatchEvent( 'staticClick', event, [ pointer, cellElem, cellIndex ] );
-};
-
-// ----- ----- //
-
-utils.extend( Flickity.prototype, proto );
-
-// ----- ----- //
-
-return Flickity;
-
-}));
-
-/*!
- * Tap listener v1.1.0
- * listens to taps
- * MIT license
- */
-
-/*jshint browser: true, unused: true, undef: true, strict: true */
-
-( function( window, factory ) {
- /*global define: false, module: false, require: false */
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'tap-listener/tap-listener',[
- 'unipointer/unipointer'
- ], function( Unipointer ) {
- return factory( window, Unipointer );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('unipointer')
- );
- } else {
- // browser global
- window.TapListener = factory(
- window,
- window.Unipointer
- );
- }
-
-}( window, function factory( window, Unipointer ) {
-
-
-
-// -------------------------- TapListener -------------------------- //
-
-function TapListener( elem ) {
- this.bindTap( elem );
-}
-
-// inherit Unipointer & EventEmitter
-TapListener.prototype = new Unipointer();
-
-/**
- * bind tap event to element
- * @param {Element} elem
- */
-TapListener.prototype.bindTap = function( elem ) {
- if ( !elem ) {
- return;
- }
- this.unbindTap();
- this.tapElement = elem;
- this._bindStartEvent( elem, true );
-};
-
-TapListener.prototype.unbindTap = function() {
- if ( !this.tapElement ) {
- return;
- }
- this._bindStartEvent( this.tapElement, true );
- delete this.tapElement;
-};
-
-var isPageOffset = window.pageYOffset !== undefined;
-/**
- * pointer up
- * @param {Event} event
- * @param {Event or Touch} pointer
- */
-TapListener.prototype.pointerUp = function( event, pointer ) {
- var pointerPoint = Unipointer.getPointerPoint( pointer );
- var boundingRect = this.tapElement.getBoundingClientRect();
- // standard or IE8 scroll positions
- var scrollX = isPageOffset ? window.pageXOffset : document.body.scrollLeft;
- var scrollY = isPageOffset ? window.pageYOffset : document.body.scrollTop;
- // calculate if pointer is inside tapElement
- var isInside = pointerPoint.x >= boundingRect.left + scrollX &&
- pointerPoint.x <= boundingRect.right + scrollX &&
- pointerPoint.y >= boundingRect.top + scrollY &&
- pointerPoint.y <= boundingRect.bottom + scrollY;
- // trigger callback if pointer is inside element
- if ( isInside ) {
- this.emitEvent( 'tap', [ event, pointer ] );
- }
-};
-
-TapListener.prototype.destroy = function() {
- this.pointerDone();
- this.unbindTap();
-};
-
-// ----- ----- //
-
-return TapListener;
-
-}));
-
-// -------------------------- prev/next button -------------------------- //
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/prev-next-button',[
- 'eventie/eventie',
- './flickity',
- 'tap-listener/tap-listener',
- 'fizzy-ui-utils/utils'
- ], function( eventie, Flickity, TapListener, utils ) {
- return factory( window, eventie, Flickity, TapListener, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('eventie'),
- require('./flickity'),
- require('tap-listener'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.PrevNextButton = factory(
- window,
- window.eventie,
- window.Flickity,
- window.TapListener,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, eventie, Flickity, TapListener, utils ) {
-
-
-
-// ----- inline SVG support ----- //
-
-var svgURI = 'http://www.w3.org/2000/svg';
-
-// only check on demand, not on script load
-var supportsInlineSVG = ( function() {
- var supports;
- function checkSupport() {
- if ( supports !== undefined ) {
- return supports;
- }
- var div = document.createElement('div');
- div.innerHTML = '<svg/>';
- supports = ( div.firstChild && div.firstChild.namespaceURI ) == svgURI;
- return supports;
- }
- return checkSupport;
-})();
-
-// -------------------------- PrevNextButton -------------------------- //
-
-function PrevNextButton( direction, parent ) {
- this.direction = direction;
- this.parent = parent;
- this._create();
-}
-
-PrevNextButton.prototype = new TapListener();
-
-PrevNextButton.prototype._create = function() {
- // properties
- this.isEnabled = true;
- this.isPrevious = this.direction == -1;
- var leftDirection = this.parent.options.rightToLeft ? 1 : -1;
- this.isLeft = this.direction == leftDirection;
-
- var element = this.element = document.createElement('button');
- element.className = 'flickity-prev-next-button';
- element.className += this.isPrevious ? ' previous' : ' next';
- // prevent button from submitting form http://stackoverflow.com/a/10836076/182183
- element.setAttribute( 'type', 'button' );
- Flickity.setUnselectable( element );
- // create arrow
- if ( supportsInlineSVG() ) {
- var svg = this.createSVG();
- element.appendChild( svg );
- } else {
- // SVG not supported, set button text
- this.setArrowText();
- element.className += ' no-svg';
- }
- // update on select
- var _this = this;
- this.onCellSelect = function() {
- _this.update();
- };
- this.parent.on( 'cellSelect', this.onCellSelect );
- // tap
- this.on( 'tap', this.onTap );
- // pointerDown
- this.on( 'pointerDown', function onPointerDown( button, event ) {
- _this.parent.childUIPointerDown( event );
- });
-};
-
-PrevNextButton.prototype.activate = function() {
- this.update();
- this.bindTap( this.element );
- // click events from keyboard
- eventie.bind( this.element, 'click', this );
- // add to DOM
- this.parent.element.appendChild( this.element );
-};
-
-PrevNextButton.prototype.deactivate = function() {
- // remove from DOM
- this.parent.element.removeChild( this.element );
- // do regular TapListener destroy
- TapListener.prototype.destroy.call( this );
- // click events from keyboard
- eventie.unbind( this.element, 'click', this );
-};
-
-PrevNextButton.prototype.createSVG = function() {
- var svg = document.createElementNS( svgURI, 'svg');
- svg.setAttribute( 'viewBox', '0 0 100 100' );
- var path = document.createElementNS( svgURI, 'path');
- path.setAttribute( 'd', 'M 50,0 L 60,10 L 20,50 L 60,90 L 50,100 L 0,50 Z' );
- path.setAttribute( 'class', 'arrow' );
- // adjust arrow
- var arrowTransform = this.isLeft ? 'translate(15,0)' :
- 'translate(85,100) rotate(180)';
- path.setAttribute( 'transform', arrowTransform );
- svg.appendChild( path );
- return svg;
-};
-
-PrevNextButton.prototype.setArrowText = function() {
- var parentOptions = this.parent.options;
- var arrowText = this.isLeft ? parentOptions.leftArrowText : parentOptions.rightArrowText;
- utils.setText( this.element, arrowText );
-};
-
-PrevNextButton.prototype.onTap = function() {
- if ( !this.isEnabled ) {
- return;
- }
- this.parent.uiChange();
- var method = this.isPrevious ? 'previous' : 'next';
- this.parent[ method ]();
-};
-
-PrevNextButton.prototype.handleEvent = utils.handleEvent;
-
-PrevNextButton.prototype.onclick = function() {
- // only allow clicks from keyboard
- var focused = document.activeElement;
- if ( focused && focused == this.element ) {
- this.onTap();
- }
-};
-
-// ----- ----- //
-
-PrevNextButton.prototype.enable = function() {
- if ( this.isEnabled ) {
- return;
- }
- this.element.disabled = false;
- this.isEnabled = true;
-};
-
-PrevNextButton.prototype.disable = function() {
- if ( !this.isEnabled ) {
- return;
- }
- this.element.disabled = true;
- this.isEnabled = false;
-};
-
-PrevNextButton.prototype.update = function() {
- // index of first or last cell, if previous or next
- var cells = this.parent.cells;
- // enable is wrapAround and at least 2 cells
- if ( this.parent.options.wrapAround && cells.length > 1 ) {
- this.enable();
- return;
- }
- var lastIndex = cells.length ? cells.length - 1 : 0;
- var boundIndex = this.isPrevious ? 0 : lastIndex;
- var method = this.parent.selectedIndex == boundIndex ? 'disable' : 'enable';
- this[ method ]();
-};
-
-PrevNextButton.prototype.destroy = function() {
- this.deactivate();
-};
-
-// -------------------------- Flickity prototype -------------------------- //
-
-utils.extend( Flickity.defaults, {
- prevNextButtons: true,
- leftArrowText: '‹',
- rightArrowText: '›'
-});
-
-Flickity.createMethods.push('_createPrevNextButtons');
-
-Flickity.prototype._createPrevNextButtons = function() {
- if ( !this.options.prevNextButtons ) {
- return;
- }
-
- this.prevButton = new PrevNextButton( -1, this );
- this.nextButton = new PrevNextButton( 1, this );
-
- this.on( 'activate', this.activatePrevNextButtons );
-};
-
-Flickity.prototype.activatePrevNextButtons = function() {
- this.prevButton.activate();
- this.nextButton.activate();
- this.on( 'deactivate', this.deactivatePrevNextButtons );
-};
-
-Flickity.prototype.deactivatePrevNextButtons = function() {
- this.prevButton.deactivate();
- this.nextButton.deactivate();
- this.off( 'deactivate', this.deactivatePrevNextButtons );
-};
-
-// -------------------------- -------------------------- //
-
-Flickity.PrevNextButton = PrevNextButton;
-
-return PrevNextButton;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/page-dots',[
- 'eventie/eventie',
- './flickity',
- 'tap-listener/tap-listener',
- 'fizzy-ui-utils/utils'
- ], function( eventie, Flickity, TapListener, utils ) {
- return factory( window, eventie, Flickity, TapListener, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('eventie'),
- require('./flickity'),
- require('tap-listener'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.PageDots = factory(
- window,
- window.eventie,
- window.Flickity,
- window.TapListener,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, eventie, Flickity, TapListener, utils ) {
-
-// -------------------------- PageDots -------------------------- //
-
-
-
-function PageDots( parent ) {
- this.parent = parent;
- this._create();
-}
-
-PageDots.prototype = new TapListener();
-
-PageDots.prototype._create = function() {
- // create holder element
- this.holder = document.createElement('ol');
- this.holder.className = 'flickity-page-dots';
- Flickity.setUnselectable( this.holder );
- // create dots, array of elements
- this.dots = [];
- // update on select
- var _this = this;
- this.onCellSelect = function() {
- _this.updateSelected();
- };
- this.parent.on( 'cellSelect', this.onCellSelect );
- // tap
- this.on( 'tap', this.onTap );
- // pointerDown
- this.on( 'pointerDown', function onPointerDown( button, event ) {
- _this.parent.childUIPointerDown( event );
- });
-};
-
-PageDots.prototype.activate = function() {
- this.setDots();
- this.updateSelected();
- this.bindTap( this.holder );
- // add to DOM
- this.parent.element.appendChild( this.holder );
-};
-
-PageDots.prototype.deactivate = function() {
- // remove from DOM
- this.parent.element.removeChild( this.holder );
- TapListener.prototype.destroy.call( this );
-};
-
-PageDots.prototype.setDots = function() {
- // get difference between number of cells and number of dots
- var delta = this.parent.cells.length - this.dots.length;
- if ( delta > 0 ) {
- this.addDots( delta );
- } else if ( delta < 0 ) {
- this.removeDots( -delta );
- }
-};
-
-PageDots.prototype.addDots = function( count ) {
- var fragment = document.createDocumentFragment();
- var newDots = [];
- while ( count ) {
- var dot = document.createElement('li');
- dot.className = 'dot';
- fragment.appendChild( dot );
- newDots.push( dot );
- count--;
- }
- this.holder.appendChild( fragment );
- this.dots = this.dots.concat( newDots );
-};
-
-PageDots.prototype.removeDots = function( count ) {
- // remove from this.dots collection
- var removeDots = this.dots.splice( this.dots.length - count, count );
- // remove from DOM
- for ( var i=0, len = removeDots.length; i < len; i++ ) {
- var dot = removeDots[i];
- this.holder.removeChild( dot );
- }
-};
-
-PageDots.prototype.updateSelected = function() {
- // remove selected class on previous
- if ( this.selectedDot ) {
- this.selectedDot.className = 'dot';
- }
- // don't proceed if no dots
- if ( !this.dots.length ) {
- return;
- }
- this.selectedDot = this.dots[ this.parent.selectedIndex ];
- this.selectedDot.className = 'dot is-selected';
-};
-
-PageDots.prototype.onTap = function( event ) {
- var target = event.target;
- // only care about dot clicks
- if ( target.nodeName != 'LI' ) {
- return;
- }
-
- this.parent.uiChange();
- var index = utils.indexOf( this.dots, target );
- this.parent.select( index );
-};
-
-PageDots.prototype.destroy = function() {
- this.deactivate();
-};
-
-Flickity.PageDots = PageDots;
-
-// -------------------------- Flickity -------------------------- //
-
-utils.extend( Flickity.defaults, {
- pageDots: true
-});
-
-Flickity.createMethods.push('_createPageDots');
-
-Flickity.prototype._createPageDots = function() {
- if ( !this.options.pageDots ) {
- return;
- }
- this.pageDots = new PageDots( this );
- this.on( 'activate', this.activatePageDots );
- this.on( 'cellAddedRemoved', this.onCellAddedRemovedPageDots );
- this.on( 'deactivate', this.deactivatePageDots );
-};
-
-Flickity.prototype.activatePageDots = function() {
- this.pageDots.activate();
-};
-
-Flickity.prototype.onCellAddedRemovedPageDots = function() {
- this.pageDots.setDots();
-};
-
-Flickity.prototype.deactivatePageDots = function() {
- this.pageDots.deactivate();
-};
-
-// ----- ----- //
-
-Flickity.PageDots = PageDots;
-
-return PageDots;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/player',[
- 'eventEmitter/EventEmitter',
- 'eventie/eventie',
- './flickity'
- ], function( EventEmitter, eventie, Flickity ) {
- return factory( EventEmitter, eventie, Flickity );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- require('wolfy87-eventemitter'),
- require('eventie'),
- require('./flickity')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity.Player = factory(
- window.EventEmitter,
- window.eventie,
- window.Flickity
- );
- }
-
-}( window, function factory( EventEmitter, eventie, Flickity ) {
-
-
-
-// -------------------------- Page Visibility -------------------------- //
-// https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API
-
-var hiddenProperty, visibilityEvent;
-if ( 'hidden' in document ) {
- hiddenProperty = 'hidden';
- visibilityEvent = 'visibilitychange';
-} else if ( 'webkitHidden' in document ) {
- hiddenProperty = 'webkitHidden';
- visibilityEvent = 'webkitvisibilitychange';
-}
-
-// -------------------------- Player -------------------------- //
-
-function Player( parent ) {
- this.isPlaying = false;
- this.parent = parent;
- // visibility change event handler
- if ( visibilityEvent ) {
- var _this = this;
- this.onVisibilityChange = function() {
- _this.visibilityChange();
- };
- }
-}
-
-Player.prototype = new EventEmitter();
-
-// start play
-Player.prototype.play = function() {
- this.isPlaying = true;
- // playing kills pauses
- delete this.isPaused;
- // listen to visibility change
- if ( visibilityEvent ) {
- document.addEventListener( visibilityEvent, this.onVisibilityChange, false );
- }
- // start ticking
- this.tick();
-};
-
-Player.prototype.tick = function() {
- // do not tick if paused or not playing
- if ( !this.isPlaying || this.isPaused ) {
- return;
- }
- // keep track of when .tick()
- this.tickTime = new Date();
- var time = this.parent.options.autoPlay;
- // default to 3 seconds
- time = typeof time == 'number' ? time : 3000;
- var _this = this;
- this.timeout = setTimeout( function() {
- _this.parent.next( true );
- _this.tick();
- }, time );
-};
-
-Player.prototype.stop = function() {
- this.isPlaying = false;
- // stopping kills pauses
- delete this.isPaused;
- this.clear();
- // remove visibility change event
- if ( visibilityEvent ) {
- document.removeEventListener( visibilityEvent, this.onVisibilityChange, false );
- }
-};
-
-Player.prototype.clear = function() {
- clearTimeout( this.timeout );
-};
-
-Player.prototype.pause = function() {
- if ( this.isPlaying ) {
- this.isPaused = true;
- this.clear();
- }
-};
-
-Player.prototype.unpause = function() {
- // re-start play if in unpaused state
- if ( this.isPaused ) {
- this.play();
- }
-};
-
-// pause if page visibility is hidden, unpause if visible
-Player.prototype.visibilityChange = function() {
- var isHidden = document[ hiddenProperty ];
- this[ isHidden ? 'pause' : 'unpause' ]();
-};
-
-// -------------------------- Flickity -------------------------- //
-
-// utils.extend( Flickity.defaults, {
-// autoPlay: false
-// });
-
-Flickity.createMethods.push('_createPlayer');
-
-Flickity.prototype._createPlayer = function() {
- this.player = new Player( this );
-
- this.on( 'activate', this.activatePlayer );
- this.on( 'uiChange', this.stopPlayer );
- this.on( 'pointerDown', this.stopPlayer );
- this.on( 'deactivate', this.deactivatePlayer );
-};
-
-Flickity.prototype.activatePlayer = function() {
- if ( !this.options.autoPlay ) {
- return;
- }
- this.player.play();
- eventie.bind( this.element, 'mouseenter', this );
- this.isMouseenterBound = true;
-};
-
-Flickity.prototype.stopPlayer = function() {
- this.player.stop();
-};
-
-Flickity.prototype.deactivatePlayer = function() {
- this.player.stop();
- if ( this.isMouseenterBound ) {
- eventie.unbind( this.element, 'mouseenter', this );
- delete this.isMouseenterBound;
- }
-};
-
-// ----- mouseenter/leave ----- //
-
-// pause auto-play on hover
-Flickity.prototype.onmouseenter = function() {
- this.player.pause();
- eventie.bind( this.element, 'mouseleave', this );
-};
-
-// resume auto-play on hover off
-Flickity.prototype.onmouseleave = function() {
- this.player.unpause();
- eventie.unbind( this.element, 'mouseleave', this );
-};
-
-// ----- ----- //
-
-Flickity.Player = Player;
-
-return Player;
-
-}));
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/add-remove-cell',[
- './flickity',
- 'fizzy-ui-utils/utils'
- ], function( Flickity, utils ) {
- return factory( window, Flickity, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('./flickity'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = window.Flickity || {};
- window.Flickity = factory(
- window,
- window.Flickity,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, Flickity, utils ) {
-
-
-
-// append cells to a document fragment
-function getCellsFragment( cells ) {
- var fragment = document.createDocumentFragment();
- for ( var i=0, len = cells.length; i < len; i++ ) {
- var cell = cells[i];
- fragment.appendChild( cell.element );
- }
- return fragment;
-}
-
-// -------------------------- add/remove cell prototype -------------------------- //
-
-/**
- * Insert, prepend, or append cells
- * @param {Element, Array, NodeList} elems
- * @param {Integer} index
- */
-Flickity.prototype.insert = function( elems, index ) {
- var cells = this._makeCells( elems );
- if ( !cells || !cells.length ) {
- return;
- }
- var len = this.cells.length;
- // default to append
- index = index === undefined ? len : index;
- // add cells with document fragment
- var fragment = getCellsFragment( cells );
- // append to slider
- var isAppend = index == len;
- if ( isAppend ) {
- this.slider.appendChild( fragment );
- } else {
- var insertCellElement = this.cells[ index ].element;
- this.slider.insertBefore( fragment, insertCellElement );
- }
- // add to this.cells
- if ( index === 0 ) {
- // prepend, add to start
- this.cells = cells.concat( this.cells );
- } else if ( isAppend ) {
- // append, add to end
- this.cells = this.cells.concat( cells );
- } else {
- // insert in this.cells
- var endCells = this.cells.splice( index, len - index );
- this.cells = this.cells.concat( cells ).concat( endCells );
- }
-
- this._sizeCells( cells );
-
- var selectedIndexDelta = index > this.selectedIndex ? 0 : cells.length;
- this._cellAddedRemoved( index, selectedIndexDelta );
-};
-
-Flickity.prototype.append = function( elems ) {
- this.insert( elems, this.cells.length );
-};
-
-Flickity.prototype.prepend = function( elems ) {
- this.insert( elems, 0 );
-};
-
-/**
- * Remove cells
- * @param {Element, Array, NodeList} elems
- */
-Flickity.prototype.remove = function( elems ) {
- var cells = this.getCells( elems );
- var selectedIndexDelta = 0;
- var i, len, cell;
- // calculate selectedIndexDelta, easier if done in seperate loop
- for ( i=0, len = cells.length; i < len; i++ ) {
- cell = cells[i];
- var wasBefore = utils.indexOf( this.cells, cell ) < this.selectedIndex;
- selectedIndexDelta -= wasBefore ? 1 : 0;
- }
-
- for ( i=0, len = cells.length; i < len; i++ ) {
- cell = cells[i];
- cell.remove();
- // remove item from collection
- utils.removeFrom( this.cells, cell );
- }
-
- if ( cells.length ) {
- // update stuff
- this._cellAddedRemoved( 0, selectedIndexDelta );
- }
-};
-
-// updates when cells are added or removed
-Flickity.prototype._cellAddedRemoved = function( changedCellIndex, selectedIndexDelta ) {
- selectedIndexDelta = selectedIndexDelta || 0;
- this.selectedIndex += selectedIndexDelta;
- this.selectedIndex = Math.max( 0, Math.min( this.cells.length - 1, this.selectedIndex ) );
-
- this.emitEvent( 'cellAddedRemoved', [ changedCellIndex, selectedIndexDelta ] );
- this.cellChange( changedCellIndex );
-};
-
-/**
- * logic to be run after a cell's size changes
- * @param {Element} elem - cell's element
- */
-Flickity.prototype.cellSizeChange = function( elem ) {
- var cell = this.getCell( elem );
- if ( !cell ) {
- return;
- }
- cell.getSize();
-
- var index = utils.indexOf( this.cells, cell );
- this.cellChange( index );
-};
-
-/**
- * logic any time a cell is changed: added, removed, or size changed
- * @param {Integer} changedCellIndex - index of the changed cell, optional
- */
-Flickity.prototype.cellChange = function( changedCellIndex ) {
- // TODO maybe always size all cells unless isSkippingSizing
- // size all cells if necessary
- // if ( !isSkippingSizing ) {
- // this._sizeCells( this.cells );
- // }
-
- changedCellIndex = changedCellIndex || 0;
-
- this._positionCells( changedCellIndex );
- this._getWrapShiftCells();
- this.setGallerySize();
- // position slider
- if ( this.options.freeScroll ) {
- this.positionSlider();
- } else {
- this.positionSliderAtSelected();
- this.select( this.selectedIndex );
- }
-};
-
-// ----- ----- //
-
-return Flickity;
-
-}));
-
-/**
- * Flickity index
- * used for AMD and CommonJS exports
- */
-
-( function( window, factory ) {
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity/js/index',[
- './flickity',
- './drag',
- './prev-next-button',
- './page-dots',
- './player',
- './add-remove-cell'
- ], factory );
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- require('./flickity'),
- require('./drag'),
- require('./prev-next-button'),
- require('./page-dots'),
- require('./player'),
- require('./add-remove-cell')
- );
- }
-
-})( window, function factory( Flickity ) {
- /*jshint strict: false*/
- return Flickity;
-});
-
-/*!
- * Flickity asNavFor v1.0.1
- * enable asNavFor for Flickity
- */
-
-/*jshint browser: true, undef: true, unused: true, strict: true*/
-
-( function( window, factory ) {
- /*global define: false, module: false, require: false */
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( 'flickity-as-nav-for/as-nav-for',[
- 'classie/classie',
- 'flickity/js/index',
- 'fizzy-ui-utils/utils'
- ], function( classie, Flickity, utils ) {
- return factory( window, classie, Flickity, utils );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('desandro-classie'),
- require('flickity'),
- require('fizzy-ui-utils')
- );
- } else {
- // browser global
- window.Flickity = factory(
- window,
- window.classie,
- window.Flickity,
- window.fizzyUIUtils
- );
- }
-
-}( window, function factory( window, classie, Flickity, utils ) {
-
-
-
-// -------------------------- asNavFor prototype -------------------------- //
-
-// Flickity.defaults.asNavFor = null;
-
-Flickity.createMethods.push('_createAsNavFor');
-
-Flickity.prototype._createAsNavFor = function() {
- this.on( 'activate', this.activateAsNavFor );
- this.on( 'deactivate', this.deactivateAsNavFor );
- this.on( 'destroy', this.destroyAsNavFor );
-
- var asNavForOption = this.options.asNavFor;
- if ( !asNavForOption ) {
- return;
- }
- // HACK do async, give time for other flickity to be initalized
- var _this = this;
- setTimeout( function initNavCompanion() {
- _this.setNavCompanion( asNavForOption );
- });
-};
-
-Flickity.prototype.setNavCompanion = function( elem ) {
- elem = utils.getQueryElement( elem );
- var companion = Flickity.data( elem );
- // stop if no companion or companion is self
- if ( !companion || companion == this ) {
- return;
- }
-
- this.navCompanion = companion;
- // companion select
- var _this = this;
- this.onNavCompanionSelect = function() {
- _this.navCompanionSelect();
- };
- companion.on( 'cellSelect', this.onNavCompanionSelect );
- // click
- this.on( 'staticClick', this.onNavStaticClick );
-
- this.navCompanionSelect();
-};
-
-Flickity.prototype.navCompanionSelect = function() {
- if ( !this.navCompanion ) {
- return;
- }
- var index = this.navCompanion.selectedIndex;
- this.select( index );
- // set nav selected class
- this.removeNavSelectedElement();
- // stop if companion has more cells than this one
- if ( this.selectedIndex != index ) {
- return;
- }
- this.navSelectedElement = this.cells[ index ].element;
- classie.add( this.navSelectedElement, 'is-nav-selected' );
-};
-
-Flickity.prototype.activateAsNavFor = function() {
- this.navCompanionSelect();
-};
-
-Flickity.prototype.removeNavSelectedElement = function() {
- if ( !this.navSelectedElement ) {
- return;
- }
- classie.remove( this.navSelectedElement, 'is-nav-selected' );
- delete this.navSelectedElement;
-};
-
-Flickity.prototype.onNavStaticClick = function( event, pointer, cellElement, cellIndex ) {
- if ( typeof cellIndex == 'number' ) {
- this.navCompanion.select( cellIndex );
- }
-};
-
-Flickity.prototype.deactivateAsNavFor = function() {
- this.removeNavSelectedElement();
-};
-
-Flickity.prototype.destroyAsNavFor = function() {
- if ( !this.navCompanion ) {
- return;
- }
- this.navCompanion.off( 'cellSelect', this.onNavCompanionSelect );
- this.off( 'staticClick', this.onNavStaticClick );
- delete this.navCompanion;
-};
-
-// ----- ----- //
-
-return Flickity;
-
-}));
-
-/*!
- * imagesLoaded v3.1.8
- * JavaScript is all like "You images are done yet or what?"
- * MIT License
- */
-
-( function( window, factory ) {
- // universal module definition
-
- /*global define: false, module: false, require: false */
-
- if ( typeof define === 'function' && define.amd ) {
- // AMD
- define( 'imagesloaded/imagesloaded',[
- 'eventEmitter/EventEmitter',
- 'eventie/eventie'
- ], function( EventEmitter, eventie ) {
- return factory( window, EventEmitter, eventie );
- });
- } else if ( typeof exports === 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('wolfy87-eventemitter'),
- require('eventie')
- );
- } else {
- // browser global
- window.imagesLoaded = factory(
- window,
- window.EventEmitter,
- window.eventie
- );
- }
-
-})( window,
-
-// -------------------------- factory -------------------------- //
-
-function factory( window, EventEmitter, eventie ) {
-
-
-
-var $ = window.jQuery;
-var console = window.console;
-var hasConsole = typeof console !== 'undefined';
-
-// -------------------------- helpers -------------------------- //
-
-// extend objects
-function extend( a, b ) {
- for ( var prop in b ) {
- a[ prop ] = b[ prop ];
- }
- return a;
-}
-
-var objToString = Object.prototype.toString;
-function isArray( obj ) {
- return objToString.call( obj ) === '[object Array]';
-}
-
-// turn element or nodeList into an array
-function makeArray( obj ) {
- var ary = [];
- if ( isArray( obj ) ) {
- // use object if already an array
- ary = obj;
- } else if ( typeof obj.length === 'number' ) {
- // convert nodeList to array
- for ( var i=0, len = obj.length; i < len; i++ ) {
- ary.push( obj[i] );
- }
- } else {
- // array of single index
- ary.push( obj );
- }
- return ary;
-}
-
- // -------------------------- imagesLoaded -------------------------- //
-
- /**
- * @param {Array, Element, NodeList, String} elem
- * @param {Object or Function} options - if function, use as callback
- * @param {Function} onAlways - callback function
- */
- function ImagesLoaded( elem, options, onAlways ) {
- // coerce ImagesLoaded() without new, to be new ImagesLoaded()
- if ( !( this instanceof ImagesLoaded ) ) {
- return new ImagesLoaded( elem, options );
- }
- // use elem as selector string
- if ( typeof elem === 'string' ) {
- elem = document.querySelectorAll( elem );
- }
-
- this.elements = makeArray( elem );
- this.options = extend( {}, this.options );
-
- if ( typeof options === 'function' ) {
- onAlways = options;
- } else {
- extend( this.options, options );
- }
-
- if ( onAlways ) {
- this.on( 'always', onAlways );
- }
-
- this.getImages();
-
- if ( $ ) {
- // add jQuery Deferred object
- this.jqDeferred = new $.Deferred();
- }
-
- // HACK check async to allow time to bind listeners
- var _this = this;
- setTimeout( function() {
- _this.check();
- });
- }
-
- ImagesLoaded.prototype = new EventEmitter();
-
- ImagesLoaded.prototype.options = {};
-
- ImagesLoaded.prototype.getImages = function() {
- this.images = [];
-
- // filter & find items if we have an item selector
- for ( var i=0, len = this.elements.length; i < len; i++ ) {
- var elem = this.elements[i];
- // filter siblings
- if ( elem.nodeName === 'IMG' ) {
- this.addImage( elem );
- }
- // find children
- // no non-element nodes, #143
- var nodeType = elem.nodeType;
- if ( !nodeType || !( nodeType === 1 || nodeType === 9 || nodeType === 11 ) ) {
- continue;
- }
- var childElems = elem.querySelectorAll('img');
- // concat childElems to filterFound array
- for ( var j=0, jLen = childElems.length; j < jLen; j++ ) {
- var img = childElems[j];
- this.addImage( img );
- }
- }
- };
-
- /**
- * @param {Image} img
- */
- ImagesLoaded.prototype.addImage = function( img ) {
- var loadingImage = new LoadingImage( img );
- this.images.push( loadingImage );
- };
-
- ImagesLoaded.prototype.check = function() {
- var _this = this;
- var checkedCount = 0;
- var length = this.images.length;
- this.hasAnyBroken = false;
- // complete if no images
- if ( !length ) {
- this.complete();
- return;
- }
-
- function onConfirm( image, message ) {
- if ( _this.options.debug && hasConsole ) {
- console.log( 'confirm', image, message );
- }
-
- _this.progress( image );
- checkedCount++;
- if ( checkedCount === length ) {
- _this.complete();
- }
- return true; // bind once
- }
-
- for ( var i=0; i < length; i++ ) {
- var loadingImage = this.images[i];
- loadingImage.on( 'confirm', onConfirm );
- loadingImage.check();
- }
- };
-
- ImagesLoaded.prototype.progress = function( image ) {
- this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
- // HACK - Chrome triggers event before object properties have changed. #83
- var _this = this;
- setTimeout( function() {
- _this.emit( 'progress', _this, image );
- if ( _this.jqDeferred && _this.jqDeferred.notify ) {
- _this.jqDeferred.notify( _this, image );
- }
- });
- };
-
- ImagesLoaded.prototype.complete = function() {
- var eventName = this.hasAnyBroken ? 'fail' : 'done';
- this.isComplete = true;
- var _this = this;
- // HACK - another setTimeout so that confirm happens after progress
- setTimeout( function() {
- _this.emit( eventName, _this );
- _this.emit( 'always', _this );
- if ( _this.jqDeferred ) {
- var jqMethod = _this.hasAnyBroken ? 'reject' : 'resolve';
- _this.jqDeferred[ jqMethod ]( _this );
- }
- });
- };
-
- // -------------------------- jquery -------------------------- //
-
- if ( $ ) {
- $.fn.imagesLoaded = function( options, callback ) {
- var instance = new ImagesLoaded( this, options, callback );
- return instance.jqDeferred.promise( $(this) );
- };
- }
-
-
- // -------------------------- -------------------------- //
-
- function LoadingImage( img ) {
- this.img = img;
- }
-
- LoadingImage.prototype = new EventEmitter();
-
- LoadingImage.prototype.check = function() {
- // first check cached any previous images that have same src
- var resource = cache[ this.img.src ] || new Resource( this.img.src );
- if ( resource.isConfirmed ) {
- this.confirm( resource.isLoaded, 'cached was confirmed' );
- return;
- }
-
- // If complete is true and browser supports natural sizes,
- // try to check for image status manually.
- if ( this.img.complete && this.img.naturalWidth !== undefined ) {
- // report based on naturalWidth
- this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
- return;
- }
-
- // If none of the checks above matched, simulate loading on detached element.
- var _this = this;
- resource.on( 'confirm', function( resrc, message ) {
- _this.confirm( resrc.isLoaded, message );
- return true;
- });
-
- resource.check();
- };
-
- LoadingImage.prototype.confirm = function( isLoaded, message ) {
- this.isLoaded = isLoaded;
- this.emit( 'confirm', this, message );
- };
-
- // -------------------------- Resource -------------------------- //
-
- // Resource checks each src, only once
- // separate class from LoadingImage to prevent memory leaks. See #115
-
- var cache = {};
-
- function Resource( src ) {
- this.src = src;
- // add to cache
- cache[ src ] = this;
- }
-
- Resource.prototype = new EventEmitter();
-
- Resource.prototype.check = function() {
- // only trigger checking once
- if ( this.isChecked ) {
- return;
- }
- // simulate loading on detached element
- var proxyImage = new Image();
- eventie.bind( proxyImage, 'load', this );
- eventie.bind( proxyImage, 'error', this );
- proxyImage.src = this.src;
- // set flag
- this.isChecked = true;
- };
-
- // ----- events ----- //
-
- // trigger specified handler for event type
- Resource.prototype.handleEvent = function( event ) {
- var method = 'on' + event.type;
- if ( this[ method ] ) {
- this[ method ]( event );
- }
- };
-
- Resource.prototype.onload = function( event ) {
- this.confirm( true, 'onload' );
- this.unbindProxyEvents( event );
- };
-
- Resource.prototype.onerror = function( event ) {
- this.confirm( false, 'onerror' );
- this.unbindProxyEvents( event );
- };
-
- // ----- confirm ----- //
-
- Resource.prototype.confirm = function( isLoaded, message ) {
- this.isConfirmed = true;
- this.isLoaded = isLoaded;
- this.emit( 'confirm', this, message );
- };
-
- Resource.prototype.unbindProxyEvents = function( event ) {
- eventie.unbind( event.target, 'load', this );
- eventie.unbind( event.target, 'error', this );
- };
-
- // ----- ----- //
-
- return ImagesLoaded;
-
-});
-
-/*!
- * Flickity imagesLoaded v1.0.0
- * enables imagesLoaded option for Flickity
- */
-
-/*jshint browser: true, strict: true, undef: true, unused: true */
-
-( function( window, factory ) {
- /*global define: false, module: false, require: false */
-
- // universal module definition
-
- if ( typeof define == 'function' && define.amd ) {
- // AMD
- define( [
- 'flickity/js/index',
- 'imagesloaded/imagesloaded'
- ], function( Flickity, imagesLoaded ) {
- return factory( window, Flickity, imagesLoaded );
- });
- } else if ( typeof exports == 'object' ) {
- // CommonJS
- module.exports = factory(
- window,
- require('flickity'),
- require('imagesloaded')
- );
- } else {
- // browser global
- window.Flickity = factory(
- window,
- window.Flickity,
- window.imagesLoaded
- );
- }
-
-}( window, function factory( window, Flickity, imagesLoaded ) {
-
-
-Flickity.createMethods.push('_createImagesLoaded');
-
-Flickity.prototype._createImagesLoaded = function() {
- this.on( 'activate', this.imagesLoaded );
-};
-
-Flickity.prototype.imagesLoaded = function() {
- if ( !this.options.imagesLoaded ) {
- return;
- }
- var _this = this;
- function onImagesLoadedProgress( instance, image ) {
- var cell = _this.getParentCell( image.img );
- _this.cellSizeChange( cell && cell.element );
- }
- this.loader = imagesLoaded( this.slider ).on( 'progress', onImagesLoadedProgress );
-};
-
-return Flickity;
-
-}));
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/imageviewer.js b/StoneIsland/platforms/android/assets/www/js/vendor/imageviewer.js
deleted file mode 100644
index d80ae7ed..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/imageviewer.js
+++ /dev/null
@@ -1,821 +0,0 @@
-/*
- ImageViewer v 1.1.3
- Author: Sudhanshu Yadav
- Copyright (c) 2015-2016 to Sudhanshu Yadav - ignitersworld.com , released under the MIT license.
- Demo on: http://ignitersworld.com/lab/imageViewer.html
-*/
-
-/*** picture view plugin ****/
-(function ($, window, document, undefined) {
- "use strict";
-
- //an empty function
- var noop = function () {};
-
- var $body = $('body'),
- $window = $(window),
- $document = $(document);
-
- var openTime = 0
-
- //constants
- var ZOOM_CONSTANT = 15; //increase or decrease value for zoom on mouse wheel
- var MOUSE_WHEEL_COUNT = 5; //A mouse delta after which it should stop preventing default behaviour of mouse wheel
-
- //ease out method
- /*
- t : current time,
- b : intial value,
- c : changed value,
- d : duration
- */
- function easeOutQuart(t, b, c, d) {
- t /= d;
- t--;
- return -c * (t * t * t * t - 1) + b;
- };
-
-
- // http://paulirish.com/2011/requestanimationframe-for-smart-animating/
- // http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
-
- // requestAnimationFrame polyfill by Erik Möller
- // fixes from Paul Irish and Tino Zijdel
-
- (function () {
- var lastTime = 0;
- var vendors = ['ms', 'moz', 'webkit', 'o'];
- for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
- window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
- window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
- }
-
- if (!window.requestAnimationFrame)
- window.requestAnimationFrame = function (callback, element) {
- var currTime = new Date().getTime();
- var timeToCall = Math.max(0, 16 - (currTime - lastTime));
- var id = window.setTimeout(function () {
- callback(currTime + timeToCall);
- },
- timeToCall);
- lastTime = currTime + timeToCall;
- return id;
- };
-
- if (!window.cancelAnimationFrame)
- window.cancelAnimationFrame = function (id) {
- clearTimeout(id);
- };
- }());
-
- //function to check if image is loaded
- function imageLoaded(img) {
- return img.complete && (typeof img.naturalWidth === 'undefined' || img.naturalWidth !== 0);
- }
-
- var imageViewHtml = '<div class="iv-loader"></div>' +
- '<div class="iv-snap-view">' +
- '<div class="iv-snap-image-wrap">' +
- '<div class="iv-snap-handle"></div>' +
- '</div>' +
- '<div class="iv-zoom-slider"><div class="iv-zoom-handle"></div></div>' +
- '</div>' +
- '<div class="iv-image-view"><div class="iv-image-wrap" ></div></div>';
-
- //add a full screen view
- $(function () {
- if(!$body.length) $body = $('body');
- $body.append('<div id="iv-container">' + imageViewHtml + '<div class="iv-close" role="button" aria-label="Close this image."></div><div>');
- imageViewHtml = null
- });
-
- function Slider(container, options) {
- this.container = container;
- this.onStart = options.onStart || noop;
- this.onMove = options.onMove || noop;
- this.onEnd = options.onEnd || noop;
- this.sliderId = options.sliderId || 'slider' + Math.ceil(Math.random() * 1000000);
- }
-
- Slider.prototype.init = function () {
- var self = this,
- container = this.container,
- eventSuffix = '.' + this.sliderId;
-
- //assign event on snap image wrap
- this.container.on('touchstart' + eventSuffix + ' mousedown' + eventSuffix, function (estart) {
- estart.preventDefault();
- var touchMove = (estart.type == "touchstart" ? "touchmove" : "mousemove") + eventSuffix,
- touchEnd = (estart.type == "touchstart" ? "touchend" : "mouseup") + eventSuffix,
- eOrginal = estart.originalEvent,
- sx = eOrginal.clientX || eOrginal.touches[0].clientX,
- sy = eOrginal.clientY || eOrginal.touches[0].clientY;
-
- var start = self.onStart(estart, {
- x: sx,
- y: sy
- });
-
- if (start === false) return;
-
- var moveListener = function (emove) {
- emove.preventDefault();
-
- eOrginal = emove.originalEvent;
-
- //get the cordinates
- var mx = eOrginal.clientX || eOrginal.touches[0].clientX,
- my = eOrginal.clientY || eOrginal.touches[0].clientY;
-
- self.onMove(emove, {
- dx: mx - sx,
- dy: my - sy,
- mx: mx,
- my: my
- });
-
- };
-
- var endListener = function () {
- $document.off(touchMove, moveListener);
- $document.off(touchEnd, endListener);
- self.onEnd();
- };
-
- $document.on(touchMove, moveListener);
- $document.on(touchEnd, endListener);
- });
-
- return this;
- }
-
-
- function ImageViewer(container, options) {
- var self = this;
-
- if (container.is('#iv-container')) {
- self._fullPage = true;
- }
-
- self.container = container;
- options = self.options = $.extend({}, ImageViewer.defaults, options);
-
- self.zoomValue = 100;
-
- if (!container.find('.snap-view').length) {
- container.prepend(imageViewHtml);
- }
-
- container.addClass('iv-container');
-
- if (container.css('position') == 'static') container.css('position', 'relative');
-
- self.snapView = container.find('.iv-snap-view');
- self.snapImageWrap = container.find('.iv-snap-image-wrap');
- self.imageWrap = container.find('.iv-image-wrap');
- self.snapHandle = container.find('.iv-snap-handle');
- self.zoomHandle = container.find('.iv-zoom-handle');
- self._viewerId = 'iv' + Math.floor(Math.random() * 1000000);
- }
-
-
- ImageViewer.prototype = {
- constructor: ImageViewer,
- _init: function () {
- var viewer = this,
- options = viewer.options,
- zooming = false, // tell weather we are zooming trough touch
- container = this.container;
-
- var eventSuffix = '.' + viewer._viewerId;
-
- //cache dom refrence
- var snapHandle = this.snapHandle;
- var snapImgWrap = this.snapImageWrap;
- var imageWrap = this.imageWrap;
-
- var snapSlider = new Slider(snapImgWrap, {
- sliderId: viewer._viewerId,
- onStart: function () {
-
- if (!viewer.loaded) return false;
-
- var handleStyle = snapHandle[0].style;
-
- this.curHandleTop = parseFloat(handleStyle.top);
- this.curHandleLeft = parseFloat(handleStyle.left);
- this.handleWidth = parseFloat(handleStyle.width);
- this.handleHeight = parseFloat(handleStyle.height);
- this.width = snapImgWrap.width();
- this.height = snapImgWrap.height();
-
- //stop momentum on image
- clearInterval(imageSlider.slideMomentumCheck);
- cancelAnimationFrame(imageSlider.sliderMomentumFrame);
- },
- onMove: function (e, position) {
- var xPerc = this.curHandleLeft + position.dx * 100 / this.width,
- yPerc = this.curHandleTop + position.dy * 100 / this.height;
-
- xPerc = Math.max(0, xPerc);
- xPerc = Math.min(100 - this.handleWidth, xPerc);
-
- yPerc = Math.max(0, yPerc);
- yPerc = Math.min(100 - this.handleHeight, yPerc);
-
-
- var containerDim = viewer.containerDim,
- imgWidth = viewer.imageDim.w * (viewer.zoomValue / 100),
- imgHeight = viewer.imageDim.h * (viewer.zoomValue / 100),
- imgLeft = imgWidth < containerDim.w ? (containerDim.w - imgWidth) / 2 : -imgWidth * xPerc / 100,
- imgTop = imgHeight < containerDim.h ? (containerDim.h - imgHeight) / 2 : -imgHeight * yPerc / 100;
-
- snapHandle.css({
- top: yPerc + '%',
- left: xPerc + '%'
- })
-
- viewer.currentImg.css({
- left: imgLeft,
- top: imgTop
- })
- }
- }).init();
-
-
- /*Add slide interaction to image*/
- var imageSlider = viewer._imageSlider = new Slider(imageWrap, {
- sliderId: viewer._viewerId,
- onStart: function (e, position) {
- if (!viewer.loaded) return false;
- if (zooming) return;
- var self = this;
- snapSlider.onStart();
- self.imgWidth = viewer.imageDim.w * viewer.zoomValue / 100;
- self.imgHeight = viewer.imageDim.h * viewer.zoomValue / 100;
-
- self.positions = [position, position];
-
- self.startPosition = position;
-
- //clear all animation frame and interval
- viewer._clearFrames();
-
- self.slideMomentumCheck = setInterval(function () {
- if (!self.currentPos) return;
- self.positions.shift();
- self.positions.push({
- x: self.currentPos.mx,
- y: self.currentPos.my
- })
- }, 50);
- },
- onMove: function (e, position) {
- if (zooming) return;
- this.currentPos = position;
-
- snapSlider.onMove(e, {
- dx: -position.dx * snapSlider.width / this.imgWidth,
- dy: -position.dy * snapSlider.height / this.imgHeight
- });
- },
- onEnd: function () {
- if (zooming) return;
- var self = this;
-
- var xDiff = this.positions[1].x - this.positions[0].x,
- yDiff = this.positions[1].y - this.positions[0].y;
-
- function momentum() {
- if (step <= 60) {
- self.sliderMomentumFrame = requestAnimationFrame(momentum);
- }
-
- positionX = positionX + easeOutQuart(step, xDiff / 3, -xDiff / 3, 60);
- positionY = positionY + easeOutQuart(step, yDiff / 3, -yDiff / 3, 60)
-
-
- snapSlider.onMove(null, {
- dx: -((positionX) * snapSlider.width / self.imgWidth),
- dy: -((positionY) * snapSlider.height / self.imgHeight)
- });
- step++;
- }
-
- if (Math.abs(xDiff) > 30 || Math.abs(yDiff) > 30) {
- var step = 1,
- positionX = self.currentPos.dx,
- positionY = self.currentPos.dy;
-
- momentum();
- }
- }
- }).init();
-
-
- /*Add zoom interation in mouse wheel*/
- var changedDelta = 0;
- imageWrap.on("mousewheel" + eventSuffix + " DOMMouseScroll" + eventSuffix, function (e) {
- if(!options.zoomOnMouseWheel) return;
-
- if (!viewer.loaded) return;
-
-
- //clear all animation frame and interval
- viewer._clearFrames();
-
- // cross-browser wheel delta
- var delta = Math.max(-1, Math.min(1, (e.originalEvent.wheelDelta || -e.originalEvent.detail))),
- zoomValue = viewer.zoomValue * (100 + delta * ZOOM_CONSTANT) / 100;
-
- if(!(zoomValue >= 100 && zoomValue <= options.maxZoom)){
- changedDelta += Math.abs(delta);
- }
- else{
- changedDelta = 0;
- }
-
- if(changedDelta > MOUSE_WHEEL_COUNT) return;
-
- e.preventDefault();
-
- var contOffset = container.offset(),
- x = (e.pageX || e.originalEvent.pageX) - contOffset.left,
- y = (e.pageY || e.originalEvent.pageY) - contOffset.top;
-
-
-
- viewer.zoom(zoomValue, {
- x: x,
- y: y
- });
-
- //show the snap viewer
- showSnapView();
- });
-
-
- //apply pinch and zoom feature
- imageWrap.on('touchstart' + eventSuffix, function (estart) {
- if (!viewer.loaded) return;
- var touch0 = estart.originalEvent.touches[0],
- touch1 = estart.originalEvent.touches[1];
-
- if (!(touch0 && touch1)) {
- return;
- }
-
-
- zooming = true;
-
- var contOffset = container.offset();
-
- var startdist = Math.sqrt(Math.pow(touch1.pageX - touch0.pageX, 2) + Math.pow(touch1.pageY - touch0.pageY, 2)),
- startZoom = viewer.zoomValue,
- center = {
- x: ((touch1.pageX + touch0.pageX) / 2) - contOffset.left,
- y: ((touch1.pageY + touch0.pageY) / 2) - contOffset.top
- }
-
- var moveListener = function (emove) {
- emove.preventDefault();
-
- var touch0 = emove.originalEvent.touches[0],
- touch1 = emove.originalEvent.touches[1],
- newDist = Math.sqrt(Math.pow(touch1.pageX - touch0.pageX, 2) + Math.pow(touch1.pageY - touch0.pageY, 2)),
- zoomValue = startZoom + (newDist - startdist) / 2;
-
- viewer.zoom(zoomValue, center);
- };
-
- var endListener = function () {
- $document.off('touchmove', moveListener);
- $document.off('touchend', endListener);
- zooming = false;
- };
-
- $document.on('touchmove', moveListener);
- $document.on('touchend', endListener);
-
- });
-
-
- //handle double tap for zoom in and zoom out
- var touchtime = 0,
- point;
- imageWrap.on('click' + eventSuffix, function (e) {
- if (openTime+700 < Date.now()) {
- return $('.iv-close').trigger("click")
- }
- if (touchtime == 0) {
- touchtime = Date.now();
- point = {
- x: e.pageX,
- y: e.pageY
- };
- } else {
- if ((Date.now() - touchtime) < 500 && Math.abs(e.pageX - point.x) < 50 && Math.abs(e.pageY - point.y) < 50) {
- if (viewer.zoomValue == options.zoomValue) {
- viewer.zoom(200)
- } else {
- viewer.resetZoom()
- }
- touchtime = 0;
- } else {
- touchtime = 0;
- }
- }
- });
-
- //zoom in zoom out using zoom handle
- var slider = viewer.snapView.find('.iv-zoom-slider');
- var zoomSlider = new Slider(slider, {
- sliderId: viewer._viewerId,
- onStart: function (eStart) {
-
- if (!viewer.loaded) return false;
-
- this.leftOffset = slider.offset().left;
- this.handleWidth = viewer.zoomHandle.width();
- this.onMove(eStart);
-
- },
- onMove: function (e, position) {
- var newLeft = (e.pageX || e.originalEvent.touches[0].pageX) - this.leftOffset - this.handleWidth / 2;
-
- newLeft = Math.max(0, newLeft);
- newLeft = Math.min(viewer._zoomSliderLength, newLeft);
-
- var zoomValue = 100 + (options.maxZoom - 100) * newLeft / viewer._zoomSliderLength;
-
- viewer.zoom(zoomValue);
- }
- }).init();
-
-
- //display snapView on interaction
- var snapViewTimeout, snapViewVisible;
-
- function showSnapView(noTimeout) {
- if(!options.snapView) return;
-
- if (snapViewVisible || viewer.zoomValue <= 100 || !viewer.loaded) return;
- clearTimeout(snapViewTimeout);
- snapViewVisible = true;
- viewer.snapView.css('opacity', 1);
- if (!noTimeout) {
- snapViewTimeout = setTimeout(function () {
- viewer.snapView.css('opacity', 0);
- snapViewVisible = false;
- }, 4000);
- }
- }
-
- imageWrap.on('touchmove' + eventSuffix + ' mousemove' + eventSuffix, function () {
- showSnapView();
- });
-
- var snapEventsCallback = {};
- snapEventsCallback['mouseenter' + eventSuffix + ' touchstart' + eventSuffix] = function () {
- snapViewVisible = false;
- showSnapView(true);
- };
-
- snapEventsCallback['mouseleave' + eventSuffix + ' touchend' + eventSuffix] = function () {
- snapViewVisible = false;
- showSnapView();
- };
-
- viewer.snapView.on(snapEventsCallback);
-
-
- //calculate elments size on window resize
- if (options.refreshOnResize) $window.on('resize' + eventSuffix, function () {
- viewer.refresh()
- });
-
- if (viewer._fullPage) {
- //prevent scrolling the backside if container if fixed positioned
- container.on('touchmove' + eventSuffix + ' mousewheel' + eventSuffix + ' DOMMouseScroll' + eventSuffix, function (e) {
- e.preventDefault();
- });
-
- //assign event on close button
- container.find('.iv-close').on('click' + eventSuffix, function () {
- viewer.hide();
- });
- }
- },
-
- //method to zoom images
- zoom: function (perc, point) {
- perc = Math.round(Math.max(100, perc));
- perc = Math.min(this.options.maxZoom, perc);
-
- point = point || {
- x: this.containerDim.w / 2,
- y: this.containerDim.h / 2
- };
-
- var self = this,
- maxZoom = this.options.maxZoom,
- curPerc = this.zoomValue,
- curImg = this.currentImg,
- containerDim = this.containerDim,
- curLeft = parseFloat(curImg.css('left')),
- curTop = parseFloat(curImg.css('top'));
-
- self._clearFrames();
-
- var step = 0;
-
- //calculate base top,left,bottom,right
- var containerDim = self.containerDim,
- imageDim = self.imageDim;
- var baseLeft = (containerDim.w - imageDim.w) / 2,
- baseTop = (containerDim.h - imageDim.h) / 2,
- baseRight = containerDim.w - baseLeft,
- baseBottom = containerDim.h - baseTop;
-
- function zoom() {
- step++;
-
- if (step < 20) {
- self._zoomFrame = requestAnimationFrame(zoom);
- }
-
- var tickZoom = easeOutQuart(step, curPerc, perc - curPerc, 20);
-
-
- var ratio = tickZoom / curPerc,
- imgWidth = self.imageDim.w * tickZoom / 100,
- imgHeight = self.imageDim.h * tickZoom / 100,
- newLeft = -((point.x - curLeft) * ratio - point.x),
- newTop = -((point.y - curTop) * ratio - point.y);
-
- //fix for left and top
- newLeft = Math.min(newLeft, baseLeft);
- newTop = Math.min(newTop, baseTop);
-
- //fix for right and bottom
- if((newLeft + imgWidth) < baseRight){
- newLeft = baseRight - imgWidth; //newLeft - (newLeft + imgWidth - baseRight)
- }
-
- if((newTop + imgHeight) < baseBottom){
- newTop = baseBottom - imgHeight; //newTop + (newTop + imgHeight - baseBottom)
- }
-
-
- curImg.css({
- height: imgHeight + 'px',
- width: imgWidth + 'px',
- left: newLeft + 'px',
- top: newTop + 'px'
- });
-
- self.zoomValue = tickZoom;
-
- self._resizeHandle(imgWidth, imgHeight, newLeft, newTop);
-
- //update zoom handle position
- self.zoomHandle.css('left', ((tickZoom - 100) * self._zoomSliderLength) / (maxZoom - 100) + 'px');
- }
-
- zoom();
- },
- _clearFrames: function () {
- clearInterval(this._imageSlider.slideMomentumCheck);
- cancelAnimationFrame(this._imageSlider.sliderMomentumFrame);
- cancelAnimationFrame(this._zoomFrame)
- },
- resetZoom: function () {
- this.zoom(this.options.zoomValue);
- },
- //calculate dimensions of image, container and reset the image
- _calculateDimensions: function () {
- //calculate content width of image and snap image
- var self = this,
- curImg = self.currentImg,
- container = self.container,
- snapView = self.snapView,
- imageWidth = curImg.width(),
- imageHeight = curImg.height(),
- contWidth = container.width(),
- contHeight = container.height(),
- snapViewWidth = snapView.innerWidth(),
- snapViewHeight = snapView.innerHeight();
-
- //set the container dimension
- self.containerDim = {
- w: contWidth,
- h: contHeight
- }
-
- //set the image dimension
- var imgWidth, imgHeight, ratio = imageWidth / imageHeight;
-
- imgWidth = (imageWidth > imageHeight && contHeight >= contWidth) || ratio * contHeight > contWidth ? contWidth : ratio * contHeight;
-
- imgHeight = imgWidth / ratio;
-
- self.imageDim = {
- w: imgWidth,
- h: imgHeight
- }
-
- //reset image position and zoom
- curImg.css({
- width: imgWidth + 'px',
- height: imgHeight + 'px',
- left: (contWidth - imgWidth) / 2 + 'px',
- top: (contHeight - imgHeight) / 2 + 'px',
- 'max-width': 'none',
- 'max-height': 'none'
- });
-
- //set the snap Image dimension
- var snapWidth = imgWidth > imgHeight ? snapViewWidth : imgWidth * snapViewHeight / imgHeight,
- snapHeight = imgHeight > imgWidth ? snapViewHeight : imgHeight * snapViewWidth / imgWidth;
-
- self.snapImageDim = {
- w: snapWidth,
- h: snapHeight
- }
-
- self.snapImg.css({
- width: snapWidth,
- height: snapHeight
- });
-
- //calculate zoom slider area
- self._zoomSliderLength = snapViewWidth - self.zoomHandle.outerWidth();
-
- },
- refresh: function () {
- if (!this.loaded) return;
- this._calculateDimensions();
- this.resetZoom();
- },
- _resizeHandle: function (imgWidth, imgHeight, imgLeft, imgTop) {
- var curImg = this.currentImg,
- imageWidth = imgWidth || this.imageDim.w * this.zoomValue / 100,
- imageHeight = imgHeight || this.imageDim.h * this.zoomValue / 100,
- left = Math.max(-(imgLeft || parseFloat(curImg.css('left'))) * 100 / imageWidth, 0),
- top = Math.max(-(imgTop || parseFloat(curImg.css('top'))) * 100 / imageHeight, 0),
- handleWidth = Math.min(this.containerDim.w * 100 / imageWidth, 100),
- handleHeight = Math.min(this.containerDim.h * 100 / imageHeight, 100);
-
-
- this.snapHandle.css({
- top: top + '%',
- left: left + '%',
- width: handleWidth + '%',
- height: handleHeight + '%'
- });
- },
- show: function (image, hiResImg, message) {
- if (this._fullPage) {
- this.container.show();
- if (image) this.load(image, hiResImg, message);
- }
- },
- hide: function () {
- if (this._fullPage) {
- this.container.hide();
- }
- },
- options: function (key, value) {
- if (!value) return this.options[key];
-
- this.options[key] = value;
- },
- destroy: function (key, value) {
- var eventSuffix = '.' + this._viewerId;
- if (this._fullPage) {
- container.off(eventSuffix);
- container.find('[class^="iv"]').off(eventSuffix);
- } else {
- this.container.remove('[class^="iv"]');
- }
- $window.off(eventSuffix);
- return null;
- },
- load: function (image, hiResImgSrc, message) {
- var self = this,
- container = this.container;
- message = message || 'Viewing high-resolution image. Pinch to zoom or tap to close.'
-
- container.find('.iv-snap-image,.iv-large-image').remove();
- var snapImageWrap = this.container.find('.iv-snap-image-wrap');
-
- var snapImage = new Image
- snapImage.className = 'iv-snap-image'
- snapImage.src = image
- snapImage.setAttribute('aria-label', message)
-
- var largeImage = new Image
- largeImage.className = 'iv-large-image'
- largeImage.setAttribute('aria-label', message)
-
- var hiResImg;
-
- snapImageWrap.prepend(snapImage);
- this.imageWrap.prepend(largeImage);
-
- var currentImg = this.currentImg = $(largeImage);
- this.snapImg = $(snapImage);
- self.loaded = false;
-
- //show loader
- container.find('.iv-loader').show();
- currentImg.hide();
- self.snapImg.hide();
-
- //refresh the view
- function refreshView() {
- self.loaded = true;
- self.zoomValue = 100;
-
- //reset zoom of images
- currentImg.show();
- self.snapImg.show();
- self.refresh();
- self.resetZoom();
-
- //hide loader
- container.find('.iv-loader').hide();
- openTime = Date.now()
- $(currentImg).click(function(){
- if (openTime + 1000 < Date.now()) {
- $('.im-close').trigger('click')
- }
- })
- }
-
- var loaded = false
- largeImage.onload = function(){
- if (loaded) return
- loaded = true
- refreshView()
- }
- if (hiResImgSrc) {
- largeImage.src = hiResImgSrc
- } else {
- largeImage.src = image
- }
- if (largeImage.complete) largeImage.onload()
- }
- }
-
- ImageViewer.defaults = {
- zoomValue: 100,
- snapView: true,
- maxZoom: 500,
- refreshOnResize: true,
- zoomOnMouseWheel : true
- }
-
- window.ImageViewer = function (container, options) {
- var imgElm, imgSrc, hiResImg;
- if (!(container && (typeof container == "string" || container instanceof Element || container[0] instanceof Element))) {
- options = container;
- container = $('#iv-container');
- }
-
- container = $(container);
-
- if (container.is('img')) {
- imgElm = container;
- imgSrc = imgElm[0].src;
- hiResImg = imgElm.attr('high-res-src') || imgElm.attr('data-high-res-src');
- container = imgElm.wrap('<div class="iv-container" style="display:inline-block; overflow:hidden"></div>').parent();
- imgElm.css({
- opacity: 0,
- position: 'relative',
- zIndex: -1
- });
- } else {
- imgSrc = container.attr('src') || container.attr('data-src');
- hiResImg = container.attr('high-res-src') || container.attr('data-high-res-src');
- }
-
-
- var viewer = new ImageViewer(container, options);
- viewer._init();
-
- if (imgSrc) viewer.load(imgSrc, hiResImg);
-
- return viewer;
- };
-
-
- $.fn.ImageViewer = function (options) {
- return this.each(function () {
- var $this = $(this);
- var viewer = window.ImageViewer($this, options);
- $this.data('ImageViewer', viewer);
- });
- }
-
-}((window.jQuery), window, document)); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/iscroll-5.1.3.js b/StoneIsland/platforms/android/assets/www/js/vendor/iscroll-5.1.3.js
deleted file mode 100755
index 8bd2b8da..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/iscroll-5.1.3.js
+++ /dev/null
@@ -1,2011 +0,0 @@
-/*! iScroll v5.1.3 ~ (c) 2008-2014 Matteo Spinelli ~ http://cubiq.org/license */
-(function (window, document, Math) {
-var rAF = window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
- function (callback) { window.setTimeout(callback, 1000 / 60); };
-
-var utils = (function () {
- var me = {};
-
- var _elementStyle = document.createElement('div').style;
- var _vendor = (function () {
- var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],
- transform,
- i = 0,
- l = vendors.length;
-
- for ( ; i < l; i++ ) {
- transform = vendors[i] + 'ransform';
- if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);
- }
-
- return false;
- })();
-
- function _prefixStyle (style) {
- if ( _vendor === false ) return false;
- if ( _vendor === '' ) return style;
- return _vendor + style.charAt(0).toUpperCase() + style.substr(1);
- }
-
- me.getTime = Date.now || function getTime () { return new Date().getTime(); };
-
- me.extend = function (target, obj) {
- for ( var i in obj ) {
- target[i] = obj[i];
- }
- };
-
- me.addEvent = function (el, type, fn, capture) {
- el.addEventListener(type, fn, !!capture);
- };
-
- me.removeEvent = function (el, type, fn, capture) {
- el.removeEventListener(type, fn, !!capture);
- };
-
- me.prefixPointerEvent = function (pointerEvent) {
- return window.MSPointerEvent ?
- 'MSPointer' + pointerEvent.charAt(9).toUpperCase() + pointerEvent.substr(10):
- pointerEvent;
- };
-
- me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {
- var distance = current - start,
- speed = Math.abs(distance) / time,
- destination,
- duration;
-
- deceleration = deceleration === undefined ? 0.0006 : deceleration;
-
- destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );
- duration = speed / deceleration;
-
- if ( destination < lowerMargin ) {
- destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;
- distance = Math.abs(destination - current);
- duration = distance / speed;
- } else if ( destination > 0 ) {
- destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;
- distance = Math.abs(current) + destination;
- duration = distance / speed;
- }
-
- return {
- destination: Math.round(destination),
- duration: duration
- };
- };
-
- var _transform = _prefixStyle('transform');
-
- me.extend(me, {
- hasTransform: _transform !== false,
- hasPerspective: _prefixStyle('perspective') in _elementStyle,
- hasTouch: 'ontouchstart' in window,
- hasPointer: window.PointerEvent || window.MSPointerEvent, // IE10 is prefixed
- hasTransition: _prefixStyle('transition') in _elementStyle
- });
-
- // This should find all Android browsers lower than build 535.19 (both stock browser and webview)
- me.isBadAndroid = /Android /.test(window.navigator.appVersion) && !(/Chrome\/\d/.test(window.navigator.appVersion));
-
- me.extend(me.style = {}, {
- transform: _transform,
- transitionTimingFunction: _prefixStyle('transitionTimingFunction'),
- transitionDuration: _prefixStyle('transitionDuration'),
- transitionDelay: _prefixStyle('transitionDelay'),
- transformOrigin: _prefixStyle('transformOrigin')
- });
-
- me.hasClass = function (e, c) {
- var re = new RegExp("(^|\\s)" + c + "(\\s|$)");
- return re.test(e.className);
- };
-
- me.addClass = function (e, c) {
- if ( me.hasClass(e, c) ) {
- return;
- }
-
- var newclass = e.className.split(' ');
- newclass.push(c);
- e.className = newclass.join(' ');
- };
-
- me.removeClass = function (e, c) {
- if ( !me.hasClass(e, c) ) {
- return;
- }
-
- var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g');
- e.className = e.className.replace(re, ' ');
- };
-
- me.offset = function (el) {
- var left = -el.offsetLeft,
- top = -el.offsetTop;
-
- // jshint -W084
- while (el = el.offsetParent) {
- left -= el.offsetLeft;
- top -= el.offsetTop;
- }
- // jshint +W084
-
- return {
- left: left,
- top: top
- };
- };
-
- me.preventDefaultException = function (el, exceptions) {
- for ( var i in exceptions ) {
- if ( exceptions[i].test(el[i]) ) {
- return true;
- }
- }
-
- return false;
- };
-
- me.extend(me.eventType = {}, {
- touchstart: 1,
- touchmove: 1,
- touchend: 1,
-
- mousedown: 2,
- mousemove: 2,
- mouseup: 2,
-
- pointerdown: 3,
- pointermove: 3,
- pointerup: 3,
-
- MSPointerDown: 3,
- MSPointerMove: 3,
- MSPointerUp: 3
- });
-
- me.extend(me.ease = {}, {
- quadratic: {
- style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',
- fn: function (k) {
- return k * ( 2 - k );
- }
- },
- circular: {
- style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1)
- fn: function (k) {
- return Math.sqrt( 1 - ( --k * k ) );
- }
- },
- back: {
- style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',
- fn: function (k) {
- var b = 4;
- return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1;
- }
- },
- bounce: {
- style: '',
- fn: function (k) {
- if ( ( k /= 1 ) < ( 1 / 2.75 ) ) {
- return 7.5625 * k * k;
- } else if ( k < ( 2 / 2.75 ) ) {
- return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;
- } else if ( k < ( 2.5 / 2.75 ) ) {
- return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;
- } else {
- return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;
- }
- }
- },
- elastic: {
- style: '',
- fn: function (k) {
- var f = 0.22,
- e = 0.4;
-
- if ( k === 0 ) { return 0; }
- if ( k == 1 ) { return 1; }
-
- return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 );
- }
- }
- });
-
- me.tap = function (e, eventName) {
- var ev = document.createEvent('Event');
- ev.initEvent(eventName, true, true);
- ev.pageX = e.pageX;
- ev.pageY = e.pageY;
- e.target.dispatchEvent(ev);
- };
-
- me.click = function (e) {
- var target = e.target,
- ev;
-
- if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) {
- ev = document.createEvent('MouseEvents');
- ev.initMouseEvent('click', true, true, e.view, 1,
- target.screenX, target.screenY, target.clientX, target.clientY,
- e.ctrlKey, e.altKey, e.shiftKey, e.metaKey,
- 0, null);
-
- ev._constructed = true;
- target.dispatchEvent(ev);
- }
- };
-
- return me;
-})();
-
-function IScroll (el, options) {
- this.wrapper = typeof el == 'string' ? document.querySelector(el) : el;
- this.scroller = this.wrapper.children[0];
- this.scrollerStyle = this.scroller.style; // cache style for better performance
-
- this.options = {
-
- resizeScrollbars: true,
-
- mouseWheelSpeed: 20,
-
- snapThreshold: 0.334,
-
-// INSERT POINT: OPTIONS
-
- startX: 0,
- startY: 0,
- scrollY: true,
- directionLockThreshold: 5,
- momentum: true,
-
- bounce: true,
- bounceTime: 600,
- bounceEasing: '',
-
- preventDefault: true,
- preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ },
-
- HWCompositing: true,
- useTransition: true,
- useTransform: true
- };
-
- for ( var i in options ) {
- this.options[i] = options[i];
- }
-
- // Normalize options
- this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';
-
- this.options.useTransition = utils.hasTransition && this.options.useTransition;
- this.options.useTransform = utils.hasTransform && this.options.useTransform;
-
- this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;
- this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;
-
- // If you want eventPassthrough I have to lock one of the axes
- this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;
- this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;
-
- // With eventPassthrough we also need lockDirection mechanism
- this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;
- this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;
-
- this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;
-
- this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;
-
- if ( this.options.tap === true ) {
- this.options.tap = 'tap';
- }
-
- if ( this.options.shrinkScrollbars == 'scale' ) {
- this.options.useTransition = false;
- }
-
- this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;
-
-// INSERT POINT: NORMALIZATION
-
- // Some defaults
- this.x = 0;
- this.y = 0;
- this.directionX = 0;
- this.directionY = 0;
- this._events = {};
-
-// INSERT POINT: DEFAULTS
-
- this._init();
- this.refresh();
-
- this.scrollTo(this.options.startX, this.options.startY);
- this.enable();
-}
-
-IScroll.prototype = {
- version: '5.1.3',
-
- _init: function () {
- this._initEvents();
-
- if ( this.options.scrollbars || this.options.indicators ) {
- this._initIndicators();
- }
-
- if ( this.options.mouseWheel ) {
- this._initWheel();
- }
-
- if ( this.options.snap ) {
- this._initSnap();
- }
-
- if ( this.options.keyBindings ) {
- this._initKeys();
- }
-
-// INSERT POINT: _init
-
- },
-
- destroy: function () {
- this._initEvents(true);
-
- this._execEvent('destroy');
- },
-
- _transitionEnd: function (e) {
- if ( e.target != this.scroller || !this.isInTransition ) {
- return;
- }
-
- this._transitionTime();
- if ( !this.resetPosition(this.options.bounceTime) ) {
- this.isInTransition = false;
- this._execEvent('scrollEnd');
- }
- },
-
- _start: function (e) {
- // React to left mouse button only
- if ( utils.eventType[e.type] != 1 ) {
- if ( e.button !== 0 ) {
- return;
- }
- }
-
- if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) {
- return;
- }
-
- if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {
- e.preventDefault();
- }
-
- var point = e.touches ? e.touches[0] : e,
- pos;
-
- this.initiated = utils.eventType[e.type];
- this.moved = false;
- this.distX = 0;
- this.distY = 0;
- this.directionX = 0;
- this.directionY = 0;
- this.directionLocked = 0;
-
- this._transitionTime();
-
- this.startTime = utils.getTime();
-
- if ( this.options.useTransition && this.isInTransition ) {
- this.isInTransition = false;
- pos = this.getComputedPosition();
- this._translate(Math.round(pos.x), Math.round(pos.y));
- this._execEvent('scrollEnd');
- } else if ( !this.options.useTransition && this.isAnimating ) {
- this.isAnimating = false;
- this._execEvent('scrollEnd');
- }
-
- this.startX = this.x;
- this.startY = this.y;
- this.absStartX = this.x;
- this.absStartY = this.y;
- this.pointX = point.pageX;
- this.pointY = point.pageY;
-
- this._execEvent('beforeScrollStart');
- },
-
- _move: function (e) {
- if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {
- return;
- }
-
- if ( this.options.preventDefault ) { // increases performance on Android? TODO: check!
- e.preventDefault();
- }
-
- var point = e.touches ? e.touches[0] : e,
- deltaX = point.pageX - this.pointX,
- deltaY = point.pageY - this.pointY,
- timestamp = utils.getTime(),
- newX, newY,
- absDistX, absDistY;
-
- this.pointX = point.pageX;
- this.pointY = point.pageY;
-
- this.distX += deltaX;
- this.distY += deltaY;
- absDistX = Math.abs(this.distX);
- absDistY = Math.abs(this.distY);
-
- // We need to move at least 10 pixels for the scrolling to initiate
- if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) {
- return;
- }
-
- // If you are scrolling in one direction lock the other
- if ( !this.directionLocked && !this.options.freeScroll ) {
- if ( absDistX > absDistY + this.options.directionLockThreshold ) {
- this.directionLocked = 'h'; // lock horizontally
- } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) {
- this.directionLocked = 'v'; // lock vertically
- } else {
- this.directionLocked = 'n'; // no lock
- }
- }
-
- if ( this.directionLocked == 'h' ) {
- if ( this.options.eventPassthrough == 'vertical' ) {
- e.preventDefault();
- } else if ( this.options.eventPassthrough == 'horizontal' ) {
- this.initiated = false;
- return;
- }
-
- deltaY = 0;
- } else if ( this.directionLocked == 'v' ) {
- if ( this.options.eventPassthrough == 'horizontal' ) {
- e.preventDefault();
- } else if ( this.options.eventPassthrough == 'vertical' ) {
- this.initiated = false;
- return;
- }
-
- deltaX = 0;
- }
-
- deltaX = this.hasHorizontalScroll ? deltaX : 0;
- deltaY = this.hasVerticalScroll ? deltaY : 0;
-
- newX = this.x + deltaX;
- newY = this.y + deltaY;
-
- // Slow down if outside of the boundaries
- if ( newX > 0 || newX < this.maxScrollX ) {
- newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;
- }
- if ( newY > 0 || newY < this.maxScrollY ) {
- newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;
- }
-
- this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
- this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
-
- if ( !this.moved ) {
- this._execEvent('scrollStart');
- }
-
- this.moved = true;
-
- this._translate(newX, newY);
-
-/* REPLACE START: _move */
-
- if ( timestamp - this.startTime > 300 ) {
- this.startTime = timestamp;
- this.startX = this.x;
- this.startY = this.y;
- }
-
-/* REPLACE END: _move */
-
- },
-
- _end: function (e) {
- if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {
- return;
- }
-
- if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {
- e.preventDefault();
- }
-
- var point = e.changedTouches ? e.changedTouches[0] : e,
- momentumX,
- momentumY,
- duration = utils.getTime() - this.startTime,
- newX = Math.round(this.x),
- newY = Math.round(this.y),
- distanceX = Math.abs(newX - this.startX),
- distanceY = Math.abs(newY - this.startY),
- time = 0,
- easing = '';
-
- this.isInTransition = 0;
- this.initiated = 0;
- this.endTime = utils.getTime();
-
- // reset if we are outside of the boundaries
- if ( this.resetPosition(this.options.bounceTime) ) {
- return;
- }
-
- this.scrollTo(newX, newY); // ensures that the last position is rounded
-
- // we scrolled less than 10 pixels
- if ( !this.moved ) {
- if ( this.options.tap ) {
- utils.tap(e, this.options.tap);
- }
-
- if ( this.options.click ) {
- utils.click(e);
- }
-
- this._execEvent('scrollCancel');
- return;
- }
-
- if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) {
- this._execEvent('flick');
- return;
- }
-
- // start momentum animation if needed
- if ( this.options.momentum && duration < 300 ) {
- momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };
- momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };
- newX = momentumX.destination;
- newY = momentumY.destination;
- time = Math.max(momentumX.duration, momentumY.duration);
- this.isInTransition = 1;
- }
-
-
- if ( this.options.snap ) {
- var snap = this._nearestSnap(newX, newY);
- this.currentPage = snap;
- time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(newX - snap.x), 1000),
- Math.min(Math.abs(newY - snap.y), 1000)
- ), 300);
- newX = snap.x;
- newY = snap.y;
-
- this.directionX = 0;
- this.directionY = 0;
- easing = this.options.bounceEasing;
- }
-
-// INSERT POINT: _end
-
- if ( newX != this.x || newY != this.y ) {
- // change easing function when scroller goes out of the boundaries
- if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) {
- easing = utils.ease.quadratic;
- }
-
- this.scrollTo(newX, newY, time, easing);
- return;
- }
-
- this._execEvent('scrollEnd');
- },
-
- _resize: function () {
- var that = this;
-
- clearTimeout(this.resizeTimeout);
-
- this.resizeTimeout = setTimeout(function () {
- that.refresh();
- }, this.options.resizePolling);
- },
-
- resetPosition: function (time) {
- var x = this.x,
- y = this.y;
-
- time = time || 0;
-
- if ( !this.hasHorizontalScroll || this.x > 0 ) {
- x = 0;
- } else if ( this.x < this.maxScrollX ) {
- x = this.maxScrollX;
- }
-
- if ( !this.hasVerticalScroll || this.y > 0 ) {
- y = 0;
- } else if ( this.y < this.maxScrollY ) {
- y = this.maxScrollY;
- }
-
- if ( x == this.x && y == this.y ) {
- return false;
- }
-
- this.scrollTo(x, y, time, this.options.bounceEasing);
-
- return true;
- },
-
- disable: function () {
- this.enabled = false;
- },
-
- enable: function () {
- this.enabled = true;
- },
-
- refresh: function () {
- var rf = this.wrapper.offsetHeight; // Force reflow
-
- this.wrapperWidth = this.wrapper.clientWidth;
- this.wrapperHeight = this.wrapper.clientHeight;
-
-/* REPLACE START: refresh */
-
- this.scrollerWidth = this.scroller.offsetWidth;
- this.scrollerHeight = this.scroller.offsetHeight;
-
- this.maxScrollX = this.wrapperWidth - this.scrollerWidth;
- this.maxScrollY = this.wrapperHeight - this.scrollerHeight;
-
-/* REPLACE END: refresh */
-
- this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;
- this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;
-
- if ( !this.hasHorizontalScroll ) {
- this.maxScrollX = 0;
- this.scrollerWidth = this.wrapperWidth;
- }
-
- if ( !this.hasVerticalScroll ) {
- this.maxScrollY = 0;
- this.scrollerHeight = this.wrapperHeight;
- }
-
- this.endTime = 0;
- this.directionX = 0;
- this.directionY = 0;
-
- this.wrapperOffset = utils.offset(this.wrapper);
-
- this._execEvent('refresh');
-
- this.resetPosition();
-
-// INSERT POINT: _refresh
-
- },
-
- on: function (type, fn) {
- if ( !this._events[type] ) {
- this._events[type] = [];
- }
-
- this._events[type].push(fn);
- },
-
- off: function (type, fn) {
- if ( !this._events[type] ) {
- return;
- }
-
- var index = this._events[type].indexOf(fn);
-
- if ( index > -1 ) {
- this._events[type].splice(index, 1);
- }
- },
-
- _execEvent: function (type) {
- if ( !this._events[type] ) {
- return;
- }
-
- var i = 0,
- l = this._events[type].length;
-
- if ( !l ) {
- return;
- }
-
- for ( ; i < l; i++ ) {
- this._events[type][i].apply(this, [].slice.call(arguments, 1));
- }
- },
-
- scrollBy: function (x, y, time, easing) {
- x = this.x + x;
- y = this.y + y;
- time = time || 0;
-
- this.scrollTo(x, y, time, easing);
- },
-
- scrollTo: function (x, y, time, easing) {
- easing = easing || utils.ease.circular;
-
- this.isInTransition = this.options.useTransition && time > 0;
-
- if ( !time || (this.options.useTransition && easing.style) ) {
- this._transitionTimingFunction(easing.style);
- this._transitionTime(time);
- this._translate(x, y);
- } else {
- this._animate(x, y, time, easing.fn);
- }
- },
-
- scrollToElement: function (el, time, offsetX, offsetY, easing) {
- el = el.nodeType ? el : this.scroller.querySelector(el);
-
- if ( !el ) {
- return;
- }
-
- var pos = utils.offset(el);
-
- pos.left -= this.wrapperOffset.left;
- pos.top -= this.wrapperOffset.top;
-
- // if offsetX/Y are true we center the element to the screen
- if ( offsetX === true ) {
- offsetX = Math.round(el.offsetWidth / 2 - this.wrapper.offsetWidth / 2);
- }
- if ( offsetY === true ) {
- offsetY = Math.round(el.offsetHeight / 2 - this.wrapper.offsetHeight / 2);
- }
-
- pos.left -= offsetX || 0;
- pos.top -= offsetY || 0;
-
- pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;
- pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;
-
- time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time;
-
- this.scrollTo(pos.left, pos.top, time, easing);
- },
-
- _transitionTime: function (time) {
- time = time || 0;
-
- this.scrollerStyle[utils.style.transitionDuration] = time + 'ms';
-
- if ( !time && utils.isBadAndroid ) {
- this.scrollerStyle[utils.style.transitionDuration] = '0.001s';
- }
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].transitionTime(time);
- }
- }
-
-
-// INSERT POINT: _transitionTime
-
- },
-
- _transitionTimingFunction: function (easing) {
- this.scrollerStyle[utils.style.transitionTimingFunction] = easing;
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].transitionTimingFunction(easing);
- }
- }
-
-
-// INSERT POINT: _transitionTimingFunction
-
- },
-
- _translate: function (x, y) {
- if ( this.options.useTransform ) {
-
-/* REPLACE START: _translate */
-
- this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;
-
-/* REPLACE END: _translate */
-
- } else {
- x = Math.round(x);
- y = Math.round(y);
- this.scrollerStyle.left = x + 'px';
- this.scrollerStyle.top = y + 'px';
- }
-
- this.x = x;
- this.y = y;
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].updatePosition();
- }
- }
-
-
-// INSERT POINT: _translate
-
- },
-
- _initEvents: function (remove) {
- var eventType = remove ? utils.removeEvent : utils.addEvent,
- target = this.options.bindToWrapper ? this.wrapper : window;
-
- eventType(window, 'orientationchange', this);
- eventType(window, 'resize', this);
-
- if ( this.options.click ) {
- eventType(this.wrapper, 'click', this, true);
- }
-
- if ( !this.options.disableMouse ) {
- eventType(this.wrapper, 'mousedown', this);
- eventType(target, 'mousemove', this);
- eventType(target, 'mousecancel', this);
- eventType(target, 'mouseup', this);
- }
-
- if ( utils.hasPointer && !this.options.disablePointer ) {
- eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);
- eventType(target, utils.prefixPointerEvent('pointermove'), this);
- eventType(target, utils.prefixPointerEvent('pointercancel'), this);
- eventType(target, utils.prefixPointerEvent('pointerup'), this);
- }
-
- if ( utils.hasTouch && !this.options.disableTouch ) {
- eventType(this.wrapper, 'touchstart', this);
- eventType(target, 'touchmove', this);
- eventType(target, 'touchcancel', this);
- eventType(target, 'touchend', this);
- }
-
- eventType(this.scroller, 'transitionend', this);
- eventType(this.scroller, 'webkitTransitionEnd', this);
- eventType(this.scroller, 'oTransitionEnd', this);
- eventType(this.scroller, 'MSTransitionEnd', this);
- },
-
- getComputedPosition: function () {
- var matrix = window.getComputedStyle(this.scroller, null),
- x, y;
-
- if ( this.options.useTransform ) {
- matrix = matrix[utils.style.transform].split(')')[0].split(', ');
- x = +(matrix[12] || matrix[4]);
- y = +(matrix[13] || matrix[5]);
- } else {
- x = +matrix.left.replace(/[^-\d.]/g, '');
- y = +matrix.top.replace(/[^-\d.]/g, '');
- }
-
- return { x: x, y: y };
- },
-
- _initIndicators: function () {
- var interactive = this.options.interactiveScrollbars,
- customStyle = typeof this.options.scrollbars != 'string',
- indicators = [],
- indicator;
-
- var that = this;
-
- this.indicators = [];
-
- if ( this.options.scrollbars ) {
- // Vertical scrollbar
- if ( this.options.scrollY ) {
- indicator = {
- el: createDefaultScrollbar('v', interactive, this.options.scrollbars),
- interactive: interactive,
- defaultScrollbars: true,
- customStyle: customStyle,
- resize: this.options.resizeScrollbars,
- shrink: this.options.shrinkScrollbars,
- fade: this.options.fadeScrollbars,
- listenX: false
- };
-
- this.wrapper.appendChild(indicator.el);
- indicators.push(indicator);
- }
-
- // Horizontal scrollbar
- if ( this.options.scrollX ) {
- indicator = {
- el: createDefaultScrollbar('h', interactive, this.options.scrollbars),
- interactive: interactive,
- defaultScrollbars: true,
- customStyle: customStyle,
- resize: this.options.resizeScrollbars,
- shrink: this.options.shrinkScrollbars,
- fade: this.options.fadeScrollbars,
- listenY: false
- };
-
- this.wrapper.appendChild(indicator.el);
- indicators.push(indicator);
- }
- }
-
- if ( this.options.indicators ) {
- // TODO: check concat compatibility
- indicators = indicators.concat(this.options.indicators);
- }
-
- for ( var i = indicators.length; i--; ) {
- this.indicators.push( new Indicator(this, indicators[i]) );
- }
-
- // TODO: check if we can use array.map (wide compatibility and performance issues)
- function _indicatorsMap (fn) {
- for ( var i = that.indicators.length; i--; ) {
- fn.call(that.indicators[i]);
- }
- }
-
- if ( this.options.fadeScrollbars ) {
- this.on('scrollEnd', function () {
- _indicatorsMap(function () {
- this.fade();
- });
- });
-
- this.on('scrollCancel', function () {
- _indicatorsMap(function () {
- this.fade();
- });
- });
-
- this.on('scrollStart', function () {
- _indicatorsMap(function () {
- this.fade(1);
- });
- });
-
- this.on('beforeScrollStart', function () {
- _indicatorsMap(function () {
- this.fade(1, true);
- });
- });
- }
-
-
- this.on('refresh', function () {
- _indicatorsMap(function () {
- this.refresh();
- });
- });
-
- this.on('destroy', function () {
- _indicatorsMap(function () {
- this.destroy();
- });
-
- delete this.indicators;
- });
- },
-
- _initWheel: function () {
- utils.addEvent(this.wrapper, 'wheel', this);
- utils.addEvent(this.wrapper, 'mousewheel', this);
- utils.addEvent(this.wrapper, 'DOMMouseScroll', this);
-
- this.on('destroy', function () {
- utils.removeEvent(this.wrapper, 'wheel', this);
- utils.removeEvent(this.wrapper, 'mousewheel', this);
- utils.removeEvent(this.wrapper, 'DOMMouseScroll', this);
- });
- },
-
- _wheel: function (e) {
- if ( !this.enabled ) {
- return;
- }
-
- e.preventDefault();
- e.stopPropagation();
-
- var wheelDeltaX, wheelDeltaY,
- newX, newY,
- that = this;
-
- if ( this.wheelTimeout === undefined ) {
- that._execEvent('scrollStart');
- }
-
- // Execute the scrollEnd event after 400ms the wheel stopped scrolling
- clearTimeout(this.wheelTimeout);
- this.wheelTimeout = setTimeout(function () {
- that._execEvent('scrollEnd');
- that.wheelTimeout = undefined;
- }, 400);
-
- if ( 'deltaX' in e ) {
- if (e.deltaMode === 1) {
- wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;
- wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;
- } else {
- wheelDeltaX = -e.deltaX;
- wheelDeltaY = -e.deltaY;
- }
- } else if ( 'wheelDeltaX' in e ) {
- wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;
- wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;
- } else if ( 'wheelDelta' in e ) {
- wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;
- } else if ( 'detail' in e ) {
- wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;
- } else {
- return;
- }
-
- wheelDeltaX *= this.options.invertWheelDirection;
- wheelDeltaY *= this.options.invertWheelDirection;
-
- if ( !this.hasVerticalScroll ) {
- wheelDeltaX = wheelDeltaY;
- wheelDeltaY = 0;
- }
-
- if ( this.options.snap ) {
- newX = this.currentPage.pageX;
- newY = this.currentPage.pageY;
-
- if ( wheelDeltaX > 0 ) {
- newX--;
- } else if ( wheelDeltaX < 0 ) {
- newX++;
- }
-
- if ( wheelDeltaY > 0 ) {
- newY--;
- } else if ( wheelDeltaY < 0 ) {
- newY++;
- }
-
- this.goToPage(newX, newY);
-
- return;
- }
-
- newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);
- newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);
-
- if ( newX > 0 ) {
- newX = 0;
- } else if ( newX < this.maxScrollX ) {
- newX = this.maxScrollX;
- }
-
- if ( newY > 0 ) {
- newY = 0;
- } else if ( newY < this.maxScrollY ) {
- newY = this.maxScrollY;
- }
-
- this.scrollTo(newX, newY, 0);
-
-// INSERT POINT: _wheel
- },
-
- _initSnap: function () {
- this.currentPage = {};
-
- if ( typeof this.options.snap == 'string' ) {
- this.options.snap = this.scroller.querySelectorAll(this.options.snap);
- }
-
- this.on('refresh', function () {
- var i = 0, l,
- m = 0, n,
- cx, cy,
- x = 0, y,
- stepX = this.options.snapStepX || this.wrapperWidth,
- stepY = this.options.snapStepY || this.wrapperHeight,
- el;
-
- this.pages = [];
-
- if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) {
- return;
- }
-
- if ( this.options.snap === true ) {
- cx = Math.round( stepX / 2 );
- cy = Math.round( stepY / 2 );
-
- while ( x > -this.scrollerWidth ) {
- this.pages[i] = [];
- l = 0;
- y = 0;
-
- while ( y > -this.scrollerHeight ) {
- this.pages[i][l] = {
- x: Math.max(x, this.maxScrollX),
- y: Math.max(y, this.maxScrollY),
- width: stepX,
- height: stepY,
- cx: x - cx,
- cy: y - cy
- };
-
- y -= stepY;
- l++;
- }
-
- x -= stepX;
- i++;
- }
- } else {
- el = this.options.snap;
- l = el.length;
- n = -1;
-
- for ( ; i < l; i++ ) {
- if ( i === 0 || el[i].offsetLeft <= el[i-1].offsetLeft ) {
- m = 0;
- n++;
- }
-
- if ( !this.pages[m] ) {
- this.pages[m] = [];
- }
-
- x = Math.max(-el[i].offsetLeft, this.maxScrollX);
- y = Math.max(-el[i].offsetTop, this.maxScrollY);
- cx = x - Math.round(el[i].offsetWidth / 2);
- cy = y - Math.round(el[i].offsetHeight / 2);
-
- this.pages[m][n] = {
- x: x,
- y: y,
- width: el[i].offsetWidth,
- height: el[i].offsetHeight,
- cx: cx,
- cy: cy
- };
-
- if ( x > this.maxScrollX ) {
- m++;
- }
- }
- }
-
- this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);
-
- // Update snap threshold if needed
- if ( this.options.snapThreshold % 1 === 0 ) {
- this.snapThresholdX = this.options.snapThreshold;
- this.snapThresholdY = this.options.snapThreshold;
- } else {
- this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);
- this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);
- }
- });
-
- this.on('flick', function () {
- var time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(this.x - this.startX), 1000),
- Math.min(Math.abs(this.y - this.startY), 1000)
- ), 300);
-
- this.goToPage(
- this.currentPage.pageX + this.directionX,
- this.currentPage.pageY + this.directionY,
- time
- );
- });
- },
-
- _nearestSnap: function (x, y) {
- if ( !this.pages.length ) {
- return { x: 0, y: 0, pageX: 0, pageY: 0 };
- }
-
- var i = 0,
- l = this.pages.length,
- m = 0;
-
- // Check if we exceeded the snap threshold
- if ( Math.abs(x - this.absStartX) < this.snapThresholdX &&
- Math.abs(y - this.absStartY) < this.snapThresholdY ) {
- return this.currentPage;
- }
-
- if ( x > 0 ) {
- x = 0;
- } else if ( x < this.maxScrollX ) {
- x = this.maxScrollX;
- }
-
- if ( y > 0 ) {
- y = 0;
- } else if ( y < this.maxScrollY ) {
- y = this.maxScrollY;
- }
-
- for ( ; i < l; i++ ) {
- if ( x >= this.pages[i][0].cx ) {
- x = this.pages[i][0].x;
- break;
- }
- }
-
- l = this.pages[i].length;
-
- for ( ; m < l; m++ ) {
- if ( y >= this.pages[0][m].cy ) {
- y = this.pages[0][m].y;
- break;
- }
- }
-
- if ( i == this.currentPage.pageX ) {
- i += this.directionX;
-
- if ( i < 0 ) {
- i = 0;
- } else if ( i >= this.pages.length ) {
- i = this.pages.length - 1;
- }
-
- x = this.pages[i][0].x;
- }
-
- if ( m == this.currentPage.pageY ) {
- m += this.directionY;
-
- if ( m < 0 ) {
- m = 0;
- } else if ( m >= this.pages[0].length ) {
- m = this.pages[0].length - 1;
- }
-
- y = this.pages[0][m].y;
- }
-
- return {
- x: x,
- y: y,
- pageX: i,
- pageY: m
- };
- },
-
- goToPage: function (x, y, time, easing) {
- easing = easing || this.options.bounceEasing;
-
- if ( x >= this.pages.length ) {
- x = this.pages.length - 1;
- } else if ( x < 0 ) {
- x = 0;
- }
-
- if ( y >= this.pages[x].length ) {
- y = this.pages[x].length - 1;
- } else if ( y < 0 ) {
- y = 0;
- }
-
- var posX = this.pages[x][y].x,
- posY = this.pages[x][y].y;
-
- time = time === undefined ? this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(posX - this.x), 1000),
- Math.min(Math.abs(posY - this.y), 1000)
- ), 300) : time;
-
- this.currentPage = {
- x: posX,
- y: posY,
- pageX: x,
- pageY: y
- };
-
- this.scrollTo(posX, posY, time, easing);
- },
-
- next: function (time, easing) {
- var x = this.currentPage.pageX,
- y = this.currentPage.pageY;
-
- x++;
-
- if ( x >= this.pages.length && this.hasVerticalScroll ) {
- x = 0;
- y++;
- }
-
- this.goToPage(x, y, time, easing);
- },
-
- prev: function (time, easing) {
- var x = this.currentPage.pageX,
- y = this.currentPage.pageY;
-
- x--;
-
- if ( x < 0 && this.hasVerticalScroll ) {
- x = 0;
- y--;
- }
-
- this.goToPage(x, y, time, easing);
- },
-
- _initKeys: function (e) {
- // default key bindings
- var keys = {
- pageUp: 33,
- pageDown: 34,
- end: 35,
- home: 36,
- left: 37,
- up: 38,
- right: 39,
- down: 40
- };
- var i;
-
- // if you give me characters I give you keycode
- if ( typeof this.options.keyBindings == 'object' ) {
- for ( i in this.options.keyBindings ) {
- if ( typeof this.options.keyBindings[i] == 'string' ) {
- this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);
- }
- }
- } else {
- this.options.keyBindings = {};
- }
-
- for ( i in keys ) {
- this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];
- }
-
- utils.addEvent(window, 'keydown', this);
-
- this.on('destroy', function () {
- utils.removeEvent(window, 'keydown', this);
- });
- },
-
- _key: function (e) {
- if ( !this.enabled ) {
- return;
- }
-
- var snap = this.options.snap, // we are using this alot, better to cache it
- newX = snap ? this.currentPage.pageX : this.x,
- newY = snap ? this.currentPage.pageY : this.y,
- now = utils.getTime(),
- prevTime = this.keyTime || 0,
- acceleration = 0.250,
- pos;
-
- if ( this.options.useTransition && this.isInTransition ) {
- pos = this.getComputedPosition();
-
- this._translate(Math.round(pos.x), Math.round(pos.y));
- this.isInTransition = false;
- }
-
- this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;
-
- switch ( e.keyCode ) {
- case this.options.keyBindings.pageUp:
- if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {
- newX += snap ? 1 : this.wrapperWidth;
- } else {
- newY += snap ? 1 : this.wrapperHeight;
- }
- break;
- case this.options.keyBindings.pageDown:
- if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {
- newX -= snap ? 1 : this.wrapperWidth;
- } else {
- newY -= snap ? 1 : this.wrapperHeight;
- }
- break;
- case this.options.keyBindings.end:
- newX = snap ? this.pages.length-1 : this.maxScrollX;
- newY = snap ? this.pages[0].length-1 : this.maxScrollY;
- break;
- case this.options.keyBindings.home:
- newX = 0;
- newY = 0;
- break;
- case this.options.keyBindings.left:
- newX += snap ? -1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.up:
- newY += snap ? 1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.right:
- newX -= snap ? -1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.down:
- newY -= snap ? 1 : 5 + this.keyAcceleration>>0;
- break;
- default:
- return;
- }
-
- if ( snap ) {
- this.goToPage(newX, newY);
- return;
- }
-
- if ( newX > 0 ) {
- newX = 0;
- this.keyAcceleration = 0;
- } else if ( newX < this.maxScrollX ) {
- newX = this.maxScrollX;
- this.keyAcceleration = 0;
- }
-
- if ( newY > 0 ) {
- newY = 0;
- this.keyAcceleration = 0;
- } else if ( newY < this.maxScrollY ) {
- newY = this.maxScrollY;
- this.keyAcceleration = 0;
- }
-
- this.scrollTo(newX, newY, 0);
-
- this.keyTime = now;
- },
-
- _animate: function (destX, destY, duration, easingFn) {
- var that = this,
- startX = this.x,
- startY = this.y,
- startTime = utils.getTime(),
- destTime = startTime + duration;
-
- function step () {
- var now = utils.getTime(),
- newX, newY,
- easing;
-
- if ( now >= destTime ) {
- that.isAnimating = false;
- that._translate(destX, destY);
-
- if ( !that.resetPosition(that.options.bounceTime) ) {
- that._execEvent('scrollEnd');
- }
-
- return;
- }
-
- now = ( now - startTime ) / duration;
- easing = easingFn(now);
- newX = ( destX - startX ) * easing + startX;
- newY = ( destY - startY ) * easing + startY;
- that._translate(newX, newY);
-
- if ( that.isAnimating ) {
- rAF(step);
- }
- }
-
- this.isAnimating = true;
- step();
- },
- handleEvent: function (e) {
- switch ( e.type ) {
- case 'touchstart':
- case 'pointerdown':
- case 'MSPointerDown':
- case 'mousedown':
- this._start(e);
- break;
- case 'touchmove':
- case 'pointermove':
- case 'MSPointerMove':
- case 'mousemove':
- this._move(e);
- break;
- case 'touchend':
- case 'pointerup':
- case 'MSPointerUp':
- case 'mouseup':
- case 'touchcancel':
- case 'pointercancel':
- case 'MSPointerCancel':
- case 'mousecancel':
- this._end(e);
- break;
- case 'orientationchange':
- case 'resize':
- this._resize();
- break;
- case 'transitionend':
- case 'webkitTransitionEnd':
- case 'oTransitionEnd':
- case 'MSTransitionEnd':
- this._transitionEnd(e);
- break;
- case 'wheel':
- case 'DOMMouseScroll':
- case 'mousewheel':
- this._wheel(e);
- break;
- case 'keydown':
- this._key(e);
- break;
- case 'click':
- if ( !e._constructed ) {
- e.preventDefault();
- e.stopPropagation();
- }
- break;
- }
- }
-};
-function createDefaultScrollbar (direction, interactive, type) {
- var scrollbar = document.createElement('div'),
- indicator = document.createElement('div');
-
- if ( type === true ) {
- scrollbar.style.cssText = 'position:absolute;z-index:9999';
- indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';
- }
-
- indicator.className = 'iScrollIndicator';
-
- if ( direction == 'h' ) {
- if ( type === true ) {
- scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';
- indicator.style.height = '100%';
- }
- scrollbar.className = 'iScrollHorizontalScrollbar';
- } else {
- if ( type === true ) {
- scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';
- indicator.style.width = '100%';
- }
- scrollbar.className = 'iScrollVerticalScrollbar';
- }
-
- scrollbar.style.cssText += ';overflow:hidden';
-
- if ( !interactive ) {
- scrollbar.style.pointerEvents = 'none';
- }
-
- scrollbar.appendChild(indicator);
-
- return scrollbar;
-}
-
-function Indicator (scroller, options) {
- this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;
- this.wrapperStyle = this.wrapper.style;
- this.indicator = this.wrapper.children[0];
- this.indicatorStyle = this.indicator.style;
- this.scroller = scroller;
-
- this.options = {
- listenX: true,
- listenY: true,
- interactive: false,
- resize: true,
- defaultScrollbars: false,
- shrink: false,
- fade: false,
- speedRatioX: 0,
- speedRatioY: 0
- };
-
- for ( var i in options ) {
- this.options[i] = options[i];
- }
-
- this.sizeRatioX = 1;
- this.sizeRatioY = 1;
- this.maxPosX = 0;
- this.maxPosY = 0;
-
- if ( this.options.interactive ) {
- if ( !this.options.disableTouch ) {
- utils.addEvent(this.indicator, 'touchstart', this);
- utils.addEvent(window, 'touchend', this);
- }
- if ( !this.options.disablePointer ) {
- utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);
- utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);
- }
- if ( !this.options.disableMouse ) {
- utils.addEvent(this.indicator, 'mousedown', this);
- utils.addEvent(window, 'mouseup', this);
- }
- }
-
- if ( this.options.fade ) {
- this.wrapperStyle[utils.style.transform] = this.scroller.translateZ;
- this.wrapperStyle[utils.style.transitionDuration] = utils.isBadAndroid ? '0.001s' : '0ms';
- this.wrapperStyle.opacity = '0';
- }
-}
-
-Indicator.prototype = {
- handleEvent: function (e) {
- switch ( e.type ) {
- case 'touchstart':
- case 'pointerdown':
- case 'MSPointerDown':
- case 'mousedown':
- this._start(e);
- break;
- case 'touchmove':
- case 'pointermove':
- case 'MSPointerMove':
- case 'mousemove':
- this._move(e);
- break;
- case 'touchend':
- case 'pointerup':
- case 'MSPointerUp':
- case 'mouseup':
- case 'touchcancel':
- case 'pointercancel':
- case 'MSPointerCancel':
- case 'mousecancel':
- this._end(e);
- break;
- }
- },
-
- destroy: function () {
- if ( this.options.interactive ) {
- utils.removeEvent(this.indicator, 'touchstart', this);
- utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);
- utils.removeEvent(this.indicator, 'mousedown', this);
-
- utils.removeEvent(window, 'touchmove', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);
- utils.removeEvent(window, 'mousemove', this);
-
- utils.removeEvent(window, 'touchend', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);
- utils.removeEvent(window, 'mouseup', this);
- }
-
- if ( this.options.defaultScrollbars ) {
- this.wrapper.parentNode.removeChild(this.wrapper);
- }
- },
-
- _start: function (e) {
- var point = e.touches ? e.touches[0] : e;
-
- e.preventDefault();
- e.stopPropagation();
-
- this.transitionTime();
-
- this.initiated = true;
- this.moved = false;
- this.lastPointX = point.pageX;
- this.lastPointY = point.pageY;
-
- this.startTime = utils.getTime();
-
- if ( !this.options.disableTouch ) {
- utils.addEvent(window, 'touchmove', this);
- }
- if ( !this.options.disablePointer ) {
- utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);
- }
- if ( !this.options.disableMouse ) {
- utils.addEvent(window, 'mousemove', this);
- }
-
- this.scroller._execEvent('beforeScrollStart');
- },
-
- _move: function (e) {
- var point = e.touches ? e.touches[0] : e,
- deltaX, deltaY,
- newX, newY,
- timestamp = utils.getTime();
-
- if ( !this.moved ) {
- this.scroller._execEvent('scrollStart');
- }
-
- this.moved = true;
-
- deltaX = point.pageX - this.lastPointX;
- this.lastPointX = point.pageX;
-
- deltaY = point.pageY - this.lastPointY;
- this.lastPointY = point.pageY;
-
- newX = this.x + deltaX;
- newY = this.y + deltaY;
-
- this._pos(newX, newY);
-
-// INSERT POINT: indicator._move
-
- e.preventDefault();
- e.stopPropagation();
- },
-
- _end: function (e) {
- if ( !this.initiated ) {
- return;
- }
-
- this.initiated = false;
-
- e.preventDefault();
- e.stopPropagation();
-
- utils.removeEvent(window, 'touchmove', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);
- utils.removeEvent(window, 'mousemove', this);
-
- if ( this.scroller.options.snap ) {
- var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);
-
- var time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(this.scroller.x - snap.x), 1000),
- Math.min(Math.abs(this.scroller.y - snap.y), 1000)
- ), 300);
-
- if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) {
- this.scroller.directionX = 0;
- this.scroller.directionY = 0;
- this.scroller.currentPage = snap;
- this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);
- }
- }
-
- if ( this.moved ) {
- this.scroller._execEvent('scrollEnd');
- }
- },
-
- transitionTime: function (time) {
- time = time || 0;
- this.indicatorStyle[utils.style.transitionDuration] = time + 'ms';
-
- if ( !time && utils.isBadAndroid ) {
- this.indicatorStyle[utils.style.transitionDuration] = '0.001s';
- }
- },
-
- transitionTimingFunction: function (easing) {
- this.indicatorStyle[utils.style.transitionTimingFunction] = easing;
- },
-
- refresh: function () {
- this.transitionTime();
-
- if ( this.options.listenX && !this.options.listenY ) {
- this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
- } else if ( this.options.listenY && !this.options.listenX ) {
- this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
- } else {
- this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
- }
-
- if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) {
- utils.addClass(this.wrapper, 'iScrollBothScrollbars');
- utils.removeClass(this.wrapper, 'iScrollLoneScrollbar');
-
- if ( this.options.defaultScrollbars && this.options.customStyle ) {
- if ( this.options.listenX ) {
- this.wrapper.style.right = '8px';
- } else {
- this.wrapper.style.bottom = '8px';
- }
- }
- } else {
- utils.removeClass(this.wrapper, 'iScrollBothScrollbars');
- utils.addClass(this.wrapper, 'iScrollLoneScrollbar');
-
- if ( this.options.defaultScrollbars && this.options.customStyle ) {
- if ( this.options.listenX ) {
- this.wrapper.style.right = '2px';
- } else {
- this.wrapper.style.bottom = '2px';
- }
- }
- }
-
- var r = this.wrapper.offsetHeight; // force refresh
-
- if ( this.options.listenX ) {
- this.wrapperWidth = this.wrapper.clientWidth;
- if ( this.options.resize ) {
- this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);
- this.indicatorStyle.width = this.indicatorWidth + 'px';
- } else {
- this.indicatorWidth = this.indicator.clientWidth;
- }
-
- this.maxPosX = this.wrapperWidth - this.indicatorWidth;
-
- if ( this.options.shrink == 'clip' ) {
- this.minBoundaryX = -this.indicatorWidth + 8;
- this.maxBoundaryX = this.wrapperWidth - 8;
- } else {
- this.minBoundaryX = 0;
- this.maxBoundaryX = this.maxPosX;
- }
-
- this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));
- }
-
- if ( this.options.listenY ) {
- this.wrapperHeight = this.wrapper.clientHeight;
- if ( this.options.resize ) {
- this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);
- this.indicatorStyle.height = this.indicatorHeight + 'px';
- } else {
- this.indicatorHeight = this.indicator.clientHeight;
- }
-
- this.maxPosY = this.wrapperHeight - this.indicatorHeight;
-
- if ( this.options.shrink == 'clip' ) {
- this.minBoundaryY = -this.indicatorHeight + 8;
- this.maxBoundaryY = this.wrapperHeight - 8;
- } else {
- this.minBoundaryY = 0;
- this.maxBoundaryY = this.maxPosY;
- }
-
- this.maxPosY = this.wrapperHeight - this.indicatorHeight;
- this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));
- }
-
- this.updatePosition();
- },
-
- updatePosition: function () {
- var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,
- y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;
-
- if ( !this.options.ignoreBoundaries ) {
- if ( x < this.minBoundaryX ) {
- if ( this.options.shrink == 'scale' ) {
- this.width = Math.max(this.indicatorWidth + x, 8);
- this.indicatorStyle.width = this.width + 'px';
- }
- x = this.minBoundaryX;
- } else if ( x > this.maxBoundaryX ) {
- if ( this.options.shrink == 'scale' ) {
- this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);
- this.indicatorStyle.width = this.width + 'px';
- x = this.maxPosX + this.indicatorWidth - this.width;
- } else {
- x = this.maxBoundaryX;
- }
- } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) {
- this.width = this.indicatorWidth;
- this.indicatorStyle.width = this.width + 'px';
- }
-
- if ( y < this.minBoundaryY ) {
- if ( this.options.shrink == 'scale' ) {
- this.height = Math.max(this.indicatorHeight + y * 3, 8);
- this.indicatorStyle.height = this.height + 'px';
- }
- y = this.minBoundaryY;
- } else if ( y > this.maxBoundaryY ) {
- if ( this.options.shrink == 'scale' ) {
- this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);
- this.indicatorStyle.height = this.height + 'px';
- y = this.maxPosY + this.indicatorHeight - this.height;
- } else {
- y = this.maxBoundaryY;
- }
- } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) {
- this.height = this.indicatorHeight;
- this.indicatorStyle.height = this.height + 'px';
- }
- }
-
- this.x = x;
- this.y = y;
-
- if ( this.scroller.options.useTransform ) {
- this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;
- } else {
- this.indicatorStyle.left = x + 'px';
- this.indicatorStyle.top = y + 'px';
- }
- },
-
- _pos: function (x, y) {
- if ( x < 0 ) {
- x = 0;
- } else if ( x > this.maxPosX ) {
- x = this.maxPosX;
- }
-
- if ( y < 0 ) {
- y = 0;
- } else if ( y > this.maxPosY ) {
- y = this.maxPosY;
- }
-
- x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;
- y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;
-
- this.scroller.scrollTo(x, y);
- },
-
- fade: function (val, hold) {
- if ( hold && !this.visible ) {
- return;
- }
-
- clearTimeout(this.fadeTimeout);
- this.fadeTimeout = null;
-
- var time = val ? 250 : 500,
- delay = val ? 0 : 300;
-
- val = val ? '1' : '0';
-
- this.wrapperStyle[utils.style.transitionDuration] = time + 'ms';
-
- this.fadeTimeout = setTimeout((function (val) {
- this.wrapperStyle.opacity = val;
- this.visible = +val;
- }).bind(this, val), delay);
- }
-};
-
-IScroll.utils = utils;
-
-if ( typeof module != 'undefined' && module.exports ) {
- module.exports = IScroll;
-} else {
- window.IScroll = IScroll;
-}
-
-})(window, document, Math); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/iscroll.js b/StoneIsland/platforms/android/assets/www/js/vendor/iscroll.js
deleted file mode 100644
index 09e07d69..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/iscroll.js
+++ /dev/null
@@ -1,2170 +0,0 @@
-/*! iScroll v5.2.0-snapshot ~ (c) 2008-2017 Matteo Spinelli ~ http://cubiq.org/license */
-(function (window, document, Math) {
-var rAF = window.requestAnimationFrame ||
- window.webkitRequestAnimationFrame ||
- window.mozRequestAnimationFrame ||
- window.oRequestAnimationFrame ||
- window.msRequestAnimationFrame ||
- function (callback) { window.setTimeout(callback, 1000 / 60); };
-
-var utils = (function () {
- var me = {};
-
- var _elementStyle = document.createElement('div').style;
- var _vendor = (function () {
- var vendors = ['t', 'webkitT', 'MozT', 'msT', 'OT'],
- transform,
- i = 0,
- l = vendors.length;
-
- for ( ; i < l; i++ ) {
- transform = vendors[i] + 'ransform';
- if ( transform in _elementStyle ) return vendors[i].substr(0, vendors[i].length-1);
- }
-
- return false;
- })();
-
- function _prefixStyle (style) {
- if ( _vendor === false ) return false;
- if ( _vendor === '' ) return style;
- return _vendor + style.charAt(0).toUpperCase() + style.substr(1);
- }
-
- me.getTime = Date.now || function getTime () { return new Date().getTime(); };
-
- me.extend = function (target, obj) {
- for ( var i in obj ) {
- target[i] = obj[i];
- }
- };
-
- me.addEvent = function (el, type, fn, capture) {
- el.addEventListener(type, fn, !!capture);
- };
-
- me.removeEvent = function (el, type, fn, capture) {
- el.removeEventListener(type, fn, !!capture);
- };
-
- me.prefixPointerEvent = function (pointerEvent) {
- return window.MSPointerEvent ?
- 'MSPointer' + pointerEvent.charAt(7).toUpperCase() + pointerEvent.substr(8):
- pointerEvent;
- };
-
- me.momentum = function (current, start, time, lowerMargin, wrapperSize, deceleration) {
- var distance = current - start,
- speed = Math.abs(distance) / time,
- destination,
- duration;
-
- deceleration = deceleration === undefined ? 0.0006 : deceleration;
-
- destination = current + ( speed * speed ) / ( 2 * deceleration ) * ( distance < 0 ? -1 : 1 );
- duration = speed / deceleration;
-
- if ( destination < lowerMargin ) {
- destination = wrapperSize ? lowerMargin - ( wrapperSize / 2.5 * ( speed / 8 ) ) : lowerMargin;
- distance = Math.abs(destination - current);
- duration = distance / speed;
- } else if ( destination > 0 ) {
- destination = wrapperSize ? wrapperSize / 2.5 * ( speed / 8 ) : 0;
- distance = Math.abs(current) + destination;
- duration = distance / speed;
- }
-
- return {
- destination: Math.round(destination),
- duration: duration
- };
- };
-
- var _transform = _prefixStyle('transform');
-
- me.extend(me, {
- hasTransform: _transform !== false,
- hasPerspective: _prefixStyle('perspective') in _elementStyle,
- hasTouch: 'ontouchstart' in window,
- hasPointer: !!(window.PointerEvent || window.MSPointerEvent), // IE10 is prefixed
- hasTransition: _prefixStyle('transition') in _elementStyle
- });
-
- /*
- This should find all Android browsers lower than build 535.19 (both stock browser and webview)
- - galaxy S2 is ok
- - 2.3.6 : `AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1`
- - 4.0.4 : `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`
- - galaxy S3 is badAndroid (stock brower, webview)
- `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`
- - galaxy S4 is badAndroid (stock brower, webview)
- `AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30`
- - galaxy S5 is OK
- `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`
- - galaxy S6 is OK
- `AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Mobile Safari/537.36 (Chrome/)`
- */
- me.isBadAndroid = (function() {
- var appVersion = window.navigator.appVersion;
- // Android browser is not a chrome browser.
- if (/Android/.test(appVersion) && !(/Chrome\/\d/.test(appVersion))) {
- var safariVersion = appVersion.match(/Safari\/(\d+.\d)/);
- if(safariVersion && typeof safariVersion === "object" && safariVersion.length >= 2) {
- return parseFloat(safariVersion[1]) < 535.19;
- } else {
- return true;
- }
- } else {
- return false;
- }
- })();
-
- me.extend(me.style = {}, {
- transform: _transform,
- transitionTimingFunction: _prefixStyle('transitionTimingFunction'),
- transitionDuration: _prefixStyle('transitionDuration'),
- transitionDelay: _prefixStyle('transitionDelay'),
- transformOrigin: _prefixStyle('transformOrigin'),
- touchAction: _prefixStyle('touchAction')
- });
-
- me.hasClass = function (e, c) {
- var re = new RegExp("(^|\\s)" + c + "(\\s|$)");
- return re.test(e.className);
- };
-
- me.addClass = function (e, c) {
- if ( me.hasClass(e, c) ) {
- return;
- }
-
- var newclass = e.className.split(' ');
- newclass.push(c);
- e.className = newclass.join(' ');
- };
-
- me.removeClass = function (e, c) {
- if ( !me.hasClass(e, c) ) {
- return;
- }
-
- var re = new RegExp("(^|\\s)" + c + "(\\s|$)", 'g');
- e.className = e.className.replace(re, ' ');
- };
-
- me.offset = function (el) {
- var left = -el.offsetLeft,
- top = -el.offsetTop;
-
- // jshint -W084
- while (el = el.offsetParent) {
- left -= el.offsetLeft;
- top -= el.offsetTop;
- }
- // jshint +W084
-
- return {
- left: left,
- top: top
- };
- };
-
- me.preventDefaultException = function (el, exceptions) {
- for ( var i in exceptions ) {
- if ( exceptions[i].test(el[i]) ) {
- return true;
- }
- }
-
- return false;
- };
-
- me.extend(me.eventType = {}, {
- touchstart: 1,
- touchmove: 1,
- touchend: 1,
-
- mousedown: 2,
- mousemove: 2,
- mouseup: 2,
-
- pointerdown: 3,
- pointermove: 3,
- pointerup: 3,
-
- MSPointerDown: 3,
- MSPointerMove: 3,
- MSPointerUp: 3
- });
-
- me.extend(me.ease = {}, {
- quadratic: {
- style: 'cubic-bezier(0.25, 0.46, 0.45, 0.94)',
- fn: function (k) {
- return k * ( 2 - k );
- }
- },
- circular: {
- style: 'cubic-bezier(0.1, 0.57, 0.1, 1)', // Not properly "circular" but this looks better, it should be (0.075, 0.82, 0.165, 1)
- fn: function (k) {
- return Math.sqrt( 1 - ( --k * k ) );
- }
- },
- back: {
- style: 'cubic-bezier(0.175, 0.885, 0.32, 1.275)',
- fn: function (k) {
- var b = 4;
- return ( k = k - 1 ) * k * ( ( b + 1 ) * k + b ) + 1;
- }
- },
- bounce: {
- style: '',
- fn: function (k) {
- if ( ( k /= 1 ) < ( 1 / 2.75 ) ) {
- return 7.5625 * k * k;
- } else if ( k < ( 2 / 2.75 ) ) {
- return 7.5625 * ( k -= ( 1.5 / 2.75 ) ) * k + 0.75;
- } else if ( k < ( 2.5 / 2.75 ) ) {
- return 7.5625 * ( k -= ( 2.25 / 2.75 ) ) * k + 0.9375;
- } else {
- return 7.5625 * ( k -= ( 2.625 / 2.75 ) ) * k + 0.984375;
- }
- }
- },
- elastic: {
- style: '',
- fn: function (k) {
- var f = 0.22,
- e = 0.4;
-
- if ( k === 0 ) { return 0; }
- if ( k == 1 ) { return 1; }
-
- return ( e * Math.pow( 2, - 10 * k ) * Math.sin( ( k - f / 4 ) * ( 2 * Math.PI ) / f ) + 1 );
- }
- }
- });
-
- me.tap = function (e, eventName) {
- var ev = document.createEvent('Event');
- ev.initEvent(eventName, true, true);
- ev.pageX = e.pageX;
- ev.pageY = e.pageY;
- e.target.dispatchEvent(ev);
- };
-
- me.click = function (e) {
- var target = e.target,
- ev;
-
- if ( !(/(SELECT|INPUT|TEXTAREA)/i).test(target.tagName) ) {
- // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/initMouseEvent
- // initMouseEvent is deprecated.
- ev = document.createEvent(window.MouseEvent ? 'MouseEvents' : 'Event');
- ev.initEvent('click', true, true);
- ev.view = e.view || window;
- ev.detail = 1;
- ev.screenX = target.screenX || 0;
- ev.screenY = target.screenY || 0;
- ev.clientX = target.clientX || 0;
- ev.clientY = target.clientY || 0;
- ev.ctrlKey = !!e.ctrlKey;
- ev.altKey = !!e.altKey;
- ev.shiftKey = !!e.shiftKey;
- ev.metaKey = !!e.metaKey;
- ev.button = 0;
- ev.relatedTarget = null;
- ev._constructed = true;
- target.dispatchEvent(ev);
- }
- };
-
- me.getTouchAction = function(eventPassthrough, addPinch) {
- var touchAction = 'none';
- if ( eventPassthrough === 'vertical' ) {
- touchAction = 'pan-y';
- } else if (eventPassthrough === 'horizontal' ) {
- touchAction = 'pan-x';
- }
- if (addPinch && touchAction != 'none') {
- // add pinch-zoom support if the browser supports it, but if not (eg. Chrome <55) do nothing
- touchAction += ' pinch-zoom';
- }
- return touchAction;
- };
-
- me.getRect = function(el) {
- if (el instanceof SVGElement) {
- var rect = el.getBoundingClientRect();
- return {
- top : rect.top,
- left : rect.left,
- width : rect.width,
- height : rect.height
- };
- } else {
- return {
- top : el.offsetTop,
- left : el.offsetLeft,
- width : el.offsetWidth,
- height : el.offsetHeight
- };
- }
- };
-
- return me;
-})();
-function IScroll (el, options) {
- this.wrapper = typeof el == 'string' ? document.querySelector(el) : el;
- this.scroller = this.wrapper.children[0];
- this.scrollerStyle = this.scroller.style; // cache style for better performance
-
- this.options = {
-
- resizeScrollbars: true,
-
- mouseWheelSpeed: 20,
-
- snapThreshold: 0.334,
-
-// INSERT POINT: OPTIONS
- disablePointer : !utils.hasPointer,
- disableTouch : utils.hasPointer || !utils.hasTouch,
- disableMouse : utils.hasPointer || utils.hasTouch,
- startX: 0,
- startY: 0,
- scrollY: true,
- directionLockThreshold: 5,
- momentum: true,
-
- bounce: true,
- bounceTime: 600,
- bounceEasing: '',
-
- preventDefault: true,
- preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|SELECT)$/ },
-
- HWCompositing: true,
- useTransition: true,
- useTransform: true,
- bindToWrapper: typeof window.onmousedown === "undefined"
- };
-
- for ( var i in options ) {
- this.options[i] = options[i];
- }
-
- // Normalize options
- this.translateZ = this.options.HWCompositing && utils.hasPerspective ? ' translateZ(0)' : '';
-
- this.options.useTransition = utils.hasTransition && this.options.useTransition;
- this.options.useTransform = utils.hasTransform && this.options.useTransform;
-
- this.options.eventPassthrough = this.options.eventPassthrough === true ? 'vertical' : this.options.eventPassthrough;
- this.options.preventDefault = !this.options.eventPassthrough && this.options.preventDefault;
-
- // If you want eventPassthrough I have to lock one of the axes
- this.options.scrollY = this.options.eventPassthrough == 'vertical' ? false : this.options.scrollY;
- this.options.scrollX = this.options.eventPassthrough == 'horizontal' ? false : this.options.scrollX;
-
- // With eventPassthrough we also need lockDirection mechanism
- this.options.freeScroll = this.options.freeScroll && !this.options.eventPassthrough;
- this.options.directionLockThreshold = this.options.eventPassthrough ? 0 : this.options.directionLockThreshold;
-
- this.options.bounceEasing = typeof this.options.bounceEasing == 'string' ? utils.ease[this.options.bounceEasing] || utils.ease.circular : this.options.bounceEasing;
-
- this.options.resizePolling = this.options.resizePolling === undefined ? 60 : this.options.resizePolling;
-
- if ( this.options.tap === true ) {
- this.options.tap = 'tap';
- }
-
- // https://github.com/cubiq/iscroll/issues/1029
- if (!this.options.useTransition && !this.options.useTransform) {
- if(!(/relative|absolute/i).test(this.scrollerStyle.position)) {
- this.scrollerStyle.position = "relative";
- }
- }
-
- if ( this.options.shrinkScrollbars == 'scale' ) {
- this.options.useTransition = false;
- }
-
- this.options.invertWheelDirection = this.options.invertWheelDirection ? -1 : 1;
-
-// INSERT POINT: NORMALIZATION
-
- // Some defaults
- this.x = 0;
- this.y = 0;
- this.directionX = 0;
- this.directionY = 0;
- this._events = {};
-
-// INSERT POINT: DEFAULTS
-
- this._init();
- this.refresh();
-
- this.scrollTo(this.options.startX, this.options.startY);
- this.enable();
-}
-
-IScroll.prototype = {
- version: '5.2.0-snapshot',
-
- _init: function () {
- this._initEvents();
-
- if ( this.options.scrollbars || this.options.indicators ) {
- this._initIndicators();
- }
-
- if ( this.options.mouseWheel ) {
- this._initWheel();
- }
-
- if ( this.options.snap ) {
- this._initSnap();
- }
-
- if ( this.options.keyBindings ) {
- this._initKeys();
- }
-
-// INSERT POINT: _init
-
- },
-
- destroy: function () {
- this._initEvents(true);
- clearTimeout(this.resizeTimeout);
- this.resizeTimeout = null;
- this._execEvent('destroy');
- },
-
- _transitionEnd: function (e) {
- if ( e.target != this.scroller || !this.isInTransition ) {
- return;
- }
-
- this._transitionTime();
- if ( !this.resetPosition(this.options.bounceTime) ) {
- this.isInTransition = false;
- this._execEvent('scrollEnd');
- }
- },
-
- _start: function (e) {
- // React to left mouse button only
- if ( utils.eventType[e.type] != 1 ) {
- // for button property
- // http://unixpapa.com/js/mouse.html
- var button;
- if (!e.which) {
- /* IE case */
- button = (e.button < 2) ? 0 :
- ((e.button == 4) ? 1 : 2);
- } else {
- /* All others */
- button = e.button;
- }
- if ( button !== 0 ) {
- return;
- }
- }
-
- if ( !this.enabled || (this.initiated && utils.eventType[e.type] !== this.initiated) ) {
- return;
- }
-
- if ( this.options.preventDefault && !utils.isBadAndroid && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {
- e.preventDefault();
- }
-
- var point = e.touches ? e.touches[0] : e,
- pos;
-
- this.initiated = utils.eventType[e.type];
- this.moved = false;
- this.distX = 0;
- this.distY = 0;
- this.directionX = 0;
- this.directionY = 0;
- this.directionLocked = 0;
-
- this.startTime = utils.getTime();
-
- if ( this.options.useTransition && this.isInTransition ) {
- this._transitionTime();
- this.isInTransition = false;
- pos = this.getComputedPosition();
- this._translate(Math.round(pos.x), Math.round(pos.y));
- this._execEvent('scrollEnd');
- } else if ( !this.options.useTransition && this.isAnimating ) {
- this.isAnimating = false;
- this._execEvent('scrollEnd');
- }
-
- this.startX = this.x;
- this.startY = this.y;
- this.absStartX = this.x;
- this.absStartY = this.y;
- this.pointX = point.pageX;
- this.pointY = point.pageY;
-
- this._execEvent('beforeScrollStart');
- },
-
- _move: function (e) {
- if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {
- return;
- }
-
- if ( this.options.preventDefault ) { // increases performance on Android? TODO: check!
- e.preventDefault();
- }
-
- var point = e.touches ? e.touches[0] : e,
- deltaX = point.pageX - this.pointX,
- deltaY = point.pageY - this.pointY,
- timestamp = utils.getTime(),
- newX, newY,
- absDistX, absDistY;
-
- this.pointX = point.pageX;
- this.pointY = point.pageY;
-
- this.distX += deltaX;
- this.distY += deltaY;
- absDistX = Math.abs(this.distX);
- absDistY = Math.abs(this.distY);
-
- // We need to move at least 10 pixels for the scrolling to initiate
- if ( timestamp - this.endTime > 300 && (absDistX < 10 && absDistY < 10) ) {
- return;
- }
-
- // If you are scrolling in one direction lock the other
- if ( !this.directionLocked && !this.options.freeScroll ) {
- if ( absDistX > absDistY + this.options.directionLockThreshold ) {
- this.directionLocked = 'h'; // lock horizontally
- } else if ( absDistY >= absDistX + this.options.directionLockThreshold ) {
- this.directionLocked = 'v'; // lock vertically
- } else {
- this.directionLocked = 'n'; // no lock
- }
- }
-
- if ( this.directionLocked == 'h' ) {
- if ( this.options.eventPassthrough == 'vertical' ) {
- e.preventDefault();
- } else if ( this.options.eventPassthrough == 'horizontal' ) {
- this.initiated = false;
- return;
- }
-
- deltaY = 0;
- } else if ( this.directionLocked == 'v' ) {
- if ( this.options.eventPassthrough == 'horizontal' ) {
- e.preventDefault();
- } else if ( this.options.eventPassthrough == 'vertical' ) {
- this.initiated = false;
- return;
- }
-
- deltaX = 0;
- }
-
- deltaX = this.hasHorizontalScroll ? deltaX : 0;
- deltaY = this.hasVerticalScroll ? deltaY : 0;
-
- newX = this.x + deltaX;
- newY = this.y + deltaY;
-
- // Slow down if outside of the boundaries
- if ( newX > 0 || newX < this.maxScrollX ) {
- newX = this.options.bounce ? this.x + deltaX / 3 : newX > 0 ? 0 : this.maxScrollX;
- }
- if ( newY > 0 || newY < this.maxScrollY ) {
- newY = this.options.bounce ? this.y + deltaY / 3 : newY > 0 ? 0 : this.maxScrollY;
- }
-
- this.directionX = deltaX > 0 ? -1 : deltaX < 0 ? 1 : 0;
- this.directionY = deltaY > 0 ? -1 : deltaY < 0 ? 1 : 0;
-
- if ( !this.moved ) {
- this._execEvent('scrollStart');
- }
-
- this.moved = true;
-
- this._translate(newX, newY);
-
-/* REPLACE START: _move */
-
- if ( timestamp - this.startTime > 300 ) {
- this.startTime = timestamp;
- this.startX = this.x;
- this.startY = this.y;
- }
-
-/* REPLACE END: _move */
-
- },
-
- _end: function (e) {
- if ( !this.enabled || utils.eventType[e.type] !== this.initiated ) {
- return;
- }
-
- if ( this.options.preventDefault && !utils.preventDefaultException(e.target, this.options.preventDefaultException) ) {
- e.preventDefault();
- }
-
- var point = e.changedTouches ? e.changedTouches[0] : e,
- momentumX,
- momentumY,
- duration = utils.getTime() - this.startTime,
- newX = Math.round(this.x),
- newY = Math.round(this.y),
- distanceX = Math.abs(newX - this.startX),
- distanceY = Math.abs(newY - this.startY),
- time = 0,
- easing = '';
-
- this.isInTransition = 0;
- this.initiated = 0;
- this.endTime = utils.getTime();
-
- // reset if we are outside of the boundaries
- if ( this.resetPosition(this.options.bounceTime) ) {
- return;
- }
-
- this.scrollTo(newX, newY); // ensures that the last position is rounded
-
- // we scrolled less than 10 pixels
- if ( !this.moved ) {
- if ( this.options.tap ) {
- utils.tap(e, this.options.tap);
- }
-
- if ( this.options.click ) {
- utils.click(e);
- }
-
- this._execEvent('scrollCancel');
- return;
- }
-
- if ( this._events.flick && duration < 200 && distanceX < 100 && distanceY < 100 ) {
- this._execEvent('flick');
- return;
- }
-
- // start momentum animation if needed
- if ( this.options.momentum && duration < 300 ) {
- momentumX = this.hasHorizontalScroll ? utils.momentum(this.x, this.startX, duration, this.maxScrollX, this.options.bounce ? this.wrapperWidth : 0, this.options.deceleration) : { destination: newX, duration: 0 };
- momentumY = this.hasVerticalScroll ? utils.momentum(this.y, this.startY, duration, this.maxScrollY, this.options.bounce ? this.wrapperHeight : 0, this.options.deceleration) : { destination: newY, duration: 0 };
- newX = momentumX.destination;
- newY = momentumY.destination;
- time = Math.max(momentumX.duration, momentumY.duration);
- this.isInTransition = 1;
- }
-
-
- if ( this.options.snap ) {
- var snap = this._nearestSnap(newX, newY);
- this.currentPage = snap;
- time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(newX - snap.x), 1000),
- Math.min(Math.abs(newY - snap.y), 1000)
- ), 300);
- newX = snap.x;
- newY = snap.y;
-
- this.directionX = 0;
- this.directionY = 0;
- easing = this.options.bounceEasing;
- }
-
-// INSERT POINT: _end
-
- if ( newX != this.x || newY != this.y ) {
- // change easing function when scroller goes out of the boundaries
- if ( newX > 0 || newX < this.maxScrollX || newY > 0 || newY < this.maxScrollY ) {
- easing = utils.ease.quadratic;
- }
-
- this.scrollTo(newX, newY, time, easing);
- return;
- }
-
- this._execEvent('scrollEnd');
- },
-
- _resize: function () {
- var that = this;
-
- clearTimeout(this.resizeTimeout);
-
- this.resizeTimeout = setTimeout(function () {
- that.refresh();
- }, this.options.resizePolling);
- },
-
- resetPosition: function (time) {
- var x = this.x,
- y = this.y;
-
- time = time || 0;
-
- if ( !this.hasHorizontalScroll || this.x > 0 ) {
- x = 0;
- } else if ( this.x < this.maxScrollX ) {
- x = this.maxScrollX;
- }
-
- if ( !this.hasVerticalScroll || this.y > 0 ) {
- y = 0;
- } else if ( this.y < this.maxScrollY ) {
- y = this.maxScrollY;
- }
-
- if ( x == this.x && y == this.y ) {
- return false;
- }
-
- this.scrollTo(x, y, time, this.options.bounceEasing);
-
- return true;
- },
-
- disable: function () {
- this.enabled = false;
- },
-
- enable: function () {
- this.enabled = true;
- },
-
- refresh: function () {
- utils.getRect(this.wrapper); // Force reflow
-
- this.wrapperWidth = this.wrapper.clientWidth;
- this.wrapperHeight = this.wrapper.clientHeight;
-
- var rect = utils.getRect(this.scroller);
-/* REPLACE START: refresh */
-
- this.scrollerWidth = rect.width;
- this.scrollerHeight = rect.height;
-
- this.maxScrollX = this.wrapperWidth - this.scrollerWidth;
- this.maxScrollY = this.wrapperHeight - this.scrollerHeight;
-
-/* REPLACE END: refresh */
-
- this.hasHorizontalScroll = this.options.scrollX && this.maxScrollX < 0;
- this.hasVerticalScroll = this.options.scrollY && this.maxScrollY < 0;
-
- if ( !this.hasHorizontalScroll ) {
- this.maxScrollX = 0;
- this.scrollerWidth = this.wrapperWidth;
- }
-
- if ( !this.hasVerticalScroll ) {
- this.maxScrollY = 0;
- this.scrollerHeight = this.wrapperHeight;
- }
-
- this.endTime = 0;
- this.directionX = 0;
- this.directionY = 0;
-
- if(utils.hasPointer && !this.options.disablePointer) {
- // The wrapper should have `touchAction` property for using pointerEvent.
- this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, true);
-
- // case. not support 'pinch-zoom'
- // https://github.com/cubiq/iscroll/issues/1118#issuecomment-270057583
- if (!this.wrapper.style[utils.style.touchAction]) {
- this.wrapper.style[utils.style.touchAction] = utils.getTouchAction(this.options.eventPassthrough, false);
- }
- }
- this.wrapperOffset = utils.offset(this.wrapper);
-
- this._execEvent('refresh');
-
- this.resetPosition();
-
-// INSERT POINT: _refresh
-
- },
-
- on: function (type, fn) {
- if ( !this._events[type] ) {
- this._events[type] = [];
- }
-
- this._events[type].push(fn);
- },
-
- off: function (type, fn) {
- if ( !this._events[type] ) {
- return;
- }
-
- var index = this._events[type].indexOf(fn);
-
- if ( index > -1 ) {
- this._events[type].splice(index, 1);
- }
- },
-
- _execEvent: function (type) {
- if ( !this._events[type] ) {
- return;
- }
-
- var i = 0,
- l = this._events[type].length;
-
- if ( !l ) {
- return;
- }
-
- for ( ; i < l; i++ ) {
- this._events[type][i].apply(this, [].slice.call(arguments, 1));
- }
- },
-
- scrollBy: function (x, y, time, easing) {
- x = this.x + x;
- y = this.y + y;
- time = time || 0;
-
- this.scrollTo(x, y, time, easing);
- },
-
- scrollTo: function (x, y, time, easing) {
- easing = easing || utils.ease.circular;
-
- this.isInTransition = this.options.useTransition && time > 0;
- var transitionType = this.options.useTransition && easing.style;
- if ( !time || transitionType ) {
- if(transitionType) {
- this._transitionTimingFunction(easing.style);
- this._transitionTime(time);
- }
- this._translate(x, y);
- } else {
- this._animate(x, y, time, easing.fn);
- }
- },
-
- scrollToElement: function (el, time, offsetX, offsetY, easing) {
- el = el.nodeType ? el : this.scroller.querySelector(el);
-
- if ( !el ) {
- return;
- }
-
- var pos = utils.offset(el);
-
- pos.left -= this.wrapperOffset.left;
- pos.top -= this.wrapperOffset.top;
-
- // if offsetX/Y are true we center the element to the screen
- var elRect = utils.getRect(el);
- var wrapperRect = utils.getRect(this.wrapper);
- if ( offsetX === true ) {
- offsetX = Math.round(elRect.width / 2 - wrapperRect.width / 2);
- }
- if ( offsetY === true ) {
- offsetY = Math.round(elRect.height / 2 - wrapperRect.height / 2);
- }
-
- pos.left -= offsetX || 0;
- pos.top -= offsetY || 0;
-
- pos.left = pos.left > 0 ? 0 : pos.left < this.maxScrollX ? this.maxScrollX : pos.left;
- pos.top = pos.top > 0 ? 0 : pos.top < this.maxScrollY ? this.maxScrollY : pos.top;
-
- time = time === undefined || time === null || time === 'auto' ? Math.max(Math.abs(this.x-pos.left), Math.abs(this.y-pos.top)) : time;
-
- this.scrollTo(pos.left, pos.top, time, easing);
- },
-
- _transitionTime: function (time) {
- if (!this.options.useTransition) {
- return;
- }
- time = time || 0;
- var durationProp = utils.style.transitionDuration;
- if(!durationProp) {
- return;
- }
-
- this.scrollerStyle[durationProp] = time + 'ms';
-
- if ( !time && utils.isBadAndroid ) {
- this.scrollerStyle[durationProp] = '0.0001ms';
- // remove 0.0001ms
- var self = this;
- rAF(function() {
- if(self.scrollerStyle[durationProp] === '0.0001ms') {
- self.scrollerStyle[durationProp] = '0s';
- }
- });
- }
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].transitionTime(time);
- }
- }
-
-
-// INSERT POINT: _transitionTime
-
- },
-
- _transitionTimingFunction: function (easing) {
- this.scrollerStyle[utils.style.transitionTimingFunction] = easing;
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].transitionTimingFunction(easing);
- }
- }
-
-
-// INSERT POINT: _transitionTimingFunction
-
- },
-
- _translate: function (x, y) {
- if ( this.options.useTransform ) {
-
-/* REPLACE START: _translate */
-
- this.scrollerStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.translateZ;
-
-/* REPLACE END: _translate */
-
- } else {
- x = Math.round(x);
- y = Math.round(y);
- this.scrollerStyle.left = x + 'px';
- this.scrollerStyle.top = y + 'px';
- }
-
- this.x = x;
- this.y = y;
-
-
- if ( this.indicators ) {
- for ( var i = this.indicators.length; i--; ) {
- this.indicators[i].updatePosition();
- }
- }
-
-
-// INSERT POINT: _translate
-
- },
-
- _initEvents: function (remove) {
- var eventType = remove ? utils.removeEvent : utils.addEvent,
- target = this.options.bindToWrapper ? this.wrapper : window;
-
- eventType(window, 'orientationchange', this);
- eventType(window, 'resize', this);
-
- if ( this.options.click ) {
- eventType(this.wrapper, 'click', this, true);
- }
-
- if ( !this.options.disableMouse ) {
- eventType(this.wrapper, 'mousedown', this);
- eventType(target, 'mousemove', this);
- eventType(target, 'mousecancel', this);
- eventType(target, 'mouseup', this);
- }
-
- if ( utils.hasPointer && !this.options.disablePointer ) {
- eventType(this.wrapper, utils.prefixPointerEvent('pointerdown'), this);
- eventType(target, utils.prefixPointerEvent('pointermove'), this);
- eventType(target, utils.prefixPointerEvent('pointercancel'), this);
- eventType(target, utils.prefixPointerEvent('pointerup'), this);
- }
-
- if ( utils.hasTouch && !this.options.disableTouch ) {
- eventType(this.wrapper, 'touchstart', this);
- eventType(target, 'touchmove', this);
- eventType(target, 'touchcancel', this);
- eventType(target, 'touchend', this);
- }
-
- eventType(this.scroller, 'transitionend', this);
- eventType(this.scroller, 'webkitTransitionEnd', this);
- eventType(this.scroller, 'oTransitionEnd', this);
- eventType(this.scroller, 'MSTransitionEnd', this);
- },
-
- getComputedPosition: function () {
- var matrix = window.getComputedStyle(this.scroller, null),
- x, y;
-
- if ( this.options.useTransform ) {
- matrix = matrix[utils.style.transform].split(')')[0].split(', ');
- x = +(matrix[12] || matrix[4]);
- y = +(matrix[13] || matrix[5]);
- } else {
- x = +matrix.left.replace(/[^-\d.]/g, '');
- y = +matrix.top.replace(/[^-\d.]/g, '');
- }
-
- return { x: x, y: y };
- },
- _initIndicators: function () {
- var interactive = this.options.interactiveScrollbars,
- customStyle = typeof this.options.scrollbars != 'string',
- indicators = [],
- indicator;
-
- var that = this;
-
- this.indicators = [];
-
- if ( this.options.scrollbars ) {
- // Vertical scrollbar
- if ( this.options.scrollY ) {
- indicator = {
- el: createDefaultScrollbar('v', interactive, this.options.scrollbars),
- interactive: interactive,
- defaultScrollbars: true,
- customStyle: customStyle,
- resize: this.options.resizeScrollbars,
- shrink: this.options.shrinkScrollbars,
- fade: this.options.fadeScrollbars,
- listenX: false
- };
-
- this.wrapper.appendChild(indicator.el);
- indicators.push(indicator);
- }
-
- // Horizontal scrollbar
- if ( this.options.scrollX ) {
- indicator = {
- el: createDefaultScrollbar('h', interactive, this.options.scrollbars),
- interactive: interactive,
- defaultScrollbars: true,
- customStyle: customStyle,
- resize: this.options.resizeScrollbars,
- shrink: this.options.shrinkScrollbars,
- fade: this.options.fadeScrollbars,
- listenY: false
- };
-
- this.wrapper.appendChild(indicator.el);
- indicators.push(indicator);
- }
- }
-
- if ( this.options.indicators ) {
- // TODO: check concat compatibility
- indicators = indicators.concat(this.options.indicators);
- }
-
- for ( var i = indicators.length; i--; ) {
- this.indicators.push( new Indicator(this, indicators[i]) );
- }
-
- // TODO: check if we can use array.map (wide compatibility and performance issues)
- function _indicatorsMap (fn) {
- if (that.indicators) {
- for ( var i = that.indicators.length; i--; ) {
- fn.call(that.indicators[i]);
- }
- }
- }
-
- if ( this.options.fadeScrollbars ) {
- this.on('scrollEnd', function () {
- _indicatorsMap(function () {
- this.fade();
- });
- });
-
- this.on('scrollCancel', function () {
- _indicatorsMap(function () {
- this.fade();
- });
- });
-
- this.on('scrollStart', function () {
- _indicatorsMap(function () {
- this.fade(1);
- });
- });
-
- this.on('beforeScrollStart', function () {
- _indicatorsMap(function () {
- this.fade(1, true);
- });
- });
- }
-
-
- this.on('refresh', function () {
- _indicatorsMap(function () {
- this.refresh();
- });
- });
-
- this.on('destroy', function () {
- _indicatorsMap(function () {
- this.destroy();
- });
-
- delete this.indicators;
- });
- },
-
- _initWheel: function () {
- utils.addEvent(this.wrapper, 'wheel', this);
- utils.addEvent(this.wrapper, 'mousewheel', this);
- utils.addEvent(this.wrapper, 'DOMMouseScroll', this);
-
- this.on('destroy', function () {
- clearTimeout(this.wheelTimeout);
- this.wheelTimeout = null;
- utils.removeEvent(this.wrapper, 'wheel', this);
- utils.removeEvent(this.wrapper, 'mousewheel', this);
- utils.removeEvent(this.wrapper, 'DOMMouseScroll', this);
- });
- },
-
- _wheel: function (e) {
- if ( !this.enabled ) {
- return;
- }
-
- e.preventDefault();
-
- var wheelDeltaX, wheelDeltaY,
- newX, newY,
- that = this;
-
- if ( this.wheelTimeout === undefined ) {
- that._execEvent('scrollStart');
- }
-
- // Execute the scrollEnd event after 400ms the wheel stopped scrolling
- clearTimeout(this.wheelTimeout);
- this.wheelTimeout = setTimeout(function () {
- if(!that.options.snap) {
- that._execEvent('scrollEnd');
- }
- that.wheelTimeout = undefined;
- }, 400);
-
- if ( 'deltaX' in e ) {
- if (e.deltaMode === 1) {
- wheelDeltaX = -e.deltaX * this.options.mouseWheelSpeed;
- wheelDeltaY = -e.deltaY * this.options.mouseWheelSpeed;
- } else {
- wheelDeltaX = -e.deltaX;
- wheelDeltaY = -e.deltaY;
- }
- } else if ( 'wheelDeltaX' in e ) {
- wheelDeltaX = e.wheelDeltaX / 120 * this.options.mouseWheelSpeed;
- wheelDeltaY = e.wheelDeltaY / 120 * this.options.mouseWheelSpeed;
- } else if ( 'wheelDelta' in e ) {
- wheelDeltaX = wheelDeltaY = e.wheelDelta / 120 * this.options.mouseWheelSpeed;
- } else if ( 'detail' in e ) {
- wheelDeltaX = wheelDeltaY = -e.detail / 3 * this.options.mouseWheelSpeed;
- } else {
- return;
- }
-
- wheelDeltaX *= this.options.invertWheelDirection;
- wheelDeltaY *= this.options.invertWheelDirection;
-
- if ( !this.hasVerticalScroll ) {
- wheelDeltaX = wheelDeltaY;
- wheelDeltaY = 0;
- }
-
- if ( this.options.snap ) {
- newX = this.currentPage.pageX;
- newY = this.currentPage.pageY;
-
- if ( wheelDeltaX > 0 ) {
- newX--;
- } else if ( wheelDeltaX < 0 ) {
- newX++;
- }
-
- if ( wheelDeltaY > 0 ) {
- newY--;
- } else if ( wheelDeltaY < 0 ) {
- newY++;
- }
-
- this.goToPage(newX, newY);
-
- return;
- }
-
- newX = this.x + Math.round(this.hasHorizontalScroll ? wheelDeltaX : 0);
- newY = this.y + Math.round(this.hasVerticalScroll ? wheelDeltaY : 0);
-
- this.directionX = wheelDeltaX > 0 ? -1 : wheelDeltaX < 0 ? 1 : 0;
- this.directionY = wheelDeltaY > 0 ? -1 : wheelDeltaY < 0 ? 1 : 0;
-
- if ( newX > 0 ) {
- newX = 0;
- } else if ( newX < this.maxScrollX ) {
- newX = this.maxScrollX;
- }
-
- if ( newY > 0 ) {
- newY = 0;
- } else if ( newY < this.maxScrollY ) {
- newY = this.maxScrollY;
- }
-
- this.scrollTo(newX, newY, 0);
-
-// INSERT POINT: _wheel
- },
-
- _initSnap: function () {
- this.currentPage = {};
-
- if ( typeof this.options.snap == 'string' ) {
- this.options.snap = this.scroller.querySelectorAll(this.options.snap);
- }
-
- this.on('refresh', function () {
- var i = 0, l,
- m = 0, n,
- cx, cy,
- x = 0, y,
- stepX = this.options.snapStepX || this.wrapperWidth,
- stepY = this.options.snapStepY || this.wrapperHeight,
- el,
- rect;
-
- this.pages = [];
-
- if ( !this.wrapperWidth || !this.wrapperHeight || !this.scrollerWidth || !this.scrollerHeight ) {
- return;
- }
-
- if ( this.options.snap === true ) {
- cx = Math.round( stepX / 2 );
- cy = Math.round( stepY / 2 );
-
- while ( x > -this.scrollerWidth ) {
- this.pages[i] = [];
- l = 0;
- y = 0;
-
- while ( y > -this.scrollerHeight ) {
- this.pages[i][l] = {
- x: Math.max(x, this.maxScrollX),
- y: Math.max(y, this.maxScrollY),
- width: stepX,
- height: stepY,
- cx: x - cx,
- cy: y - cy
- };
-
- y -= stepY;
- l++;
- }
-
- x -= stepX;
- i++;
- }
- } else {
- el = this.options.snap;
- l = el.length;
- n = -1;
-
- for ( ; i < l; i++ ) {
- rect = utils.getRect(el[i]);
- if ( i === 0 || rect.left <= utils.getRect(el[i-1]).left ) {
- m = 0;
- n++;
- }
-
- if ( !this.pages[m] ) {
- this.pages[m] = [];
- }
-
- x = Math.max(-rect.left, this.maxScrollX);
- y = Math.max(-rect.top, this.maxScrollY);
- cx = x - Math.round(rect.width / 2);
- cy = y - Math.round(rect.height / 2);
-
- this.pages[m][n] = {
- x: x,
- y: y,
- width: rect.width,
- height: rect.height,
- cx: cx,
- cy: cy
- };
-
- if ( x > this.maxScrollX ) {
- m++;
- }
- }
- }
-
- this.goToPage(this.currentPage.pageX || 0, this.currentPage.pageY || 0, 0);
-
- // Update snap threshold if needed
- if ( this.options.snapThreshold % 1 === 0 ) {
- this.snapThresholdX = this.options.snapThreshold;
- this.snapThresholdY = this.options.snapThreshold;
- } else {
- this.snapThresholdX = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width * this.options.snapThreshold);
- this.snapThresholdY = Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height * this.options.snapThreshold);
- }
- });
-
- this.on('flick', function () {
- var time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(this.x - this.startX), 1000),
- Math.min(Math.abs(this.y - this.startY), 1000)
- ), 300);
-
- this.goToPage(
- this.currentPage.pageX + this.directionX,
- this.currentPage.pageY + this.directionY,
- time
- );
- });
- },
-
- _nearestSnap: function (x, y) {
- if ( !this.pages.length ) {
- return { x: 0, y: 0, pageX: 0, pageY: 0 };
- }
-
- var i = 0,
- l = this.pages.length,
- m = 0;
-
- // Check if we exceeded the snap threshold
- if ( Math.abs(x - this.absStartX) < this.snapThresholdX &&
- Math.abs(y - this.absStartY) < this.snapThresholdY ) {
- return this.currentPage;
- }
-
- if ( x > 0 ) {
- x = 0;
- } else if ( x < this.maxScrollX ) {
- x = this.maxScrollX;
- }
-
- if ( y > 0 ) {
- y = 0;
- } else if ( y < this.maxScrollY ) {
- y = this.maxScrollY;
- }
-
- for ( ; i < l; i++ ) {
- if ( x >= this.pages[i][0].cx ) {
- x = this.pages[i][0].x;
- break;
- }
- }
-
- l = this.pages[i].length;
-
- for ( ; m < l; m++ ) {
- if ( y >= this.pages[0][m].cy ) {
- y = this.pages[0][m].y;
- break;
- }
- }
-
- if ( i == this.currentPage.pageX ) {
- i += this.directionX;
-
- if ( i < 0 ) {
- i = 0;
- } else if ( i >= this.pages.length ) {
- i = this.pages.length - 1;
- }
-
- x = this.pages[i][0].x;
- }
-
- if ( m == this.currentPage.pageY ) {
- m += this.directionY;
-
- if ( m < 0 ) {
- m = 0;
- } else if ( m >= this.pages[0].length ) {
- m = this.pages[0].length - 1;
- }
-
- y = this.pages[0][m].y;
- }
-
- return {
- x: x,
- y: y,
- pageX: i,
- pageY: m
- };
- },
-
- goToPage: function (x, y, time, easing) {
- easing = easing || this.options.bounceEasing;
-
- if ( x >= this.pages.length ) {
- x = this.pages.length - 1;
- } else if ( x < 0 ) {
- x = 0;
- }
-
- if ( y >= this.pages[x].length ) {
- y = this.pages[x].length - 1;
- } else if ( y < 0 ) {
- y = 0;
- }
-
- var posX = this.pages[x][y].x,
- posY = this.pages[x][y].y;
-
- time = time === undefined ? this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(posX - this.x), 1000),
- Math.min(Math.abs(posY - this.y), 1000)
- ), 300) : time;
-
- this.currentPage = {
- x: posX,
- y: posY,
- pageX: x,
- pageY: y
- };
-
- this.scrollTo(posX, posY, time, easing);
- },
-
- next: function (time, easing) {
- var x = this.currentPage.pageX,
- y = this.currentPage.pageY;
-
- x++;
-
- if ( x >= this.pages.length && this.hasVerticalScroll ) {
- x = 0;
- y++;
- }
-
- this.goToPage(x, y, time, easing);
- },
-
- prev: function (time, easing) {
- var x = this.currentPage.pageX,
- y = this.currentPage.pageY;
-
- x--;
-
- if ( x < 0 && this.hasVerticalScroll ) {
- x = 0;
- y--;
- }
-
- this.goToPage(x, y, time, easing);
- },
-
- _initKeys: function (e) {
- // default key bindings
- var keys = {
- pageUp: 33,
- pageDown: 34,
- end: 35,
- home: 36,
- left: 37,
- up: 38,
- right: 39,
- down: 40
- };
- var i;
-
- // if you give me characters I give you keycode
- if ( typeof this.options.keyBindings == 'object' ) {
- for ( i in this.options.keyBindings ) {
- if ( typeof this.options.keyBindings[i] == 'string' ) {
- this.options.keyBindings[i] = this.options.keyBindings[i].toUpperCase().charCodeAt(0);
- }
- }
- } else {
- this.options.keyBindings = {};
- }
-
- for ( i in keys ) {
- this.options.keyBindings[i] = this.options.keyBindings[i] || keys[i];
- }
-
- utils.addEvent(window, 'keydown', this);
-
- this.on('destroy', function () {
- utils.removeEvent(window, 'keydown', this);
- });
- },
-
- _key: function (e) {
- if ( !this.enabled ) {
- return;
- }
-
- var snap = this.options.snap, // we are using this alot, better to cache it
- newX = snap ? this.currentPage.pageX : this.x,
- newY = snap ? this.currentPage.pageY : this.y,
- now = utils.getTime(),
- prevTime = this.keyTime || 0,
- acceleration = 0.250,
- pos;
-
- if ( this.options.useTransition && this.isInTransition ) {
- pos = this.getComputedPosition();
-
- this._translate(Math.round(pos.x), Math.round(pos.y));
- this.isInTransition = false;
- }
-
- this.keyAcceleration = now - prevTime < 200 ? Math.min(this.keyAcceleration + acceleration, 50) : 0;
-
- switch ( e.keyCode ) {
- case this.options.keyBindings.pageUp:
- if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {
- newX += snap ? 1 : this.wrapperWidth;
- } else {
- newY += snap ? 1 : this.wrapperHeight;
- }
- break;
- case this.options.keyBindings.pageDown:
- if ( this.hasHorizontalScroll && !this.hasVerticalScroll ) {
- newX -= snap ? 1 : this.wrapperWidth;
- } else {
- newY -= snap ? 1 : this.wrapperHeight;
- }
- break;
- case this.options.keyBindings.end:
- newX = snap ? this.pages.length-1 : this.maxScrollX;
- newY = snap ? this.pages[0].length-1 : this.maxScrollY;
- break;
- case this.options.keyBindings.home:
- newX = 0;
- newY = 0;
- break;
- case this.options.keyBindings.left:
- newX += snap ? -1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.up:
- newY += snap ? 1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.right:
- newX -= snap ? -1 : 5 + this.keyAcceleration>>0;
- break;
- case this.options.keyBindings.down:
- newY -= snap ? 1 : 5 + this.keyAcceleration>>0;
- break;
- default:
- return;
- }
-
- if ( snap ) {
- this.goToPage(newX, newY);
- return;
- }
-
- if ( newX > 0 ) {
- newX = 0;
- this.keyAcceleration = 0;
- } else if ( newX < this.maxScrollX ) {
- newX = this.maxScrollX;
- this.keyAcceleration = 0;
- }
-
- if ( newY > 0 ) {
- newY = 0;
- this.keyAcceleration = 0;
- } else if ( newY < this.maxScrollY ) {
- newY = this.maxScrollY;
- this.keyAcceleration = 0;
- }
-
- this.scrollTo(newX, newY, 0);
-
- this.keyTime = now;
- },
-
- _animate: function (destX, destY, duration, easingFn) {
- var that = this,
- startX = this.x,
- startY = this.y,
- startTime = utils.getTime(),
- destTime = startTime + duration;
-
- function step () {
- var now = utils.getTime(),
- newX, newY,
- easing;
-
- if ( now >= destTime ) {
- that.isAnimating = false;
- that._translate(destX, destY);
-
- if ( !that.resetPosition(that.options.bounceTime) ) {
- that._execEvent('scrollEnd');
- }
-
- return;
- }
-
- now = ( now - startTime ) / duration;
- easing = easingFn(now);
- newX = ( destX - startX ) * easing + startX;
- newY = ( destY - startY ) * easing + startY;
- that._translate(newX, newY);
-
- if ( that.isAnimating ) {
- rAF(step);
- }
- }
-
- this.isAnimating = true;
- step();
- },
- handleEvent: function (e) {
- switch ( e.type ) {
- case 'touchstart':
- case 'pointerdown':
- case 'MSPointerDown':
- case 'mousedown':
- this._start(e);
- break;
- case 'touchmove':
- case 'pointermove':
- case 'MSPointerMove':
- case 'mousemove':
- this._move(e);
- break;
- case 'touchend':
- case 'pointerup':
- case 'MSPointerUp':
- case 'mouseup':
- case 'touchcancel':
- case 'pointercancel':
- case 'MSPointerCancel':
- case 'mousecancel':
- this._end(e);
- break;
- case 'orientationchange':
- case 'resize':
- this._resize();
- break;
- case 'transitionend':
- case 'webkitTransitionEnd':
- case 'oTransitionEnd':
- case 'MSTransitionEnd':
- this._transitionEnd(e);
- break;
- case 'wheel':
- case 'DOMMouseScroll':
- case 'mousewheel':
- this._wheel(e);
- break;
- case 'keydown':
- this._key(e);
- break;
- case 'click':
- if ( this.enabled && !e._constructed ) {
- e.preventDefault();
- e.stopPropagation();
- }
- break;
- }
- }
-};
-function createDefaultScrollbar (direction, interactive, type) {
- var scrollbar = document.createElement('div'),
- indicator = document.createElement('div');
-
- if ( type === true ) {
- scrollbar.style.cssText = 'position:absolute;z-index:9999';
- indicator.style.cssText = '-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px';
- }
-
- indicator.className = 'iScrollIndicator';
-
- if ( direction == 'h' ) {
- if ( type === true ) {
- scrollbar.style.cssText += ';height:7px;left:2px;right:2px;bottom:0';
- indicator.style.height = '100%';
- }
- scrollbar.className = 'iScrollHorizontalScrollbar';
- } else {
- if ( type === true ) {
- scrollbar.style.cssText += ';width:7px;bottom:2px;top:2px;right:1px';
- indicator.style.width = '100%';
- }
- scrollbar.className = 'iScrollVerticalScrollbar';
- }
-
- scrollbar.style.cssText += ';overflow:hidden';
-
- if ( !interactive ) {
- scrollbar.style.pointerEvents = 'none';
- }
-
- scrollbar.appendChild(indicator);
-
- return scrollbar;
-}
-
-function Indicator (scroller, options) {
- this.wrapper = typeof options.el == 'string' ? document.querySelector(options.el) : options.el;
- this.wrapperStyle = this.wrapper.style;
- this.indicator = this.wrapper.children[0];
- this.indicatorStyle = this.indicator.style;
- this.scroller = scroller;
-
- this.options = {
- listenX: true,
- listenY: true,
- interactive: false,
- resize: true,
- defaultScrollbars: false,
- shrink: false,
- fade: false,
- speedRatioX: 0,
- speedRatioY: 0
- };
-
- for ( var i in options ) {
- this.options[i] = options[i];
- }
-
- this.sizeRatioX = 1;
- this.sizeRatioY = 1;
- this.maxPosX = 0;
- this.maxPosY = 0;
-
- if ( this.options.interactive ) {
- if ( !this.options.disableTouch ) {
- utils.addEvent(this.indicator, 'touchstart', this);
- utils.addEvent(window, 'touchend', this);
- }
- if ( !this.options.disablePointer ) {
- utils.addEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);
- utils.addEvent(window, utils.prefixPointerEvent('pointerup'), this);
- }
- if ( !this.options.disableMouse ) {
- utils.addEvent(this.indicator, 'mousedown', this);
- utils.addEvent(window, 'mouseup', this);
- }
- }
-
- if ( this.options.fade ) {
- this.wrapperStyle[utils.style.transform] = this.scroller.translateZ;
- var durationProp = utils.style.transitionDuration;
- if(!durationProp) {
- return;
- }
- this.wrapperStyle[durationProp] = utils.isBadAndroid ? '0.0001ms' : '0ms';
- // remove 0.0001ms
- var self = this;
- if(utils.isBadAndroid) {
- rAF(function() {
- if(self.wrapperStyle[durationProp] === '0.0001ms') {
- self.wrapperStyle[durationProp] = '0s';
- }
- });
- }
- this.wrapperStyle.opacity = '0';
- }
-}
-
-Indicator.prototype = {
- handleEvent: function (e) {
- switch ( e.type ) {
- case 'touchstart':
- case 'pointerdown':
- case 'MSPointerDown':
- case 'mousedown':
- this._start(e);
- break;
- case 'touchmove':
- case 'pointermove':
- case 'MSPointerMove':
- case 'mousemove':
- this._move(e);
- break;
- case 'touchend':
- case 'pointerup':
- case 'MSPointerUp':
- case 'mouseup':
- case 'touchcancel':
- case 'pointercancel':
- case 'MSPointerCancel':
- case 'mousecancel':
- this._end(e);
- break;
- }
- },
-
- destroy: function () {
- if ( this.options.fadeScrollbars ) {
- clearTimeout(this.fadeTimeout);
- this.fadeTimeout = null;
- }
- if ( this.options.interactive ) {
- utils.removeEvent(this.indicator, 'touchstart', this);
- utils.removeEvent(this.indicator, utils.prefixPointerEvent('pointerdown'), this);
- utils.removeEvent(this.indicator, 'mousedown', this);
-
- utils.removeEvent(window, 'touchmove', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);
- utils.removeEvent(window, 'mousemove', this);
-
- utils.removeEvent(window, 'touchend', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointerup'), this);
- utils.removeEvent(window, 'mouseup', this);
- }
-
- if ( this.options.defaultScrollbars && this.wrapper.parentNode ) {
- this.wrapper.parentNode.removeChild(this.wrapper);
- }
- },
-
- _start: function (e) {
- var point = e.touches ? e.touches[0] : e;
-
- e.preventDefault();
- e.stopPropagation();
-
- this.transitionTime();
-
- this.initiated = true;
- this.moved = false;
- this.lastPointX = point.pageX;
- this.lastPointY = point.pageY;
-
- this.startTime = utils.getTime();
-
- if ( !this.options.disableTouch ) {
- utils.addEvent(window, 'touchmove', this);
- }
- if ( !this.options.disablePointer ) {
- utils.addEvent(window, utils.prefixPointerEvent('pointermove'), this);
- }
- if ( !this.options.disableMouse ) {
- utils.addEvent(window, 'mousemove', this);
- }
-
- this.scroller._execEvent('beforeScrollStart');
- },
-
- _move: function (e) {
- var point = e.touches ? e.touches[0] : e,
- deltaX, deltaY,
- newX, newY,
- timestamp = utils.getTime();
-
- if ( !this.moved ) {
- this.scroller._execEvent('scrollStart');
- }
-
- this.moved = true;
-
- deltaX = point.pageX - this.lastPointX;
- this.lastPointX = point.pageX;
-
- deltaY = point.pageY - this.lastPointY;
- this.lastPointY = point.pageY;
-
- newX = this.x + deltaX;
- newY = this.y + deltaY;
-
- this._pos(newX, newY);
-
-// INSERT POINT: indicator._move
-
- e.preventDefault();
- e.stopPropagation();
- },
-
- _end: function (e) {
- if ( !this.initiated ) {
- return;
- }
-
- this.initiated = false;
-
- e.preventDefault();
- e.stopPropagation();
-
- utils.removeEvent(window, 'touchmove', this);
- utils.removeEvent(window, utils.prefixPointerEvent('pointermove'), this);
- utils.removeEvent(window, 'mousemove', this);
-
- if ( this.scroller.options.snap ) {
- var snap = this.scroller._nearestSnap(this.scroller.x, this.scroller.y);
-
- var time = this.options.snapSpeed || Math.max(
- Math.max(
- Math.min(Math.abs(this.scroller.x - snap.x), 1000),
- Math.min(Math.abs(this.scroller.y - snap.y), 1000)
- ), 300);
-
- if ( this.scroller.x != snap.x || this.scroller.y != snap.y ) {
- this.scroller.directionX = 0;
- this.scroller.directionY = 0;
- this.scroller.currentPage = snap;
- this.scroller.scrollTo(snap.x, snap.y, time, this.scroller.options.bounceEasing);
- }
- }
-
- if ( this.moved ) {
- this.scroller._execEvent('scrollEnd');
- }
- },
-
- transitionTime: function (time) {
- time = time || 0;
- var durationProp = utils.style.transitionDuration;
- if(!durationProp) {
- return;
- }
-
- this.indicatorStyle[durationProp] = time + 'ms';
-
- if ( !time && utils.isBadAndroid ) {
- this.indicatorStyle[durationProp] = '0.0001ms';
- // remove 0.0001ms
- var self = this;
- rAF(function() {
- if(self.indicatorStyle[durationProp] === '0.0001ms') {
- self.indicatorStyle[durationProp] = '0s';
- }
- });
- }
- },
-
- transitionTimingFunction: function (easing) {
- this.indicatorStyle[utils.style.transitionTimingFunction] = easing;
- },
-
- refresh: function () {
- this.transitionTime();
-
- if ( this.options.listenX && !this.options.listenY ) {
- this.indicatorStyle.display = this.scroller.hasHorizontalScroll ? 'block' : 'none';
- } else if ( this.options.listenY && !this.options.listenX ) {
- this.indicatorStyle.display = this.scroller.hasVerticalScroll ? 'block' : 'none';
- } else {
- this.indicatorStyle.display = this.scroller.hasHorizontalScroll || this.scroller.hasVerticalScroll ? 'block' : 'none';
- }
-
- if ( this.scroller.hasHorizontalScroll && this.scroller.hasVerticalScroll ) {
- utils.addClass(this.wrapper, 'iScrollBothScrollbars');
- utils.removeClass(this.wrapper, 'iScrollLoneScrollbar');
-
- if ( this.options.defaultScrollbars && this.options.customStyle ) {
- if ( this.options.listenX ) {
- this.wrapper.style.right = '8px';
- } else {
- this.wrapper.style.bottom = '8px';
- }
- }
- } else {
- utils.removeClass(this.wrapper, 'iScrollBothScrollbars');
- utils.addClass(this.wrapper, 'iScrollLoneScrollbar');
-
- if ( this.options.defaultScrollbars && this.options.customStyle ) {
- if ( this.options.listenX ) {
- this.wrapper.style.right = '2px';
- } else {
- this.wrapper.style.bottom = '2px';
- }
- }
- }
-
- utils.getRect(this.wrapper); // force refresh
-
- if ( this.options.listenX ) {
- this.wrapperWidth = this.wrapper.clientWidth;
- if ( this.options.resize ) {
- this.indicatorWidth = Math.max(Math.round(this.wrapperWidth * this.wrapperWidth / (this.scroller.scrollerWidth || this.wrapperWidth || 1)), 8);
- this.indicatorStyle.width = this.indicatorWidth + 'px';
- } else {
- this.indicatorWidth = this.indicator.clientWidth;
- }
-
- this.maxPosX = this.wrapperWidth - this.indicatorWidth;
-
- if ( this.options.shrink == 'clip' ) {
- this.minBoundaryX = -this.indicatorWidth + 8;
- this.maxBoundaryX = this.wrapperWidth - 8;
- } else {
- this.minBoundaryX = 0;
- this.maxBoundaryX = this.maxPosX;
- }
-
- this.sizeRatioX = this.options.speedRatioX || (this.scroller.maxScrollX && (this.maxPosX / this.scroller.maxScrollX));
- }
-
- if ( this.options.listenY ) {
- this.wrapperHeight = this.wrapper.clientHeight;
- if ( this.options.resize ) {
- this.indicatorHeight = Math.max(Math.round(this.wrapperHeight * this.wrapperHeight / (this.scroller.scrollerHeight || this.wrapperHeight || 1)), 8);
- this.indicatorStyle.height = this.indicatorHeight + 'px';
- } else {
- this.indicatorHeight = this.indicator.clientHeight;
- }
-
- this.maxPosY = this.wrapperHeight - this.indicatorHeight;
-
- if ( this.options.shrink == 'clip' ) {
- this.minBoundaryY = -this.indicatorHeight + 8;
- this.maxBoundaryY = this.wrapperHeight - 8;
- } else {
- this.minBoundaryY = 0;
- this.maxBoundaryY = this.maxPosY;
- }
-
- this.maxPosY = this.wrapperHeight - this.indicatorHeight;
- this.sizeRatioY = this.options.speedRatioY || (this.scroller.maxScrollY && (this.maxPosY / this.scroller.maxScrollY));
- }
-
- this.updatePosition();
- },
-
- updatePosition: function () {
- var x = this.options.listenX && Math.round(this.sizeRatioX * this.scroller.x) || 0,
- y = this.options.listenY && Math.round(this.sizeRatioY * this.scroller.y) || 0;
-
- if ( !this.options.ignoreBoundaries ) {
- if ( x < this.minBoundaryX ) {
- if ( this.options.shrink == 'scale' ) {
- this.width = Math.max(this.indicatorWidth + x, 8);
- this.indicatorStyle.width = this.width + 'px';
- }
- x = this.minBoundaryX;
- } else if ( x > this.maxBoundaryX ) {
- if ( this.options.shrink == 'scale' ) {
- this.width = Math.max(this.indicatorWidth - (x - this.maxPosX), 8);
- this.indicatorStyle.width = this.width + 'px';
- x = this.maxPosX + this.indicatorWidth - this.width;
- } else {
- x = this.maxBoundaryX;
- }
- } else if ( this.options.shrink == 'scale' && this.width != this.indicatorWidth ) {
- this.width = this.indicatorWidth;
- this.indicatorStyle.width = this.width + 'px';
- }
-
- if ( y < this.minBoundaryY ) {
- if ( this.options.shrink == 'scale' ) {
- this.height = Math.max(this.indicatorHeight + y * 3, 8);
- this.indicatorStyle.height = this.height + 'px';
- }
- y = this.minBoundaryY;
- } else if ( y > this.maxBoundaryY ) {
- if ( this.options.shrink == 'scale' ) {
- this.height = Math.max(this.indicatorHeight - (y - this.maxPosY) * 3, 8);
- this.indicatorStyle.height = this.height + 'px';
- y = this.maxPosY + this.indicatorHeight - this.height;
- } else {
- y = this.maxBoundaryY;
- }
- } else if ( this.options.shrink == 'scale' && this.height != this.indicatorHeight ) {
- this.height = this.indicatorHeight;
- this.indicatorStyle.height = this.height + 'px';
- }
- }
-
- this.x = x;
- this.y = y;
-
- if ( this.scroller.options.useTransform ) {
- this.indicatorStyle[utils.style.transform] = 'translate(' + x + 'px,' + y + 'px)' + this.scroller.translateZ;
- } else {
- this.indicatorStyle.left = x + 'px';
- this.indicatorStyle.top = y + 'px';
- }
- },
-
- _pos: function (x, y) {
- if ( x < 0 ) {
- x = 0;
- } else if ( x > this.maxPosX ) {
- x = this.maxPosX;
- }
-
- if ( y < 0 ) {
- y = 0;
- } else if ( y > this.maxPosY ) {
- y = this.maxPosY;
- }
-
- x = this.options.listenX ? Math.round(x / this.sizeRatioX) : this.scroller.x;
- y = this.options.listenY ? Math.round(y / this.sizeRatioY) : this.scroller.y;
-
- this.scroller.scrollTo(x, y);
- },
-
- fade: function (val, hold) {
- if ( hold && !this.visible ) {
- return;
- }
-
- clearTimeout(this.fadeTimeout);
- this.fadeTimeout = null;
-
- var time = val ? 250 : 500,
- delay = val ? 0 : 300;
-
- val = val ? '1' : '0';
-
- this.wrapperStyle[utils.style.transitionDuration] = time + 'ms';
-
- this.fadeTimeout = setTimeout((function (val) {
- this.wrapperStyle.opacity = val;
- this.visible = +val;
- }).bind(this, val), delay);
- }
-};
-
-IScroll.utils = utils;
-
-if ( typeof module != 'undefined' && module.exports ) {
- module.exports = IScroll;
-} else if ( typeof define == 'function' && define.amd ) {
- define( function () { return IScroll; } );
-} else {
- window.IScroll = IScroll;
-}
-
-})(window, document, Math); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/jquery-2.1.4.min.js b/StoneIsland/platforms/android/assets/www/js/vendor/jquery-2.1.4.min.js
deleted file mode 100755
index 49990d6e..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/jquery-2.1.4.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){
-return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)),
-void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.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(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/jquery.creditCardValidator.js b/StoneIsland/platforms/android/assets/www/js/vendor/jquery.creditCardValidator.js
deleted file mode 100755
index 56ce1bf6..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/jquery.creditCardValidator.js
+++ /dev/null
@@ -1,208 +0,0 @@
-// Generated by CoffeeScript 1.8.0
-
-/*
-jQuery Credit Card Validator 1.0
-
-Copyright 2012-2015 Pawel Decowski
-
-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.
- */
-
-(function() {
- var $,
- __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
-
- $ = jQuery;
-
- $.fn.validateCreditCard = function(callback, options) {
- var bind, card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number, _i, _len, _ref;
- card_types = [
- {
- name: 'amex',
- pattern: /^3[47]/,
- valid_length: [15]
- }, {
- name: 'diners_club_carte_blanche',
- pattern: /^30[0-5]/,
- valid_length: [14]
- }, {
- name: 'diners_club_international',
- pattern: /^36/,
- valid_length: [14]
- }, {
- name: 'jcb',
- pattern: /^35(2[89]|[3-8][0-9])/,
- valid_length: [16]
- }, {
- name: 'laser',
- pattern: /^(6304|670[69]|6771)/,
- valid_length: [16, 17, 18, 19]
- }, {
- name: 'visa_electron',
- pattern: /^(4026|417500|4508|4844|491(3|7))/,
- valid_length: [16]
- }, {
- name: 'visa',
- pattern: /^4/,
- valid_length: [16]
- }, {
- name: 'mastercard',
- pattern: /^5[1-5]/,
- valid_length: [16]
- }, {
- name: 'maestro',
- pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
- valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
- }, {
- name: 'discover',
- pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
- valid_length: [16]
- }
- ];
- bind = false;
- if (callback) {
- if (typeof callback === 'object') {
- options = callback;
- bind = false;
- callback = null;
- } else if (typeof callback === 'function') {
- bind = true;
- }
- }
- if (options == null) {
- options = {};
- }
- if (options.accept == null) {
- options.accept = (function() {
- var _i, _len, _results;
- _results = [];
- for (_i = 0, _len = card_types.length; _i < _len; _i++) {
- card = card_types[_i];
- _results.push(card.name);
- }
- return _results;
- })();
- }
- _ref = options.accept;
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- card_type = _ref[_i];
- if (__indexOf.call((function() {
- var _j, _len1, _results;
- _results = [];
- for (_j = 0, _len1 = card_types.length; _j < _len1; _j++) {
- card = card_types[_j];
- _results.push(card.name);
- }
- return _results;
- })(), card_type) < 0) {
- throw "Credit card type '" + card_type + "' is not supported";
- }
- }
- get_card_type = function(number) {
- var _j, _len1, _ref1;
- _ref1 = (function() {
- var _k, _len1, _ref1, _results;
- _results = [];
- for (_k = 0, _len1 = card_types.length; _k < _len1; _k++) {
- card = card_types[_k];
- if (_ref1 = card.name, __indexOf.call(options.accept, _ref1) >= 0) {
- _results.push(card);
- }
- }
- return _results;
- })();
- for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) {
- card_type = _ref1[_j];
- if (number.match(card_type.pattern)) {
- return card_type;
- }
- }
- return null;
- };
- is_valid_luhn = function(number) {
- var digit, n, sum, _j, _len1, _ref1;
- sum = 0;
- _ref1 = number.split('').reverse();
- for (n = _j = 0, _len1 = _ref1.length; _j < _len1; n = ++_j) {
- digit = _ref1[n];
- digit = +digit;
- if (n % 2) {
- digit *= 2;
- if (digit < 10) {
- sum += digit;
- } else {
- sum += digit - 9;
- }
- } else {
- sum += digit;
- }
- }
- return sum % 10 === 0;
- };
- is_valid_length = function(number, card_type) {
- var _ref1;
- return _ref1 = number.length, __indexOf.call(card_type.valid_length, _ref1) >= 0;
- };
- validate_number = (function(_this) {
- return function(number) {
- var length_valid, luhn_valid;
- card_type = get_card_type(number);
- luhn_valid = false;
- length_valid = false;
- if (card_type != null) {
- luhn_valid = is_valid_luhn(number);
- length_valid = is_valid_length(number, card_type);
- }
- return {
- card_type: card_type,
- valid: luhn_valid && length_valid,
- luhn_valid: luhn_valid,
- length_valid: length_valid
- };
- };
- })(this);
- validate = (function(_this) {
- return function() {
- var number;
- number = normalize($(_this).val());
- return validate_number(number);
- };
- })(this);
- normalize = function(number) {
- return (number || "").replace(/[ -]/g, '');
- };
- if (!bind) {
- return validate();
- }
- this.on('input.jccv', (function(_this) {
- return function() {
- $(_this).off('keyup.jccv');
- return callback.call(_this, validate());
- };
- })(this));
- this.on('keyup.jccv', (function(_this) {
- return function() {
- return callback.call(_this, validate());
- };
- })(this));
- callback.call(this, validate());
- return this;
- };
-
-}).call(this);
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/loader.js b/StoneIsland/platforms/android/assets/www/js/vendor/loader.js
deleted file mode 100755
index ccfcdc9e..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/loader.js
+++ /dev/null
@@ -1,100 +0,0 @@
-var Loader = Loader || (function(){
- function Loader (readyCallback, view){
- this.assets = {};
- this.images = [];
- this.readyCallback = readyCallback;
- this.count = 0
- this.view = view
- this.loaded = false
- }
-
- // Register an asset as loading
- Loader.prototype.register = function(s){
- this.assets[s] = false;
- this.count += 1
- }
-
- // Signal that an asset has loaded
- Loader.prototype.ready = function(s){
- window.debug && console.log("ready >> " + s);
-
- this.assets[s] = true;
- if (this.loaded) return;
-
- this.view && this.view.update( this.percentRemaining() )
-
- if (! this.isReady()) return;
-
- this.loaded = true;
- if (this.view) {
- this.view && this.view.finish(this.readyCallback)
- }
- else {
- this.readyCallback && this.readyCallback();
- }
- }
-
- // (boolean) Is the loader ready?
- Loader.prototype.isReady = function(){
- for (var s in this.assets) {
- if (this.assets.hasOwnProperty(s) && this.assets[s] != true) {
- return false;
- }
- }
- return true;
- }
-
- // (float) Percentage of assets remaining
- Loader.prototype.percentRemaining = function(){
- return this.remainingAssets() / this.count
- }
-
- // (int) Number of assets remaining
- Loader.prototype.remainingAssets = function(){
- var n = 0;
- for (var s in this.assets) {
- if (this.assets.hasOwnProperty(s) && this.assets[s] != true) {
- n++;
- // console.log('remaining: ' + s);
- }
- }
- return n;
- }
-
- // Preload the images in config.images
- Loader.prototype.preloadImages = function(images, register){
- this.register("preload");
- for (var i = 0; i < images.length; i++) {
- this.preloadImage(images[i], register);
- }
- this.ready("preload");
- }
- Loader.prototype.preloadImage = function(src, register, cb){
- if (! src || src == "none") return;
- var _this = this;
- if (! cb && typeof register !== "boolean") {
- cb = register
- register = null
- }
- if (register) {
- this.register(src);
- }
- var img = new Image()
- var loaded = false
- img.onload = function(){
- if (loaded) return
- loaded = true
- if (cb) {
- cb(img);
- }
- if (register) {
- _this.ready(src);
- }
- }
- img.src = src;
- if (img.complete) img.onload();
- _this.images.push(img);
- }
-
- return Loader;
-})();
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/lodash.min.js b/StoneIsland/platforms/android/assets/www/js/vendor/lodash.min.js
deleted file mode 100755
index e6c9820b..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/lodash.min.js
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @license
- * lodash 3.10.1 (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
- * Build: `lodash modern -o ./lodash.js`
- */
-;(function(){function n(n,t){if(n!==t){var r=null===n,e=n===w,u=n===n,o=null===t,i=t===w,f=t===t;if(n>t&&!o||!u||r&&!i&&f||e&&f)return 1;if(n<t&&!r||!f||o&&!e&&u||i&&u)return-1}return 0}function t(n,t,r){for(var e=n.length,u=r?e:-1;r?u--:++u<e;)if(t(n[u],u,n))return u;return-1}function r(n,t,r){if(t!==t)return p(n,r);r-=1;for(var e=n.length;++r<e;)if(n[r]===t)return r;return-1}function e(n){return typeof n=="function"||false}function u(n){return null==n?"":n+""}function o(n,t){for(var r=-1,e=n.length;++r<e&&-1<t.indexOf(n.charAt(r)););
-return r}function i(n,t){for(var r=n.length;r--&&-1<t.indexOf(n.charAt(r)););return r}function f(t,r){return n(t.a,r.a)||t.b-r.b}function a(n){return Nn[n]}function c(n){return Tn[n]}function l(n,t,r){return t?n=Bn[n]:r&&(n=Dn[n]),"\\"+n}function s(n){return"\\"+Dn[n]}function p(n,t,r){var e=n.length;for(t+=r?0:-1;r?t--:++t<e;){var u=n[t];if(u!==u)return t}return-1}function h(n){return!!n&&typeof n=="object"}function _(n){return 160>=n&&9<=n&&13>=n||32==n||160==n||5760==n||6158==n||8192<=n&&(8202>=n||8232==n||8233==n||8239==n||8287==n||12288==n||65279==n);
-}function v(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;)n[r]===t&&(n[r]=z,o[++u]=r);return o}function g(n){for(var t=-1,r=n.length;++t<r&&_(n.charCodeAt(t)););return t}function y(n){for(var t=n.length;t--&&_(n.charCodeAt(t)););return t}function d(n){return Ln[n]}function m(_){function Nn(n){if(h(n)&&!(Oo(n)||n instanceof zn)){if(n instanceof Ln)return n;if(nu.call(n,"__chain__")&&nu.call(n,"__wrapped__"))return Mr(n)}return new Ln(n)}function Tn(){}function Ln(n,t,r){this.__wrapped__=n,this.__actions__=r||[],
-this.__chain__=!!t}function zn(n){this.__wrapped__=n,this.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=Ru,this.__views__=[]}function Bn(){this.__data__={}}function Dn(n){var t=n?n.length:0;for(this.data={hash:gu(null),set:new lu};t--;)this.push(n[t])}function Mn(n,t){var r=n.data;return(typeof t=="string"||ge(t)?r.set.has(t):r.hash[t])?0:-1}function qn(n,t){var r=-1,e=n.length;for(t||(t=Be(e));++r<e;)t[r]=n[r];return t}function Pn(n,t){for(var r=-1,e=n.length;++r<e&&false!==t(n[r],r,n););
-return n}function Kn(n,t){for(var r=-1,e=n.length;++r<e;)if(!t(n[r],r,n))return false;return true}function Vn(n,t){for(var r=-1,e=n.length,u=-1,o=[];++r<e;){var i=n[r];t(i,r,n)&&(o[++u]=i)}return o}function Gn(n,t){for(var r=-1,e=n.length,u=Be(e);++r<e;)u[r]=t(n[r],r,n);return u}function Jn(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function Xn(n,t,r,e){var u=-1,o=n.length;for(e&&o&&(r=n[++u]);++u<o;)r=t(r,n[u],u,n);return r}function Hn(n,t){for(var r=-1,e=n.length;++r<e;)if(t(n[r],r,n))return true;
-return false}function Qn(n,t,r,e){return n!==w&&nu.call(e,r)?n:t}function nt(n,t,r){for(var e=-1,u=zo(t),o=u.length;++e<o;){var i=u[e],f=n[i],a=r(f,t[i],i,n,t);(a===a?a===f:f!==f)&&(f!==w||i in n)||(n[i]=a)}return n}function tt(n,t){return null==t?n:et(t,zo(t),n)}function rt(n,t){for(var r=-1,e=null==n,u=!e&&Er(n),o=u?n.length:0,i=t.length,f=Be(i);++r<i;){var a=t[r];f[r]=u?Cr(a,o)?n[a]:w:e?w:n[a]}return f}function et(n,t,r){r||(r={});for(var e=-1,u=t.length;++e<u;){var o=t[e];r[o]=n[o]}return r}function ut(n,t,r){
-var e=typeof n;return"function"==e?t===w?n:Bt(n,t,r):null==n?Fe:"object"==e?bt(n):t===w?ze(n):xt(n,t)}function ot(n,t,r,e,u,o,i){var f;if(r&&(f=u?r(n,e,u):r(n)),f!==w)return f;if(!ge(n))return n;if(e=Oo(n)){if(f=kr(n),!t)return qn(n,f)}else{var a=ru.call(n),c=a==K;if(a!=Z&&a!=B&&(!c||u))return Fn[a]?Rr(n,a,t):u?n:{};if(f=Ir(c?{}:n),!t)return tt(f,n)}for(o||(o=[]),i||(i=[]),u=o.length;u--;)if(o[u]==n)return i[u];return o.push(n),i.push(f),(e?Pn:_t)(n,function(e,u){f[u]=ot(e,t,r,u,n,o,i)}),f}function it(n,t,r){
-if(typeof n!="function")throw new Ge(L);return su(function(){n.apply(w,r)},t)}function ft(n,t){var e=n?n.length:0,u=[];if(!e)return u;var o=-1,i=xr(),f=i===r,a=f&&t.length>=F&&gu&&lu?new Dn(t):null,c=t.length;a&&(i=Mn,f=false,t=a);n:for(;++o<e;)if(a=n[o],f&&a===a){for(var l=c;l--;)if(t[l]===a)continue n;u.push(a)}else 0>i(t,a,0)&&u.push(a);return u}function at(n,t){var r=true;return Su(n,function(n,e,u){return r=!!t(n,e,u)}),r}function ct(n,t,r,e){var u=e,o=u;return Su(n,function(n,i,f){i=+t(n,i,f),(r(i,u)||i===e&&i===o)&&(u=i,
-o=n)}),o}function lt(n,t){var r=[];return Su(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function st(n,t,r,e){var u;return r(n,function(n,r,o){return t(n,r,o)?(u=e?r:n,false):void 0}),u}function pt(n,t,r,e){e||(e=[]);for(var u=-1,o=n.length;++u<o;){var i=n[u];h(i)&&Er(i)&&(r||Oo(i)||pe(i))?t?pt(i,t,r,e):Jn(e,i):r||(e[e.length]=i)}return e}function ht(n,t){Nu(n,t,Re)}function _t(n,t){return Nu(n,t,zo)}function vt(n,t){return Tu(n,t,zo)}function gt(n,t){for(var r=-1,e=t.length,u=-1,o=[];++r<e;){var i=t[r];
-ve(n[i])&&(o[++u]=i)}return o}function yt(n,t,r){if(null!=n){r!==w&&r in Br(n)&&(t=[r]),r=0;for(var e=t.length;null!=n&&r<e;)n=n[t[r++]];return r&&r==e?n:w}}function dt(n,t,r,e,u,o){if(n===t)n=true;else if(null==n||null==t||!ge(n)&&!h(t))n=n!==n&&t!==t;else n:{var i=dt,f=Oo(n),a=Oo(t),c=D,l=D;f||(c=ru.call(n),c==B?c=Z:c!=Z&&(f=xe(n))),a||(l=ru.call(t),l==B?l=Z:l!=Z&&xe(t));var s=c==Z,a=l==Z,l=c==l;if(!l||f||s){if(!e&&(c=s&&nu.call(n,"__wrapped__"),a=a&&nu.call(t,"__wrapped__"),c||a)){n=i(c?n.value():n,a?t.value():t,r,e,u,o);
-break n}if(l){for(u||(u=[]),o||(o=[]),c=u.length;c--;)if(u[c]==n){n=o[c]==t;break n}u.push(n),o.push(t),n=(f?yr:mr)(n,t,i,r,e,u,o),u.pop(),o.pop()}else n=false}else n=dr(n,t,c)}return n}function mt(n,t,r){var e=t.length,u=e,o=!r;if(null==n)return!u;for(n=Br(n);e--;){var i=t[e];if(o&&i[2]?i[1]!==n[i[0]]:!(i[0]in n))return false}for(;++e<u;){var i=t[e],f=i[0],a=n[f],c=i[1];if(o&&i[2]){if(a===w&&!(f in n))return false}else if(i=r?r(a,c,f):w,i===w?!dt(c,a,r,true):!i)return false}return true}function wt(n,t){var r=-1,e=Er(n)?Be(n.length):[];
-return Su(n,function(n,u,o){e[++r]=t(n,u,o)}),e}function bt(n){var t=Ar(n);if(1==t.length&&t[0][2]){var r=t[0][0],e=t[0][1];return function(n){return null==n?false:n[r]===e&&(e!==w||r in Br(n))}}return function(n){return mt(n,t)}}function xt(n,t){var r=Oo(n),e=Wr(n)&&t===t&&!ge(t),u=n+"";return n=Dr(n),function(o){if(null==o)return false;var i=u;if(o=Br(o),!(!r&&e||i in o)){if(o=1==n.length?o:yt(o,Et(n,0,-1)),null==o)return false;i=Zr(n),o=Br(o)}return o[i]===t?t!==w||i in o:dt(t,o[i],w,true)}}function At(n,t,r,e,u){
-if(!ge(n))return n;var o=Er(t)&&(Oo(t)||xe(t)),i=o?w:zo(t);return Pn(i||t,function(f,a){if(i&&(a=f,f=t[a]),h(f)){e||(e=[]),u||(u=[]);n:{for(var c=a,l=e,s=u,p=l.length,_=t[c];p--;)if(l[p]==_){n[c]=s[p];break n}var p=n[c],v=r?r(p,_,c,n,t):w,g=v===w;g&&(v=_,Er(_)&&(Oo(_)||xe(_))?v=Oo(p)?p:Er(p)?qn(p):[]:me(_)||pe(_)?v=pe(p)?ke(p):me(p)?p:{}:g=false),l.push(_),s.push(v),g?n[c]=At(v,_,r,l,s):(v===v?v!==p:p===p)&&(n[c]=v)}}else c=n[a],l=r?r(c,f,a,n,t):w,(s=l===w)&&(l=f),l===w&&(!o||a in n)||!s&&(l===l?l===c:c!==c)||(n[a]=l);
-}),n}function jt(n){return function(t){return null==t?w:t[n]}}function kt(n){var t=n+"";return n=Dr(n),function(r){return yt(r,n,t)}}function It(n,t){for(var r=n?t.length:0;r--;){var e=t[r];if(e!=u&&Cr(e)){var u=e;pu.call(n,e,1)}}}function Rt(n,t){return n+yu(ku()*(t-n+1))}function Ot(n,t,r,e,u){return u(n,function(n,u,o){r=e?(e=false,n):t(r,n,u,o)}),r}function Et(n,t,r){var e=-1,u=n.length;for(t=null==t?0:+t||0,0>t&&(t=-t>u?0:u+t),r=r===w||r>u?u:+r||0,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Be(u);++e<u;)r[e]=n[e+t];
-return r}function Ct(n,t){var r;return Su(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}function Ut(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function Wt(t,r,e){var u=wr(),o=-1;return r=Gn(r,function(n){return u(n)}),t=wt(t,function(n){return{a:Gn(r,function(t){return t(n)}),b:++o,c:n}}),Ut(t,function(t,r){var u;n:{for(var o=-1,i=t.a,f=r.a,a=i.length,c=e.length;++o<a;)if(u=n(i[o],f[o])){if(o>=c)break n;o=e[o],u*="asc"===o||true===o?1:-1;break n}u=t.b-r.b}return u})}function $t(n,t){
-var r=0;return Su(n,function(n,e,u){r+=+t(n,e,u)||0}),r}function St(n,t){var e=-1,u=xr(),o=n.length,i=u===r,f=i&&o>=F,a=f&&gu&&lu?new Dn(void 0):null,c=[];a?(u=Mn,i=false):(f=false,a=t?[]:c);n:for(;++e<o;){var l=n[e],s=t?t(l,e,n):l;if(i&&l===l){for(var p=a.length;p--;)if(a[p]===s)continue n;t&&a.push(s),c.push(l)}else 0>u(a,s,0)&&((t||f)&&a.push(s),c.push(l))}return c}function Ft(n,t){for(var r=-1,e=t.length,u=Be(e);++r<e;)u[r]=n[t[r]];return u}function Nt(n,t,r,e){for(var u=n.length,o=e?u:-1;(e?o--:++o<u)&&t(n[o],o,n););
-return r?Et(n,e?0:o,e?o+1:u):Et(n,e?o+1:0,e?u:o)}function Tt(n,t){var r=n;r instanceof zn&&(r=r.value());for(var e=-1,u=t.length;++e<u;)var o=t[e],r=o.func.apply(o.thisArg,Jn([r],o.args));return r}function Lt(n,t,r){var e=0,u=n?n.length:e;if(typeof t=="number"&&t===t&&u<=Eu){for(;e<u;){var o=e+u>>>1,i=n[o];(r?i<=t:i<t)&&null!==i?e=o+1:u=o}return u}return zt(n,t,Fe,r)}function zt(n,t,r,e){t=r(t);for(var u=0,o=n?n.length:0,i=t!==t,f=null===t,a=t===w;u<o;){var c=yu((u+o)/2),l=r(n[c]),s=l!==w,p=l===l;
-(i?p||e:f?p&&s&&(e||null!=l):a?p&&(e||s):null==l?0:e?l<=t:l<t)?u=c+1:o=c}return xu(o,Ou)}function Bt(n,t,r){if(typeof n!="function")return Fe;if(t===w)return n;switch(r){case 1:return function(r){return n.call(t,r)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,o){return n.call(t,r,e,u,o)};case 5:return function(r,e,u,o,i){return n.call(t,r,e,u,o,i)}}return function(){return n.apply(t,arguments)}}function Dt(n){var t=new ou(n.byteLength);return new hu(t).set(new hu(n)),
-t}function Mt(n,t,r){for(var e=r.length,u=-1,o=bu(n.length-e,0),i=-1,f=t.length,a=Be(f+o);++i<f;)a[i]=t[i];for(;++u<e;)a[r[u]]=n[u];for(;o--;)a[i++]=n[u++];return a}function qt(n,t,r){for(var e=-1,u=r.length,o=-1,i=bu(n.length-u,0),f=-1,a=t.length,c=Be(i+a);++o<i;)c[o]=n[o];for(i=o;++f<a;)c[i+f]=t[f];for(;++e<u;)c[i+r[e]]=n[o++];return c}function Pt(n,t){return function(r,e,u){var o=t?t():{};if(e=wr(e,u,3),Oo(r)){u=-1;for(var i=r.length;++u<i;){var f=r[u];n(o,f,e(f,u,r),r)}}else Su(r,function(t,r,u){
-n(o,t,e(t,r,u),u)});return o}}function Kt(n){return le(function(t,r){var e=-1,u=null==t?0:r.length,o=2<u?r[u-2]:w,i=2<u?r[2]:w,f=1<u?r[u-1]:w;for(typeof o=="function"?(o=Bt(o,f,5),u-=2):(o=typeof f=="function"?f:w,u-=o?1:0),i&&Ur(r[0],r[1],i)&&(o=3>u?w:o,u=1);++e<u;)(i=r[e])&&n(t,i,o);return t})}function Vt(n,t){return function(r,e){var u=r?Bu(r):0;if(!Sr(u))return n(r,e);for(var o=t?u:-1,i=Br(r);(t?o--:++o<u)&&false!==e(i[o],o,i););return r}}function Zt(n){return function(t,r,e){var u=Br(t);e=e(t);for(var o=e.length,i=n?o:-1;n?i--:++i<o;){
-var f=e[i];if(false===r(u[f],f,u))break}return t}}function Yt(n,t){function r(){return(this&&this!==Zn&&this instanceof r?e:n).apply(t,arguments)}var e=Jt(n);return r}function Gt(n){return function(t){var r=-1;t=$e(Ce(t));for(var e=t.length,u="";++r<e;)u=n(u,t[r],r);return u}}function Jt(n){return function(){var t=arguments;switch(t.length){case 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:
-return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=$u(n.prototype),t=n.apply(r,t);return ge(t)?t:r}}function Xt(n){function t(r,e,u){return u&&Ur(r,e,u)&&(e=w),r=gr(r,n,w,w,w,w,w,e),r.placeholder=t.placeholder,r}return t}function Ht(n,t){return le(function(r){var e=r[0];return null==e?e:(r.push(t),n.apply(w,r))})}function Qt(n,t){return function(r,e,u){if(u&&Ur(r,e,u)&&(e=w),e=wr(e,u,3),1==e.length){
-u=r=Oo(r)?r:zr(r);for(var o=e,i=-1,f=u.length,a=t,c=a;++i<f;){var l=u[i],s=+o(l);n(s,a)&&(a=s,c=l)}if(u=c,!r.length||u!==t)return u}return ct(r,e,n,t)}}function nr(n,r){return function(e,u,o){return u=wr(u,o,3),Oo(e)?(u=t(e,u,r),-1<u?e[u]:w):st(e,u,n)}}function tr(n){return function(r,e,u){return r&&r.length?(e=wr(e,u,3),t(r,e,n)):-1}}function rr(n){return function(t,r,e){return r=wr(r,e,3),st(t,r,n,true)}}function er(n){return function(){for(var t,r=arguments.length,e=n?r:-1,u=0,o=Be(r);n?e--:++e<r;){
-var i=o[u++]=arguments[e];if(typeof i!="function")throw new Ge(L);!t&&Ln.prototype.thru&&"wrapper"==br(i)&&(t=new Ln([],true))}for(e=t?-1:r;++e<r;){var i=o[e],u=br(i),f="wrapper"==u?zu(i):w;t=f&&$r(f[0])&&f[1]==(E|k|R|C)&&!f[4].length&&1==f[9]?t[br(f[0])].apply(t,f[3]):1==i.length&&$r(i)?t[u]():t.thru(i)}return function(){var n=arguments,e=n[0];if(t&&1==n.length&&Oo(e)&&e.length>=F)return t.plant(e).value();for(var u=0,n=r?o[u].apply(this,n):e;++u<r;)n=o[u].call(this,n);return n}}}function ur(n,t){
-return function(r,e,u){return typeof e=="function"&&u===w&&Oo(r)?n(r,e):t(r,Bt(e,u,3))}}function or(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Bt(r,e,3)),n(t,r,Re)}}function ir(n){return function(t,r,e){return(typeof r!="function"||e!==w)&&(r=Bt(r,e,3)),n(t,r)}}function fr(n){return function(t,r,e){var u={};return r=wr(r,e,3),_t(t,function(t,e,o){o=r(t,e,o),e=n?o:e,t=n?t:o,u[e]=t}),u}}function ar(n){return function(t,r,e){return t=u(t),(n?t:"")+pr(t,r,e)+(n?"":t)}}function cr(n){
-var t=le(function(r,e){var u=v(e,t.placeholder);return gr(r,n,w,e,u)});return t}function lr(n,t){return function(r,e,u,o){var i=3>arguments.length;return typeof e=="function"&&o===w&&Oo(r)?n(r,e,u,i):Ot(r,wr(e,o,4),u,i,t)}}function sr(n,t,r,e,u,o,i,f,a,c){function l(){for(var m=arguments.length,b=m,j=Be(m);b--;)j[b]=arguments[b];if(e&&(j=Mt(j,e,u)),o&&(j=qt(j,o,i)),_||y){var b=l.placeholder,k=v(j,b),m=m-k.length;if(m<c){var I=f?qn(f):w,m=bu(c-m,0),E=_?k:w,k=_?w:k,C=_?j:w,j=_?w:j;return t|=_?R:O,t&=~(_?O:R),
-g||(t&=~(x|A)),j=[n,t,r,C,E,j,k,I,a,m],I=sr.apply(w,j),$r(n)&&Du(I,j),I.placeholder=b,I}}if(b=p?r:this,I=h?b[n]:n,f)for(m=j.length,E=xu(f.length,m),k=qn(j);E--;)C=f[E],j[E]=Cr(C,m)?k[C]:w;return s&&a<j.length&&(j.length=a),this&&this!==Zn&&this instanceof l&&(I=d||Jt(n)),I.apply(b,j)}var s=t&E,p=t&x,h=t&A,_=t&k,g=t&j,y=t&I,d=h?w:Jt(n);return l}function pr(n,t,r){return n=n.length,t=+t,n<t&&mu(t)?(t-=n,r=null==r?" ":r+"",Ue(r,vu(t/r.length)).slice(0,t)):""}function hr(n,t,r,e){function u(){for(var t=-1,f=arguments.length,a=-1,c=e.length,l=Be(c+f);++a<c;)l[a]=e[a];
-for(;f--;)l[a++]=arguments[++t];return(this&&this!==Zn&&this instanceof u?i:n).apply(o?r:this,l)}var o=t&x,i=Jt(n);return u}function _r(n){var t=Pe[n];return function(n,r){return(r=r===w?0:+r||0)?(r=au(10,r),t(n*r)/r):t(n)}}function vr(n){return function(t,r,e,u){var o=wr(e);return null==e&&o===ut?Lt(t,r,n):zt(t,r,o(e,u,1),n)}}function gr(n,t,r,e,u,o,i,f){var a=t&A;if(!a&&typeof n!="function")throw new Ge(L);var c=e?e.length:0;if(c||(t&=~(R|O),e=u=w),c-=u?u.length:0,t&O){var l=e,s=u;e=u=w}var p=a?w:zu(n);
-return r=[n,t,r,e,u,l,s,o,i,f],p&&(e=r[1],t=p[1],f=e|t,u=t==E&&e==k||t==E&&e==C&&r[7].length<=p[8]||t==(E|C)&&e==k,(f<E||u)&&(t&x&&(r[2]=p[2],f|=e&x?0:j),(e=p[3])&&(u=r[3],r[3]=u?Mt(u,e,p[4]):qn(e),r[4]=u?v(r[3],z):qn(p[4])),(e=p[5])&&(u=r[5],r[5]=u?qt(u,e,p[6]):qn(e),r[6]=u?v(r[5],z):qn(p[6])),(e=p[7])&&(r[7]=qn(e)),t&E&&(r[8]=null==r[8]?p[8]:xu(r[8],p[8])),null==r[9]&&(r[9]=p[9]),r[0]=p[0],r[1]=f),t=r[1],f=r[9]),r[9]=null==f?a?0:n.length:bu(f-c,0)||0,(p?Lu:Du)(t==x?Yt(r[0],r[2]):t!=R&&t!=(x|R)||r[4].length?sr.apply(w,r):hr.apply(w,r),r);
-}function yr(n,t,r,e,u,o,i){var f=-1,a=n.length,c=t.length;if(a!=c&&(!u||c<=a))return false;for(;++f<a;){var l=n[f],c=t[f],s=e?e(u?c:l,u?l:c,f):w;if(s!==w){if(s)continue;return false}if(u){if(!Hn(t,function(n){return l===n||r(l,n,e,u,o,i)}))return false}else if(l!==c&&!r(l,c,e,u,o,i))return false}return true}function dr(n,t,r){switch(r){case M:case q:return+n==+t;case P:return n.name==t.name&&n.message==t.message;case V:return n!=+n?t!=+t:n==+t;case Y:case G:return n==t+""}return false}function mr(n,t,r,e,u,o,i){var f=zo(n),a=f.length,c=zo(t).length;
-if(a!=c&&!u)return false;for(c=a;c--;){var l=f[c];if(!(u?l in t:nu.call(t,l)))return false}for(var s=u;++c<a;){var l=f[c],p=n[l],h=t[l],_=e?e(u?h:p,u?p:h,l):w;if(_===w?!r(p,h,e,u,o,i):!_)return false;s||(s="constructor"==l)}return s||(r=n.constructor,e=t.constructor,!(r!=e&&"constructor"in n&&"constructor"in t)||typeof r=="function"&&r instanceof r&&typeof e=="function"&&e instanceof e)?true:false}function wr(n,t,r){var e=Nn.callback||Se,e=e===Se?ut:e;return r?e(n,t,r):e}function br(n){for(var t=n.name+"",r=Wu[t],e=r?r.length:0;e--;){
-var u=r[e],o=u.func;if(null==o||o==n)return u.name}return t}function xr(n,t,e){var u=Nn.indexOf||Vr,u=u===Vr?r:u;return n?u(n,t,e):u}function Ar(n){n=Oe(n);for(var t=n.length;t--;){var r=n[t][1];n[t][2]=r===r&&!ge(r)}return n}function jr(n,t){var r=null==n?w:n[t];return ye(r)?r:w}function kr(n){var t=n.length,r=new n.constructor(t);return t&&"string"==typeof n[0]&&nu.call(n,"index")&&(r.index=n.index,r.input=n.input),r}function Ir(n){return n=n.constructor,typeof n=="function"&&n instanceof n||(n=Ve),
-new n}function Rr(n,t,r){var e=n.constructor;switch(t){case J:return Dt(n);case M:case q:return new e(+n);case X:case H:case Q:case nn:case tn:case rn:case en:case un:case on:return t=n.buffer,new e(r?Dt(t):t,n.byteOffset,n.length);case V:case G:return new e(n);case Y:var u=new e(n.source,kn.exec(n));u.lastIndex=n.lastIndex}return u}function Or(n,t,r){return null==n||Wr(t,n)||(t=Dr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),t=Zr(t)),t=null==n?n:n[t],null==t?w:t.apply(n,r)}function Er(n){return null!=n&&Sr(Bu(n));
-}function Cr(n,t){return n=typeof n=="number"||On.test(n)?+n:-1,t=null==t?Cu:t,-1<n&&0==n%1&&n<t}function Ur(n,t,r){if(!ge(r))return false;var e=typeof t;return("number"==e?Er(r)&&Cr(t,r.length):"string"==e&&t in r)?(t=r[t],n===n?n===t:t!==t):false}function Wr(n,t){var r=typeof n;return"string"==r&&dn.test(n)||"number"==r?true:Oo(n)?false:!yn.test(n)||null!=t&&n in Br(t)}function $r(n){var t=br(n),r=Nn[t];return typeof r=="function"&&t in zn.prototype?n===r?true:(t=zu(r),!!t&&n===t[0]):false}function Sr(n){return typeof n=="number"&&-1<n&&0==n%1&&n<=Cu;
-}function Fr(n,t){return n===w?t:Eo(n,t,Fr)}function Nr(n,t){n=Br(n);for(var r=-1,e=t.length,u={};++r<e;){var o=t[r];o in n&&(u[o]=n[o])}return u}function Tr(n,t){var r={};return ht(n,function(n,e,u){t(n,e,u)&&(r[e]=n)}),r}function Lr(n){for(var t=Re(n),r=t.length,e=r&&n.length,u=!!e&&Sr(e)&&(Oo(n)||pe(n)),o=-1,i=[];++o<r;){var f=t[o];(u&&Cr(f,e)||nu.call(n,f))&&i.push(f)}return i}function zr(n){return null==n?[]:Er(n)?ge(n)?n:Ve(n):Ee(n)}function Br(n){return ge(n)?n:Ve(n)}function Dr(n){if(Oo(n))return n;
-var t=[];return u(n).replace(mn,function(n,r,e,u){t.push(e?u.replace(An,"$1"):r||n)}),t}function Mr(n){return n instanceof zn?n.clone():new Ln(n.__wrapped__,n.__chain__,qn(n.__actions__))}function qr(n,t,r){return n&&n.length?((r?Ur(n,t,r):null==t)&&(t=1),Et(n,0>t?0:t)):[]}function Pr(n,t,r){var e=n?n.length:0;return e?((r?Ur(n,t,r):null==t)&&(t=1),t=e-(+t||0),Et(n,0,0>t?0:t)):[]}function Kr(n){return n?n[0]:w}function Vr(n,t,e){var u=n?n.length:0;if(!u)return-1;if(typeof e=="number")e=0>e?bu(u+e,0):e;else if(e)return e=Lt(n,t),
-e<u&&(t===t?t===n[e]:n[e]!==n[e])?e:-1;return r(n,t,e||0)}function Zr(n){var t=n?n.length:0;return t?n[t-1]:w}function Yr(n){return qr(n,1)}function Gr(n,t,e,u){if(!n||!n.length)return[];null!=t&&typeof t!="boolean"&&(u=e,e=Ur(n,t,u)?w:t,t=false);var o=wr();if((null!=e||o!==ut)&&(e=o(e,u,3)),t&&xr()===r){t=e;var i;e=-1,u=n.length;for(var o=-1,f=[];++e<u;){var a=n[e],c=t?t(a,e,n):a;e&&i===c||(i=c,f[++o]=a)}n=f}else n=St(n,e);return n}function Jr(n){if(!n||!n.length)return[];var t=-1,r=0;n=Vn(n,function(n){
-return Er(n)?(r=bu(n.length,r),true):void 0});for(var e=Be(r);++t<r;)e[t]=Gn(n,jt(t));return e}function Xr(n,t,r){return n&&n.length?(n=Jr(n),null==t?n:(t=Bt(t,r,4),Gn(n,function(n){return Xn(n,t,w,true)}))):[]}function Hr(n,t){var r=-1,e=n?n.length:0,u={};for(!e||t||Oo(n[0])||(t=[]);++r<e;){var o=n[r];t?u[o]=t[r]:o&&(u[o[0]]=o[1])}return u}function Qr(n){return n=Nn(n),n.__chain__=true,n}function ne(n,t,r){return t.call(r,n)}function te(n,t,r){var e=Oo(n)?Kn:at;return r&&Ur(n,t,r)&&(t=w),(typeof t!="function"||r!==w)&&(t=wr(t,r,3)),
-e(n,t)}function re(n,t,r){var e=Oo(n)?Vn:lt;return t=wr(t,r,3),e(n,t)}function ee(n,t,r,e){var u=n?Bu(n):0;return Sr(u)||(n=Ee(n),u=n.length),r=typeof r!="number"||e&&Ur(t,r,e)?0:0>r?bu(u+r,0):r||0,typeof n=="string"||!Oo(n)&&be(n)?r<=u&&-1<n.indexOf(t,r):!!u&&-1<xr(n,t,r)}function ue(n,t,r){var e=Oo(n)?Gn:wt;return t=wr(t,r,3),e(n,t)}function oe(n,t,r){if(r?Ur(n,t,r):null==t){n=zr(n);var e=n.length;return 0<e?n[Rt(0,e-1)]:w}r=-1,n=je(n);var e=n.length,u=e-1;for(t=xu(0>t?0:+t||0,e);++r<t;){var e=Rt(r,u),o=n[e];
-n[e]=n[r],n[r]=o}return n.length=t,n}function ie(n,t,r){var e=Oo(n)?Hn:Ct;return r&&Ur(n,t,r)&&(t=w),(typeof t!="function"||r!==w)&&(t=wr(t,r,3)),e(n,t)}function fe(n,t){var r;if(typeof t!="function"){if(typeof n!="function")throw new Ge(L);var e=n;n=t,t=e}return function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=w),r}}function ae(n,t,r){function e(t,r){r&&iu(r),a=p=h=w,t&&(_=ho(),c=n.apply(s,f),p||a||(f=s=w))}function u(){var n=t-(ho()-l);0>=n||n>t?e(h,a):p=su(u,n)}function o(){e(g,p);
-}function i(){if(f=arguments,l=ho(),s=this,h=g&&(p||!y),false===v)var r=y&&!p;else{a||y||(_=l);var e=v-(l-_),i=0>=e||e>v;i?(a&&(a=iu(a)),_=l,c=n.apply(s,f)):a||(a=su(o,e))}return i&&p?p=iu(p):p||t===v||(p=su(u,t)),r&&(i=true,c=n.apply(s,f)),!i||p||a||(f=s=w),c}var f,a,c,l,s,p,h,_=0,v=false,g=true;if(typeof n!="function")throw new Ge(L);if(t=0>t?0:+t||0,true===r)var y=true,g=false;else ge(r)&&(y=!!r.leading,v="maxWait"in r&&bu(+r.maxWait||0,t),g="trailing"in r?!!r.trailing:g);return i.cancel=function(){p&&iu(p),a&&iu(a),
-_=0,a=p=h=w},i}function ce(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;return o.has(u)?o.get(u):(e=n.apply(this,e),r.cache=o.set(u,e),e)}if(typeof n!="function"||t&&typeof t!="function")throw new Ge(L);return r.cache=new ce.Cache,r}function le(n,t){if(typeof n!="function")throw new Ge(L);return t=bu(t===w?n.length-1:+t||0,0),function(){for(var r=arguments,e=-1,u=bu(r.length-t,0),o=Be(u);++e<u;)o[e]=r[t+e];switch(t){case 0:return n.call(this,o);case 1:return n.call(this,r[0],o);
-case 2:return n.call(this,r[0],r[1],o)}for(u=Be(t+1),e=-1;++e<t;)u[e]=r[e];return u[t]=o,n.apply(this,u)}}function se(n,t){return n>t}function pe(n){return h(n)&&Er(n)&&nu.call(n,"callee")&&!cu.call(n,"callee")}function he(n,t,r,e){return e=(r=typeof r=="function"?Bt(r,e,3):w)?r(n,t):w,e===w?dt(n,t,r):!!e}function _e(n){return h(n)&&typeof n.message=="string"&&ru.call(n)==P}function ve(n){return ge(n)&&ru.call(n)==K}function ge(n){var t=typeof n;return!!n&&("object"==t||"function"==t)}function ye(n){
-return null==n?false:ve(n)?uu.test(Qe.call(n)):h(n)&&Rn.test(n)}function de(n){return typeof n=="number"||h(n)&&ru.call(n)==V}function me(n){var t;if(!h(n)||ru.call(n)!=Z||pe(n)||!(nu.call(n,"constructor")||(t=n.constructor,typeof t!="function"||t instanceof t)))return false;var r;return ht(n,function(n,t){r=t}),r===w||nu.call(n,r)}function we(n){return ge(n)&&ru.call(n)==Y}function be(n){return typeof n=="string"||h(n)&&ru.call(n)==G}function xe(n){return h(n)&&Sr(n.length)&&!!Sn[ru.call(n)]}function Ae(n,t){
-return n<t}function je(n){var t=n?Bu(n):0;return Sr(t)?t?qn(n):[]:Ee(n)}function ke(n){return et(n,Re(n))}function Ie(n){return gt(n,Re(n))}function Re(n){if(null==n)return[];ge(n)||(n=Ve(n));for(var t=n.length,t=t&&Sr(t)&&(Oo(n)||pe(n))&&t||0,r=n.constructor,e=-1,r=typeof r=="function"&&r.prototype===n,u=Be(t),o=0<t;++e<t;)u[e]=e+"";for(var i in n)o&&Cr(i,t)||"constructor"==i&&(r||!nu.call(n,i))||u.push(i);return u}function Oe(n){n=Br(n);for(var t=-1,r=zo(n),e=r.length,u=Be(e);++t<e;){var o=r[t];
-u[t]=[o,n[o]]}return u}function Ee(n){return Ft(n,zo(n))}function Ce(n){return(n=u(n))&&n.replace(En,a).replace(xn,"")}function Ue(n,t){var r="";if(n=u(n),t=+t,1>t||!n||!mu(t))return r;do t%2&&(r+=n),t=yu(t/2),n+=n;while(t);return r}function We(n,t,r){var e=n;return(n=u(n))?(r?Ur(e,t,r):null==t)?n.slice(g(n),y(n)+1):(t+="",n.slice(o(n,t),i(n,t)+1)):n}function $e(n,t,r){return r&&Ur(n,t,r)&&(t=w),n=u(n),n.match(t||Wn)||[]}function Se(n,t,r){return r&&Ur(n,t,r)&&(t=w),h(n)?Ne(n):ut(n,t)}function Fe(n){
-return n}function Ne(n){return bt(ot(n,true))}function Te(n,t,r){if(null==r){var e=ge(t),u=e?zo(t):w;((u=u&&u.length?gt(t,u):w)?u.length:e)||(u=false,r=t,t=n,n=this)}u||(u=gt(t,zo(t)));var o=true,e=-1,i=ve(n),f=u.length;false===r?o=false:ge(r)&&"chain"in r&&(o=r.chain);for(;++e<f;){r=u[e];var a=t[r];n[r]=a,i&&(n.prototype[r]=function(t){return function(){var r=this.__chain__;if(o||r){var e=n(this.__wrapped__);return(e.__actions__=qn(this.__actions__)).push({func:t,args:arguments,thisArg:n}),e.__chain__=r,e}return t.apply(n,Jn([this.value()],arguments));
-}}(a))}return n}function Le(){}function ze(n){return Wr(n)?jt(n):kt(n)}_=_?Yn.defaults(Zn.Object(),_,Yn.pick(Zn,$n)):Zn;var Be=_.Array,De=_.Date,Me=_.Error,qe=_.Function,Pe=_.Math,Ke=_.Number,Ve=_.Object,Ze=_.RegExp,Ye=_.String,Ge=_.TypeError,Je=Be.prototype,Xe=Ve.prototype,He=Ye.prototype,Qe=qe.prototype.toString,nu=Xe.hasOwnProperty,tu=0,ru=Xe.toString,eu=Zn._,uu=Ze("^"+Qe.call(nu).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ou=_.ArrayBuffer,iu=_.clearTimeout,fu=_.parseFloat,au=Pe.pow,cu=Xe.propertyIsEnumerable,lu=jr(_,"Set"),su=_.setTimeout,pu=Je.splice,hu=_.Uint8Array,_u=jr(_,"WeakMap"),vu=Pe.ceil,gu=jr(Ve,"create"),yu=Pe.floor,du=jr(Be,"isArray"),mu=_.isFinite,wu=jr(Ve,"keys"),bu=Pe.max,xu=Pe.min,Au=jr(De,"now"),ju=_.parseInt,ku=Pe.random,Iu=Ke.NEGATIVE_INFINITY,Ru=Ke.POSITIVE_INFINITY,Ou=4294967294,Eu=2147483647,Cu=9007199254740991,Uu=_u&&new _u,Wu={};
-Nn.support={},Nn.templateSettings={escape:_n,evaluate:vn,interpolate:gn,variable:"",imports:{_:Nn}};var $u=function(){function n(){}return function(t){if(ge(t)){n.prototype=t;var r=new n;n.prototype=w}return r||{}}}(),Su=Vt(_t),Fu=Vt(vt,true),Nu=Zt(),Tu=Zt(true),Lu=Uu?function(n,t){return Uu.set(n,t),n}:Fe,zu=Uu?function(n){return Uu.get(n)}:Le,Bu=jt("length"),Du=function(){var n=0,t=0;return function(r,e){var u=ho(),o=S-(u-t);if(t=u,0<o){if(++n>=$)return r}else n=0;return Lu(r,e)}}(),Mu=le(function(n,t){
-return h(n)&&Er(n)?ft(n,pt(t,false,true)):[]}),qu=tr(),Pu=tr(true),Ku=le(function(n){for(var t=n.length,e=t,u=Be(l),o=xr(),i=o===r,f=[];e--;){var a=n[e]=Er(a=n[e])?a:[];u[e]=i&&120<=a.length&&gu&&lu?new Dn(e&&a):null}var i=n[0],c=-1,l=i?i.length:0,s=u[0];n:for(;++c<l;)if(a=i[c],0>(s?Mn(s,a):o(f,a,0))){for(e=t;--e;){var p=u[e];if(0>(p?Mn(p,a):o(n[e],a,0)))continue n}s&&s.push(a),f.push(a)}return f}),Vu=le(function(t,r){r=pt(r);var e=rt(t,r);return It(t,r.sort(n)),e}),Zu=vr(),Yu=vr(true),Gu=le(function(n){return St(pt(n,false,true));
-}),Ju=le(function(n,t){return Er(n)?ft(n,t):[]}),Xu=le(Jr),Hu=le(function(n){var t=n.length,r=2<t?n[t-2]:w,e=1<t?n[t-1]:w;return 2<t&&typeof r=="function"?t-=2:(r=1<t&&typeof e=="function"?(--t,e):w,e=w),n.length=t,Xr(n,r,e)}),Qu=le(function(n){return n=pt(n),this.thru(function(t){t=Oo(t)?t:[Br(t)];for(var r=n,e=-1,u=t.length,o=-1,i=r.length,f=Be(u+i);++e<u;)f[e]=t[e];for(;++o<i;)f[e++]=r[o];return f})}),no=le(function(n,t){return rt(n,pt(t))}),to=Pt(function(n,t,r){nu.call(n,r)?++n[r]:n[r]=1}),ro=nr(Su),eo=nr(Fu,true),uo=ur(Pn,Su),oo=ur(function(n,t){
-for(var r=n.length;r--&&false!==t(n[r],r,n););return n},Fu),io=Pt(function(n,t,r){nu.call(n,r)?n[r].push(t):n[r]=[t]}),fo=Pt(function(n,t,r){n[r]=t}),ao=le(function(n,t,r){var e=-1,u=typeof t=="function",o=Wr(t),i=Er(n)?Be(n.length):[];return Su(n,function(n){var f=u?t:o&&null!=n?n[t]:w;i[++e]=f?f.apply(n,r):Or(n,t,r)}),i}),co=Pt(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),lo=lr(Xn,Su),so=lr(function(n,t,r,e){var u=n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r},Fu),po=le(function(n,t){
-if(null==n)return[];var r=t[2];return r&&Ur(t[0],t[1],r)&&(t.length=1),Wt(n,pt(t),[])}),ho=Au||function(){return(new De).getTime()},_o=le(function(n,t,r){var e=x;if(r.length)var u=v(r,_o.placeholder),e=e|R;return gr(n,e,t,r,u)}),vo=le(function(n,t){t=t.length?pt(t):Ie(n);for(var r=-1,e=t.length;++r<e;){var u=t[r];n[u]=gr(n[u],x,n)}return n}),go=le(function(n,t,r){var e=x|A;if(r.length)var u=v(r,go.placeholder),e=e|R;return gr(t,e,n,r,u)}),yo=Xt(k),mo=Xt(I),wo=le(function(n,t){return it(n,1,t)}),bo=le(function(n,t,r){
-return it(n,t,r)}),xo=er(),Ao=er(true),jo=le(function(n,t){if(t=pt(t),typeof n!="function"||!Kn(t,e))throw new Ge(L);var r=t.length;return le(function(e){for(var u=xu(e.length,r);u--;)e[u]=t[u](e[u]);return n.apply(this,e)})}),ko=cr(R),Io=cr(O),Ro=le(function(n,t){return gr(n,C,w,w,w,pt(t))}),Oo=du||function(n){return h(n)&&Sr(n.length)&&ru.call(n)==D},Eo=Kt(At),Co=Kt(function(n,t,r){return r?nt(n,t,r):tt(n,t)}),Uo=Ht(Co,function(n,t){return n===w?t:n}),Wo=Ht(Eo,Fr),$o=rr(_t),So=rr(vt),Fo=or(Nu),No=or(Tu),To=ir(_t),Lo=ir(vt),zo=wu?function(n){
-var t=null==n?w:n.constructor;return typeof t=="function"&&t.prototype===n||typeof n!="function"&&Er(n)?Lr(n):ge(n)?wu(n):[]}:Lr,Bo=fr(true),Do=fr(),Mo=le(function(n,t){if(null==n)return{};if("function"!=typeof t[0])return t=Gn(pt(t),Ye),Nr(n,ft(Re(n),t));var r=Bt(t[0],t[1],3);return Tr(n,function(n,t,e){return!r(n,t,e)})}),qo=le(function(n,t){return null==n?{}:"function"==typeof t[0]?Tr(n,Bt(t[0],t[1],3)):Nr(n,pt(t))}),Po=Gt(function(n,t,r){return t=t.toLowerCase(),n+(r?t.charAt(0).toUpperCase()+t.slice(1):t);
-}),Ko=Gt(function(n,t,r){return n+(r?"-":"")+t.toLowerCase()}),Vo=ar(),Zo=ar(true),Yo=Gt(function(n,t,r){return n+(r?"_":"")+t.toLowerCase()}),Go=Gt(function(n,t,r){return n+(r?" ":"")+(t.charAt(0).toUpperCase()+t.slice(1))}),Jo=le(function(n,t){try{return n.apply(w,t)}catch(r){return _e(r)?r:new Me(r)}}),Xo=le(function(n,t){return function(r){return Or(r,n,t)}}),Ho=le(function(n,t){return function(r){return Or(n,r,t)}}),Qo=_r("ceil"),ni=_r("floor"),ti=Qt(se,Iu),ri=Qt(Ae,Ru),ei=_r("round");return Nn.prototype=Tn.prototype,
-Ln.prototype=$u(Tn.prototype),Ln.prototype.constructor=Ln,zn.prototype=$u(Tn.prototype),zn.prototype.constructor=zn,Bn.prototype["delete"]=function(n){return this.has(n)&&delete this.__data__[n]},Bn.prototype.get=function(n){return"__proto__"==n?w:this.__data__[n]},Bn.prototype.has=function(n){return"__proto__"!=n&&nu.call(this.__data__,n)},Bn.prototype.set=function(n,t){return"__proto__"!=n&&(this.__data__[n]=t),this},Dn.prototype.push=function(n){var t=this.data;typeof n=="string"||ge(n)?t.set.add(n):t.hash[n]=true;
-},ce.Cache=Bn,Nn.after=function(n,t){if(typeof t!="function"){if(typeof n!="function")throw new Ge(L);var r=n;n=t,t=r}return n=mu(n=+n)?n:0,function(){return 1>--n?t.apply(this,arguments):void 0}},Nn.ary=function(n,t,r){return r&&Ur(n,t,r)&&(t=w),t=n&&null==t?n.length:bu(+t||0,0),gr(n,E,w,w,w,w,t)},Nn.assign=Co,Nn.at=no,Nn.before=fe,Nn.bind=_o,Nn.bindAll=vo,Nn.bindKey=go,Nn.callback=Se,Nn.chain=Qr,Nn.chunk=function(n,t,r){t=(r?Ur(n,t,r):null==t)?1:bu(yu(t)||1,1),r=0;for(var e=n?n.length:0,u=-1,o=Be(vu(e/t));r<e;)o[++u]=Et(n,r,r+=t);
-return o},Nn.compact=function(n){for(var t=-1,r=n?n.length:0,e=-1,u=[];++t<r;){var o=n[t];o&&(u[++e]=o)}return u},Nn.constant=function(n){return function(){return n}},Nn.countBy=to,Nn.create=function(n,t,r){var e=$u(n);return r&&Ur(n,t,r)&&(t=w),t?tt(e,t):e},Nn.curry=yo,Nn.curryRight=mo,Nn.debounce=ae,Nn.defaults=Uo,Nn.defaultsDeep=Wo,Nn.defer=wo,Nn.delay=bo,Nn.difference=Mu,Nn.drop=qr,Nn.dropRight=Pr,Nn.dropRightWhile=function(n,t,r){return n&&n.length?Nt(n,wr(t,r,3),true,true):[]},Nn.dropWhile=function(n,t,r){
-return n&&n.length?Nt(n,wr(t,r,3),true):[]},Nn.fill=function(n,t,r,e){var u=n?n.length:0;if(!u)return[];for(r&&typeof r!="number"&&Ur(n,t,r)&&(r=0,e=u),u=n.length,r=null==r?0:+r||0,0>r&&(r=-r>u?0:u+r),e=e===w||e>u?u:+e||0,0>e&&(e+=u),u=r>e?0:e>>>0,r>>>=0;r<u;)n[r++]=t;return n},Nn.filter=re,Nn.flatten=function(n,t,r){var e=n?n.length:0;return r&&Ur(n,t,r)&&(t=false),e?pt(n,t):[]},Nn.flattenDeep=function(n){return n&&n.length?pt(n,true):[]},Nn.flow=xo,Nn.flowRight=Ao,Nn.forEach=uo,Nn.forEachRight=oo,Nn.forIn=Fo,
-Nn.forInRight=No,Nn.forOwn=To,Nn.forOwnRight=Lo,Nn.functions=Ie,Nn.groupBy=io,Nn.indexBy=fo,Nn.initial=function(n){return Pr(n,1)},Nn.intersection=Ku,Nn.invert=function(n,t,r){r&&Ur(n,t,r)&&(t=w),r=-1;for(var e=zo(n),u=e.length,o={};++r<u;){var i=e[r],f=n[i];t?nu.call(o,f)?o[f].push(i):o[f]=[i]:o[f]=i}return o},Nn.invoke=ao,Nn.keys=zo,Nn.keysIn=Re,Nn.map=ue,Nn.mapKeys=Bo,Nn.mapValues=Do,Nn.matches=Ne,Nn.matchesProperty=function(n,t){return xt(n,ot(t,true))},Nn.memoize=ce,Nn.merge=Eo,Nn.method=Xo,Nn.methodOf=Ho,
-Nn.mixin=Te,Nn.modArgs=jo,Nn.negate=function(n){if(typeof n!="function")throw new Ge(L);return function(){return!n.apply(this,arguments)}},Nn.omit=Mo,Nn.once=function(n){return fe(2,n)},Nn.pairs=Oe,Nn.partial=ko,Nn.partialRight=Io,Nn.partition=co,Nn.pick=qo,Nn.pluck=function(n,t){return ue(n,ze(t))},Nn.property=ze,Nn.propertyOf=function(n){return function(t){return yt(n,Dr(t),t+"")}},Nn.pull=function(){var n=arguments,t=n[0];if(!t||!t.length)return t;for(var r=0,e=xr(),u=n.length;++r<u;)for(var o=0,i=n[r];-1<(o=e(t,i,o));)pu.call(t,o,1);
-return t},Nn.pullAt=Vu,Nn.range=function(n,t,r){r&&Ur(n,t,r)&&(t=r=w),n=+n||0,r=null==r?1:+r||0,null==t?(t=n,n=0):t=+t||0;var e=-1;t=bu(vu((t-n)/(r||1)),0);for(var u=Be(t);++e<t;)u[e]=n,n+=r;return u},Nn.rearg=Ro,Nn.reject=function(n,t,r){var e=Oo(n)?Vn:lt;return t=wr(t,r,3),e(n,function(n,r,e){return!t(n,r,e)})},Nn.remove=function(n,t,r){var e=[];if(!n||!n.length)return e;var u=-1,o=[],i=n.length;for(t=wr(t,r,3);++u<i;)r=n[u],t(r,u,n)&&(e.push(r),o.push(u));return It(n,o),e},Nn.rest=Yr,Nn.restParam=le,
-Nn.set=function(n,t,r){if(null==n)return n;var e=t+"";t=null!=n[e]||Wr(t,n)?[e]:Dr(t);for(var e=-1,u=t.length,o=u-1,i=n;null!=i&&++e<u;){var f=t[e];ge(i)&&(e==o?i[f]=r:null==i[f]&&(i[f]=Cr(t[e+1])?[]:{})),i=i[f]}return n},Nn.shuffle=function(n){return oe(n,Ru)},Nn.slice=function(n,t,r){var e=n?n.length:0;return e?(r&&typeof r!="number"&&Ur(n,t,r)&&(t=0,r=e),Et(n,t,r)):[]},Nn.sortBy=function(n,t,r){if(null==n)return[];r&&Ur(n,t,r)&&(t=w);var e=-1;return t=wr(t,r,3),n=wt(n,function(n,r,u){return{a:t(n,r,u),
-b:++e,c:n}}),Ut(n,f)},Nn.sortByAll=po,Nn.sortByOrder=function(n,t,r,e){return null==n?[]:(e&&Ur(t,r,e)&&(r=w),Oo(t)||(t=null==t?[]:[t]),Oo(r)||(r=null==r?[]:[r]),Wt(n,t,r))},Nn.spread=function(n){if(typeof n!="function")throw new Ge(L);return function(t){return n.apply(this,t)}},Nn.take=function(n,t,r){return n&&n.length?((r?Ur(n,t,r):null==t)&&(t=1),Et(n,0,0>t?0:t)):[]},Nn.takeRight=function(n,t,r){var e=n?n.length:0;return e?((r?Ur(n,t,r):null==t)&&(t=1),t=e-(+t||0),Et(n,0>t?0:t)):[]},Nn.takeRightWhile=function(n,t,r){
-return n&&n.length?Nt(n,wr(t,r,3),false,true):[]},Nn.takeWhile=function(n,t,r){return n&&n.length?Nt(n,wr(t,r,3)):[]},Nn.tap=function(n,t,r){return t.call(r,n),n},Nn.throttle=function(n,t,r){var e=true,u=true;if(typeof n!="function")throw new Ge(L);return false===r?e=false:ge(r)&&(e="leading"in r?!!r.leading:e,u="trailing"in r?!!r.trailing:u),ae(n,t,{leading:e,maxWait:+t,trailing:u})},Nn.thru=ne,Nn.times=function(n,t,r){if(n=yu(n),1>n||!mu(n))return[];var e=-1,u=Be(xu(n,4294967295));for(t=Bt(t,r,1);++e<n;)4294967295>e?u[e]=t(e):t(e);
-return u},Nn.toArray=je,Nn.toPlainObject=ke,Nn.transform=function(n,t,r,e){var u=Oo(n)||xe(n);return t=wr(t,e,4),null==r&&(u||ge(n)?(e=n.constructor,r=u?Oo(n)?new e:[]:$u(ve(e)?e.prototype:w)):r={}),(u?Pn:_t)(n,function(n,e,u){return t(r,n,e,u)}),r},Nn.union=Gu,Nn.uniq=Gr,Nn.unzip=Jr,Nn.unzipWith=Xr,Nn.values=Ee,Nn.valuesIn=function(n){return Ft(n,Re(n))},Nn.where=function(n,t){return re(n,bt(t))},Nn.without=Ju,Nn.wrap=function(n,t){return t=null==t?Fe:t,gr(t,R,w,[n],[])},Nn.xor=function(){for(var n=-1,t=arguments.length;++n<t;){
-var r=arguments[n];if(Er(r))var e=e?Jn(ft(e,r),ft(r,e)):r}return e?St(e):[]},Nn.zip=Xu,Nn.zipObject=Hr,Nn.zipWith=Hu,Nn.backflow=Ao,Nn.collect=ue,Nn.compose=Ao,Nn.each=uo,Nn.eachRight=oo,Nn.extend=Co,Nn.iteratee=Se,Nn.methods=Ie,Nn.object=Hr,Nn.select=re,Nn.tail=Yr,Nn.unique=Gr,Te(Nn,Nn),Nn.add=function(n,t){return(+n||0)+(+t||0)},Nn.attempt=Jo,Nn.camelCase=Po,Nn.capitalize=function(n){return(n=u(n))&&n.charAt(0).toUpperCase()+n.slice(1)},Nn.ceil=Qo,Nn.clone=function(n,t,r,e){return t&&typeof t!="boolean"&&Ur(n,t,r)?t=false:typeof t=="function"&&(e=r,
-r=t,t=false),typeof r=="function"?ot(n,t,Bt(r,e,3)):ot(n,t)},Nn.cloneDeep=function(n,t,r){return typeof t=="function"?ot(n,true,Bt(t,r,3)):ot(n,true)},Nn.deburr=Ce,Nn.endsWith=function(n,t,r){n=u(n),t+="";var e=n.length;return r=r===w?e:xu(0>r?0:+r||0,e),r-=t.length,0<=r&&n.indexOf(t,r)==r},Nn.escape=function(n){return(n=u(n))&&hn.test(n)?n.replace(sn,c):n},Nn.escapeRegExp=function(n){return(n=u(n))&&bn.test(n)?n.replace(wn,l):n||"(?:)"},Nn.every=te,Nn.find=ro,Nn.findIndex=qu,Nn.findKey=$o,Nn.findLast=eo,
-Nn.findLastIndex=Pu,Nn.findLastKey=So,Nn.findWhere=function(n,t){return ro(n,bt(t))},Nn.first=Kr,Nn.floor=ni,Nn.get=function(n,t,r){return n=null==n?w:yt(n,Dr(t),t+""),n===w?r:n},Nn.gt=se,Nn.gte=function(n,t){return n>=t},Nn.has=function(n,t){if(null==n)return false;var r=nu.call(n,t);if(!r&&!Wr(t)){if(t=Dr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),null==n)return false;t=Zr(t),r=nu.call(n,t)}return r||Sr(n.length)&&Cr(t,n.length)&&(Oo(n)||pe(n))},Nn.identity=Fe,Nn.includes=ee,Nn.indexOf=Vr,Nn.inRange=function(n,t,r){
-return t=+t||0,r===w?(r=t,t=0):r=+r||0,n>=xu(t,r)&&n<bu(t,r)},Nn.isArguments=pe,Nn.isArray=Oo,Nn.isBoolean=function(n){return true===n||false===n||h(n)&&ru.call(n)==M},Nn.isDate=function(n){return h(n)&&ru.call(n)==q},Nn.isElement=function(n){return!!n&&1===n.nodeType&&h(n)&&!me(n)},Nn.isEmpty=function(n){return null==n?true:Er(n)&&(Oo(n)||be(n)||pe(n)||h(n)&&ve(n.splice))?!n.length:!zo(n).length},Nn.isEqual=he,Nn.isError=_e,Nn.isFinite=function(n){return typeof n=="number"&&mu(n)},Nn.isFunction=ve,Nn.isMatch=function(n,t,r,e){
-return r=typeof r=="function"?Bt(r,e,3):w,mt(n,Ar(t),r)},Nn.isNaN=function(n){return de(n)&&n!=+n},Nn.isNative=ye,Nn.isNull=function(n){return null===n},Nn.isNumber=de,Nn.isObject=ge,Nn.isPlainObject=me,Nn.isRegExp=we,Nn.isString=be,Nn.isTypedArray=xe,Nn.isUndefined=function(n){return n===w},Nn.kebabCase=Ko,Nn.last=Zr,Nn.lastIndexOf=function(n,t,r){var e=n?n.length:0;if(!e)return-1;var u=e;if(typeof r=="number")u=(0>r?bu(e+r,0):xu(r||0,e-1))+1;else if(r)return u=Lt(n,t,true)-1,n=n[u],(t===t?t===n:n!==n)?u:-1;
-if(t!==t)return p(n,u,true);for(;u--;)if(n[u]===t)return u;return-1},Nn.lt=Ae,Nn.lte=function(n,t){return n<=t},Nn.max=ti,Nn.min=ri,Nn.noConflict=function(){return Zn._=eu,this},Nn.noop=Le,Nn.now=ho,Nn.pad=function(n,t,r){n=u(n),t=+t;var e=n.length;return e<t&&mu(t)?(e=(t-e)/2,t=yu(e),e=vu(e),r=pr("",e,r),r.slice(0,t)+n+r):n},Nn.padLeft=Vo,Nn.padRight=Zo,Nn.parseInt=function(n,t,r){return(r?Ur(n,t,r):null==t)?t=0:t&&(t=+t),n=We(n),ju(n,t||(In.test(n)?16:10))},Nn.random=function(n,t,r){r&&Ur(n,t,r)&&(t=r=w);
-var e=null==n,u=null==t;return null==r&&(u&&typeof n=="boolean"?(r=n,n=1):typeof t=="boolean"&&(r=t,u=true)),e&&u&&(t=1,u=false),n=+n||0,u?(t=n,n=0):t=+t||0,r||n%1||t%1?(r=ku(),xu(n+r*(t-n+fu("1e-"+((r+"").length-1))),t)):Rt(n,t)},Nn.reduce=lo,Nn.reduceRight=so,Nn.repeat=Ue,Nn.result=function(n,t,r){var e=null==n?w:n[t];return e===w&&(null==n||Wr(t,n)||(t=Dr(t),n=1==t.length?n:yt(n,Et(t,0,-1)),e=null==n?w:n[Zr(t)]),e=e===w?r:e),ve(e)?e.call(n):e},Nn.round=ei,Nn.runInContext=m,Nn.size=function(n){var t=n?Bu(n):0;
-return Sr(t)?t:zo(n).length},Nn.snakeCase=Yo,Nn.some=ie,Nn.sortedIndex=Zu,Nn.sortedLastIndex=Yu,Nn.startCase=Go,Nn.startsWith=function(n,t,r){return n=u(n),r=null==r?0:xu(0>r?0:+r||0,n.length),n.lastIndexOf(t,r)==r},Nn.sum=function(n,t,r){if(r&&Ur(n,t,r)&&(t=w),t=wr(t,r,3),1==t.length){n=Oo(n)?n:zr(n),r=n.length;for(var e=0;r--;)e+=+t(n[r])||0;n=e}else n=$t(n,t);return n},Nn.template=function(n,t,r){var e=Nn.templateSettings;r&&Ur(n,t,r)&&(t=r=w),n=u(n),t=nt(tt({},r||t),e,Qn),r=nt(tt({},t.imports),e.imports,Qn);
-var o,i,f=zo(r),a=Ft(r,f),c=0;r=t.interpolate||Cn;var l="__p+='";r=Ze((t.escape||Cn).source+"|"+r.source+"|"+(r===gn?jn:Cn).source+"|"+(t.evaluate||Cn).source+"|$","g");var p="sourceURL"in t?"//# sourceURL="+t.sourceURL+"\n":"";if(n.replace(r,function(t,r,e,u,f,a){return e||(e=u),l+=n.slice(c,a).replace(Un,s),r&&(o=true,l+="'+__e("+r+")+'"),f&&(i=true,l+="';"+f+";\n__p+='"),e&&(l+="'+((__t=("+e+"))==null?'':__t)+'"),c=a+t.length,t}),l+="';",(t=t.variable)||(l="with(obj){"+l+"}"),l=(i?l.replace(fn,""):l).replace(an,"$1").replace(cn,"$1;"),
-l="function("+(t||"obj")+"){"+(t?"":"obj||(obj={});")+"var __t,__p=''"+(o?",__e=_.escape":"")+(i?",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}":";")+l+"return __p}",t=Jo(function(){return qe(f,p+"return "+l).apply(w,a)}),t.source=l,_e(t))throw t;return t},Nn.trim=We,Nn.trimLeft=function(n,t,r){var e=n;return(n=u(n))?n.slice((r?Ur(e,t,r):null==t)?g(n):o(n,t+"")):n},Nn.trimRight=function(n,t,r){var e=n;return(n=u(n))?(r?Ur(e,t,r):null==t)?n.slice(0,y(n)+1):n.slice(0,i(n,t+"")+1):n;
-},Nn.trunc=function(n,t,r){r&&Ur(n,t,r)&&(t=w);var e=U;if(r=W,null!=t)if(ge(t)){var o="separator"in t?t.separator:o,e="length"in t?+t.length||0:e;r="omission"in t?u(t.omission):r}else e=+t||0;if(n=u(n),e>=n.length)return n;if(e-=r.length,1>e)return r;if(t=n.slice(0,e),null==o)return t+r;if(we(o)){if(n.slice(e).search(o)){var i,f=n.slice(0,e);for(o.global||(o=Ze(o.source,(kn.exec(o)||"")+"g")),o.lastIndex=0;n=o.exec(f);)i=n.index;t=t.slice(0,null==i?e:i)}}else n.indexOf(o,e)!=e&&(o=t.lastIndexOf(o),
--1<o&&(t=t.slice(0,o)));return t+r},Nn.unescape=function(n){return(n=u(n))&&pn.test(n)?n.replace(ln,d):n},Nn.uniqueId=function(n){var t=++tu;return u(n)+t},Nn.words=$e,Nn.all=te,Nn.any=ie,Nn.contains=ee,Nn.eq=he,Nn.detect=ro,Nn.foldl=lo,Nn.foldr=so,Nn.head=Kr,Nn.include=ee,Nn.inject=lo,Te(Nn,function(){var n={};return _t(Nn,function(t,r){Nn.prototype[r]||(n[r]=t)}),n}(),false),Nn.sample=oe,Nn.prototype.sample=function(n){return this.__chain__||null!=n?this.thru(function(t){return oe(t,n)}):oe(this.value());
-},Nn.VERSION=b,Pn("bind bindKey curry curryRight partial partialRight".split(" "),function(n){Nn[n].placeholder=Nn}),Pn(["drop","take"],function(n,t){zn.prototype[n]=function(r){var e=this.__filtered__;if(e&&!t)return new zn(this);r=null==r?1:bu(yu(r)||0,0);var u=this.clone();return e?u.__takeCount__=xu(u.__takeCount__,r):u.__views__.push({size:r,type:n+(0>u.__dir__?"Right":"")}),u},zn.prototype[n+"Right"]=function(t){return this.reverse()[n](t).reverse()}}),Pn(["filter","map","takeWhile"],function(n,t){
-var r=t+1,e=r!=T;zn.prototype[n]=function(n,t){var u=this.clone();return u.__iteratees__.push({iteratee:wr(n,t,1),type:r}),u.__filtered__=u.__filtered__||e,u}}),Pn(["first","last"],function(n,t){var r="take"+(t?"Right":"");zn.prototype[n]=function(){return this[r](1).value()[0]}}),Pn(["initial","rest"],function(n,t){var r="drop"+(t?"":"Right");zn.prototype[n]=function(){return this.__filtered__?new zn(this):this[r](1)}}),Pn(["pluck","where"],function(n,t){var r=t?"filter":"map",e=t?bt:ze;zn.prototype[n]=function(n){
-return this[r](e(n))}}),zn.prototype.compact=function(){return this.filter(Fe)},zn.prototype.reject=function(n,t){return n=wr(n,t,1),this.filter(function(t){return!n(t)})},zn.prototype.slice=function(n,t){n=null==n?0:+n||0;var r=this;return r.__filtered__&&(0<n||0>t)?new zn(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==w&&(t=+t||0,r=0>t?r.dropRight(-t):r.take(t-n)),r)},zn.prototype.takeRightWhile=function(n,t){return this.reverse().takeWhile(n,t).reverse()},zn.prototype.toArray=function(){return this.take(Ru);
-},_t(zn.prototype,function(n,t){var r=/^(?:filter|map|reject)|While$/.test(t),e=/^(?:first|last)$/.test(t),u=Nn[e?"take"+("last"==t?"Right":""):t];u&&(Nn.prototype[t]=function(){function t(n){return e&&i?u(n,1)[0]:u.apply(w,Jn([n],o))}var o=e?[1]:arguments,i=this.__chain__,f=this.__wrapped__,a=!!this.__actions__.length,c=f instanceof zn,l=o[0],s=c||Oo(f);return s&&r&&typeof l=="function"&&1!=l.length&&(c=s=false),l={func:ne,args:[t],thisArg:w},a=c&&!a,e&&!i?a?(f=f.clone(),f.__actions__.push(l),n.call(f)):u.call(w,this.value())[0]:!e&&s?(f=a?f:new zn(this),
-f=n.apply(f,o),f.__actions__.push(l),new Ln(f,i)):this.thru(t)})}),Pn("join pop push replace shift sort splice split unshift".split(" "),function(n){var t=(/^(?:replace|split)$/.test(n)?He:Je)[n],r=/^(?:push|sort|unshift)$/.test(n)?"tap":"thru",e=/^(?:join|pop|replace|shift)$/.test(n);Nn.prototype[n]=function(){var n=arguments;return e&&!this.__chain__?t.apply(this.value(),n):this[r](function(r){return t.apply(r,n)})}}),_t(zn.prototype,function(n,t){var r=Nn[t];if(r){var e=r.name+"";(Wu[e]||(Wu[e]=[])).push({
-name:t,func:r})}}),Wu[sr(w,A).name]=[{name:"wrapper",func:w}],zn.prototype.clone=function(){var n=new zn(this.__wrapped__);return n.__actions__=qn(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=qn(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=qn(this.__views__),n},zn.prototype.reverse=function(){if(this.__filtered__){var n=new zn(this);n.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},zn.prototype.value=function(){
-var n,t=this.__wrapped__.value(),r=this.__dir__,e=Oo(t),u=0>r,o=e?t.length:0;n=o;for(var i=this.__views__,f=0,a=-1,c=i.length;++a<c;){var l=i[a],s=l.size;switch(l.type){case"drop":f+=s;break;case"dropRight":n-=s;break;case"take":n=xu(n,f+s);break;case"takeRight":f=bu(f,n-s)}}if(n={start:f,end:n},i=n.start,f=n.end,n=f-i,u=u?f:i-1,i=this.__iteratees__,f=i.length,a=0,c=xu(n,this.__takeCount__),!e||o<F||o==n&&c==n)return Tt(t,this.__actions__);e=[];n:for(;n--&&a<c;){for(u+=r,o=-1,l=t[u];++o<f;){var p=i[o],s=p.type,p=p.iteratee(l);
-if(s==T)l=p;else if(!p){if(s==N)continue n;break n}}e[a++]=l}return e},Nn.prototype.chain=function(){return Qr(this)},Nn.prototype.commit=function(){return new Ln(this.value(),this.__chain__)},Nn.prototype.concat=Qu,Nn.prototype.plant=function(n){for(var t,r=this;r instanceof Tn;){var e=Mr(r);t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},Nn.prototype.reverse=function(){function n(n){return n.reverse()}var t=this.__wrapped__;return t instanceof zn?(this.__actions__.length&&(t=new zn(this)),
-t=t.reverse(),t.__actions__.push({func:ne,args:[n],thisArg:w}),new Ln(t,this.__chain__)):this.thru(n)},Nn.prototype.toString=function(){return this.value()+""},Nn.prototype.run=Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return Tt(this.__wrapped__,this.__actions__)},Nn.prototype.collect=Nn.prototype.map,Nn.prototype.head=Nn.prototype.first,Nn.prototype.select=Nn.prototype.filter,Nn.prototype.tail=Nn.prototype.rest,Nn}var w,b="3.10.1",x=1,A=2,j=4,k=8,I=16,R=32,O=64,E=128,C=256,U=30,W="...",$=150,S=16,F=200,N=1,T=2,L="Expected a function",z="__lodash_placeholder__",B="[object Arguments]",D="[object Array]",M="[object Boolean]",q="[object Date]",P="[object Error]",K="[object Function]",V="[object Number]",Z="[object Object]",Y="[object RegExp]",G="[object String]",J="[object ArrayBuffer]",X="[object Float32Array]",H="[object Float64Array]",Q="[object Int8Array]",nn="[object Int16Array]",tn="[object Int32Array]",rn="[object Uint8Array]",en="[object Uint8ClampedArray]",un="[object Uint16Array]",on="[object Uint32Array]",fn=/\b__p\+='';/g,an=/\b(__p\+=)''\+/g,cn=/(__e\(.*?\)|\b__t\))\+'';/g,ln=/&(?:amp|lt|gt|quot|#39|#96);/g,sn=/[&<>"'`]/g,pn=RegExp(ln.source),hn=RegExp(sn.source),_n=/<%-([\s\S]+?)%>/g,vn=/<%([\s\S]+?)%>/g,gn=/<%=([\s\S]+?)%>/g,yn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,dn=/^\w*$/,mn=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,wn=/^[:!,]|[\\^$.*+?()[\]{}|\/]|(^[0-9a-fA-Fnrtuvx])|([\n\r\u2028\u2029])/g,bn=RegExp(wn.source),xn=/[\u0300-\u036f\ufe20-\ufe23]/g,An=/\\(\\)?/g,jn=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,kn=/\w*$/,In=/^0[xX]/,Rn=/^\[object .+?Constructor\]$/,On=/^\d+$/,En=/[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g,Cn=/($^)/,Un=/['\n\r\u2028\u2029\\]/g,Wn=RegExp("[A-Z\\xc0-\\xd6\\xd8-\\xde]+(?=[A-Z\\xc0-\\xd6\\xd8-\\xde][a-z\\xdf-\\xf6\\xf8-\\xff]+)|[A-Z\\xc0-\\xd6\\xd8-\\xde]?[a-z\\xdf-\\xf6\\xf8-\\xff]+|[A-Z\\xc0-\\xd6\\xd8-\\xde]+|[0-9]+","g"),$n="Array ArrayBuffer Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Math Number Object RegExp Set String _ clearTimeout isFinite parseFloat parseInt setTimeout TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap".split(" "),Sn={};
-Sn[X]=Sn[H]=Sn[Q]=Sn[nn]=Sn[tn]=Sn[rn]=Sn[en]=Sn[un]=Sn[on]=true,Sn[B]=Sn[D]=Sn[J]=Sn[M]=Sn[q]=Sn[P]=Sn[K]=Sn["[object Map]"]=Sn[V]=Sn[Z]=Sn[Y]=Sn["[object Set]"]=Sn[G]=Sn["[object WeakMap]"]=false;var Fn={};Fn[B]=Fn[D]=Fn[J]=Fn[M]=Fn[q]=Fn[X]=Fn[H]=Fn[Q]=Fn[nn]=Fn[tn]=Fn[V]=Fn[Z]=Fn[Y]=Fn[G]=Fn[rn]=Fn[en]=Fn[un]=Fn[on]=true,Fn[P]=Fn[K]=Fn["[object Map]"]=Fn["[object Set]"]=Fn["[object WeakMap]"]=false;var Nn={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a",
-"\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y",
-"\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss"},Tn={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"},Ln={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},zn={"function":true,object:true},Bn={0:"x30",1:"x31",2:"x32",3:"x33",4:"x34",5:"x35",6:"x36",7:"x37",8:"x38",9:"x39",A:"x41",B:"x42",C:"x43",D:"x44",E:"x45",F:"x46",a:"x61",b:"x62",c:"x63",d:"x64",e:"x65",f:"x66",n:"x6e",r:"x72",t:"x74",u:"x75",v:"x76",x:"x78"},Dn={"\\":"\\",
-"'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Mn=zn[typeof exports]&&exports&&!exports.nodeType&&exports,qn=zn[typeof module]&&module&&!module.nodeType&&module,Pn=zn[typeof self]&&self&&self.Object&&self,Kn=zn[typeof window]&&window&&window.Object&&window,Vn=qn&&qn.exports===Mn&&Mn,Zn=Mn&&qn&&typeof global=="object"&&global&&global.Object&&global||Kn!==(this&&this.window)&&Kn||Pn||this,Yn=m();typeof define=="function"&&typeof define.amd=="object"&&define.amd?(Zn._=Yn, define(function(){
-return Yn})):Mn&&qn?Vn?(qn.exports=Yn)._=Yn:Mn._=Yn:Zn._=Yn}).call(this); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/moment.js b/StoneIsland/platforms/android/assets/www/js/vendor/moment.js
deleted file mode 100755
index 30e9239a..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/moment.js
+++ /dev/null
@@ -1,3195 +0,0 @@
-//! moment.js
-//! version : 2.10.6
-//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
-//! license : MIT
-//! momentjs.com
-
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- global.moment = factory()
-}(this, function () { 'use strict';
-
- var hookCallback;
-
- function utils_hooks__hooks () {
- return hookCallback.apply(null, arguments);
- }
-
- // This is done to register the method called with moment()
- // without creating circular dependencies.
- function setHookCallback (callback) {
- hookCallback = callback;
- }
-
- function isArray(input) {
- return Object.prototype.toString.call(input) === '[object Array]';
- }
-
- function isDate(input) {
- return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
- }
-
- function map(arr, fn) {
- var res = [], i;
- for (i = 0; i < arr.length; ++i) {
- res.push(fn(arr[i], i));
- }
- return res;
- }
-
- function hasOwnProp(a, b) {
- return Object.prototype.hasOwnProperty.call(a, b);
- }
-
- function extend(a, b) {
- for (var i in b) {
- if (hasOwnProp(b, i)) {
- a[i] = b[i];
- }
- }
-
- if (hasOwnProp(b, 'toString')) {
- a.toString = b.toString;
- }
-
- if (hasOwnProp(b, 'valueOf')) {
- a.valueOf = b.valueOf;
- }
-
- return a;
- }
-
- function create_utc__createUTC (input, format, locale, strict) {
- return createLocalOrUTC(input, format, locale, strict, true).utc();
- }
-
- function defaultParsingFlags() {
- // We need to deep clone this object.
- return {
- empty : false,
- unusedTokens : [],
- unusedInput : [],
- overflow : -2,
- charsLeftOver : 0,
- nullInput : false,
- invalidMonth : null,
- invalidFormat : false,
- userInvalidated : false,
- iso : false
- };
- }
-
- function getParsingFlags(m) {
- if (m._pf == null) {
- m._pf = defaultParsingFlags();
- }
- return m._pf;
- }
-
- function valid__isValid(m) {
- if (m._isValid == null) {
- var flags = getParsingFlags(m);
- m._isValid = !isNaN(m._d.getTime()) &&
- flags.overflow < 0 &&
- !flags.empty &&
- !flags.invalidMonth &&
- !flags.invalidWeekday &&
- !flags.nullInput &&
- !flags.invalidFormat &&
- !flags.userInvalidated;
-
- if (m._strict) {
- m._isValid = m._isValid &&
- flags.charsLeftOver === 0 &&
- flags.unusedTokens.length === 0 &&
- flags.bigHour === undefined;
- }
- }
- return m._isValid;
- }
-
- function valid__createInvalid (flags) {
- var m = create_utc__createUTC(NaN);
- if (flags != null) {
- extend(getParsingFlags(m), flags);
- }
- else {
- getParsingFlags(m).userInvalidated = true;
- }
-
- return m;
- }
-
- var momentProperties = utils_hooks__hooks.momentProperties = [];
-
- function copyConfig(to, from) {
- var i, prop, val;
-
- if (typeof from._isAMomentObject !== 'undefined') {
- to._isAMomentObject = from._isAMomentObject;
- }
- if (typeof from._i !== 'undefined') {
- to._i = from._i;
- }
- if (typeof from._f !== 'undefined') {
- to._f = from._f;
- }
- if (typeof from._l !== 'undefined') {
- to._l = from._l;
- }
- if (typeof from._strict !== 'undefined') {
- to._strict = from._strict;
- }
- if (typeof from._tzm !== 'undefined') {
- to._tzm = from._tzm;
- }
- if (typeof from._isUTC !== 'undefined') {
- to._isUTC = from._isUTC;
- }
- if (typeof from._offset !== 'undefined') {
- to._offset = from._offset;
- }
- if (typeof from._pf !== 'undefined') {
- to._pf = getParsingFlags(from);
- }
- if (typeof from._locale !== 'undefined') {
- to._locale = from._locale;
- }
-
- if (momentProperties.length > 0) {
- for (i in momentProperties) {
- prop = momentProperties[i];
- val = from[prop];
- if (typeof val !== 'undefined') {
- to[prop] = val;
- }
- }
- }
-
- return to;
- }
-
- var updateInProgress = false;
-
- // Moment prototype object
- function Moment(config) {
- copyConfig(this, config);
- this._d = new Date(config._d != null ? config._d.getTime() : NaN);
- // Prevent infinite loop in case updateOffset creates new moment
- // objects.
- if (updateInProgress === false) {
- updateInProgress = true;
- utils_hooks__hooks.updateOffset(this);
- updateInProgress = false;
- }
- }
-
- function isMoment (obj) {
- return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
- }
-
- function absFloor (number) {
- if (number < 0) {
- return Math.ceil(number);
- } else {
- return Math.floor(number);
- }
- }
-
- function toInt(argumentForCoercion) {
- var coercedNumber = +argumentForCoercion,
- value = 0;
-
- if (coercedNumber !== 0 && isFinite(coercedNumber)) {
- value = absFloor(coercedNumber);
- }
-
- return value;
- }
-
- function compareArrays(array1, array2, dontConvert) {
- var len = Math.min(array1.length, array2.length),
- lengthDiff = Math.abs(array1.length - array2.length),
- diffs = 0,
- i;
- for (i = 0; i < len; i++) {
- if ((dontConvert && array1[i] !== array2[i]) ||
- (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
- diffs++;
- }
- }
- return diffs + lengthDiff;
- }
-
- function Locale() {
- }
-
- var locales = {};
- var globalLocale;
-
- function normalizeLocale(key) {
- return key ? key.toLowerCase().replace('_', '-') : key;
- }
-
- // pick the locale from the array
- // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
- // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
- function chooseLocale(names) {
- var i = 0, j, next, locale, split;
-
- while (i < names.length) {
- split = normalizeLocale(names[i]).split('-');
- j = split.length;
- next = normalizeLocale(names[i + 1]);
- next = next ? next.split('-') : null;
- while (j > 0) {
- locale = loadLocale(split.slice(0, j).join('-'));
- if (locale) {
- return locale;
- }
- if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
- //the next array item is better than a shallower substring of this one
- break;
- }
- j--;
- }
- i++;
- }
- return null;
- }
-
- function loadLocale(name) {
- var oldLocale = null;
- // TODO: Find a better way to register and load all the locales in Node
- if (!locales[name] && typeof module !== 'undefined' &&
- module && module.exports) {
- try {
- oldLocale = globalLocale._abbr;
- require('./locale/' + name);
- // because defineLocale currently also sets the global locale, we
- // want to undo that for lazy loaded locales
- locale_locales__getSetGlobalLocale(oldLocale);
- } catch (e) { }
- }
- return locales[name];
- }
-
- // This function will load locale and then set the global locale. If
- // no arguments are passed in, it will simply return the current global
- // locale key.
- function locale_locales__getSetGlobalLocale (key, values) {
- var data;
- if (key) {
- if (typeof values === 'undefined') {
- data = locale_locales__getLocale(key);
- }
- else {
- data = defineLocale(key, values);
- }
-
- if (data) {
- // moment.duration._locale = moment._locale = data;
- globalLocale = data;
- }
- }
-
- return globalLocale._abbr;
- }
-
- function defineLocale (name, values) {
- if (values !== null) {
- values.abbr = name;
- locales[name] = locales[name] || new Locale();
- locales[name].set(values);
-
- // backwards compat for now: also set the locale
- locale_locales__getSetGlobalLocale(name);
-
- return locales[name];
- } else {
- // useful for testing
- delete locales[name];
- return null;
- }
- }
-
- // returns locale data
- function locale_locales__getLocale (key) {
- var locale;
-
- if (key && key._locale && key._locale._abbr) {
- key = key._locale._abbr;
- }
-
- if (!key) {
- return globalLocale;
- }
-
- if (!isArray(key)) {
- //short-circuit everything else
- locale = loadLocale(key);
- if (locale) {
- return locale;
- }
- key = [key];
- }
-
- return chooseLocale(key);
- }
-
- var aliases = {};
-
- function addUnitAlias (unit, shorthand) {
- var lowerCase = unit.toLowerCase();
- aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
- }
-
- function normalizeUnits(units) {
- return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
- }
-
- function normalizeObjectUnits(inputObject) {
- var normalizedInput = {},
- normalizedProp,
- prop;
-
- for (prop in inputObject) {
- if (hasOwnProp(inputObject, prop)) {
- normalizedProp = normalizeUnits(prop);
- if (normalizedProp) {
- normalizedInput[normalizedProp] = inputObject[prop];
- }
- }
- }
-
- return normalizedInput;
- }
-
- function makeGetSet (unit, keepTime) {
- return function (value) {
- if (value != null) {
- get_set__set(this, unit, value);
- utils_hooks__hooks.updateOffset(this, keepTime);
- return this;
- } else {
- return get_set__get(this, unit);
- }
- };
- }
-
- function get_set__get (mom, unit) {
- return mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]();
- }
-
- function get_set__set (mom, unit, value) {
- return mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
- }
-
- // MOMENTS
-
- function getSet (units, value) {
- var unit;
- if (typeof units === 'object') {
- for (unit in units) {
- this.set(unit, units[unit]);
- }
- } else {
- units = normalizeUnits(units);
- if (typeof this[units] === 'function') {
- return this[units](value);
- }
- }
- return this;
- }
-
- function zeroFill(number, targetLength, forceSign) {
- var absNumber = '' + Math.abs(number),
- zerosToFill = targetLength - absNumber.length,
- sign = number >= 0;
- return (sign ? (forceSign ? '+' : '') : '-') +
- Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
- }
-
- var formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
-
- var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
-
- var formatFunctions = {};
-
- var formatTokenFunctions = {};
-
- // token: 'M'
- // padded: ['MM', 2]
- // ordinal: 'Mo'
- // callback: function () { this.month() + 1 }
- function addFormatToken (token, padded, ordinal, callback) {
- var func = callback;
- if (typeof callback === 'string') {
- func = function () {
- return this[callback]();
- };
- }
- if (token) {
- formatTokenFunctions[token] = func;
- }
- if (padded) {
- formatTokenFunctions[padded[0]] = function () {
- return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
- };
- }
- if (ordinal) {
- formatTokenFunctions[ordinal] = function () {
- return this.localeData().ordinal(func.apply(this, arguments), token);
- };
- }
- }
-
- function removeFormattingTokens(input) {
- if (input.match(/\[[\s\S]/)) {
- return input.replace(/^\[|\]$/g, '');
- }
- return input.replace(/\\/g, '');
- }
-
- function makeFormatFunction(format) {
- var array = format.match(formattingTokens), i, length;
-
- for (i = 0, length = array.length; i < length; i++) {
- if (formatTokenFunctions[array[i]]) {
- array[i] = formatTokenFunctions[array[i]];
- } else {
- array[i] = removeFormattingTokens(array[i]);
- }
- }
-
- return function (mom) {
- var output = '';
- for (i = 0; i < length; i++) {
- output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
- }
- return output;
- };
- }
-
- // format date using native date object
- function formatMoment(m, format) {
- if (!m.isValid()) {
- return m.localeData().invalidDate();
- }
-
- format = expandFormat(format, m.localeData());
- formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
-
- return formatFunctions[format](m);
- }
-
- function expandFormat(format, locale) {
- var i = 5;
-
- function replaceLongDateFormatTokens(input) {
- return locale.longDateFormat(input) || input;
- }
-
- localFormattingTokens.lastIndex = 0;
- while (i >= 0 && localFormattingTokens.test(format)) {
- format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
- localFormattingTokens.lastIndex = 0;
- i -= 1;
- }
-
- return format;
- }
-
- var match1 = /\d/; // 0 - 9
- var match2 = /\d\d/; // 00 - 99
- var match3 = /\d{3}/; // 000 - 999
- var match4 = /\d{4}/; // 0000 - 9999
- var match6 = /[+-]?\d{6}/; // -999999 - 999999
- var match1to2 = /\d\d?/; // 0 - 99
- var match1to3 = /\d{1,3}/; // 0 - 999
- var match1to4 = /\d{1,4}/; // 0 - 9999
- var match1to6 = /[+-]?\d{1,6}/; // -999999 - 999999
-
- var matchUnsigned = /\d+/; // 0 - inf
- var matchSigned = /[+-]?\d+/; // -inf - inf
-
- var matchOffset = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
-
- var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
-
- // any word (or two) characters or numbers including two/three word month in arabic.
- var matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
-
- var regexes = {};
-
- function isFunction (sth) {
- // https://github.com/moment/moment/issues/2325
- return typeof sth === 'function' &&
- Object.prototype.toString.call(sth) === '[object Function]';
- }
-
-
- function addRegexToken (token, regex, strictRegex) {
- regexes[token] = isFunction(regex) ? regex : function (isStrict) {
- return (isStrict && strictRegex) ? strictRegex : regex;
- };
- }
-
- function getParseRegexForToken (token, config) {
- if (!hasOwnProp(regexes, token)) {
- return new RegExp(unescapeFormat(token));
- }
-
- return regexes[token](config._strict, config._locale);
- }
-
- // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
- function unescapeFormat(s) {
- return s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
- return p1 || p2 || p3 || p4;
- }).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- }
-
- var tokens = {};
-
- function addParseToken (token, callback) {
- var i, func = callback;
- if (typeof token === 'string') {
- token = [token];
- }
- if (typeof callback === 'number') {
- func = function (input, array) {
- array[callback] = toInt(input);
- };
- }
- for (i = 0; i < token.length; i++) {
- tokens[token[i]] = func;
- }
- }
-
- function addWeekParseToken (token, callback) {
- addParseToken(token, function (input, array, config, token) {
- config._w = config._w || {};
- callback(input, config._w, config, token);
- });
- }
-
- function addTimeToArrayFromToken(token, input, config) {
- if (input != null && hasOwnProp(tokens, token)) {
- tokens[token](input, config._a, config, token);
- }
- }
-
- var YEAR = 0;
- var MONTH = 1;
- var DATE = 2;
- var HOUR = 3;
- var MINUTE = 4;
- var SECOND = 5;
- var MILLISECOND = 6;
-
- function daysInMonth(year, month) {
- return new Date(Date.UTC(year, month + 1, 0)).getUTCDate();
- }
-
- // FORMATTING
-
- addFormatToken('M', ['MM', 2], 'Mo', function () {
- return this.month() + 1;
- });
-
- addFormatToken('MMM', 0, 0, function (format) {
- return this.localeData().monthsShort(this, format);
- });
-
- addFormatToken('MMMM', 0, 0, function (format) {
- return this.localeData().months(this, format);
- });
-
- // ALIASES
-
- addUnitAlias('month', 'M');
-
- // PARSING
-
- addRegexToken('M', match1to2);
- addRegexToken('MM', match1to2, match2);
- addRegexToken('MMM', matchWord);
- addRegexToken('MMMM', matchWord);
-
- addParseToken(['M', 'MM'], function (input, array) {
- array[MONTH] = toInt(input) - 1;
- });
-
- addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
- var month = config._locale.monthsParse(input, token, config._strict);
- // if we didn't find a month name, mark the date as invalid.
- if (month != null) {
- array[MONTH] = month;
- } else {
- getParsingFlags(config).invalidMonth = input;
- }
- });
-
- // LOCALES
-
- var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
- function localeMonths (m) {
- return this._months[m.month()];
- }
-
- var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
- function localeMonthsShort (m) {
- return this._monthsShort[m.month()];
- }
-
- function localeMonthsParse (monthName, format, strict) {
- var i, mom, regex;
-
- if (!this._monthsParse) {
- this._monthsParse = [];
- this._longMonthsParse = [];
- this._shortMonthsParse = [];
- }
-
- for (i = 0; i < 12; i++) {
- // make the regex if we don't have it already
- mom = create_utc__createUTC([2000, i]);
- if (strict && !this._longMonthsParse[i]) {
- this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
- this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
- }
- if (!strict && !this._monthsParse[i]) {
- regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
- this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
- return i;
- } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
- return i;
- } else if (!strict && this._monthsParse[i].test(monthName)) {
- return i;
- }
- }
- }
-
- // MOMENTS
-
- function setMonth (mom, value) {
- var dayOfMonth;
-
- // TODO: Move this out of here!
- if (typeof value === 'string') {
- value = mom.localeData().monthsParse(value);
- // TODO: Another silent failure?
- if (typeof value !== 'number') {
- return mom;
- }
- }
-
- dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
- mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
- return mom;
- }
-
- function getSetMonth (value) {
- if (value != null) {
- setMonth(this, value);
- utils_hooks__hooks.updateOffset(this, true);
- return this;
- } else {
- return get_set__get(this, 'Month');
- }
- }
-
- function getDaysInMonth () {
- return daysInMonth(this.year(), this.month());
- }
-
- function checkOverflow (m) {
- var overflow;
- var a = m._a;
-
- if (a && getParsingFlags(m).overflow === -2) {
- overflow =
- a[MONTH] < 0 || a[MONTH] > 11 ? MONTH :
- a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
- a[HOUR] < 0 || a[HOUR] > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
- a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE :
- a[SECOND] < 0 || a[SECOND] > 59 ? SECOND :
- a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
- -1;
-
- if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
- overflow = DATE;
- }
-
- getParsingFlags(m).overflow = overflow;
- }
-
- return m;
- }
-
- function warn(msg) {
- if (utils_hooks__hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
- // console.warn('Deprecation warning: ' + msg);
- }
- }
-
- function deprecate(msg, fn) {
- var firstTime = true;
-
- return extend(function () {
- if (firstTime) {
- warn(msg + '\n' + (new Error()).stack);
- firstTime = false;
- }
- return fn.apply(this, arguments);
- }, fn);
- }
-
- var deprecations = {};
-
- function deprecateSimple(name, msg) {
- if (!deprecations[name]) {
- warn(msg);
- deprecations[name] = true;
- }
- }
-
- utils_hooks__hooks.suppressDeprecationWarnings = false;
-
- var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/;
-
- var isoDates = [
- ['YYYYYY-MM-DD', /[+-]\d{6}-\d{2}-\d{2}/],
- ['YYYY-MM-DD', /\d{4}-\d{2}-\d{2}/],
- ['GGGG-[W]WW-E', /\d{4}-W\d{2}-\d/],
- ['GGGG-[W]WW', /\d{4}-W\d{2}/],
- ['YYYY-DDD', /\d{4}-\d{3}/]
- ];
-
- // iso time formats and regexes
- var isoTimes = [
- ['HH:mm:ss.SSSS', /(T| )\d\d:\d\d:\d\d\.\d+/],
- ['HH:mm:ss', /(T| )\d\d:\d\d:\d\d/],
- ['HH:mm', /(T| )\d\d:\d\d/],
- ['HH', /(T| )\d\d/]
- ];
-
- var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
-
- // date from iso format
- function configFromISO(config) {
- var i, l,
- string = config._i,
- match = from_string__isoRegex.exec(string);
-
- if (match) {
- getParsingFlags(config).iso = true;
- for (i = 0, l = isoDates.length; i < l; i++) {
- if (isoDates[i][1].exec(string)) {
- config._f = isoDates[i][0];
- break;
- }
- }
- for (i = 0, l = isoTimes.length; i < l; i++) {
- if (isoTimes[i][1].exec(string)) {
- // match[6] should be 'T' or space
- config._f += (match[6] || ' ') + isoTimes[i][0];
- break;
- }
- }
- if (string.match(matchOffset)) {
- config._f += 'Z';
- }
- configFromStringAndFormat(config);
- } else {
- config._isValid = false;
- }
- }
-
- // date from iso format or fallback
- function configFromString(config) {
- var matched = aspNetJsonRegex.exec(config._i);
-
- if (matched !== null) {
- config._d = new Date(+matched[1]);
- return;
- }
-
- configFromISO(config);
- if (config._isValid === false) {
- delete config._isValid;
- utils_hooks__hooks.createFromInputFallback(config);
- }
- }
-
- utils_hooks__hooks.createFromInputFallback = deprecate(
- 'moment construction falls back to js Date. This is ' +
- 'discouraged and will be removed in upcoming major ' +
- 'release. Please refer to ' +
- 'https://github.com/moment/moment/issues/1407 for more info.',
- function (config) {
- config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
- }
- );
-
- function createDate (y, m, d, h, M, s, ms) {
- //can't just apply() to create a date:
- //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
- var date = new Date(y, m, d, h, M, s, ms);
-
- //the date constructor doesn't accept years < 1970
- if (y < 1970) {
- date.setFullYear(y);
- }
- return date;
- }
-
- function createUTCDate (y) {
- var date = new Date(Date.UTC.apply(null, arguments));
- if (y < 1970) {
- date.setUTCFullYear(y);
- }
- return date;
- }
-
- addFormatToken(0, ['YY', 2], 0, function () {
- return this.year() % 100;
- });
-
- addFormatToken(0, ['YYYY', 4], 0, 'year');
- addFormatToken(0, ['YYYYY', 5], 0, 'year');
- addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
-
- // ALIASES
-
- addUnitAlias('year', 'y');
-
- // PARSING
-
- addRegexToken('Y', matchSigned);
- addRegexToken('YY', match1to2, match2);
- addRegexToken('YYYY', match1to4, match4);
- addRegexToken('YYYYY', match1to6, match6);
- addRegexToken('YYYYYY', match1to6, match6);
-
- addParseToken(['YYYYY', 'YYYYYY'], YEAR);
- addParseToken('YYYY', function (input, array) {
- array[YEAR] = input.length === 2 ? utils_hooks__hooks.parseTwoDigitYear(input) : toInt(input);
- });
- addParseToken('YY', function (input, array) {
- array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input);
- });
-
- // HELPERS
-
- function daysInYear(year) {
- return isLeapYear(year) ? 366 : 365;
- }
-
- function isLeapYear(year) {
- return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
- }
-
- // HOOKS
-
- utils_hooks__hooks.parseTwoDigitYear = function (input) {
- return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
- };
-
- // MOMENTS
-
- var getSetYear = makeGetSet('FullYear', false);
-
- function getIsLeapYear () {
- return isLeapYear(this.year());
- }
-
- addFormatToken('w', ['ww', 2], 'wo', 'week');
- addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
-
- // ALIASES
-
- addUnitAlias('week', 'w');
- addUnitAlias('isoWeek', 'W');
-
- // PARSING
-
- addRegexToken('w', match1to2);
- addRegexToken('ww', match1to2, match2);
- addRegexToken('W', match1to2);
- addRegexToken('WW', match1to2, match2);
-
- addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
- week[token.substr(0, 1)] = toInt(input);
- });
-
- // HELPERS
-
- // firstDayOfWeek 0 = sun, 6 = sat
- // the day of the week that starts the week
- // (usually sunday or monday)
- // firstDayOfWeekOfYear 0 = sun, 6 = sat
- // the first week is the week that contains the first
- // of this day of the week
- // (eg. ISO weeks use thursday (4))
- function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
- var end = firstDayOfWeekOfYear - firstDayOfWeek,
- daysToDayOfWeek = firstDayOfWeekOfYear - mom.day(),
- adjustedMoment;
-
-
- if (daysToDayOfWeek > end) {
- daysToDayOfWeek -= 7;
- }
-
- if (daysToDayOfWeek < end - 7) {
- daysToDayOfWeek += 7;
- }
-
- adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, 'd');
- return {
- week: Math.ceil(adjustedMoment.dayOfYear() / 7),
- year: adjustedMoment.year()
- };
- }
-
- // LOCALES
-
- function localeWeek (mom) {
- return weekOfYear(mom, this._week.dow, this._week.doy).week;
- }
-
- var defaultLocaleWeek = {
- dow : 0, // Sunday is the first day of the week.
- doy : 6 // The week that contains Jan 1st is the first week of the year.
- };
-
- function localeFirstDayOfWeek () {
- return this._week.dow;
- }
-
- function localeFirstDayOfYear () {
- return this._week.doy;
- }
-
- // MOMENTS
-
- function getSetWeek (input) {
- var week = this.localeData().week(this);
- return input == null ? week : this.add((input - week) * 7, 'd');
- }
-
- function getSetISOWeek (input) {
- var week = weekOfYear(this, 1, 4).week;
- return input == null ? week : this.add((input - week) * 7, 'd');
- }
-
- addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
-
- // ALIASES
-
- addUnitAlias('dayOfYear', 'DDD');
-
- // PARSING
-
- addRegexToken('DDD', match1to3);
- addRegexToken('DDDD', match3);
- addParseToken(['DDD', 'DDDD'], function (input, array, config) {
- config._dayOfYear = toInt(input);
- });
-
- // HELPERS
-
- //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
- function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
- var week1Jan = 6 + firstDayOfWeek - firstDayOfWeekOfYear, janX = createUTCDate(year, 0, 1 + week1Jan), d = janX.getUTCDay(), dayOfYear;
- if (d < firstDayOfWeek) {
- d += 7;
- }
-
- weekday = weekday != null ? 1 * weekday : firstDayOfWeek;
-
- dayOfYear = 1 + week1Jan + 7 * (week - 1) - d + weekday;
-
- return {
- year: dayOfYear > 0 ? year : year - 1,
- dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
- };
- }
-
- // MOMENTS
-
- function getSetDayOfYear (input) {
- var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
- return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
- }
-
- // Pick the first defined of two or three arguments.
- function defaults(a, b, c) {
- if (a != null) {
- return a;
- }
- if (b != null) {
- return b;
- }
- return c;
- }
-
- function currentDateArray(config) {
- var now = new Date();
- if (config._useUTC) {
- return [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()];
- }
- return [now.getFullYear(), now.getMonth(), now.getDate()];
- }
-
- // convert an array to a date.
- // the array should mirror the parameters below
- // note: all values past the year are optional and will default to the lowest possible value.
- // [year, month, day , hour, minute, second, millisecond]
- function configFromArray (config) {
- var i, date, input = [], currentDate, yearToUse;
-
- if (config._d) {
- return;
- }
-
- currentDate = currentDateArray(config);
-
- //compute day of the year from weeks and weekdays
- if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
- dayOfYearFromWeekInfo(config);
- }
-
- //if the day of the year is set, figure out what it is
- if (config._dayOfYear) {
- yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
-
- if (config._dayOfYear > daysInYear(yearToUse)) {
- getParsingFlags(config)._overflowDayOfYear = true;
- }
-
- date = createUTCDate(yearToUse, 0, config._dayOfYear);
- config._a[MONTH] = date.getUTCMonth();
- config._a[DATE] = date.getUTCDate();
- }
-
- // Default to current date.
- // * if no year, month, day of month are given, default to today
- // * if day of month is given, default month and year
- // * if month is given, default only year
- // * if year is given, don't default anything
- for (i = 0; i < 3 && config._a[i] == null; ++i) {
- config._a[i] = input[i] = currentDate[i];
- }
-
- // Zero out whatever was not defaulted, including time
- for (; i < 7; i++) {
- config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
- }
-
- // Check for 24:00:00.000
- if (config._a[HOUR] === 24 &&
- config._a[MINUTE] === 0 &&
- config._a[SECOND] === 0 &&
- config._a[MILLISECOND] === 0) {
- config._nextDay = true;
- config._a[HOUR] = 0;
- }
-
- config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
- // Apply timezone offset from input. The actual utcOffset can be changed
- // with parseZone.
- if (config._tzm != null) {
- config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
- }
-
- if (config._nextDay) {
- config._a[HOUR] = 24;
- }
- }
-
- function dayOfYearFromWeekInfo(config) {
- var w, weekYear, week, weekday, dow, doy, temp;
-
- w = config._w;
- if (w.GG != null || w.W != null || w.E != null) {
- dow = 1;
- doy = 4;
-
- // TODO: We need to take the current isoWeekYear, but that depends on
- // how we interpret now (local, utc, fixed offset). So create
- // a now version of current config (take local/utc/offset flags, and
- // create now).
- weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year);
- week = defaults(w.W, 1);
- weekday = defaults(w.E, 1);
- } else {
- dow = config._locale._week.dow;
- doy = config._locale._week.doy;
-
- weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year);
- week = defaults(w.w, 1);
-
- if (w.d != null) {
- // weekday -- low day numbers are considered next week
- weekday = w.d;
- if (weekday < dow) {
- ++week;
- }
- } else if (w.e != null) {
- // local weekday -- counting starts from begining of week
- weekday = w.e + dow;
- } else {
- // default to begining of week
- weekday = dow;
- }
- }
- temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow);
-
- config._a[YEAR] = temp.year;
- config._dayOfYear = temp.dayOfYear;
- }
-
- utils_hooks__hooks.ISO_8601 = function () {};
-
- // date from string and format string
- function configFromStringAndFormat(config) {
- // TODO: Move this to another part of the creation flow to prevent circular deps
- if (config._f === utils_hooks__hooks.ISO_8601) {
- configFromISO(config);
- return;
- }
-
- config._a = [];
- getParsingFlags(config).empty = true;
-
- // This array is used to make a Date, either with `new Date` or `Date.UTC`
- var string = '' + config._i,
- i, parsedInput, tokens, token, skipped,
- stringLength = string.length,
- totalParsedInputLength = 0;
-
- tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
-
- for (i = 0; i < tokens.length; i++) {
- token = tokens[i];
- parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
- if (parsedInput) {
- skipped = string.substr(0, string.indexOf(parsedInput));
- if (skipped.length > 0) {
- getParsingFlags(config).unusedInput.push(skipped);
- }
- string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
- totalParsedInputLength += parsedInput.length;
- }
- // don't parse if it's not a known token
- if (formatTokenFunctions[token]) {
- if (parsedInput) {
- getParsingFlags(config).empty = false;
- }
- else {
- getParsingFlags(config).unusedTokens.push(token);
- }
- addTimeToArrayFromToken(token, parsedInput, config);
- }
- else if (config._strict && !parsedInput) {
- getParsingFlags(config).unusedTokens.push(token);
- }
- }
-
- // add remaining unparsed input length to the string
- getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
- if (string.length > 0) {
- getParsingFlags(config).unusedInput.push(string);
- }
-
- // clear _12h flag if hour is <= 12
- if (getParsingFlags(config).bigHour === true &&
- config._a[HOUR] <= 12 &&
- config._a[HOUR] > 0) {
- getParsingFlags(config).bigHour = undefined;
- }
- // handle meridiem
- config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
-
- configFromArray(config);
- checkOverflow(config);
- }
-
-
- function meridiemFixWrap (locale, hour, meridiem) {
- var isPm;
-
- if (meridiem == null) {
- // nothing to do
- return hour;
- }
- if (locale.meridiemHour != null) {
- return locale.meridiemHour(hour, meridiem);
- } else if (locale.isPM != null) {
- // Fallback
- isPm = locale.isPM(meridiem);
- if (isPm && hour < 12) {
- hour += 12;
- }
- if (!isPm && hour === 12) {
- hour = 0;
- }
- return hour;
- } else {
- // this is not supposed to happen
- return hour;
- }
- }
-
- function configFromStringAndArray(config) {
- var tempConfig,
- bestMoment,
-
- scoreToBeat,
- i,
- currentScore;
-
- if (config._f.length === 0) {
- getParsingFlags(config).invalidFormat = true;
- config._d = new Date(NaN);
- return;
- }
-
- for (i = 0; i < config._f.length; i++) {
- currentScore = 0;
- tempConfig = copyConfig({}, config);
- if (config._useUTC != null) {
- tempConfig._useUTC = config._useUTC;
- }
- tempConfig._f = config._f[i];
- configFromStringAndFormat(tempConfig);
-
- if (!valid__isValid(tempConfig)) {
- continue;
- }
-
- // if there is any input that was not parsed add a penalty for that format
- currentScore += getParsingFlags(tempConfig).charsLeftOver;
-
- //or tokens
- currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
-
- getParsingFlags(tempConfig).score = currentScore;
-
- if (scoreToBeat == null || currentScore < scoreToBeat) {
- scoreToBeat = currentScore;
- bestMoment = tempConfig;
- }
- }
-
- extend(config, bestMoment || tempConfig);
- }
-
- function configFromObject(config) {
- if (config._d) {
- return;
- }
-
- var i = normalizeObjectUnits(config._i);
- config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond];
-
- configFromArray(config);
- }
-
- function createFromConfig (config) {
- var res = new Moment(checkOverflow(prepareConfig(config)));
- if (res._nextDay) {
- // Adding is smart enough around DST
- res.add(1, 'd');
- res._nextDay = undefined;
- }
-
- return res;
- }
-
- function prepareConfig (config) {
- var input = config._i,
- format = config._f;
-
- config._locale = config._locale || locale_locales__getLocale(config._l);
-
- if (input === null || (format === undefined && input === '')) {
- return valid__createInvalid({nullInput: true});
- }
-
- if (typeof input === 'string') {
- config._i = input = config._locale.preparse(input);
- }
-
- if (isMoment(input)) {
- return new Moment(checkOverflow(input));
- } else if (isArray(format)) {
- configFromStringAndArray(config);
- } else if (format) {
- configFromStringAndFormat(config);
- } else if (isDate(input)) {
- config._d = input;
- } else {
- configFromInput(config);
- }
-
- return config;
- }
-
- function configFromInput(config) {
- var input = config._i;
- if (input === undefined) {
- config._d = new Date();
- } else if (isDate(input)) {
- config._d = new Date(+input);
- } else if (typeof input === 'string') {
- configFromString(config);
- } else if (isArray(input)) {
- config._a = map(input.slice(0), function (obj) {
- return parseInt(obj, 10);
- });
- configFromArray(config);
- } else if (typeof(input) === 'object') {
- configFromObject(config);
- } else if (typeof(input) === 'number') {
- // from milliseconds
- config._d = new Date(input);
- } else {
- utils_hooks__hooks.createFromInputFallback(config);
- }
- }
-
- function createLocalOrUTC (input, format, locale, strict, isUTC) {
- var c = {};
-
- if (typeof(locale) === 'boolean') {
- strict = locale;
- locale = undefined;
- }
- // object construction must be done this way.
- // https://github.com/moment/moment/issues/1423
- c._isAMomentObject = true;
- c._useUTC = c._isUTC = isUTC;
- c._l = locale;
- c._i = input;
- c._f = format;
- c._strict = strict;
-
- return createFromConfig(c);
- }
-
- function local__createLocal (input, format, locale, strict) {
- return createLocalOrUTC(input, format, locale, strict, false);
- }
-
- var prototypeMin = deprecate(
- 'moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548',
- function () {
- var other = local__createLocal.apply(null, arguments);
- return other < this ? this : other;
- }
- );
-
- var prototypeMax = deprecate(
- 'moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548',
- function () {
- var other = local__createLocal.apply(null, arguments);
- return other > this ? this : other;
- }
- );
-
- // Pick a moment m from moments so that m[fn](other) is true for all
- // other. This relies on the function fn to be transitive.
- //
- // moments should either be an array of moment objects or an array, whose
- // first element is an array of moment objects.
- function pickBy(fn, moments) {
- var res, i;
- if (moments.length === 1 && isArray(moments[0])) {
- moments = moments[0];
- }
- if (!moments.length) {
- return local__createLocal();
- }
- res = moments[0];
- for (i = 1; i < moments.length; ++i) {
- if (!moments[i].isValid() || moments[i][fn](res)) {
- res = moments[i];
- }
- }
- return res;
- }
-
- // TODO: Use [].sort instead?
- function min () {
- var args = [].slice.call(arguments, 0);
-
- return pickBy('isBefore', args);
- }
-
- function max () {
- var args = [].slice.call(arguments, 0);
-
- return pickBy('isAfter', args);
- }
-
- function Duration (duration) {
- var normalizedInput = normalizeObjectUnits(duration),
- years = normalizedInput.year || 0,
- quarters = normalizedInput.quarter || 0,
- months = normalizedInput.month || 0,
- weeks = normalizedInput.week || 0,
- days = normalizedInput.day || 0,
- hours = normalizedInput.hour || 0,
- minutes = normalizedInput.minute || 0,
- seconds = normalizedInput.second || 0,
- milliseconds = normalizedInput.millisecond || 0;
-
- // representation for dateAddRemove
- this._milliseconds = +milliseconds +
- seconds * 1e3 + // 1000
- minutes * 6e4 + // 1000 * 60
- hours * 36e5; // 1000 * 60 * 60
- // Because of dateAddRemove treats 24 hours as different from a
- // day when working around DST, we need to store them separately
- this._days = +days +
- weeks * 7;
- // It is impossible translate months into days without knowing
- // which months you are are talking about, so we have to store
- // it separately.
- this._months = +months +
- quarters * 3 +
- years * 12;
-
- this._data = {};
-
- this._locale = locale_locales__getLocale();
-
- this._bubble();
- }
-
- function isDuration (obj) {
- return obj instanceof Duration;
- }
-
- function offset (token, separator) {
- addFormatToken(token, 0, 0, function () {
- var offset = this.utcOffset();
- var sign = '+';
- if (offset < 0) {
- offset = -offset;
- sign = '-';
- }
- return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
- });
- }
-
- offset('Z', ':');
- offset('ZZ', '');
-
- // PARSING
-
- addRegexToken('Z', matchOffset);
- addRegexToken('ZZ', matchOffset);
- addParseToken(['Z', 'ZZ'], function (input, array, config) {
- config._useUTC = true;
- config._tzm = offsetFromString(input);
- });
-
- // HELPERS
-
- // timezone chunker
- // '+10:00' > ['10', '00']
- // '-1530' > ['-15', '30']
- var chunkOffset = /([\+\-]|\d\d)/gi;
-
- function offsetFromString(string) {
- var matches = ((string || '').match(matchOffset) || []);
- var chunk = matches[matches.length - 1] || [];
- var parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
- var minutes = +(parts[1] * 60) + toInt(parts[2]);
-
- return parts[0] === '+' ? minutes : -minutes;
- }
-
- // Return a moment from input, that is local/utc/zone equivalent to model.
- function cloneWithOffset(input, model) {
- var res, diff;
- if (model._isUTC) {
- res = model.clone();
- diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - (+res);
- // Use low-level api, because this fn is low-level api.
- res._d.setTime(+res._d + diff);
- utils_hooks__hooks.updateOffset(res, false);
- return res;
- } else {
- return local__createLocal(input).local();
- }
- }
-
- function getDateOffset (m) {
- // On Firefox.24 Date#getTimezoneOffset returns a floating point.
- // https://github.com/moment/moment/pull/1871
- return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
- }
-
- // HOOKS
-
- // This function will be called whenever a moment is mutated.
- // It is intended to keep the offset in sync with the timezone.
- utils_hooks__hooks.updateOffset = function () {};
-
- // MOMENTS
-
- // keepLocalTime = true means only change the timezone, without
- // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
- // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
- // +0200, so we adjust the time as needed, to be valid.
- //
- // Keeping the time actually adds/subtracts (one hour)
- // from the actual represented time. That is why we call updateOffset
- // a second time. In case it wants us to change the offset again
- // _changeInProgress == true case, then we have to adjust, because
- // there is no such time in the given timezone.
- function getSetOffset (input, keepLocalTime) {
- var offset = this._offset || 0,
- localAdjust;
- if (input != null) {
- if (typeof input === 'string') {
- input = offsetFromString(input);
- }
- if (Math.abs(input) < 16) {
- input = input * 60;
- }
- if (!this._isUTC && keepLocalTime) {
- localAdjust = getDateOffset(this);
- }
- this._offset = input;
- this._isUTC = true;
- if (localAdjust != null) {
- this.add(localAdjust, 'm');
- }
- if (offset !== input) {
- if (!keepLocalTime || this._changeInProgress) {
- add_subtract__addSubtract(this, create__createDuration(input - offset, 'm'), 1, false);
- } else if (!this._changeInProgress) {
- this._changeInProgress = true;
- utils_hooks__hooks.updateOffset(this, true);
- this._changeInProgress = null;
- }
- }
- return this;
- } else {
- return this._isUTC ? offset : getDateOffset(this);
- }
- }
-
- function getSetZone (input, keepLocalTime) {
- if (input != null) {
- if (typeof input !== 'string') {
- input = -input;
- }
-
- this.utcOffset(input, keepLocalTime);
-
- return this;
- } else {
- return -this.utcOffset();
- }
- }
-
- function setOffsetToUTC (keepLocalTime) {
- return this.utcOffset(0, keepLocalTime);
- }
-
- function setOffsetToLocal (keepLocalTime) {
- if (this._isUTC) {
- this.utcOffset(0, keepLocalTime);
- this._isUTC = false;
-
- if (keepLocalTime) {
- this.subtract(getDateOffset(this), 'm');
- }
- }
- return this;
- }
-
- function setOffsetToParsedOffset () {
- if (this._tzm) {
- this.utcOffset(this._tzm);
- } else if (typeof this._i === 'string') {
- this.utcOffset(offsetFromString(this._i));
- }
- return this;
- }
-
- function hasAlignedHourOffset (input) {
- input = input ? local__createLocal(input).utcOffset() : 0;
-
- return (this.utcOffset() - input) % 60 === 0;
- }
-
- function isDaylightSavingTime () {
- return (
- this.utcOffset() > this.clone().month(0).utcOffset() ||
- this.utcOffset() > this.clone().month(5).utcOffset()
- );
- }
-
- function isDaylightSavingTimeShifted () {
- if (typeof this._isDSTShifted !== 'undefined') {
- return this._isDSTShifted;
- }
-
- var c = {};
-
- copyConfig(c, this);
- c = prepareConfig(c);
-
- if (c._a) {
- var other = c._isUTC ? create_utc__createUTC(c._a) : local__createLocal(c._a);
- this._isDSTShifted = this.isValid() &&
- compareArrays(c._a, other.toArray()) > 0;
- } else {
- this._isDSTShifted = false;
- }
-
- return this._isDSTShifted;
- }
-
- function isLocal () {
- return !this._isUTC;
- }
-
- function isUtcOffset () {
- return this._isUTC;
- }
-
- function isUtc () {
- return this._isUTC && this._offset === 0;
- }
-
- var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/;
-
- // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
- // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
- var create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
-
- function create__createDuration (input, key) {
- var duration = input,
- // matching against regexp is expensive, do it on demand
- match = null,
- sign,
- ret,
- diffRes;
-
- if (isDuration(input)) {
- duration = {
- ms : input._milliseconds,
- d : input._days,
- M : input._months
- };
- } else if (typeof input === 'number') {
- duration = {};
- if (key) {
- duration[key] = input;
- } else {
- duration.milliseconds = input;
- }
- } else if (!!(match = aspNetRegex.exec(input))) {
- sign = (match[1] === '-') ? -1 : 1;
- duration = {
- y : 0,
- d : toInt(match[DATE]) * sign,
- h : toInt(match[HOUR]) * sign,
- m : toInt(match[MINUTE]) * sign,
- s : toInt(match[SECOND]) * sign,
- ms : toInt(match[MILLISECOND]) * sign
- };
- } else if (!!(match = create__isoRegex.exec(input))) {
- sign = (match[1] === '-') ? -1 : 1;
- duration = {
- y : parseIso(match[2], sign),
- M : parseIso(match[3], sign),
- d : parseIso(match[4], sign),
- h : parseIso(match[5], sign),
- m : parseIso(match[6], sign),
- s : parseIso(match[7], sign),
- w : parseIso(match[8], sign)
- };
- } else if (duration == null) {// checks for null or undefined
- duration = {};
- } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
- diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to));
-
- duration = {};
- duration.ms = diffRes.milliseconds;
- duration.M = diffRes.months;
- }
-
- ret = new Duration(duration);
-
- if (isDuration(input) && hasOwnProp(input, '_locale')) {
- ret._locale = input._locale;
- }
-
- return ret;
- }
-
- create__createDuration.fn = Duration.prototype;
-
- function parseIso (inp, sign) {
- // We'd normally use ~~inp for this, but unfortunately it also
- // converts floats to ints.
- // inp may be undefined, so careful calling replace on it.
- var res = inp && parseFloat(inp.replace(',', '.'));
- // apply sign while we're at it
- return (isNaN(res) ? 0 : res) * sign;
- }
-
- function positiveMomentsDifference(base, other) {
- var res = {milliseconds: 0, months: 0};
-
- res.months = other.month() - base.month() +
- (other.year() - base.year()) * 12;
- if (base.clone().add(res.months, 'M').isAfter(other)) {
- --res.months;
- }
-
- res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
-
- return res;
- }
-
- function momentsDifference(base, other) {
- var res;
- other = cloneWithOffset(other, base);
- if (base.isBefore(other)) {
- res = positiveMomentsDifference(base, other);
- } else {
- res = positiveMomentsDifference(other, base);
- res.milliseconds = -res.milliseconds;
- res.months = -res.months;
- }
-
- return res;
- }
-
- function createAdder(direction, name) {
- return function (val, period) {
- var dur, tmp;
- //invert the arguments, but complain about it
- if (period !== null && !isNaN(+period)) {
- deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period).');
- tmp = val; val = period; period = tmp;
- }
-
- val = typeof val === 'string' ? +val : val;
- dur = create__createDuration(val, period);
- add_subtract__addSubtract(this, dur, direction);
- return this;
- };
- }
-
- function add_subtract__addSubtract (mom, duration, isAdding, updateOffset) {
- var milliseconds = duration._milliseconds,
- days = duration._days,
- months = duration._months;
- updateOffset = updateOffset == null ? true : updateOffset;
-
- if (milliseconds) {
- mom._d.setTime(+mom._d + milliseconds * isAdding);
- }
- if (days) {
- get_set__set(mom, 'Date', get_set__get(mom, 'Date') + days * isAdding);
- }
- if (months) {
- setMonth(mom, get_set__get(mom, 'Month') + months * isAdding);
- }
- if (updateOffset) {
- utils_hooks__hooks.updateOffset(mom, days || months);
- }
- }
-
- var add_subtract__add = createAdder(1, 'add');
- var add_subtract__subtract = createAdder(-1, 'subtract');
-
- function moment_calendar__calendar (time, formats) {
- // We want to compare the start of today, vs this.
- // Getting start-of-today depends on whether we're local/utc/offset or not.
- var now = time || local__createLocal(),
- sod = cloneWithOffset(now, this).startOf('day'),
- diff = this.diff(sod, 'days', true),
- format = diff < -6 ? 'sameElse' :
- diff < -1 ? 'lastWeek' :
- diff < 0 ? 'lastDay' :
- diff < 1 ? 'sameDay' :
- diff < 2 ? 'nextDay' :
- diff < 7 ? 'nextWeek' : 'sameElse';
- return this.format(formats && formats[format] || this.localeData().calendar(format, this, local__createLocal(now)));
- }
-
- function clone () {
- return new Moment(this);
- }
-
- function isAfter (input, units) {
- var inputMs;
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = isMoment(input) ? input : local__createLocal(input);
- return +this > +input;
- } else {
- inputMs = isMoment(input) ? +input : +local__createLocal(input);
- return inputMs < +this.clone().startOf(units);
- }
- }
-
- function isBefore (input, units) {
- var inputMs;
- units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond');
- if (units === 'millisecond') {
- input = isMoment(input) ? input : local__createLocal(input);
- return +this < +input;
- } else {
- inputMs = isMoment(input) ? +input : +local__createLocal(input);
- return +this.clone().endOf(units) < inputMs;
- }
- }
-
- function isBetween (from, to, units) {
- return this.isAfter(from, units) && this.isBefore(to, units);
- }
-
- function isSame (input, units) {
- var inputMs;
- units = normalizeUnits(units || 'millisecond');
- if (units === 'millisecond') {
- input = isMoment(input) ? input : local__createLocal(input);
- return +this === +input;
- } else {
- inputMs = +local__createLocal(input);
- return +(this.clone().startOf(units)) <= inputMs && inputMs <= +(this.clone().endOf(units));
- }
- }
-
- function diff (input, units, asFloat) {
- var that = cloneWithOffset(input, this),
- zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4,
- delta, output;
-
- units = normalizeUnits(units);
-
- if (units === 'year' || units === 'month' || units === 'quarter') {
- output = monthDiff(this, that);
- if (units === 'quarter') {
- output = output / 3;
- } else if (units === 'year') {
- output = output / 12;
- }
- } else {
- delta = this - that;
- output = units === 'second' ? delta / 1e3 : // 1000
- units === 'minute' ? delta / 6e4 : // 1000 * 60
- units === 'hour' ? delta / 36e5 : // 1000 * 60 * 60
- units === 'day' ? (delta - zoneDelta) / 864e5 : // 1000 * 60 * 60 * 24, negate dst
- units === 'week' ? (delta - zoneDelta) / 6048e5 : // 1000 * 60 * 60 * 24 * 7, negate dst
- delta;
- }
- return asFloat ? output : absFloor(output);
- }
-
- function monthDiff (a, b) {
- // difference in months
- var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
- // b is in (anchor - 1 month, anchor + 1 month)
- anchor = a.clone().add(wholeMonthDiff, 'months'),
- anchor2, adjust;
-
- if (b - anchor < 0) {
- anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
- // linear across the month
- adjust = (b - anchor) / (anchor - anchor2);
- } else {
- anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
- // linear across the month
- adjust = (b - anchor) / (anchor2 - anchor);
- }
-
- return -(wholeMonthDiff + adjust);
- }
-
- utils_hooks__hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
-
- function toString () {
- return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
- }
-
- function moment_format__toISOString () {
- var m = this.clone().utc();
- if (0 < m.year() && m.year() <= 9999) {
- if ('function' === typeof Date.prototype.toISOString) {
- // native implementation is ~50x faster, use it when we can
- return this.toDate().toISOString();
- } else {
- return formatMoment(m, 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- }
- } else {
- return formatMoment(m, 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]');
- }
- }
-
- function format (inputString) {
- var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
- return this.localeData().postformat(output);
- }
-
- function from (time, withoutSuffix) {
- if (!this.isValid()) {
- return this.localeData().invalidDate();
- }
- return create__createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
- }
-
- function fromNow (withoutSuffix) {
- return this.from(local__createLocal(), withoutSuffix);
- }
-
- function to (time, withoutSuffix) {
- if (!this.isValid()) {
- return this.localeData().invalidDate();
- }
- return create__createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
- }
-
- function toNow (withoutSuffix) {
- return this.to(local__createLocal(), withoutSuffix);
- }
-
- function locale (key) {
- var newLocaleData;
-
- if (key === undefined) {
- return this._locale._abbr;
- } else {
- newLocaleData = locale_locales__getLocale(key);
- if (newLocaleData != null) {
- this._locale = newLocaleData;
- }
- return this;
- }
- }
-
- var lang = deprecate(
- 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
- function (key) {
- if (key === undefined) {
- return this.localeData();
- } else {
- return this.locale(key);
- }
- }
- );
-
- function localeData () {
- return this._locale;
- }
-
- function startOf (units) {
- units = normalizeUnits(units);
- // the following switch intentionally omits break keywords
- // to utilize falling through the cases.
- switch (units) {
- case 'year':
- this.month(0);
- /* falls through */
- case 'quarter':
- case 'month':
- this.date(1);
- /* falls through */
- case 'week':
- case 'isoWeek':
- case 'day':
- this.hours(0);
- /* falls through */
- case 'hour':
- this.minutes(0);
- /* falls through */
- case 'minute':
- this.seconds(0);
- /* falls through */
- case 'second':
- this.milliseconds(0);
- }
-
- // weeks are a special case
- if (units === 'week') {
- this.weekday(0);
- }
- if (units === 'isoWeek') {
- this.isoWeekday(1);
- }
-
- // quarters are also special
- if (units === 'quarter') {
- this.month(Math.floor(this.month() / 3) * 3);
- }
-
- return this;
- }
-
- function endOf (units) {
- units = normalizeUnits(units);
- if (units === undefined || units === 'millisecond') {
- return this;
- }
- return this.startOf(units).add(1, (units === 'isoWeek' ? 'week' : units)).subtract(1, 'ms');
- }
-
- function to_type__valueOf () {
- return +this._d - ((this._offset || 0) * 60000);
- }
-
- function unix () {
- return Math.floor(+this / 1000);
- }
-
- function toDate () {
- return this._offset ? new Date(+this) : this._d;
- }
-
- function toArray () {
- var m = this;
- return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
- }
-
- function toObject () {
- var m = this;
- return {
- years: m.year(),
- months: m.month(),
- date: m.date(),
- hours: m.hours(),
- minutes: m.minutes(),
- seconds: m.seconds(),
- milliseconds: m.milliseconds()
- };
- }
-
- function moment_valid__isValid () {
- return valid__isValid(this);
- }
-
- function parsingFlags () {
- return extend({}, getParsingFlags(this));
- }
-
- function invalidAt () {
- return getParsingFlags(this).overflow;
- }
-
- addFormatToken(0, ['gg', 2], 0, function () {
- return this.weekYear() % 100;
- });
-
- addFormatToken(0, ['GG', 2], 0, function () {
- return this.isoWeekYear() % 100;
- });
-
- function addWeekYearFormatToken (token, getter) {
- addFormatToken(0, [token, token.length], 0, getter);
- }
-
- addWeekYearFormatToken('gggg', 'weekYear');
- addWeekYearFormatToken('ggggg', 'weekYear');
- addWeekYearFormatToken('GGGG', 'isoWeekYear');
- addWeekYearFormatToken('GGGGG', 'isoWeekYear');
-
- // ALIASES
-
- addUnitAlias('weekYear', 'gg');
- addUnitAlias('isoWeekYear', 'GG');
-
- // PARSING
-
- addRegexToken('G', matchSigned);
- addRegexToken('g', matchSigned);
- addRegexToken('GG', match1to2, match2);
- addRegexToken('gg', match1to2, match2);
- addRegexToken('GGGG', match1to4, match4);
- addRegexToken('gggg', match1to4, match4);
- addRegexToken('GGGGG', match1to6, match6);
- addRegexToken('ggggg', match1to6, match6);
-
- addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
- week[token.substr(0, 2)] = toInt(input);
- });
-
- addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
- week[token] = utils_hooks__hooks.parseTwoDigitYear(input);
- });
-
- // HELPERS
-
- function weeksInYear(year, dow, doy) {
- return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week;
- }
-
- // MOMENTS
-
- function getSetWeekYear (input) {
- var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
- return input == null ? year : this.add((input - year), 'y');
- }
-
- function getSetISOWeekYear (input) {
- var year = weekOfYear(this, 1, 4).year;
- return input == null ? year : this.add((input - year), 'y');
- }
-
- function getISOWeeksInYear () {
- return weeksInYear(this.year(), 1, 4);
- }
-
- function getWeeksInYear () {
- var weekInfo = this.localeData()._week;
- return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
- }
-
- addFormatToken('Q', 0, 0, 'quarter');
-
- // ALIASES
-
- addUnitAlias('quarter', 'Q');
-
- // PARSING
-
- addRegexToken('Q', match1);
- addParseToken('Q', function (input, array) {
- array[MONTH] = (toInt(input) - 1) * 3;
- });
-
- // MOMENTS
-
- function getSetQuarter (input) {
- return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
- }
-
- addFormatToken('D', ['DD', 2], 'Do', 'date');
-
- // ALIASES
-
- addUnitAlias('date', 'D');
-
- // PARSING
-
- addRegexToken('D', match1to2);
- addRegexToken('DD', match1to2, match2);
- addRegexToken('Do', function (isStrict, locale) {
- return isStrict ? locale._ordinalParse : locale._ordinalParseLenient;
- });
-
- addParseToken(['D', 'DD'], DATE);
- addParseToken('Do', function (input, array) {
- array[DATE] = toInt(input.match(match1to2)[0], 10);
- });
-
- // MOMENTS
-
- var getSetDayOfMonth = makeGetSet('Date', true);
-
- addFormatToken('d', 0, 'do', 'day');
-
- addFormatToken('dd', 0, 0, function (format) {
- return this.localeData().weekdaysMin(this, format);
- });
-
- addFormatToken('ddd', 0, 0, function (format) {
- return this.localeData().weekdaysShort(this, format);
- });
-
- addFormatToken('dddd', 0, 0, function (format) {
- return this.localeData().weekdays(this, format);
- });
-
- addFormatToken('e', 0, 0, 'weekday');
- addFormatToken('E', 0, 0, 'isoWeekday');
-
- // ALIASES
-
- addUnitAlias('day', 'd');
- addUnitAlias('weekday', 'e');
- addUnitAlias('isoWeekday', 'E');
-
- // PARSING
-
- addRegexToken('d', match1to2);
- addRegexToken('e', match1to2);
- addRegexToken('E', match1to2);
- addRegexToken('dd', matchWord);
- addRegexToken('ddd', matchWord);
- addRegexToken('dddd', matchWord);
-
- addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config) {
- var weekday = config._locale.weekdaysParse(input);
- // if we didn't get a weekday name, mark the date as invalid
- if (weekday != null) {
- week.d = weekday;
- } else {
- getParsingFlags(config).invalidWeekday = input;
- }
- });
-
- addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
- week[token] = toInt(input);
- });
-
- // HELPERS
-
- function parseWeekday(input, locale) {
- if (typeof input !== 'string') {
- return input;
- }
-
- if (!isNaN(input)) {
- return parseInt(input, 10);
- }
-
- input = locale.weekdaysParse(input);
- if (typeof input === 'number') {
- return input;
- }
-
- return null;
- }
-
- // LOCALES
-
- var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
- function localeWeekdays (m) {
- return this._weekdays[m.day()];
- }
-
- var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
- function localeWeekdaysShort (m) {
- return this._weekdaysShort[m.day()];
- }
-
- var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
- function localeWeekdaysMin (m) {
- return this._weekdaysMin[m.day()];
- }
-
- function localeWeekdaysParse (weekdayName) {
- var i, mom, regex;
-
- this._weekdaysParse = this._weekdaysParse || [];
-
- for (i = 0; i < 7; i++) {
- // make the regex if we don't have it already
- if (!this._weekdaysParse[i]) {
- mom = local__createLocal([2000, 1]).day(i);
- regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
- this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
- }
- // test the regex
- if (this._weekdaysParse[i].test(weekdayName)) {
- return i;
- }
- }
- }
-
- // MOMENTS
-
- function getSetDayOfWeek (input) {
- var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
- if (input != null) {
- input = parseWeekday(input, this.localeData());
- return this.add(input - day, 'd');
- } else {
- return day;
- }
- }
-
- function getSetLocaleDayOfWeek (input) {
- var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
- return input == null ? weekday : this.add(input - weekday, 'd');
- }
-
- function getSetISODayOfWeek (input) {
- // behaves the same as moment#day except
- // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
- // as a setter, sunday should belong to the previous week.
- return input == null ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7);
- }
-
- addFormatToken('H', ['HH', 2], 0, 'hour');
- addFormatToken('h', ['hh', 2], 0, function () {
- return this.hours() % 12 || 12;
- });
-
- function meridiem (token, lowercase) {
- addFormatToken(token, 0, 0, function () {
- return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
- });
- }
-
- meridiem('a', true);
- meridiem('A', false);
-
- // ALIASES
-
- addUnitAlias('hour', 'h');
-
- // PARSING
-
- function matchMeridiem (isStrict, locale) {
- return locale._meridiemParse;
- }
-
- addRegexToken('a', matchMeridiem);
- addRegexToken('A', matchMeridiem);
- addRegexToken('H', match1to2);
- addRegexToken('h', match1to2);
- addRegexToken('HH', match1to2, match2);
- addRegexToken('hh', match1to2, match2);
-
- addParseToken(['H', 'HH'], HOUR);
- addParseToken(['a', 'A'], function (input, array, config) {
- config._isPm = config._locale.isPM(input);
- config._meridiem = input;
- });
- addParseToken(['h', 'hh'], function (input, array, config) {
- array[HOUR] = toInt(input);
- getParsingFlags(config).bigHour = true;
- });
-
- // LOCALES
-
- function localeIsPM (input) {
- // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
- // Using charAt should be more compatible.
- return ((input + '').toLowerCase().charAt(0) === 'p');
- }
-
- var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
- function localeMeridiem (hours, minutes, isLower) {
- if (hours > 11) {
- return isLower ? 'pm' : 'PM';
- } else {
- return isLower ? 'am' : 'AM';
- }
- }
-
-
- // MOMENTS
-
- // Setting the hour should keep the time, because the user explicitly
- // specified which hour he wants. So trying to maintain the same hour (in
- // a new timezone) makes sense. Adding/subtracting hours does not follow
- // this rule.
- var getSetHour = makeGetSet('Hours', true);
-
- addFormatToken('m', ['mm', 2], 0, 'minute');
-
- // ALIASES
-
- addUnitAlias('minute', 'm');
-
- // PARSING
-
- addRegexToken('m', match1to2);
- addRegexToken('mm', match1to2, match2);
- addParseToken(['m', 'mm'], MINUTE);
-
- // MOMENTS
-
- var getSetMinute = makeGetSet('Minutes', false);
-
- addFormatToken('s', ['ss', 2], 0, 'second');
-
- // ALIASES
-
- addUnitAlias('second', 's');
-
- // PARSING
-
- addRegexToken('s', match1to2);
- addRegexToken('ss', match1to2, match2);
- addParseToken(['s', 'ss'], SECOND);
-
- // MOMENTS
-
- var getSetSecond = makeGetSet('Seconds', false);
-
- addFormatToken('S', 0, 0, function () {
- return ~~(this.millisecond() / 100);
- });
-
- addFormatToken(0, ['SS', 2], 0, function () {
- return ~~(this.millisecond() / 10);
- });
-
- addFormatToken(0, ['SSS', 3], 0, 'millisecond');
- addFormatToken(0, ['SSSS', 4], 0, function () {
- return this.millisecond() * 10;
- });
- addFormatToken(0, ['SSSSS', 5], 0, function () {
- return this.millisecond() * 100;
- });
- addFormatToken(0, ['SSSSSS', 6], 0, function () {
- return this.millisecond() * 1000;
- });
- addFormatToken(0, ['SSSSSSS', 7], 0, function () {
- return this.millisecond() * 10000;
- });
- addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
- return this.millisecond() * 100000;
- });
- addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
- return this.millisecond() * 1000000;
- });
-
-
- // ALIASES
-
- addUnitAlias('millisecond', 'ms');
-
- // PARSING
-
- addRegexToken('S', match1to3, match1);
- addRegexToken('SS', match1to3, match2);
- addRegexToken('SSS', match1to3, match3);
-
- var token;
- for (token = 'SSSS'; token.length <= 9; token += 'S') {
- addRegexToken(token, matchUnsigned);
- }
-
- function parseMs(input, array) {
- array[MILLISECOND] = toInt(('0.' + input) * 1000);
- }
-
- for (token = 'S'; token.length <= 9; token += 'S') {
- addParseToken(token, parseMs);
- }
- // MOMENTS
-
- var getSetMillisecond = makeGetSet('Milliseconds', false);
-
- addFormatToken('z', 0, 0, 'zoneAbbr');
- addFormatToken('zz', 0, 0, 'zoneName');
-
- // MOMENTS
-
- function getZoneAbbr () {
- return this._isUTC ? 'UTC' : '';
- }
-
- function getZoneName () {
- return this._isUTC ? 'Coordinated Universal Time' : '';
- }
-
- var momentPrototype__proto = Moment.prototype;
-
- momentPrototype__proto.add = add_subtract__add;
- momentPrototype__proto.calendar = moment_calendar__calendar;
- momentPrototype__proto.clone = clone;
- momentPrototype__proto.diff = diff;
- momentPrototype__proto.endOf = endOf;
- momentPrototype__proto.format = format;
- momentPrototype__proto.from = from;
- momentPrototype__proto.fromNow = fromNow;
- momentPrototype__proto.to = to;
- momentPrototype__proto.toNow = toNow;
- momentPrototype__proto.get = getSet;
- momentPrototype__proto.invalidAt = invalidAt;
- momentPrototype__proto.isAfter = isAfter;
- momentPrototype__proto.isBefore = isBefore;
- momentPrototype__proto.isBetween = isBetween;
- momentPrototype__proto.isSame = isSame;
- momentPrototype__proto.isValid = moment_valid__isValid;
- momentPrototype__proto.lang = lang;
- momentPrototype__proto.locale = locale;
- momentPrototype__proto.localeData = localeData;
- momentPrototype__proto.max = prototypeMax;
- momentPrototype__proto.min = prototypeMin;
- momentPrototype__proto.parsingFlags = parsingFlags;
- momentPrototype__proto.set = getSet;
- momentPrototype__proto.startOf = startOf;
- momentPrototype__proto.subtract = add_subtract__subtract;
- momentPrototype__proto.toArray = toArray;
- momentPrototype__proto.toObject = toObject;
- momentPrototype__proto.toDate = toDate;
- momentPrototype__proto.toISOString = moment_format__toISOString;
- momentPrototype__proto.toJSON = moment_format__toISOString;
- momentPrototype__proto.toString = toString;
- momentPrototype__proto.unix = unix;
- momentPrototype__proto.valueOf = to_type__valueOf;
-
- // Year
- momentPrototype__proto.year = getSetYear;
- momentPrototype__proto.isLeapYear = getIsLeapYear;
-
- // Week Year
- momentPrototype__proto.weekYear = getSetWeekYear;
- momentPrototype__proto.isoWeekYear = getSetISOWeekYear;
-
- // Quarter
- momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter;
-
- // Month
- momentPrototype__proto.month = getSetMonth;
- momentPrototype__proto.daysInMonth = getDaysInMonth;
-
- // Week
- momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek;
- momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek;
- momentPrototype__proto.weeksInYear = getWeeksInYear;
- momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear;
-
- // Day
- momentPrototype__proto.date = getSetDayOfMonth;
- momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek;
- momentPrototype__proto.weekday = getSetLocaleDayOfWeek;
- momentPrototype__proto.isoWeekday = getSetISODayOfWeek;
- momentPrototype__proto.dayOfYear = getSetDayOfYear;
-
- // Hour
- momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour;
-
- // Minute
- momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute;
-
- // Second
- momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond;
-
- // Millisecond
- momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond;
-
- // Offset
- momentPrototype__proto.utcOffset = getSetOffset;
- momentPrototype__proto.utc = setOffsetToUTC;
- momentPrototype__proto.local = setOffsetToLocal;
- momentPrototype__proto.parseZone = setOffsetToParsedOffset;
- momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset;
- momentPrototype__proto.isDST = isDaylightSavingTime;
- momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted;
- momentPrototype__proto.isLocal = isLocal;
- momentPrototype__proto.isUtcOffset = isUtcOffset;
- momentPrototype__proto.isUtc = isUtc;
- momentPrototype__proto.isUTC = isUtc;
-
- // Timezone
- momentPrototype__proto.zoneAbbr = getZoneAbbr;
- momentPrototype__proto.zoneName = getZoneName;
-
- // Deprecations
- momentPrototype__proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
- momentPrototype__proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
- momentPrototype__proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
- momentPrototype__proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779', getSetZone);
-
- var momentPrototype = momentPrototype__proto;
-
- function moment__createUnix (input) {
- return local__createLocal(input * 1000);
- }
-
- function moment__createInZone () {
- return local__createLocal.apply(null, arguments).parseZone();
- }
-
- var defaultCalendar = {
- sameDay : '[Today at] LT',
- nextDay : '[Tomorrow at] LT',
- nextWeek : 'dddd [at] LT',
- lastDay : '[Yesterday at] LT',
- lastWeek : '[Last] dddd [at] LT',
- sameElse : 'L'
- };
-
- function locale_calendar__calendar (key, mom, now) {
- var output = this._calendar[key];
- return typeof output === 'function' ? output.call(mom, now) : output;
- }
-
- var defaultLongDateFormat = {
- LTS : 'h:mm:ss A',
- LT : 'h:mm A',
- L : 'MM/DD/YYYY',
- LL : 'MMMM D, YYYY',
- LLL : 'MMMM D, YYYY h:mm A',
- LLLL : 'dddd, MMMM D, YYYY h:mm A'
- };
-
- function longDateFormat (key) {
- var format = this._longDateFormat[key],
- formatUpper = this._longDateFormat[key.toUpperCase()];
-
- if (format || !formatUpper) {
- return format;
- }
-
- this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
- return val.slice(1);
- });
-
- return this._longDateFormat[key];
- }
-
- var defaultInvalidDate = 'Invalid date';
-
- function invalidDate () {
- return this._invalidDate;
- }
-
- var defaultOrdinal = '%d';
- var defaultOrdinalParse = /\d{1,2}/;
-
- function ordinal (number) {
- return this._ordinal.replace('%d', number);
- }
-
- function preParsePostFormat (string) {
- return string;
- }
-
- var defaultRelativeTime = {
- future : 'in %s',
- past : '%s ago',
- s : 'a few seconds',
- m : 'a minute',
- mm : '%d minutes',
- h : 'an hour',
- hh : '%d hours',
- d : 'a day',
- dd : '%d days',
- M : 'a month',
- MM : '%d months',
- y : 'a year',
- yy : '%d years'
- };
-
- function relative__relativeTime (number, withoutSuffix, string, isFuture) {
- var output = this._relativeTime[string];
- return (typeof output === 'function') ?
- output(number, withoutSuffix, string, isFuture) :
- output.replace(/%d/i, number);
- }
-
- function pastFuture (diff, output) {
- var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
- return typeof format === 'function' ? format(output) : format.replace(/%s/i, output);
- }
-
- function locale_set__set (config) {
- var prop, i;
- for (i in config) {
- prop = config[i];
- if (typeof prop === 'function') {
- this[i] = prop;
- } else {
- this['_' + i] = prop;
- }
- }
- // Lenient ordinal parsing accepts just a number in addition to
- // number + (possibly) stuff coming from _ordinalParseLenient.
- this._ordinalParseLenient = new RegExp(this._ordinalParse.source + '|' + (/\d{1,2}/).source);
- }
-
- var prototype__proto = Locale.prototype;
-
- prototype__proto._calendar = defaultCalendar;
- prototype__proto.calendar = locale_calendar__calendar;
- prototype__proto._longDateFormat = defaultLongDateFormat;
- prototype__proto.longDateFormat = longDateFormat;
- prototype__proto._invalidDate = defaultInvalidDate;
- prototype__proto.invalidDate = invalidDate;
- prototype__proto._ordinal = defaultOrdinal;
- prototype__proto.ordinal = ordinal;
- prototype__proto._ordinalParse = defaultOrdinalParse;
- prototype__proto.preparse = preParsePostFormat;
- prototype__proto.postformat = preParsePostFormat;
- prototype__proto._relativeTime = defaultRelativeTime;
- prototype__proto.relativeTime = relative__relativeTime;
- prototype__proto.pastFuture = pastFuture;
- prototype__proto.set = locale_set__set;
-
- // Month
- prototype__proto.months = localeMonths;
- prototype__proto._months = defaultLocaleMonths;
- prototype__proto.monthsShort = localeMonthsShort;
- prototype__proto._monthsShort = defaultLocaleMonthsShort;
- prototype__proto.monthsParse = localeMonthsParse;
-
- // Week
- prototype__proto.week = localeWeek;
- prototype__proto._week = defaultLocaleWeek;
- prototype__proto.firstDayOfYear = localeFirstDayOfYear;
- prototype__proto.firstDayOfWeek = localeFirstDayOfWeek;
-
- // Day of Week
- prototype__proto.weekdays = localeWeekdays;
- prototype__proto._weekdays = defaultLocaleWeekdays;
- prototype__proto.weekdaysMin = localeWeekdaysMin;
- prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin;
- prototype__proto.weekdaysShort = localeWeekdaysShort;
- prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort;
- prototype__proto.weekdaysParse = localeWeekdaysParse;
-
- // Hours
- prototype__proto.isPM = localeIsPM;
- prototype__proto._meridiemParse = defaultLocaleMeridiemParse;
- prototype__proto.meridiem = localeMeridiem;
-
- function lists__get (format, index, field, setter) {
- var locale = locale_locales__getLocale();
- var utc = create_utc__createUTC().set(setter, index);
- return locale[field](utc, format);
- }
-
- function list (format, index, field, count, setter) {
- if (typeof format === 'number') {
- index = format;
- format = undefined;
- }
-
- format = format || '';
-
- if (index != null) {
- return lists__get(format, index, field, setter);
- }
-
- var i;
- var out = [];
- for (i = 0; i < count; i++) {
- out[i] = lists__get(format, i, field, setter);
- }
- return out;
- }
-
- function lists__listMonths (format, index) {
- return list(format, index, 'months', 12, 'month');
- }
-
- function lists__listMonthsShort (format, index) {
- return list(format, index, 'monthsShort', 12, 'month');
- }
-
- function lists__listWeekdays (format, index) {
- return list(format, index, 'weekdays', 7, 'day');
- }
-
- function lists__listWeekdaysShort (format, index) {
- return list(format, index, 'weekdaysShort', 7, 'day');
- }
-
- function lists__listWeekdaysMin (format, index) {
- return list(format, index, 'weekdaysMin', 7, 'day');
- }
-
- locale_locales__getSetGlobalLocale('en', {
- ordinalParse: /\d{1,2}(th|st|nd|rd)/,
- ordinal : function (number) {
- var b = number % 10,
- output = (toInt(number % 100 / 10) === 1) ? 'th' :
- (b === 1) ? 'st' :
- (b === 2) ? 'nd' :
- (b === 3) ? 'rd' : 'th';
- return number + output;
- }
- });
-
- // Side effect imports
- utils_hooks__hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', locale_locales__getSetGlobalLocale);
- utils_hooks__hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', locale_locales__getLocale);
-
- var mathAbs = Math.abs;
-
- function duration_abs__abs () {
- var data = this._data;
-
- this._milliseconds = mathAbs(this._milliseconds);
- this._days = mathAbs(this._days);
- this._months = mathAbs(this._months);
-
- data.milliseconds = mathAbs(data.milliseconds);
- data.seconds = mathAbs(data.seconds);
- data.minutes = mathAbs(data.minutes);
- data.hours = mathAbs(data.hours);
- data.months = mathAbs(data.months);
- data.years = mathAbs(data.years);
-
- return this;
- }
-
- function duration_add_subtract__addSubtract (duration, input, value, direction) {
- var other = create__createDuration(input, value);
-
- duration._milliseconds += direction * other._milliseconds;
- duration._days += direction * other._days;
- duration._months += direction * other._months;
-
- return duration._bubble();
- }
-
- // supports only 2.0-style add(1, 's') or add(duration)
- function duration_add_subtract__add (input, value) {
- return duration_add_subtract__addSubtract(this, input, value, 1);
- }
-
- // supports only 2.0-style subtract(1, 's') or subtract(duration)
- function duration_add_subtract__subtract (input, value) {
- return duration_add_subtract__addSubtract(this, input, value, -1);
- }
-
- function absCeil (number) {
- if (number < 0) {
- return Math.floor(number);
- } else {
- return Math.ceil(number);
- }
- }
-
- function bubble () {
- var milliseconds = this._milliseconds;
- var days = this._days;
- var months = this._months;
- var data = this._data;
- var seconds, minutes, hours, years, monthsFromDays;
-
- // if we have a mix of positive and negative values, bubble down first
- // check: https://github.com/moment/moment/issues/2166
- if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
- (milliseconds <= 0 && days <= 0 && months <= 0))) {
- milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
- days = 0;
- months = 0;
- }
-
- // The following code bubbles up values, see the tests for
- // examples of what that means.
- data.milliseconds = milliseconds % 1000;
-
- seconds = absFloor(milliseconds / 1000);
- data.seconds = seconds % 60;
-
- minutes = absFloor(seconds / 60);
- data.minutes = minutes % 60;
-
- hours = absFloor(minutes / 60);
- data.hours = hours % 24;
-
- days += absFloor(hours / 24);
-
- // convert days to months
- monthsFromDays = absFloor(daysToMonths(days));
- months += monthsFromDays;
- days -= absCeil(monthsToDays(monthsFromDays));
-
- // 12 months -> 1 year
- years = absFloor(months / 12);
- months %= 12;
-
- data.days = days;
- data.months = months;
- data.years = years;
-
- return this;
- }
-
- function daysToMonths (days) {
- // 400 years have 146097 days (taking into account leap year rules)
- // 400 years have 12 months === 4800
- return days * 4800 / 146097;
- }
-
- function monthsToDays (months) {
- // the reverse of daysToMonths
- return months * 146097 / 4800;
- }
-
- function as (units) {
- var days;
- var months;
- var milliseconds = this._milliseconds;
-
- units = normalizeUnits(units);
-
- if (units === 'month' || units === 'year') {
- days = this._days + milliseconds / 864e5;
- months = this._months + daysToMonths(days);
- return units === 'month' ? months : months / 12;
- } else {
- // handle milliseconds separately because of floating point math errors (issue #1867)
- days = this._days + Math.round(monthsToDays(this._months));
- switch (units) {
- case 'week' : return days / 7 + milliseconds / 6048e5;
- case 'day' : return days + milliseconds / 864e5;
- case 'hour' : return days * 24 + milliseconds / 36e5;
- case 'minute' : return days * 1440 + milliseconds / 6e4;
- case 'second' : return days * 86400 + milliseconds / 1000;
- // Math.floor prevents floating point math errors here
- case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
- default: throw new Error('Unknown unit ' + units);
- }
- }
- }
-
- // TODO: Use this.as('ms')?
- function duration_as__valueOf () {
- return (
- this._milliseconds +
- this._days * 864e5 +
- (this._months % 12) * 2592e6 +
- toInt(this._months / 12) * 31536e6
- );
- }
-
- function makeAs (alias) {
- return function () {
- return this.as(alias);
- };
- }
-
- var asMilliseconds = makeAs('ms');
- var asSeconds = makeAs('s');
- var asMinutes = makeAs('m');
- var asHours = makeAs('h');
- var asDays = makeAs('d');
- var asWeeks = makeAs('w');
- var asMonths = makeAs('M');
- var asYears = makeAs('y');
-
- function duration_get__get (units) {
- units = normalizeUnits(units);
- return this[units + 's']();
- }
-
- function makeGetter(name) {
- return function () {
- return this._data[name];
- };
- }
-
- var milliseconds = makeGetter('milliseconds');
- var seconds = makeGetter('seconds');
- var minutes = makeGetter('minutes');
- var hours = makeGetter('hours');
- var days = makeGetter('days');
- var months = makeGetter('months');
- var years = makeGetter('years');
-
- function weeks () {
- return absFloor(this.days() / 7);
- }
-
- var round = Math.round;
- var thresholds = {
- s: 45, // seconds to minute
- m: 45, // minutes to hour
- h: 22, // hours to day
- d: 26, // days to month
- M: 11 // months to year
- };
-
- // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
- function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
- return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
- }
-
- function duration_humanize__relativeTime (posNegDuration, withoutSuffix, locale) {
- var duration = create__createDuration(posNegDuration).abs();
- var seconds = round(duration.as('s'));
- var minutes = round(duration.as('m'));
- var hours = round(duration.as('h'));
- var days = round(duration.as('d'));
- var months = round(duration.as('M'));
- var years = round(duration.as('y'));
-
- var a = seconds < thresholds.s && ['s', seconds] ||
- minutes === 1 && ['m'] ||
- minutes < thresholds.m && ['mm', minutes] ||
- hours === 1 && ['h'] ||
- hours < thresholds.h && ['hh', hours] ||
- days === 1 && ['d'] ||
- days < thresholds.d && ['dd', days] ||
- months === 1 && ['M'] ||
- months < thresholds.M && ['MM', months] ||
- years === 1 && ['y'] || ['yy', years];
-
- a[2] = withoutSuffix;
- a[3] = +posNegDuration > 0;
- a[4] = locale;
- return substituteTimeAgo.apply(null, a);
- }
-
- // This function allows you to set a threshold for relative time strings
- function duration_humanize__getSetRelativeTimeThreshold (threshold, limit) {
- if (thresholds[threshold] === undefined) {
- return false;
- }
- if (limit === undefined) {
- return thresholds[threshold];
- }
- thresholds[threshold] = limit;
- return true;
- }
-
- function humanize (withSuffix) {
- var locale = this.localeData();
- var output = duration_humanize__relativeTime(this, !withSuffix, locale);
-
- if (withSuffix) {
- output = locale.pastFuture(+this, output);
- }
-
- return locale.postformat(output);
- }
-
- var iso_string__abs = Math.abs;
-
- function iso_string__toISOString() {
- // for ISO strings we do not use the normal bubbling rules:
- // * milliseconds bubble up until they become hours
- // * days do not bubble at all
- // * months bubble up until they become years
- // This is because there is no context-free conversion between hours and days
- // (think of clock changes)
- // and also not between days and months (28-31 days per month)
- var seconds = iso_string__abs(this._milliseconds) / 1000;
- var days = iso_string__abs(this._days);
- var months = iso_string__abs(this._months);
- var minutes, hours, years;
-
- // 3600 seconds -> 60 minutes -> 1 hour
- minutes = absFloor(seconds / 60);
- hours = absFloor(minutes / 60);
- seconds %= 60;
- minutes %= 60;
-
- // 12 months -> 1 year
- years = absFloor(months / 12);
- months %= 12;
-
-
- // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
- var Y = years;
- var M = months;
- var D = days;
- var h = hours;
- var m = minutes;
- var s = seconds;
- var total = this.asSeconds();
-
- if (!total) {
- // this is the same as C#'s (Noda) and python (isodate)...
- // but not other JS (goog.date)
- return 'P0D';
- }
-
- return (total < 0 ? '-' : '') +
- 'P' +
- (Y ? Y + 'Y' : '') +
- (M ? M + 'M' : '') +
- (D ? D + 'D' : '') +
- ((h || m || s) ? 'T' : '') +
- (h ? h + 'H' : '') +
- (m ? m + 'M' : '') +
- (s ? s + 'S' : '');
- }
-
- var duration_prototype__proto = Duration.prototype;
-
- duration_prototype__proto.abs = duration_abs__abs;
- duration_prototype__proto.add = duration_add_subtract__add;
- duration_prototype__proto.subtract = duration_add_subtract__subtract;
- duration_prototype__proto.as = as;
- duration_prototype__proto.asMilliseconds = asMilliseconds;
- duration_prototype__proto.asSeconds = asSeconds;
- duration_prototype__proto.asMinutes = asMinutes;
- duration_prototype__proto.asHours = asHours;
- duration_prototype__proto.asDays = asDays;
- duration_prototype__proto.asWeeks = asWeeks;
- duration_prototype__proto.asMonths = asMonths;
- duration_prototype__proto.asYears = asYears;
- duration_prototype__proto.valueOf = duration_as__valueOf;
- duration_prototype__proto._bubble = bubble;
- duration_prototype__proto.get = duration_get__get;
- duration_prototype__proto.milliseconds = milliseconds;
- duration_prototype__proto.seconds = seconds;
- duration_prototype__proto.minutes = minutes;
- duration_prototype__proto.hours = hours;
- duration_prototype__proto.days = days;
- duration_prototype__proto.weeks = weeks;
- duration_prototype__proto.months = months;
- duration_prototype__proto.years = years;
- duration_prototype__proto.humanize = humanize;
- duration_prototype__proto.toISOString = iso_string__toISOString;
- duration_prototype__proto.toString = iso_string__toISOString;
- duration_prototype__proto.toJSON = iso_string__toISOString;
- duration_prototype__proto.locale = locale;
- duration_prototype__proto.localeData = localeData;
-
- // Deprecations
- duration_prototype__proto.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', iso_string__toISOString);
- duration_prototype__proto.lang = lang;
-
- // Side effect imports
-
- addFormatToken('X', 0, 0, 'unix');
- addFormatToken('x', 0, 0, 'valueOf');
-
- // PARSING
-
- addRegexToken('x', matchSigned);
- addRegexToken('X', matchTimestamp);
- addParseToken('X', function (input, array, config) {
- config._d = new Date(parseFloat(input, 10) * 1000);
- });
- addParseToken('x', function (input, array, config) {
- config._d = new Date(toInt(input));
- });
-
- // Side effect imports
-
-
- utils_hooks__hooks.version = '2.10.6';
-
- setHookCallback(local__createLocal);
-
- utils_hooks__hooks.fn = momentPrototype;
- utils_hooks__hooks.min = min;
- utils_hooks__hooks.max = max;
- utils_hooks__hooks.utc = create_utc__createUTC;
- utils_hooks__hooks.unix = moment__createUnix;
- utils_hooks__hooks.months = lists__listMonths;
- utils_hooks__hooks.isDate = isDate;
- utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale;
- utils_hooks__hooks.invalid = valid__createInvalid;
- utils_hooks__hooks.duration = create__createDuration;
- utils_hooks__hooks.isMoment = isMoment;
- utils_hooks__hooks.weekdays = lists__listWeekdays;
- utils_hooks__hooks.parseZone = moment__createInZone;
- utils_hooks__hooks.localeData = locale_locales__getLocale;
- utils_hooks__hooks.isDuration = isDuration;
- utils_hooks__hooks.monthsShort = lists__listMonthsShort;
- utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin;
- utils_hooks__hooks.defineLocale = defineLocale;
- utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort;
- utils_hooks__hooks.normalizeUnits = normalizeUnits;
- utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
-
- var _moment = utils_hooks__hooks;
-
- return _moment;
-
-})); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/oktween.js b/StoneIsland/platforms/android/assets/www/js/vendor/oktween.js
deleted file mode 100755
index 7e820b04..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/oktween.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- oktween.add({
- obj: el.style,
- units: "px",
- from: { left: 0 },
- to: { left: 100 },
- duration: 1000,
- easing: oktween.easing.circ_out,
- finish: function(){
- console.log("done")
- }
- })
-*/
-
-var oktween = (function(){
- var oktween = {}
- var tweens = oktween.tweens = []
- var last_t = 0
- var id = 0
- oktween.speed = 1
- oktween.then = oktween.add = function(tween){
- tween.id = id++
- tween.obj = tween.obj || {}
- if (tween.easing) {
- if (typeof tween.easing == "string") {
- tween.easing = oktween.easing[tween.easing]
- }
- }
- else {
- tween.easing = oktween.easing.linear
- }
- if (! ('from' in tween) ) {
- tween.from = {}
- tween.keys = Object.keys(tween.to)
- tween.keys.forEach(function(prop){
- tween.from[prop] = parseFloat(tween.obj[prop])
- })
- }
- else {
- tween.keys = Object.keys(tween.from)
- }
- tween.delay = tween.delay || 0
- tween.duration = tween.duration || 200
- tween.start = last_t + tween.delay
- tween.done = false
- tween.then = function(fn){ tween.after = [fn] }
- tween.finish = function(){ tween.start = 0 }
- tween.cancel = function(){
- var idx = tweens.indexOf(tween)
- if (~idx) { tweens.splice(idx, 1) }
- }
- tween.tick = 0
- tween.skip = tween.skip || 1
- tweens.push(tween)
- return tween
- }
- oktween.update = function(t) {
- requestAnimationFrame(oktween.update)
- last_t = t * oktween.speed
- if (tweens.length == 0) return
- var done = false
- tweens.forEach(function(tween, i){
- var dt = Math.min(1.0, (t - tween.start) / tween.duration)
- tween.tick++
- if (dt < 0 || (dt < 1 && (tween.tick % tween.skip != 0))) return
- var ddt = tween.dt = tween.easing(dt)
- tween.keys.forEach(function(prop){
- val = lerp( ddt, tween.from[prop], tween.to[prop] )
- if (tween.round) val = Math.round(val)
- if (tween.units) val = (Math.round(val)) + tween.units
- tween.obj[prop] = val
- })
- tween.update && tween.update(tween.obj, dt)
- if (dt == 1) {
- tween.finished && tween.finished(tween)
- tween.after && tween.after.forEach(function(twn){
- if (typeof twn == "function") { return twn() }
- if (! twn.obj) { twn.obj = tween.obj }
- oktween.add(twn)
- })
- if (tween.loop) {
- tween.start = t + tween.delay
- }
- else {
- done = tween.done = true
- }
- }
- })
- if (done) {
- tweens = tweens.filter(function(tween){ return ! tween.done })
- }
- }
- function lerp(n,a,b){ return (b-a)*n+a }
-
- requestAnimationFrame(oktween.update)
-
- oktween.easing = {
- linear: function(t){
- return t
- },
- circ_out: function(t) {
- return Math.sqrt(1 - (t = t - 1) * t)
- },
- circ_in: function(t){
- return -(Math.sqrt(1 - (t * t)) - 1)
- },
- circ_in_out: function(t) {
- return ((t*=2) < 1) ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1)
- },
- quad_in: function(n){
- return Math.pow(n, 2)
- },
- quad_out: function(n){
- return n * (n - 2) * -1
- },
- quad_in_out: function(n){
- n = n * 2
- if(n < 1){ return Math.pow(n, 2) / 2 }
- return -1 * ((--n) * (n - 2) - 1) / 2
- },
-
- }
-
- return oktween
-})()
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/prefixfree.js b/StoneIsland/platforms/android/assets/www/js/vendor/prefixfree.js
deleted file mode 100755
index e2c87c42..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/prefixfree.js
+++ /dev/null
@@ -1,497 +0,0 @@
-/**
- * StyleFix 1.0.3 & PrefixFree 1.0.7
- * @author Lea Verou
- * MIT license
- */
-
-(function(){
-
-if(!window.addEventListener) {
- return;
-}
-
-var self = window.StyleFix = {
- link: function(link) {
- try {
- // Ignore stylesheets with data-noprefix attribute as well as alternate stylesheets
- if(link.rel !== 'stylesheet' || link.hasAttribute('data-noprefix')) {
- return;
- }
- }
- catch(e) {
- return;
- }
-
- var url = link.href || link.getAttribute('data-href'),
- base = url.replace(/[^\/]+$/, ''),
- base_scheme = (/^[a-z]{3,10}:/.exec(base) || [''])[0],
- base_domain = (/^[a-z]{3,10}:\/\/[^\/]+/.exec(base) || [''])[0],
- base_query = /^([^?]*)\??/.exec(url)[1],
- parent = link.parentNode,
- xhr = new XMLHttpRequest(),
- process;
-
- xhr.onreadystatechange = function() {
- if(xhr.readyState === 4) {
- process();
- }
- };
-
- process = function() {
- var css = xhr.responseText;
-
- if(css && link.parentNode && (!xhr.status || xhr.status < 400 || xhr.status > 600)) {
- css = self.fix(css, true, link);
-
- // Convert relative URLs to absolute, if needed
- if(base) {
- css = css.replace(/url\(\s*?((?:"|')?)(.+?)\1\s*?\)/gi, function($0, quote, url) {
- if(/^([a-z]{3,10}:|#)/i.test(url)) { // Absolute & or hash-relative
- return $0;
- }
- else if(/^\/\//.test(url)) { // Scheme-relative
- // May contain sequences like /../ and /./ but those DO work
- return 'url("' + base_scheme + url + '")';
- }
- else if(/^\//.test(url)) { // Domain-relative
- return 'url("' + base_domain + url + '")';
- }
- else if(/^\?/.test(url)) { // Query-relative
- return 'url("' + base_query + url + '")';
- }
- else {
- // Path-relative
- return 'url("' + base + url + '")';
- }
- });
-
- // behavior URLs shoudn’t be converted (Issue #19)
- // base should be escaped before added to RegExp (Issue #81)
- var escaped_base = base.replace(/([\\\^\$*+[\]?{}.=!:(|)])/g,"\\$1");
- css = css.replace(RegExp('\\b(behavior:\\s*?url\\(\'?"?)' + escaped_base, 'gi'), '$1');
- }
-
- var style = document.createElement('style');
- style.textContent = css;
- style.media = link.media;
- style.disabled = link.disabled;
- style.setAttribute('data-href', link.getAttribute('href'));
-
- parent.insertBefore(style, link);
- parent.removeChild(link);
-
- style.media = link.media; // Duplicate is intentional. See issue #31
- }
- };
-
- try {
- xhr.open('GET', url);
- xhr.send(null);
- } catch (e) {
- // Fallback to XDomainRequest if available
- if (typeof XDomainRequest != "undefined") {
- xhr = new XDomainRequest();
- xhr.onerror = xhr.onprogress = function() {};
- xhr.onload = process;
- xhr.open("GET", url);
- xhr.send(null);
- }
- }
-
- link.setAttribute('data-inprogress', '');
- },
-
- styleElement: function(style) {
- if (style.hasAttribute('data-noprefix')) {
- return;
- }
- var disabled = style.disabled;
-
- style.textContent = self.fix(style.textContent, true, style);
-
- style.disabled = disabled;
- },
-
- styleAttribute: function(element) {
- var css = element.getAttribute('style');
-
- css = self.fix(css, false, element);
-
- element.setAttribute('style', css);
- },
-
- process: function() {
- // Linked stylesheets
- $('link[rel="stylesheet"]:not([data-inprogress])').forEach(StyleFix.link);
-
- // Inline stylesheets
- $('style').forEach(StyleFix.styleElement);
-
- // Inline styles
- $('[style]').forEach(StyleFix.styleAttribute);
- },
-
- register: function(fixer, index) {
- (self.fixers = self.fixers || [])
- .splice(index === undefined? self.fixers.length : index, 0, fixer);
- },
-
- fix: function(css, raw, element) {
- for(var i=0; i<self.fixers.length; i++) {
- css = self.fixers[i](css, raw, element) || css;
- }
-
- return css;
- },
-
- camelCase: function(str) {
- return str.replace(/-([a-z])/g, function($0, $1) { return $1.toUpperCase(); }).replace('-','');
- },
-
- deCamelCase: function(str) {
- return str.replace(/[A-Z]/g, function($0) { return '-' + $0.toLowerCase() });
- }
-};
-
-/**************************************
- * Process styles
- **************************************/
-(function(){
- setTimeout(function(){
- $('link[rel="stylesheet"]').forEach(StyleFix.link);
- }, 10);
-
- document.addEventListener('DOMContentLoaded', StyleFix.process, false);
-})();
-
-function $(expr, con) {
- return [].slice.call((con || document).querySelectorAll(expr));
-}
-
-})();
-
-/**
- * PrefixFree
- */
-(function(root){
-
-if(!window.StyleFix || !window.getComputedStyle) {
- return;
-}
-
-// Private helper
-function fix(what, before, after, replacement, css) {
- what = self[what];
-
- if(what.length) {
- var regex = RegExp(before + '(' + what.join('|') + ')' + after, 'gi');
-
- css = css.replace(regex, replacement);
- }
-
- return css;
-}
-
-var self = window.PrefixFree = {
- prefixCSS: function(css, raw, element) {
- var prefix = self.prefix;
-
- // Gradient angles hotfix
- if(self.functions.indexOf('linear-gradient') > -1) {
- // Gradients are supported with a prefix, convert angles to legacy
- css = css.replace(/(\s|:|,)(repeating-)?linear-gradient\(\s*(-?\d*\.?\d*)deg/ig, function ($0, delim, repeating, deg) {
- return delim + (repeating || '') + 'linear-gradient(' + (90-deg) + 'deg';
- });
- }
-
- css = fix('functions', '(\\s|:|,)', '\\s*\\(', '$1' + prefix + '$2(', css);
- css = fix('keywords', '(\\s|:)', '(\\s|;|\\}|$)', '$1' + prefix + '$2$3', css);
- css = fix('properties', '(^|\\{|\\s|;)', '\\s*:', '$1' + prefix + '$2:', css);
-
- // Prefix properties *inside* values (issue #8)
- if (self.properties.length) {
- var regex = RegExp('\\b(' + self.properties.join('|') + ')(?!:)', 'gi');
-
- css = fix('valueProperties', '\\b', ':(.+?);', function($0) {
- return $0.replace(regex, prefix + "$1")
- }, css);
- }
-
- if(raw) {
- css = fix('selectors', '', '\\b', self.prefixSelector, css);
- css = fix('atrules', '@', '\\b', '@' + prefix + '$1', css);
- }
-
- // Fix double prefixing
- css = css.replace(RegExp('-' + prefix, 'g'), '-');
-
- // Prefix wildcard
- css = css.replace(/-\*-(?=[a-z]+)/gi, self.prefix);
-
- return css;
- },
-
- property: function(property) {
- return (self.properties.indexOf(property) >=0 ? self.prefix : '') + property;
- },
-
- value: function(value, property) {
- value = fix('functions', '(^|\\s|,)', '\\s*\\(', '$1' + self.prefix + '$2(', value);
- value = fix('keywords', '(^|\\s)', '(\\s|$)', '$1' + self.prefix + '$2$3', value);
-
- if(self.valueProperties.indexOf(property) >= 0) {
- value = fix('properties', '(^|\\s|,)', '($|\\s|,)', '$1'+self.prefix+'$2$3', value);
- }
-
- return value;
- },
-
- // Warning: Prefixes no matter what, even if the selector is supported prefix-less
- prefixSelector: function(selector) {
- return selector.replace(/^:{1,2}/, function($0) { return $0 + self.prefix })
- },
-
- // Warning: Prefixes no matter what, even if the property is supported prefix-less
- prefixProperty: function(property, camelCase) {
- var prefixed = self.prefix + property;
-
- return camelCase? StyleFix.camelCase(prefixed) : prefixed;
- }
-};
-
-/**************************************
- * Properties
- **************************************/
-(function() {
- var prefixes = {},
- properties = [],
- shorthands = {},
- style = getComputedStyle(document.documentElement, null),
- dummy = document.createElement('div').style;
-
- // Why are we doing this instead of iterating over properties in a .style object? Cause Webkit won't iterate over those.
- var iterate = function(property) {
- if(property.charAt(0) === '-') {
- properties.push(property);
-
- var parts = property.split('-'),
- prefix = parts[1];
-
- // Count prefix uses
- prefixes[prefix] = ++prefixes[prefix] || 1;
-
- // This helps determining shorthands
- while(parts.length > 3) {
- parts.pop();
-
- var shorthand = parts.join('-');
-
- if(supported(shorthand) && properties.indexOf(shorthand) === -1) {
- properties.push(shorthand);
- }
- }
- }
- },
- supported = function(property) {
- return StyleFix.camelCase(property) in dummy;
- }
-
- // Some browsers have numerical indices for the properties, some don't
- if(style.length > 0) {
- for(var i=0; i<style.length; i++) {
- iterate(style[i])
- }
- }
- else {
- for(var property in style) {
- iterate(StyleFix.deCamelCase(property));
- }
- }
-
- // Find most frequently used prefix
- var highest = {uses:0};
- for(var prefix in prefixes) {
- var uses = prefixes[prefix];
-
- if(highest.uses < uses) {
- highest = {prefix: prefix, uses: uses};
- }
- }
-
- self.prefix = '-' + highest.prefix + '-';
- self.Prefix = StyleFix.camelCase(self.prefix);
-
- self.properties = [];
-
- // Get properties ONLY supported with a prefix
- for(var i=0; i<properties.length; i++) {
- var property = properties[i];
-
- if(property.indexOf(self.prefix) === 0) { // we might have multiple prefixes, like Opera
- var unprefixed = property.slice(self.prefix.length);
-
- if(!supported(unprefixed)) {
- self.properties.push(unprefixed);
- }
- }
- }
-
- // IE fix
- if(self.Prefix == 'Ms'
- && !('transform' in dummy)
- && !('MsTransform' in dummy)
- && ('msTransform' in dummy)) {
- self.properties.push('transform', 'transform-origin');
- }
-
- self.properties.sort();
-})();
-
-/**************************************
- * Values
- **************************************/
-(function() {
-// Values that might need prefixing
-var functions = {
- 'linear-gradient': {
- property: 'backgroundImage',
- params: 'red, teal'
- },
- 'calc': {
- property: 'width',
- params: '1px + 5%'
- },
- 'element': {
- property: 'backgroundImage',
- params: '#foo'
- },
- 'cross-fade': {
- property: 'backgroundImage',
- params: 'url(a.png), url(b.png), 50%'
- }
-};
-
-
-functions['repeating-linear-gradient'] =
-functions['repeating-radial-gradient'] =
-functions['radial-gradient'] =
-functions['linear-gradient'];
-
-// Note: The properties assigned are just to *test* support.
-// The keywords will be prefixed everywhere.
-var keywords = {
- 'initial': 'color',
- 'zoom-in': 'cursor',
- 'zoom-out': 'cursor',
- 'box': 'display',
- 'flexbox': 'display',
- 'inline-flexbox': 'display',
- 'flex': 'display',
- 'inline-flex': 'display',
- 'grid': 'display',
- 'inline-grid': 'display',
- 'max-content': 'width',
- 'min-content': 'width',
- 'fit-content': 'width',
- 'fill-available': 'width'
-};
-
-self.functions = [];
-self.keywords = [];
-
-var style = document.createElement('div').style;
-
-function supported(value, property) {
- style[property] = '';
- style[property] = value;
-
- return !!style[property];
-}
-
-for (var func in functions) {
- var test = functions[func],
- property = test.property,
- value = func + '(' + test.params + ')';
-
- if (!supported(value, property)
- && supported(self.prefix + value, property)) {
- // It's supported, but with a prefix
- self.functions.push(func);
- }
-}
-
-for (var keyword in keywords) {
- var property = keywords[keyword];
-
- if (!supported(keyword, property)
- && supported(self.prefix + keyword, property)) {
- // It's supported, but with a prefix
- self.keywords.push(keyword);
- }
-}
-
-})();
-
-/**************************************
- * Selectors and @-rules
- **************************************/
-(function() {
-
-var
-selectors = {
- ':read-only': null,
- ':read-write': null,
- ':any-link': null,
- '::selection': null
-},
-
-atrules = {
- 'keyframes': 'name',
- 'viewport': null,
- 'document': 'regexp(".")'
-};
-
-self.selectors = [];
-self.atrules = [];
-
-var style = root.appendChild(document.createElement('style'));
-
-function supported(selector) {
- style.textContent = selector + '{}'; // Safari 4 has issues with style.innerHTML
-
- return !!style.sheet.cssRules.length;
-}
-
-for(var selector in selectors) {
- var test = selector + (selectors[selector]? '(' + selectors[selector] + ')' : '');
-
- if(!supported(test) && supported(self.prefixSelector(test))) {
- self.selectors.push(selector);
- }
-}
-
-for(var atrule in atrules) {
- var test = atrule + ' ' + (atrules[atrule] || '');
-
- if(!supported('@' + test) && supported('@' + self.prefix + test)) {
- self.atrules.push(atrule);
- }
-}
-
-root.removeChild(style);
-
-})();
-
-// Properties that accept properties as their value
-self.valueProperties = [
- 'transition',
- 'transition-property'
-]
-
-// Add class for current prefix
-root.className += ' ' + self.prefix;
-
-StyleFix.register(self.prefixCSS);
-
-
-})(document.documentElement); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/promise.js b/StoneIsland/platforms/android/assets/www/js/vendor/promise.js
deleted file mode 100755
index f458ab06..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/promise.js
+++ /dev/null
@@ -1,34 +0,0 @@
-var promise = function(fn, data){
- var my_cb, my_res, error_cb, my_error
- data = data || {}
- data.success = function(res){
- my_res = res
- if (my_cb) {
- my_cb(res)
- }
- }
- data.error = function(res){
- my_error = res
- if (error_cb) {
- error_cb(res)
- }
- else {
- console.log('error!')
- console.log(res)
- }
- }
- fn(data)
- var p = {
- then: function(cb){
- if (my_res) cb(my_res)
- else my_cb = cb
- return p
- },
- error: function(cb){
- if (my_error) cb(my_error)
- else error_cb = cb
- return p
- }
- }
- return p
-}
diff --git a/StoneIsland/platforms/android/assets/www/js/vendor/util.js b/StoneIsland/platforms/android/assets/www/js/vendor/util.js
deleted file mode 100755
index c44dda79..00000000
--- a/StoneIsland/platforms/android/assets/www/js/vendor/util.js
+++ /dev/null
@@ -1,209 +0,0 @@
-if (window.$) {
- $.fn.int = function() { return parseInt($(this).val(),10) }
- $.fn.float = function() { return parseFloat($(this).val()) }
- $.fn.string = function() { return trim($(this).val()) }
- $.fn.enable = function() { return $(this).attr("disabled",null) }
- $.fn.disable = function() { return $(this).attr("disabled","disabled") }
- $.fn.sanitize = function(s) { return trim(sanitize($(this).val())) }
- $.fn.stripHTML = function(s) { return trim(stripHTML($(this).val())) }
- $.fn.sanitizeName = function(s) { return trim(sanitizeName($(this).val())) }
- $.fn.htmlSafe = function(s) { return $(this).html(sanitize(s)) }
- $.fn.toDollars = function(i) { return $(this).html((i/100).toFixed(2)) }
-}
-
-function trim (s){ return s.replace(/^\s+/,"").replace(/\s+$/,"") }
-function sanitize (s){ return (s || "").replace(new RegExp("[<>&]", 'g'), "") }
-function sanitizeName (s){ return (s || "").replace(new RegExp("[^-_a-zA-Z0-9]", 'g'), "") }
-function stripHTML (s){ return (s || "").replace(/<[^>]+>/g, "") }
-function sanitizeHTML (s){ return (s || "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;") }
-function capitalize (s){ return s.split(" ").map(capitalizeWord).join(" ") }
-function capitalizeWord (s){ return s.charAt(0).toUpperCase() + s.slice(1) }
-function slugify (s){ return (s || "").toLowerCase().replace(/\s/g,"-").replace(/[^-_a-zA-Z0-9]/g, '-').replace(/-+/g,"-") }
-function rgb_string (rgb) { return "rgb(" + rgb.map(Math.round).join(",") + ")" }
-function rgba_string (rgb,a) { return "rgba(" + rgb.map(Math.round).join(",") + "," + a + ")" }
-function hex_string (rgb) { return "#" + rgb.map(Math.round).map(function(n){ var s = n.toString(16); return s.length == 1 ? "0"+s : s }).join("") }
-function parse_rgba_string (s) { return s.match(/(\d+)/g).slice(0,3) }
-
-function title_case (str) {
- return (str || "").replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
-}
-function pluralize (n,s,ss) { return n + " " + s + ( n == 1 ? "" : (ss || "s") ) }
-function as_cash(n){
- var cents = ((n*100) % 100);
- if (cents < 10) { cents = "0" + (cents|0) }
- else { cents = cents|0 }
- return "$" + (n|0) + "." + cents
-}
-
-var E = Math.E
-var PI = Math.PI
-var PHI = (1+Math.sqrt(5))/2
-var TWO_PI = PI*2
-var HALF_PI = PI/2
-var LN10 = Math.LN10
-function clamp(n,a,b){ return n<a?a:n<b?n:b }
-function norm(n,a,b){ return (n-a) / (b-a) }
-function lerp(n,a,b){ return (b-a)*n+a }
-function mix(n,a,b){ return a*(1-n)+b*n }
-function abs(n){ return Math.abs(n) }
-function sign(n){ return n ? Math.abs(n)/n : 0 }
-function random(){ return Math.random() }
-function rand(n){ return (Math.random()*n) }
-function randint(n){ return rand(n)|0 }
-function randrange(a,b){ return a + rand(b-a) }
-function choice(a){ return a[randint(a.length)] }
-function noop(){}
-
-function range(m,n,s){
- var a = []
- s = s || 1
- for (var i = m; i <= n; i += s) {
- a.push(i)
- }
- return a
-}
-
-function defaults (dest, src) {
- dest = dest || {}
- for (var i in src) {
- dest[i] = typeof dest[i] == 'undefined' ? src[i] : dest[i]
- }
- return dest
-}
-
-function pairs(h){
- var a = []
- for (var i in h) {
- if(h.hasOwnProperty(i)) {
- a.push([i, h[i]])
- }
- }
- return a
-}
-function invert_hash (h) {
- var k = {}
- for (var i in h) { if (h.hasOwnProperty(i)) k[h[i]] = i }
- return k
-}
-function filenameFromUrl (url) {
- var partz = url.split( "/" )
- return partz[partz.length-1].split(".")[0]
-}
-
-// Function.bind polyfill
-if (!Function.prototype.bind) {
- Function.prototype.bind = function(oThis) {
- if (typeof this !== 'function') {
- // closest thing possible to the ECMAScript 5
- // internal IsCallable function
- throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');
- }
-
- var aArgs = Array.prototype.slice.call(arguments, 1),
- fToBind = this,
- fNOP = function() {},
- fBound = function() {
- return fToBind.apply(this instanceof fNOP && oThis
- ? this
- : oThis,
- aArgs.concat(Array.prototype.slice.call(arguments)));
- };
-
- fNOP.prototype = this.prototype;
- fBound.prototype = new fNOP();
-
- return fBound;
- };
-}
-
-// rAF polyfill
-(function() {
- var lastTime = 0;
- var vendors = ['ms', 'moz', 'webkit', 'o'];
- for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
- window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];
- window.cancelAnimationFrame = window[vendors[x]+'CancelAnimationFrame']
- || window[vendors[x]+'CancelRequestAnimationFrame'];
- }
-
- if (!window.requestAnimationFrame)
- window.requestAnimationFrame = function(callback, element) {
- var currTime = new Date().getTime();
- var timeToCall = Math.max(0, 16 - (currTime - lastTime));
- var id = window.setTimeout(function() { callback(currTime + timeToCall); },
- timeToCall);
- lastTime = currTime + timeToCall;
- return id;
- };
-
- if (!window.cancelAnimationFrame)
- window.cancelAnimationFrame = function(id) {
- clearTimeout(id);
- };
-}());
-
-// Identify browser based on useragent string
-var browser = (function( ua ) {
- ua = ua.toLowerCase();
- var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
- var matched = {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
- browser = {};
- if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
- // Chrome is Webkit, but Webkit is also Safari.
- if ( browser.chrome ) {
- browser.webkit = true;
- } else if ( browser.webkit ) {
- browser.safari = true;
- }
- if (window.$) $.browser = browser;
- return browser;
-})( navigator.userAgent );
-
-// Naive useragent detection pattern
-var is_iphone = (navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))
-var is_ipad = (navigator.userAgent.match(/iPad/i))
-var is_ios = is_iphone || is_ipad
-var is_iphone_x = isIphoneX()
-var is_android = (navigator.userAgent.match(/Android/i))
-var is_mobile = is_iphone || is_ipad || is_android
-var is_desktop = ! is_mobile;
-var transformProp = browser.safari ? "WebkitTransform" : "transform";
-if (is_android) {
- document.body.parentNode.classList.add("android")
-}
-else {
- document.body.parentNode.classList.add("ios")
-}
-
-function isIphoneX() {
- return (
- is_iphone &&
- !is_ipad &&
- (window.innerHeight === 812 || window.innerWidth === 812)
- );
-}
-
-function selectElementContents(el) {
- if (window.getSelection && document.createRange) {
- var sel = window.getSelection();
- var range = document.createRange();
- range.selectNodeContents(el);
- sel.removeAllRanges();
- sel.addRange(range);
- } else if (document.selection && document.body.createTextRange) {
- var textRange = document.body.createTextRange();
- textRange.moveToElementText(el);
- textRange.select();
- }
-}
diff --git a/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js b/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js
deleted file mode 100644
index 8229b168..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js
+++ /dev/null
@@ -1,1778 +0,0 @@
-// Copyright 2013 Google 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.
-var goog=goog||{};goog.global=this;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||void 0===b?c=c[d]?c[d]:c[d]={}:c[d]=b};goog.define=function(a,b){var c=b;goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.provide=function(a){goog.exportPath_(a)};
-goog.setTestOnly=function(a){if(!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");};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};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
-goog.addDependency=function(a,b,c){if(goog.DEPENDENCIES_ENABLED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};goog.useStrictRequires=!1;goog.ENABLE_DEBUG_LOADER=!0;goog.require=function(){};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a){return a};
-goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.DEPENDENCIES_ENABLED=!1;
-goog.DEPENDENCIES_ENABLED&&(goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return"undefined"!=typeof a&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document,a=a.getElementsByTagName("script"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?
-c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==b.readyState){if(b=/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}b.write('<script type="text/javascript" src="'+
-a+'">\x3c/script>');return!0}return!1},goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.visited)&&(d.visited[e]=!0,e in d.requires))for(var g in d.requires[e])if(!goog.isProvided_(g))if(g in d.nameToPath)a(d.nameToPath[g]);else throw Error("Undefined nameToPath for "+g);e in c||(c[e]=!0,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("Undefined script input");
-},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));
-goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isDef=function(a){return void 0!==a};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};
-goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
-goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},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.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
-goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
-goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval)if(null==goog.evalWorksForGlobals_&&(goog.global.eval("var _et_ = 1;"),"undefined"!=typeof goog.global._et_?(delete goog.global._et_,goog.evalWorksForGlobals_=!0):goog.evalWorksForGlobals_=!1),goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.body.appendChild(c);
-b.body.removeChild(c)}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a};return b?a+"-"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};
-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.getMsgWithFallback=function(a){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};
-goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.DEBUG&&!d)throw Error("arguments.caller not defined. goog.base() expects not to be running in strict mode. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_)return d.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,1));for(var e=Array.prototype.slice.call(arguments,2),f=!1,g=a.constructor;g;g=g.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.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 method of a different name");};goog.scope=function(a){a.call(goog.global)};goog.MODIFY_FUNCTION_PROTOTYPES=!0;
-goog.MODIFY_FUNCTION_PROTOTYPES&&(Function.prototype.bind=Function.prototype.bind||function(a,b){if(1<arguments.length){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return goog.bind.apply(null,c)}return goog.bind(this,a)},Function.prototype.partial=function(a){var b=Array.prototype.slice.call(arguments);b.unshift(this,null);return goog.bind.apply(null,b)},Function.prototype.inherits=function(a){goog.inherits(this,a)},Function.prototype.mixin=function(a){goog.mixin(this.prototype,
-a)});var cvox={VERBOSITY_VERBOSE:0,VERBOSITY_BRIEF:1,ChromeVox:function(){}};cvox.ChromeVox.host=null;cvox.ChromeVox.msgs=null;cvox.ChromeVox.isActive=!0;cvox.ChromeVox.version=null;cvox.ChromeVox.earcons=null;cvox.ChromeVox.navigationManager=null;cvox.ChromeVox.serializer=null;cvox.ChromeVox.isStickyOn=!1;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVox.verbosity=cvox.VERBOSITY_VERBOSE;cvox.ChromeVox.typingEcho=0;cvox.ChromeVox.keyEcho={};cvox.ChromeVox.position={};cvox.ChromeVox.isChromeOS=-1!=navigator.userAgent.indexOf("CrOS");
-cvox.ChromeVox.isMac=-1!=navigator.platform.indexOf("Mac");cvox.ChromeVox.modKeyStr=cvox.ChromeVox.isChromeOS?"Shift+Search":cvox.ChromeVox.isMac?"Ctrl+Cmd":"Ctrl+Meta";cvox.ChromeVox.sequenceSwitchKeyCodes=[];cvox.ChromeVox.visitedUrls={};cvox.ChromeVox.markInUserCommand=function(){};cvox.ChromeVox.syncToNode=function(){};cvox.ChromeVox.speakNode=function(){};cvox.ChromeVox.executeUserCommand=function(){};cvox.ChromeVox.entireDocumentIsHidden=!1;
-cvox.ChromeVox.storeOn=function(a){a.isStickyOn=cvox.ChromeVox.isStickyOn;cvox.ChromeVox.navigationManager.storeOn(a)};cvox.ChromeVox.readFrom=function(a){cvox.ChromeVox.isStickyOn=a.isStickyOn;cvox.ChromeVox.navigationManager.readFrom(a)};cvox.Cursor=function(a,b,c){this.node=a;this.index=b;this.text=c};cvox.Cursor.prototype.clone=function(){return new cvox.Cursor(this.node,this.index,this.text)};cvox.Cursor.prototype.copyFrom=function(a){this.node=a.node;this.index=a.index;this.text=a.text};cvox.Cursor.prototype.equals=function(a){return this.node==a.node&&this.index==a.index&&this.text==a.text};goog.debug={};goog.debug.Error=function(a){Error.captureStackTrace?Error.captureStackTrace(this,goog.debug.Error):this.stack=Error().stack||"";a&&(this.message=String(a))};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};
-goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptySafe=function(a){return goog.string.isEmpty(goog.string.makeSafe(a))};
-goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};
-goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};
-goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;
-goog.string.numerateCompare=function(a,b){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var c=a.toLowerCase().match(goog.string.numerateCompareRegExp_),d=b.toLowerCase().match(goog.string.numerateCompareRegExp_),e=Math.min(c.length,d.length),f=0;f<e;f++){var g=c[f],h=d[f];if(g!=h)return c=parseInt(g,10),!isNaN(c)&&(d=parseInt(h,10),!isNaN(d)&&c-d)?c-d:g<h?-1:1}return c.length!=d.length?c.length-d.length:a<b?-1:1};goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};
-goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
-goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");if(!goog.string.allRe_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.amperRe_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.ltRe_,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.gtRe_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.quotRe_,"&quot;"));return a};
-goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
-goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'},d;d=b?b.createElement("div"):document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var g=c[a];if(g)return g;if("#"==b.charAt(0)){var h=Number("0"+b.substr(1));isNaN(h)||(g=String.fromCharCode(h))}g||(d.innerHTML=a+" ",g=d.firstChild.nodeValue.slice(0,-1));return c[a]=g})};
-goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==c.charAt(0)){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
-goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
-goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;b-=d;a=a.substring(0,b)+"..."+a.substring(e)}else a.length>b&&(e=Math.floor(b/2),d=a.length-e,e+=b%2,a=a.substring(0,e)+"..."+a.substring(d));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"};
-goog.string.quote=function(a){a=String(a);if(a.quote)return a.quote();for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
-goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.toMap=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=!0;return b};
-goog.string.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};goog.string.removeAll=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};
-goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};
-goog.string.getRandomString=function(){var a=2147483648;return Math.floor(Math.random()*a).toString(36)+Math.abs(Math.floor(Math.random()*a)^goog.now()).toString(36)};
-goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=/(\d*)(\D*)/g,m=/(\d*)(\D*)/g;do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;var c=0==p[1].length?0:parseInt(p[1],10),n=0==q[1].length?0:parseInt(q[1],10),c=goog.string.compareElements_(c,n)||goog.string.compareElements_(0==p[2].length,0==q[2].length)||
-goog.string.compareElements_(p[2],q[2])}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c),b%=goog.string.HASHCODE_MAX_;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
-goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmpty(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};
-goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s",c=c?"|["+c+"]+":"",c=RegExp("(^"+c+")([a-z])","g");return a.replace(c,function(a,b,c){return b+c.toUpperCase()})};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift()};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new goog.asserts.AssertionError(""+e,f||[]);};
-goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.fail=function(a,b){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};
-goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("instanceof check failed.",null,c,Array.prototype.slice.call(arguments,3));return a};
-goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.peek=function(a){return a[a.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype;
-goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
-goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(a,b,c){goog.asserts.assert(null!=a.length);c=null==c?a.length-1:c;return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(a,b,c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
-goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};
-goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};
-goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
-goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduce?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduceRight?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
-goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};
-goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};
-goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};
-goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};
-goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.concat=function(a){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;
-goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c],e;if(goog.isArray(d)||(e=goog.isArrayLike(d))&&Object.prototype.hasOwnProperty.call(d,"callee"))a.push.apply(a,d);else if(e)for(var f=a.length,g=d.length,h=0;h<g;h++)a[f+h]=d[h];else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.splice.apply(a,goog.array.slice(arguments,1))};
-goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?goog.array.ARRAY_PROTOTYPE_.slice.call(a,b):goog.array.ARRAY_PROTOTYPE_.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};
-goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.sort.call(a,b||goog.array.defaultCompare)};
-goog.array.stableSort=function(a,b){function c(a,b){return e(a.value,b.value)||a.index-b.index}for(var d=0;d<a.length;d++)a[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(a,c);for(d=0;d<a.length;d++)a[d]=a[d].value};goog.array.sortObjectsByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(a[b],c[b])})};
-goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare=function(a,b,c){return goog.array.equals(a,b,c)};
-goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};
-goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(g=d[g]||(d[g]=[]),g.push(f))}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};
-goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];goog.isArray(d)?b.push.apply(b,goog.array.flatten.apply(null,d)):b.push(d)}return b};
-goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?goog.array.ARRAY_PROTOTYPE_.unshift.apply(a,a.splice(-b,b)):0>b&&goog.array.ARRAY_PROTOTYPE_.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1);goog.array.ARRAY_PROTOTYPE_.splice.call(a,c,0,b[0])};
-goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=0;;c++){for(var d=[],e=0;e<arguments.length;e++){var f=arguments[e];if(c>=f.length)return b;d.push(f[c])}b.push(d)}};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
-goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};
-goog.math.sign=function(a){return 0==a?0:0>a?-1:1};goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k<f+1;k++)g[0][k]=0;for(h=1;h<=e;h++)for(k=1;k<=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0<h&&0<k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]>g[h][k-1]?h--:k--;return l};
-goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return b=goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};
-goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.floor(a+(b||2E-15))};goog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.ceil(a-(b||2E-15))};goog.i18n={};
-goog.i18n.CompactNumberFormatSymbols_af={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0m"},1E7:{other:"00\u00a0m"},1E8:{other:"000\u00a0m"},1E9:{other:"0\u00a0mjd"},1E10:{other:"00\u00a0mjd"},1E11:{other:"000\u00a0mjd"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duisend"},1E4:{other:"00 duisend"},1E5:{other:"000 duisend"},1E6:{other:"0 miljoen"},1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},
-1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_af_ZA=goog.i18n.CompactNumberFormatSymbols_af;
-goog.i18n.CompactNumberFormatSymbols_am={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u123a"},1E4:{other:"00\u00a0\u123a"},1E5:{other:"000\u00a0\u123a"},1E6:{other:"0\u00a0\u121c\u1275\u122d"},1E7:{other:"00\u00a0\u121c\u1275\u122d"},1E8:{other:"000\u00a0\u121c\u1275\u122d"},1E9:{other:"0\u00a0\u1262"},1E10:{other:"00\u00a0\u1262"},1E11:{other:"000\u00a0\u1262"},1E12:{other:"0\u00a0\u1275"},1E13:{other:"00\u00a0\u1275"},1E14:{other:"000\u00a0\u1275"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u123a"},
-1E4:{other:"00 \u123a"},1E5:{other:"000 \u123a"},1E6:{other:"0 \u121a\u120a\u12ee\u1295"},1E7:{other:"00 \u121a\u120a\u12ee\u1295"},1E8:{other:"000 \u121a\u120a\u12ee\u1295"},1E9:{other:"0 \u1262\u120a\u12ee\u1295"},1E10:{other:"00 \u1262\u120a\u12ee\u1295"},1E11:{other:"000 \u1262\u120a\u12ee\u1295"},1E12:{other:"0 \u1275\u122a\u120a\u12ee\u1295"},1E13:{other:"00 \u1275\u122a\u120a\u12ee\u1295"},1E14:{other:"000 \u1275\u122a\u120a\u12ee\u1295"}}};goog.i18n.CompactNumberFormatSymbols_am_ET=goog.i18n.CompactNumberFormatSymbols_am;
-goog.i18n.CompactNumberFormatSymbols_ar={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0623\u0644\u0641"},1E4:{other:"00\u00a0\u0623\u0644\u0641"},1E5:{other:"000\u00a0\u0623\u0644\u0641"},1E6:{other:"0\u00a0\u0645\u0644\u064a\u0648"},1E7:{other:"00\u00a0\u0645\u0644\u064a\u0648"},1E8:{other:"000\u00a0\u0645\u0644\u064a\u0648"},1E9:{other:"0\u00a0\u0628\u0644\u064a\u0648"},1E10:{other:"00\u00a0\u0628\u0644\u064a\u0648"},1E11:{other:"000\u00a0\u0628\u0644\u064a\u0648"},1E12:{other:"0\u00a0\u062a\u0631\u0644\u064a\u0648"},
-1E13:{other:"00\u00a0\u062a\u0631\u0644\u064a\u0648"},1E14:{other:"000\u00a0\u062a\u0631\u0644\u064a\u0648"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0623\u0644\u0641"},1E4:{other:"00 \u0623\u0644\u0641"},1E5:{other:"000 \u0623\u0644\u0641"},1E6:{other:"0 \u0645\u0644\u064a\u0648\u0646"},1E7:{other:"00 \u0645\u0644\u064a\u0648\u0646"},1E8:{other:"000 \u0645\u0644\u064a\u0648\u0646"},1E9:{other:"0 \u0628\u0644\u064a\u0648\u0646"},1E10:{other:"00 \u0628\u0644\u064a\u0648\u0646"},1E11:{other:"000 \u0628\u0644\u064a\u0648\u0646"},
-1E12:{other:"0 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E13:{other:"00 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E14:{other:"000 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"}}};goog.i18n.CompactNumberFormatSymbols_ar_001=goog.i18n.CompactNumberFormatSymbols_ar;goog.i18n.CompactNumberFormatSymbols_ar_EG=goog.i18n.CompactNumberFormatSymbols_ar;
-goog.i18n.CompactNumberFormatSymbols_bg={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0425"},1E4:{other:"00\u00a0\u0425"},1E5:{other:"000\u00a0\u0425"},1E6:{other:"0\u00a0\u041c"},1E7:{other:"00\u00a0\u041c"},1E8:{other:"000\u00a0\u041c"},1E9:{other:"0\u00a0\u0411"},1E10:{other:"00\u00a0\u0411"},1E11:{other:"000\u00a0\u0411"},1E12:{other:"0\u00a0\u0422"},1E13:{other:"00\u00a0\u0422"},1E14:{other:"000\u00a0\u0422"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u043b\u044f\u0434\u0438"},
-1E4:{other:"00 \u0445\u0438\u043b\u044f\u0434\u0438"},1E5:{other:"000 \u0445\u0438\u043b\u044f\u0434\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},
-1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_bg_BG=goog.i18n.CompactNumberFormatSymbols_bg;
-goog.i18n.CompactNumberFormatSymbols_bn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u09b9\u09be\u099c\u09be\u09b0"},1E4:{other:"00 \u09b9\u09be\u099c\u09be\u09b0"},1E5:{other:"000 \u09b9\u09be\u099c\u09be\u09b0"},1E6:{other:"0 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},
-1E7:{other:"00 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E8:{other:"000 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E9:{other:"0 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E10:{other:"00 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E11:{other:"000 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E12:{other:"0 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E13:{other:"00 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E14:{other:"000 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"}}};
-goog.i18n.CompactNumberFormatSymbols_bn_BD=goog.i18n.CompactNumberFormatSymbols_bn;goog.i18n.CompactNumberFormatSymbols_br={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_br_FR=goog.i18n.CompactNumberFormatSymbols_br;
-goog.i18n.CompactNumberFormatSymbols_ca={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milions"},1E7:{other:"00 milions"},
-1E8:{other:"000 milions"},1E9:{other:"0 miliards"},1E10:{other:"00 miliards"},1E11:{other:"000 miliards"},1E12:{other:"0 bilions"},1E13:{other:"00 bilions"},1E14:{other:"000 bilions"}}};goog.i18n.CompactNumberFormatSymbols_ca_AD=goog.i18n.CompactNumberFormatSymbols_ca;goog.i18n.CompactNumberFormatSymbols_ca_ES=goog.i18n.CompactNumberFormatSymbols_ca;
-goog.i18n.CompactNumberFormatSymbols_chr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_chr_US=goog.i18n.CompactNumberFormatSymbols_chr;
-goog.i18n.CompactNumberFormatSymbols_cs={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 milion\u016f"},1E7:{other:"00 milion\u016f"},1E8:{other:"000 milion\u016f"},1E9:{other:"0 miliard"},1E10:{other:"00 miliard"},1E11:{other:"000 miliard"},1E12:{other:"0 bilion\u016f"},1E13:{other:"00 bilion\u016f"},1E14:{other:"000 bilion\u016f"}}};goog.i18n.CompactNumberFormatSymbols_cs_CZ=goog.i18n.CompactNumberFormatSymbols_cs;
-goog.i18n.CompactNumberFormatSymbols_cy={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 miliwn"},1E7:{other:"00 miliwn"},1E8:{other:"000 miliwn"},1E9:{other:"0 biliwn"},1E10:{other:"00 biliwn"},
-1E11:{other:"000 biliwn"},1E12:{other:"0 triliwn"},1E13:{other:"00 triliwn"},1E14:{other:"000 triliwn"}}};goog.i18n.CompactNumberFormatSymbols_cy_GB=goog.i18n.CompactNumberFormatSymbols_cy;
-goog.i18n.CompactNumberFormatSymbols_da={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mio"},1E7:{other:"00\u00a0mio"},1E8:{other:"000\u00a0mio"},1E9:{other:"0\u00a0mia"},1E10:{other:"00\u00a0mia"},1E11:{other:"000\u00a0mia"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusind"},1E4:{other:"00 tusind"},1E5:{other:"000 tusind"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_da_DK=goog.i18n.CompactNumberFormatSymbols_da;
-goog.i18n.CompactNumberFormatSymbols_de={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};
-goog.i18n.CompactNumberFormatSymbols_de_AT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_BE=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_de_CH={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_DE=goog.i18n.CompactNumberFormatSymbols_de;goog.i18n.CompactNumberFormatSymbols_de_LU=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_el={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u03c7\u03b9\u03bb."},1E4:{other:"00\u00a0\u03c7\u03b9\u03bb."},1E5:{other:"000\u00a0\u03c7\u03b9\u03bb."},1E6:{other:"0\u00a0\u03b5\u03ba."},1E7:{other:"00\u00a0\u03b5\u03ba."},1E8:{other:"000\u00a0\u03b5\u03ba."},1E9:{other:"0\u00a0\u03b4\u03b9\u03c2"},1E10:{other:"00\u00a0\u03b4\u03b9\u03c2"},1E11:{other:"000\u00a0\u03b4\u03b9\u03c2"},1E12:{other:"0\u00a0\u03c4\u03c1\u03b9\u03c2"},1E13:{other:"00\u00a0\u03c4\u03c1\u03b9\u03c2"},
-1E14:{other:"000\u00a0\u03c4\u03c1\u03b9\u03c2"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E4:{other:"00 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E5:{other:"000 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E6:{other:"0 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E7:{other:"00 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E8:{other:"000 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E9:{other:"0 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E10:{other:"00 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E11:{other:"000 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E12:{other:"0 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E13:{other:"00 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E14:{other:"000 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"}}};goog.i18n.CompactNumberFormatSymbols_el_GR=goog.i18n.CompactNumberFormatSymbols_el;
-goog.i18n.CompactNumberFormatSymbols_en={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_AS=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_AU={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_FM=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_GB={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_GU=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_IE={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_en_IN={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_MH=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_MP=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PR=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PW=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_SG={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_TC=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_UM=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_VG=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_VI=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_ZA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_es={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00\u00a0K\u00a0M"},1E11:{other:"000\u00a0K\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},
-1E7:{other:"00 millones"},1E8:{other:"000 millones"},1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};
-goog.i18n.CompactNumberFormatSymbols_es_419={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0k\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},1E7:{other:"00 millones"},1E8:{other:"000 millones"},
-1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};goog.i18n.CompactNumberFormatSymbols_es_EA=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_ES=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_IC=goog.i18n.CompactNumberFormatSymbols_es;
-goog.i18n.CompactNumberFormatSymbols_et={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tuh"},1E4:{other:"00\u00a0tuh"},1E5:{other:"000\u00a0tuh"},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0trl"},1E13:{other:"00\u00a0trl"},1E14:{other:"000\u00a0trl"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhat"},1E4:{other:"00 tuhat"},1E5:{other:"000 tuhat"},1E6:{other:"0 miljonit"},
-1E7:{other:"00 miljonit"},1E8:{other:"000 miljonit"},1E9:{other:"0 miljardit"},1E10:{other:"00 miljardit"},1E11:{other:"000 miljardit"},1E12:{other:"0 triljonit"},1E13:{other:"00 triljonit"},1E14:{other:"000 triljonit"}}};goog.i18n.CompactNumberFormatSymbols_et_EE=goog.i18n.CompactNumberFormatSymbols_et;
-goog.i18n.CompactNumberFormatSymbols_eu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milioi"},1E7:{other:"00 milioi"},1E8:{other:"000 milioi"},1E9:{other:"0000 milioi"},
-1E10:{other:"00000 milioi"},1E11:{other:"000000 milioi"},1E12:{other:"0 bilioi"},1E13:{other:"00 bilioi"},1E14:{other:"000 bilioi"}}};goog.i18n.CompactNumberFormatSymbols_eu_ES=goog.i18n.CompactNumberFormatSymbols_eu;
-goog.i18n.CompactNumberFormatSymbols_fa={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0647\u0632\u0627\u0631"},1E4:{other:"00 \u0647\u0632\u0627\u0631"},1E5:{other:"000 \u0647\u0632\u0627\u0631"},1E6:{other:"0 \u0645\u06cc\u0644\u06cc\u0648\u0646"},
-1E7:{other:"00 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E8:{other:"000 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E9:{other:"0 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E10:{other:"00 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E11:{other:"000 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E12:{other:"0 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E13:{other:"00 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E14:{other:"000 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"}}};
-goog.i18n.CompactNumberFormatSymbols_fa_IR=goog.i18n.CompactNumberFormatSymbols_fa;
-goog.i18n.CompactNumberFormatSymbols_fi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t."},1E4:{other:"00\u00a0t."},1E5:{other:"000\u00a0t."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bilj."},1E13:{other:"00\u00a0bilj."},1E14:{other:"000\u00a0bilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhatta"},1E4:{other:"00 tuhatta"},1E5:{other:"000 tuhatta"},
-1E6:{other:"0 miljoonaa"},1E7:{other:"00 miljoonaa"},1E8:{other:"000 miljoonaa"},1E9:{other:"0 miljardia"},1E10:{other:"00 miljardia"},1E11:{other:"000 miljardia"},1E12:{other:"0 biljoonaa"},1E13:{other:"00 biljoonaa"},1E14:{other:"000 biljoonaa"}}};goog.i18n.CompactNumberFormatSymbols_fi_FI=goog.i18n.CompactNumberFormatSymbols_fi;
-goog.i18n.CompactNumberFormatSymbols_fil={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};goog.i18n.CompactNumberFormatSymbols_fil_PH=goog.i18n.CompactNumberFormatSymbols_fil;
-goog.i18n.CompactNumberFormatSymbols_fr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_BL=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_CA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_FR=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GP=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MC=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_MF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MQ=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_RE=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_YT=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_gl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 mill\u00f3ns"},1E7:{other:"00 mill\u00f3ns"},
-1E8:{other:"000 mill\u00f3ns"},1E9:{other:"0 mil mill\u00f3ns"},1E10:{other:"00 mil mill\u00f3ns"},1E11:{other:"000 mil mill\u00f3ns"},1E12:{other:"0 bill\u00f3ns"},1E13:{other:"00 bill\u00f3ns"},1E14:{other:"000 bill\u00f3ns"}}};goog.i18n.CompactNumberFormatSymbols_gl_ES=goog.i18n.CompactNumberFormatSymbols_gl;
-goog.i18n.CompactNumberFormatSymbols_gsw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tsd"},1E4:{other:"00\u00a0tsd"},1E5:{other:"000\u00a0tsd"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tausend"},1E4:{other:"00 tausend"},1E5:{other:"000 tausend"},1E6:{other:"0 Millionen"},
-1E7:{other:"00 Millionen"},1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_gsw_CH=goog.i18n.CompactNumberFormatSymbols_gsw;
-goog.i18n.CompactNumberFormatSymbols_gu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0ab9\u0a9c\u0abe\u0ab0"},1E4:{other:"00 \u0ab9\u0a9c\u0abe\u0ab0"},1E5:{other:"000 \u0ab9\u0a9c\u0abe\u0ab0"},1E6:{other:"0 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},
-1E7:{other:"00 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E8:{other:"000 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E9:{other:"0 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E10:{other:"00 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E11:{other:"000 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E12:{other:"0 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E13:{other:"00 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E14:{other:"000 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"}}};
-goog.i18n.CompactNumberFormatSymbols_gu_IN=goog.i18n.CompactNumberFormatSymbols_gu;goog.i18n.CompactNumberFormatSymbols_haw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_haw_US=goog.i18n.CompactNumberFormatSymbols_haw;
-goog.i18n.CompactNumberFormatSymbols_he={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};goog.i18n.CompactNumberFormatSymbols_he_IL=goog.i18n.CompactNumberFormatSymbols_he;
-goog.i18n.CompactNumberFormatSymbols_hi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0L"},1E6:{other:"00L"},1E7:{other:"0Cr"},1E8:{other:"00Cr"},1E9:{other:"000Cr"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093c\u093e\u0930"},1E5:{other:"0 \u0932\u093e\u0916"},1E6:{other:"00 \u0932\u093e\u0916"},1E7:{other:"0 \u0915\u0930\u094b\u0921\u093c"},
-1E8:{other:"00 \u0915\u0930\u094b\u0921\u093c"},1E9:{other:"0 \u0905\u0930\u092c"},1E10:{other:"00 \u0905\u0930\u092c"},1E11:{other:"0 \u0916\u0930\u092c"},1E12:{other:"00 \u0916\u0930\u092c"},1E13:{other:"000 \u0916\u0930\u092c"},1E14:{other:"0000 \u0916\u0930\u092c"}}};goog.i18n.CompactNumberFormatSymbols_hi_IN=goog.i18n.CompactNumberFormatSymbols_hi;
-goog.i18n.CompactNumberFormatSymbols_hr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mlr."},1E10:{other:"00\u00a0mlr."},1E11:{other:"000\u00a0mlr."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milijuna"},1E7:{other:"00 milijuna"},1E8:{other:"000 milijuna"},
-1E9:{other:"0 milijarda"},1E10:{other:"00 milijarda"},1E11:{other:"000 milijarda"},1E12:{other:"0 bilijuna"},1E13:{other:"00 bilijuna"},1E14:{other:"000 bilijuna"}}};goog.i18n.CompactNumberFormatSymbols_hr_HR=goog.i18n.CompactNumberFormatSymbols_hr;
-goog.i18n.CompactNumberFormatSymbols_hu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0E"},1E4:{other:"00\u00a0E"},1E5:{other:"000\u00a0E"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ezer"},1E4:{other:"00 ezer"},1E5:{other:"000 ezer"},1E6:{other:"0 milli\u00f3"},1E7:{other:"00 milli\u00f3"},
-1E8:{other:"000 milli\u00f3"},1E9:{other:"0 milli\u00e1rd"},1E10:{other:"00 milli\u00e1rd"},1E11:{other:"000 milli\u00e1rd"},1E12:{other:"0 billi\u00f3"},1E13:{other:"00 billi\u00f3"},1E14:{other:"000 billi\u00f3"}}};goog.i18n.CompactNumberFormatSymbols_hu_HU=goog.i18n.CompactNumberFormatSymbols_hu;
-goog.i18n.CompactNumberFormatSymbols_id={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};goog.i18n.CompactNumberFormatSymbols_id_ID=goog.i18n.CompactNumberFormatSymbols_id;
-goog.i18n.CompactNumberFormatSymbols_in={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};
-goog.i18n.CompactNumberFormatSymbols_is={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u00fe."},1E4:{other:"00\u00a0\u00fe."},1E5:{other:"000\u00a0\u00fe."},1E6:{other:"0\u00a0m."},1E7:{other:"00\u00a0m."},1E8:{other:"000\u00a0m."},1E9:{other:"0\u00a0ma."},1E10:{other:"00\u00a0ma."},1E11:{other:"000\u00a0ma."},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u00fe\u00fasund"},1E4:{other:"00 \u00fe\u00fasund"},1E5:{other:"000 \u00fe\u00fasund"},
-1E6:{other:"0 millj\u00f3nir"},1E7:{other:"00 millj\u00f3nir"},1E8:{other:"000 millj\u00f3nir"},1E9:{other:"0 milljar\u00f0ar"},1E10:{other:"00 milljar\u00f0ar"},1E11:{other:"000 milljar\u00f0ar"},1E12:{other:"0 billj\u00f3nir"},1E13:{other:"00 billj\u00f3nir"},1E14:{other:"000 billj\u00f3nir"}}};goog.i18n.CompactNumberFormatSymbols_is_IS=goog.i18n.CompactNumberFormatSymbols_is;
-goog.i18n.CompactNumberFormatSymbols_it={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mln"},1E7:{other:"00\u00a0Mln"},1E8:{other:"000\u00a0Mln"},1E9:{other:"0\u00a0Mld"},1E10:{other:"00\u00a0Mld"},1E11:{other:"000\u00a0Mld"},1E12:{other:"0\u00a0Bln"},1E13:{other:"00\u00a0Bln"},1E14:{other:"000\u00a0Bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 migliaia"},1E4:{other:"00 migliaia"},1E5:{other:"000 migliaia"},1E6:{other:"0 milioni"},1E7:{other:"00 milioni"},
-1E8:{other:"000 milioni"},1E9:{other:"0 miliardi"},1E10:{other:"00 miliardi"},1E11:{other:"000 miliardi"},1E12:{other:"0 bilioni"},1E13:{other:"00 bilioni"},1E14:{other:"000 bilioni"}}};goog.i18n.CompactNumberFormatSymbols_it_IT=goog.i18n.CompactNumberFormatSymbols_it;goog.i18n.CompactNumberFormatSymbols_it_SM=goog.i18n.CompactNumberFormatSymbols_it;
-goog.i18n.CompactNumberFormatSymbols_iw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};
-goog.i18n.CompactNumberFormatSymbols_ja={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_ja_JP=goog.i18n.CompactNumberFormatSymbols_ja;
-goog.i18n.CompactNumberFormatSymbols_kn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E4:{other:"00 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E5:{other:"000 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E6:{other:"0 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},
-1E7:{other:"00 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E8:{other:"000 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E9:{other:"0 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E10:{other:"00 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E11:{other:"000 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E12:{other:"0 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E13:{other:"00 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E14:{other:"000 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"}}};
-goog.i18n.CompactNumberFormatSymbols_kn_IN=goog.i18n.CompactNumberFormatSymbols_kn;
-goog.i18n.CompactNumberFormatSymbols_ko={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},
-1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}}};goog.i18n.CompactNumberFormatSymbols_ko_KR=goog.i18n.CompactNumberFormatSymbols_ko;
-goog.i18n.CompactNumberFormatSymbols_ln={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_ln_CD=goog.i18n.CompactNumberFormatSymbols_ln;
-goog.i18n.CompactNumberFormatSymbols_lt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0G"},1E10:{other:"00\u00a0G"},1E11:{other:"000\u00a0G"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bkstan\u010di\u0173"},1E4:{other:"00 t\u016bkstan\u010di\u0173"},1E5:{other:"000 t\u016bkstan\u010di\u0173"},
-1E6:{other:"0 milijon\u0173"},1E7:{other:"00 milijon\u0173"},1E8:{other:"000 milijon\u0173"},1E9:{other:"0 milijard\u0173"},1E10:{other:"00 milijard\u0173"},1E11:{other:"000 milijard\u0173"},1E12:{other:"0 trilijon\u0173"},1E13:{other:"00 trilijon\u0173"},1E14:{other:"000 trilijon\u0173"}}};goog.i18n.CompactNumberFormatSymbols_lt_LT=goog.i18n.CompactNumberFormatSymbols_lt;
-goog.i18n.CompactNumberFormatSymbols_lv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t\u016bkst."},1E4:{other:"00\u00a0t\u016bkst."},1E5:{other:"000\u00a0t\u016bkst."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0trilj."},1E13:{other:"00\u00a0trilj."},1E14:{other:"000\u00a0trilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bksto\u0161i"},1E4:{other:"00 t\u016bksto\u0161i"},
-1E5:{other:"000 t\u016bksto\u0161i"},1E6:{other:"0 miljoni"},1E7:{other:"00 miljoni"},1E8:{other:"000 miljoni"},1E9:{other:"0 miljardi"},1E10:{other:"00 miljardi"},1E11:{other:"000 miljardi"},1E12:{other:"0 trilj."},1E13:{other:"00 trilj."},1E14:{other:"000 trilj."}}};goog.i18n.CompactNumberFormatSymbols_lv_LV=goog.i18n.CompactNumberFormatSymbols_lv;
-goog.i18n.CompactNumberFormatSymbols_ml={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E4:{other:"00 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E5:{other:"000 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E6:{other:"0 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},
-1E7:{other:"00 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E8:{other:"000 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E9:{other:"0 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E10:{other:"00 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E11:{other:"000 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E12:{other:"0 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E13:{other:"00 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E14:{other:"000 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"}}};
-goog.i18n.CompactNumberFormatSymbols_ml_IN=goog.i18n.CompactNumberFormatSymbols_ml;
-goog.i18n.CompactNumberFormatSymbols_mr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093e\u0930"},1E5:{other:"000 \u0939\u091c\u093e\u0930"},1E6:{other:"0 \u0926\u0936\u0932\u0915\u094d\u0937"},
-1E7:{other:"00 \u0926\u0936\u0932\u0915\u094d\u0937"},1E8:{other:"000 \u0926\u0936\u0932\u0915\u094d\u0937"},1E9:{other:"0 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E10:{other:"00 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E11:{other:"000 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E12:{other:"0 \u0926\u0939\u093e \u0916\u0930\u092c"},1E13:{other:"00 \u0926\u0939\u093e \u0916\u0930\u092c"},1E14:{other:"000 \u0926\u0939\u093e \u0916\u0930\u092c"}}};
-goog.i18n.CompactNumberFormatSymbols_mr_IN=goog.i18n.CompactNumberFormatSymbols_mr;
-goog.i18n.CompactNumberFormatSymbols_ms={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0J"},1E7:{other:"00J"},1E8:{other:"000J"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},1E8:{other:"000 juta"},1E9:{other:"0 bilion"},1E10:{other:"00 bilion"},
-1E11:{other:"000 bilion"},1E12:{other:"0 trilion"},1E13:{other:"00 trilion"},1E14:{other:"000 trilion"}}};goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY=goog.i18n.CompactNumberFormatSymbols_ms;goog.i18n.CompactNumberFormatSymbols_mt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_mt_MT=goog.i18n.CompactNumberFormatSymbols_mt;
-goog.i18n.CompactNumberFormatSymbols_nb={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_nb_NO=goog.i18n.CompactNumberFormatSymbols_nb;
-goog.i18n.CompactNumberFormatSymbols_nl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0\u00a0mln."},1E7:{other:"00\u00a0mln."},1E8:{other:"000\u00a0mln."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bln."},1E13:{other:"00\u00a0bln."},1E14:{other:"000\u00a0bln."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duizend"},1E4:{other:"00 duizend"},1E5:{other:"000 duizend"},1E6:{other:"0 miljoen"},
-1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_nl_NL=goog.i18n.CompactNumberFormatSymbols_nl;
-goog.i18n.CompactNumberFormatSymbols_no={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_or={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_or_IN=goog.i18n.CompactNumberFormatSymbols_or;
-goog.i18n.CompactNumberFormatSymbols_pl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tys."},1E4:{other:"00\u00a0tys."},1E5:{other:"000\u00a0tys."},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0bln"},1E13:{other:"00\u00a0bln"},1E14:{other:"000\u00a0bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tysi\u0105ca"},1E4:{other:"00 tysi\u0105ca"},1E5:{other:"000 tysi\u0105ca"},
-1E6:{other:"0 miliona"},1E7:{other:"00 miliona"},1E8:{other:"000 miliona"},1E9:{other:"0 miliarda"},1E10:{other:"00 miliarda"},1E11:{other:"000 miliarda"},1E12:{other:"0 biliona"},1E13:{other:"00 biliona"},1E14:{other:"000 biliona"}}};goog.i18n.CompactNumberFormatSymbols_pl_PL=goog.i18n.CompactNumberFormatSymbols_pl;
-goog.i18n.CompactNumberFormatSymbols_pt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0mi"},1E7:{other:"00\u00a0mi"},1E8:{other:"000\u00a0mi"},1E9:{other:"0\u00a0bi"},1E10:{other:"00\u00a0bi"},1E11:{other:"000\u00a0bi"},1E12:{other:"0\u00a0tri"},1E13:{other:"00\u00a0tri"},1E14:{other:"000\u00a0tri"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 bilh\u00f5es"},1E10:{other:"00 bilh\u00f5es"},1E11:{other:"000 bilh\u00f5es"},1E12:{other:"0 trilh\u00f5es"},1E13:{other:"00 trilh\u00f5es"},1E14:{other:"000 trilh\u00f5es"}}};goog.i18n.CompactNumberFormatSymbols_pt_BR=goog.i18n.CompactNumberFormatSymbols_pt;
-goog.i18n.CompactNumberFormatSymbols_pt_PT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0MM"},1E10:{other:"00\u00a0MM"},1E11:{other:"000\u00a0MM"},1E12:{other:"0\u00a0Bi"},1E13:{other:"00\u00a0Bi"},1E14:{other:"000\u00a0Bi"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 mil milh\u00f5es"},1E10:{other:"00 mil milh\u00f5es"},1E11:{other:"000 mil milh\u00f5es"},1E12:{other:"0 bili\u00f5es"},1E13:{other:"00 bili\u00f5es"},1E14:{other:"000 bili\u00f5es"}}};
-goog.i18n.CompactNumberFormatSymbols_ro={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 de mii"},1E4:{other:"00 de mii"},1E5:{other:"000 de mii"},1E6:{other:"0 de milioane"},
-1E7:{other:"00 de milioane"},1E8:{other:"000 de milioane"},1E9:{other:"0 de miliarde"},1E10:{other:"00 de miliarde"},1E11:{other:"000 de miliarde"},1E12:{other:"0 de trilioane"},1E13:{other:"00 de trilioane"},1E14:{other:"000 de trilioane"}}};goog.i18n.CompactNumberFormatSymbols_ro_RO=goog.i18n.CompactNumberFormatSymbols_ro;
-goog.i18n.CompactNumberFormatSymbols_ru={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u044b\u0441."},1E4:{other:"00\u00a0\u0442\u044b\u0441."},1E5:{other:"000\u00a0\u0442\u044b\u0441."},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u044b\u0441\u044f\u0447\u0438"},1E4:{other:"00 \u0442\u044b\u0441\u044f\u0447\u0438"},1E5:{other:"000 \u0442\u044b\u0441\u044f\u0447\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_ru_RU=goog.i18n.CompactNumberFormatSymbols_ru;
-goog.i18n.CompactNumberFormatSymbols_sk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tis\u00edc"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 mili\u00f3nov"},1E7:{other:"00 mili\u00f3nov"},1E8:{other:"000 mili\u00f3nov"},1E9:{other:"0 miliard"},1E10:{other:"00 mili\u00e1rd"},1E11:{other:"000 mili\u00e1rd"},1E12:{other:"0 bili\u00f3nov"},1E13:{other:"00 bili\u00f3nov"},1E14:{other:"000 bili\u00f3nov"}}};goog.i18n.CompactNumberFormatSymbols_sk_SK=goog.i18n.CompactNumberFormatSymbols_sk;
-goog.i18n.CompactNumberFormatSymbols_sl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mio."},1E7:{other:"00\u00a0mio."},1E8:{other:"000\u00a0mio."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tiso\u010d"},1E4:{other:"00 tiso\u010d"},1E5:{other:"000 tiso\u010d"},
-1E6:{other:"0 milijonov"},1E7:{other:"00 milijonov"},1E8:{other:"000 milijonov"},1E9:{other:"0 milijard"},1E10:{other:"00 milijard"},1E11:{other:"000 milijard"},1E12:{other:"0 bilijonov"},1E13:{other:"00 bilijonov"},1E14:{other:"000 bilijonov"}}};goog.i18n.CompactNumberFormatSymbols_sl_SI=goog.i18n.CompactNumberFormatSymbols_sl;
-goog.i18n.CompactNumberFormatSymbols_sq={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_sq_AL=goog.i18n.CompactNumberFormatSymbols_sq;
-goog.i18n.CompactNumberFormatSymbols_sr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0\u0445\u0438\u0459"},1E5:{other:"000\u00a0\u0445\u0438\u0459"},1E6:{other:"0\u00a0\u043c\u0438\u043b"},1E7:{other:"00\u00a0\u043c\u0438\u043b"},1E8:{other:"000\u00a0\u043c\u0438\u043b"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0431\u0438\u043b"},1E13:{other:"00\u00a0\u0431\u0438\u043b"},
-1E14:{other:"000\u00a0\u0431\u0438\u043b"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u0459\u0430\u0434\u0430"},1E4:{other:"00 \u0445\u0438\u0459\u0430\u0434\u0430"},1E5:{other:"000 \u0445\u0438\u0459\u0430\u0434\u0430"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},
-1E11:{other:"000 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS=goog.i18n.CompactNumberFormatSymbols_sr;
-goog.i18n.CompactNumberFormatSymbols_sv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tn"},1E4:{other:"00\u00a0tn"},1E5:{other:"000\u00a0tn"},1E6:{other:"0\u00a0mn"},1E7:{other:"00\u00a0mn"},1E8:{other:"000\u00a0mn"},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 miljoner"},
-1E7:{other:"00 miljoner"},1E8:{other:"000 miljoner"},1E9:{other:"0 miljarder"},1E10:{other:"00 miljarder"},1E11:{other:"000 miljarder"},1E12:{other:"0 biljoner"},1E13:{other:"00 biljoner"},1E14:{other:"000 biljoner"}}};goog.i18n.CompactNumberFormatSymbols_sv_SE=goog.i18n.CompactNumberFormatSymbols_sv;
-goog.i18n.CompactNumberFormatSymbols_sw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"elfu\u00a00"},1E4:{other:"elfu\u00a000"},1E5:{other:"laki0"},1E6:{other:"M0"},1E7:{other:"M00"},1E8:{other:"M000"},1E9:{other:"B0"},1E10:{other:"B00"},1E11:{other:"B000"},1E12:{other:"T0"},1E13:{other:"T00"},1E14:{other:"T000"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"Elfu 0"},1E4:{other:"Elfu 00"},1E5:{other:"Elfu 000"},1E6:{other:"Milioni 0"},1E7:{other:"Milioni 00"},1E8:{other:"Milioni 000"},1E9:{other:"Bilioni 0"},
-1E10:{other:"Bilioni 00"},1E11:{other:"Bilioni 000"},1E12:{other:"Trilioni 0"},1E13:{other:"Trilioni 00"},1E14:{other:"Trilioni 000"}}};goog.i18n.CompactNumberFormatSymbols_sw_TZ=goog.i18n.CompactNumberFormatSymbols_sw;
-goog.i18n.CompactNumberFormatSymbols_ta={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E4:{other:"00 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E5:{other:"000 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E6:{other:"0 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E7:{other:"00 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E8:{other:"000 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E9:{other:"0 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E10:{other:"00 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E11:{other:"000 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E12:{other:"0 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E13:{other:"00 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E14:{other:"000 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"}}};goog.i18n.CompactNumberFormatSymbols_ta_IN=goog.i18n.CompactNumberFormatSymbols_ta;
-goog.i18n.CompactNumberFormatSymbols_te={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0c35\u0c47\u0c32\u0c41"},1E4:{other:"00 \u0c35\u0c47\u0c32\u0c41"},1E5:{other:"000 \u0c35\u0c47\u0c32\u0c41"},1E6:{other:"0 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},
-1E7:{other:"00 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E8:{other:"000 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E9:{other:"0 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E10:{other:"00 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E11:{other:"000 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E12:{other:"0 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E13:{other:"00 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E14:{other:"000 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"}}};
-goog.i18n.CompactNumberFormatSymbols_te_IN=goog.i18n.CompactNumberFormatSymbols_te;
-goog.i18n.CompactNumberFormatSymbols_th={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0e1e."},1E4:{other:"0\u00a0\u0e21."},1E5:{other:"0\u00a0\u0e2a."},1E6:{other:"0\u00a0\u0e25."},1E7:{other:"00\u00a0\u0e25."},1E8:{other:"000\u00a0\u0e25."},1E9:{other:"0\u00a0\u0e1e.\u0e25."},1E10:{other:"0\u00a0\u0e21.\u0e25."},1E11:{other:"0\u00a0\u0e2a.\u0e25."},1E12:{other:"0\u00a0\u0e25.\u0e25."},1E13:{other:"00\u00a0\u0e25.\u0e25."},1E14:{other:"000\u00a0\u0e25.\u0e25."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0e1e\u0e31\u0e19"},
-1E4:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19"},1E5:{other:"0 \u0e41\u0e2a\u0e19"},1E6:{other:"0 \u0e25\u0e49\u0e32\u0e19"},1E7:{other:"00 \u0e25\u0e49\u0e32\u0e19"},1E8:{other:"000 \u0e25\u0e49\u0e32\u0e19"},1E9:{other:"0 \u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19"},1E10:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19\u0e25\u0e49\u0e32\u0e19"},1E11:{other:"0 \u0e41\u0e2a\u0e19\u0e25\u0e49\u0e32\u0e19"},1E12:{other:"0 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},1E13:{other:"00 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},
-1E14:{other:"000 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"}}};goog.i18n.CompactNumberFormatSymbols_th_TH=goog.i18n.CompactNumberFormatSymbols_th;
-goog.i18n.CompactNumberFormatSymbols_tl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};
-goog.i18n.CompactNumberFormatSymbols_tr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0B"},1E5:{other:"000\u00a0B"},1E6:{other:"0\u00a0Mn"},1E7:{other:"00\u00a0Mn"},1E8:{other:"000\u00a0Mn"},1E9:{other:"0\u00a0Mr"},1E10:{other:"00\u00a0Mr"},1E11:{other:"000\u00a0Mr"},1E12:{other:"0\u00a0Tn"},1E13:{other:"00\u00a0Tn"},1E14:{other:"000\u00a0Tn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 bin"},1E4:{other:"00 bin"},1E5:{other:"000 bin"},1E6:{other:"0 milyon"},1E7:{other:"00 milyon"},
-1E8:{other:"000 milyon"},1E9:{other:"0 milyar"},1E10:{other:"00 milyar"},1E11:{other:"000 milyar"},1E12:{other:"0 trilyon"},1E13:{other:"00 trilyon"},1E14:{other:"000 trilyon"}}};goog.i18n.CompactNumberFormatSymbols_tr_TR=goog.i18n.CompactNumberFormatSymbols_tr;
-goog.i18n.CompactNumberFormatSymbols_uk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u0438\u0441"},1E4:{other:"00\u00a0\u0442\u0438\u0441"},1E5:{other:"000\u00a0\u0442\u0438\u0441"},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u0438\u0441\u044f\u0447\u0456"},1E4:{other:"00 \u0442\u0438\u0441\u044f\u0447\u0456"},1E5:{other:"000 \u0442\u0438\u0441\u044f\u0447\u0456"},1E6:{other:"0 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_uk_UA=goog.i18n.CompactNumberFormatSymbols_uk;
-goog.i18n.CompactNumberFormatSymbols_ur={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u06c1\u0632\u0627\u0631"},1E4:{other:"00\u00a0\u06c1\u0632\u0627\u0631"},1E5:{other:"0\u00a0\u0644\u0627\u06a9\u06be"},1E6:{other:"00\u00a0\u0644\u0627\u06a9\u06be"},1E7:{other:"0\u00a0\u06a9\u0631\u0648\u0691"},1E8:{other:"00\u00a0\u06a9\u0631\u0648\u0691"},1E9:{other:"0\u00a0\u0627\u0631\u0628"},1E10:{other:"00\u00a0\u0627\u0631\u0628"},1E11:{other:"0\u00a0\u06a9\u06be\u0631\u0628"},1E12:{other:"00\u00a0\u06a9\u06be\u0631\u0628"},
-1E13:{other:"000\u00a0\u06a9\u06be\u0631\u0628"},1E14:{other:"0000\u00a0\u06a9\u06be\u0631\u0628"}}};goog.i18n.CompactNumberFormatSymbols_ur_PK=goog.i18n.CompactNumberFormatSymbols_ur;
-goog.i18n.CompactNumberFormatSymbols_vi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0N"},1E4:{other:"00\u00a0N"},1E5:{other:"000\u00a0N"},1E6:{other:"0\u00a0Tr"},1E7:{other:"00\u00a0Tr"},1E8:{other:"000\u00a0Tr"},1E9:{other:"0\u00a0T"},1E10:{other:"00\u00a0T"},1E11:{other:"000\u00a0T"},1E12:{other:"0\u00a0NT"},1E13:{other:"00\u00a0NT"},1E14:{other:"000\u00a0NT"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ngh\u00ecn"},1E4:{other:"00 ngh\u00ecn"},1E5:{other:"000 ngh\u00ecn"},1E6:{other:"0 tri\u1ec7u"},
-1E7:{other:"00 tri\u1ec7u"},1E8:{other:"000 tri\u1ec7u"},1E9:{other:"0 t\u1ef7"},1E10:{other:"00 t\u1ef7"},1E11:{other:"000 t\u1ef7"},1E12:{other:"0 ngh\u00ecn t\u1ef7"},1E13:{other:"00 ngh\u00ecn t\u1ef7"},1E14:{other:"000 ngh\u00ecn t\u1ef7"}}};goog.i18n.CompactNumberFormatSymbols_vi_VN=goog.i18n.CompactNumberFormatSymbols_vi;
-goog.i18n.CompactNumberFormatSymbols_zh={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}}};goog.i18n.CompactNumberFormatSymbols_zh_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_HK={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_TW={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};
-goog.i18n.CompactNumberFormatSymbols_zu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 inkulungwane"},1E4:{other:"00 inkulungwane"},1E5:{other:"000 inkulungwane"},1E6:{other:"0 isigidi"},1E7:{other:"00 isigidi"},1E8:{other:"000 isigidi"},1E9:{other:"0 isigidi sezigidi"},
-1E10:{other:"00 isigidi sezigidi"},1E11:{other:"000 isigidi sezigidi"},1E12:{other:"0 isigidintathu"},1E13:{other:"00 isigidintathu"},1E14:{other:"000 isigidintathu"}}};goog.i18n.CompactNumberFormatSymbols_zu_ZA=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;"af"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af);
-if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg;
-"bn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn);if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca);
-if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr;
-"cs"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs;"cy"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da);
-if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el);
-if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_AU;
-if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_GB;if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_SG;if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et;
-"eu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu);if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi);
-if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi;"fil"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr);
-if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr_CA;if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl);if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl;
-"gsw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he;
-"hi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi);if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu);
-if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu;"id"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is);
-if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is;"it"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;
-"iw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja);if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn;
-"ko"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko;"ln"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt);
-if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv);if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml);
-if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr;"ms"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms);
-if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt);
-if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro;
-"ru"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru;"sk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl);
-if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq);if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr);
-if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv;"sw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw);
-if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur);
-if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur;"vi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_HK;if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_TW;
-"zu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.currency={};goog.i18n.currency.PRECISION_MASK_=7;goog.i18n.currency.POSITION_FLAG_=16;goog.i18n.currency.SPACE_FLAG_=32;goog.i18n.currency.tier2Enabled_=!1;goog.i18n.currency.addTier2Support=function(){if(!goog.i18n.currency.tier2Enabled_){for(var a in goog.i18n.currency.CurrencyInfoTier2)goog.i18n.currency.CurrencyInfo[a]=goog.i18n.currency.CurrencyInfoTier2[a];goog.i18n.currency.tier2Enabled_=!0}};
-goog.i18n.currency.getGlobalCurrencyPattern=function(a){var b=goog.i18n.currency.CurrencyInfo[a],c=b[0];return a==b[1]?goog.i18n.currency.getCurrencyPattern_(c,b[1]):a+" "+goog.i18n.currency.getCurrencyPattern_(c,b[1])};goog.i18n.currency.getGlobalCurrencySign=function(a){var b=goog.i18n.currency.CurrencyInfo[a];return a==b[1]?a:a+" "+b[1]};goog.i18n.currency.getLocalCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[1])};
-goog.i18n.currency.getLocalCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][1]};goog.i18n.currency.getPortableCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[2])};goog.i18n.currency.getPortableCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][2]};goog.i18n.currency.isPrefixSignPosition=function(a){return 0==(goog.i18n.currency.CurrencyInfo[a][0]&goog.i18n.currency.POSITION_FLAG_)};
-goog.i18n.currency.getCurrencyPattern_=function(a,b){var c=["#,##0"],d=a&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}0==(a&goog.i18n.currency.POSITION_FLAG_)?(c.unshift(a&goog.i18n.currency.SPACE_FLAG_?"' ":"'"),c.unshift(b),c.unshift("'")):c.push(a&goog.i18n.currency.SPACE_FLAG_?" '":"'",b,"'");return c.join("")};
-goog.i18n.currency.adjustPrecision=function(a,b){var c=["0"],d=goog.i18n.currency.CurrencyInfo[b],d=d[0]&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}return a.replace(/0.00/g,c.join(""))};
-goog.i18n.currency.CurrencyInfo={AED:[2,"dh","\u062f.\u0625.","DH"],ALL:[0,"Lek","Lek"],AUD:[2,"$","AU$"],BDT:[2,"\u09f3","Tk"],BGN:[2,"lev","lev"],BRL:[2,"R$","R$"],CAD:[2,"$","C$"],CDF:[2,"FrCD","CDF"],CHF:[2,"CHF","CHF"],CLP:[0,"$","CL$"],CNY:[2,"\u00a5","RMB\u00a5"],COP:[0,"$","COL$"],CRC:[0,"\u20a1","CR\u20a1"],CZK:[50,"K\u010d","K\u010d"],DKK:[18,"kr","kr"],DOP:[2,"$","RD$"],EGP:[2,"\u00a3","LE"],ETB:[2,"Birr","Birr"],EUR:[2,"\u20ac","\u20ac"],GBP:[2,"\u00a3","GB\u00a3"],HKD:[2,"$","HK$"],HRK:[2,
-"kn","kn"],HUF:[0,"Ft","Ft"],IDR:[0,"Rp","Rp"],ILS:[2,"\u20aa","IL\u20aa"],INR:[2,"\u20b9","Rs"],IRR:[0,"Rial","IRR"],ISK:[0,"kr","kr"],JMD:[2,"$","JA$"],JPY:[0,"\u00a5","JP\u00a5"],KRW:[0,"\u20a9","KR\u20a9"],LKR:[2,"Rs","SLRs"],LTL:[2,"Lt","Lt"],LVL:[2,"Ls","Ls"],MNT:[0,"\u20ae","MN\u20ae"],MXN:[2,"$","Mex$"],MYR:[2,"RM","RM"],NOK:[50,"kr","NOkr"],PAB:[2,"B/.","B/."],PEN:[2,"S/.","S/."],PHP:[2,"\u20b1","Php"],PKR:[0,"Rs","PKRs."],PLN:[50,"z\u0142","z\u0142"],RON:[2,"RON","RON"],RSD:[0,"din","RSD"],
-RUB:[50,"\u0440\u0443\u0431.","\u0440\u0443\u0431."],SAR:[2,"Rial","Rial"],SEK:[2,"kr","kr"],SGD:[2,"$","S$"],THB:[2,"\u0e3f","THB"],TRY:[2,"TL","YTL"],TWD:[2,"NT$","NT$"],TZS:[0,"TSh","TSh"],UAH:[2,"\u20b4","UAH"],USD:[2,"$","US$"],UYU:[2,"$","$U"],VND:[0,"\u20ab","VN\u20ab"],YER:[0,"Rial","Rial"],ZAR:[2,"R","ZAR"]};
-goog.i18n.currency.CurrencyInfoTier2={AFN:[48,"Af.","AFN"],AMD:[0,"Dram","dram"],AOA:[2,"Kz","Kz"],ARS:[2,"$","AR$"],AWG:[2,"Afl.","Afl."],AZN:[2,"man.","man."],BAM:[2,"KM","KM"],BBD:[2,"$","Bds$"],BHD:[3,"din","din"],BIF:[0,"FBu","FBu"],BMD:[2,"$","BD$"],BND:[2,"$","B$"],BOB:[2,"Bs","Bs"],BSD:[2,"$","BS$"],BTN:[2,"Nu.","Nu."],BWP:[2,"P","pula"],BYR:[0,"BYR","BYR"],BZD:[2,"$","BZ$"],CUC:[1,"$","CUC$"],CUP:[2,"$","CU$"],CVE:[2,"CVE","Esc"],DJF:[0,"Fdj","Fdj"],DZD:[2,"din","din"],ERN:[2,"Nfk","Nfk"],
-FJD:[2,"$","FJ$"],FKP:[2,"\u00a3","FK\u00a3"],GEL:[2,"GEL","GEL"],GHS:[2,"GHS","GHS"],GIP:[2,"\u00a3","GI\u00a3"],GMD:[2,"GMD","GMD"],GNF:[0,"FG","FG"],GTQ:[2,"Q","GTQ"],GYD:[0,"$","GY$"],HNL:[2,"L","HNL"],HTG:[2,"HTG","HTG"],IQD:[0,"din","IQD"],JOD:[3,"din","JOD"],KES:[2,"Ksh","Ksh"],KGS:[2,"KGS","KGS"],KHR:[2,"Riel","KHR"],KMF:[0,"CF","KMF"],KPW:[0,"\u20a9KP","KPW"],KWD:[3,"din","KWD"],KYD:[2,"$","KY$"],KZT:[2,"\u20b8","KZT"],LAK:[0,"\u20ad","\u20ad"],LBP:[0,"L\u00a3","LBP"],LRD:[2,"$","L$"],LSL:[2,
-"LSL","LSL"],LYD:[3,"din","LD"],MAD:[2,"dh","MAD"],MDL:[2,"MDL","MDL"],MGA:[0,"Ar","MGA"],MKD:[2,"din","MKD"],MMK:[0,"K","MMK"],MOP:[2,"MOP","MOP$"],MRO:[0,"MRO","MRO"],MUR:[0,"MURs","MURs"],MWK:[2,"MWK","MWK"],MZN:[2,"MTn","MTn"],NAD:[2,"$","N$"],NGN:[2,"\u20a6","NG\u20a6"],NIO:[2,"C$","C$"],NPR:[2,"Rs","NPRs"],NZD:[2,"$","NZ$"],OMR:[3,"Rial","OMR"],PGK:[2,"PGK","PGK"],PYG:[0,"Gs","PYG"],QAR:[2,"Rial","QR"],RWF:[0,"RF","RF"],SBD:[2,"$","SI$"],SCR:[2,"SCR","SCR"],SDG:[2,"SDG","SDG"],SHP:[2,"\u00a3",
-"SH\u00a3"],SLL:[0,"SLL","SLL"],SOS:[0,"SOS","SOS"],SRD:[2,"$","SR$"],STD:[0,"Db","Db"],SYP:[0,"\u00a3","SY\u00a3"],SZL:[2,"SZL","SZL"],TJS:[2,"Som","TJS"],TND:[3,"din","DT"],TOP:[2,"T$","T$"],TTD:[2,"$","TT$"],UGX:[0,"UGX","UGX"],UZS:[0,"so\u02bcm","UZS"],VEF:[2,"Bs","Bs"],VUV:[0,"VUV","VUV"],WST:[2,"WST","WST"],XAF:[0,"FCFA","FCFA"],XCD:[2,"$","EC$"],XOF:[0,"CFA","CFA"],XPF:[0,"FCFP","FCFP"],ZMK:[0,"ZMK","ZMK"]};goog.i18n.NumberFormatSymbols_af={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_af_ZA=goog.i18n.NumberFormatSymbols_af;
-goog.i18n.NumberFormatSymbols_am={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ETB"};goog.i18n.NumberFormatSymbols_am_ET=goog.i18n.NumberFormatSymbols_am;
-goog.i18n.NumberFormatSymbols_ar={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u0660",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0627\u0633",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0644\u064a\u0633\u00a0\u0631\u0642\u0645",DECIMAL_PATTERN:"#0.###;#0.###-",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#0.00;\u00a4\u00a0#0.00-",DEF_CURRENCY_CODE:"EGP"};goog.i18n.NumberFormatSymbols_ar_001=goog.i18n.NumberFormatSymbols_ar;
-goog.i18n.NumberFormatSymbols_ar_EG=goog.i18n.NumberFormatSymbols_ar;goog.i18n.NumberFormatSymbols_bg={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"BGN"};goog.i18n.NumberFormatSymbols_bg_BG=goog.i18n.NumberFormatSymbols_bg;
-goog.i18n.NumberFormatSymbols_bn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u09e6",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u09b8\u0982\u0996\u09cd\u09af\u09be\u00a0\u09a8\u09be",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4;(#,##,##0.00\u00a4)",DEF_CURRENCY_CODE:"BDT"};goog.i18n.NumberFormatSymbols_bn_BD=goog.i18n.NumberFormatSymbols_bn;
-goog.i18n.NumberFormatSymbols_br={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_br_FR=goog.i18n.NumberFormatSymbols_br;
-goog.i18n.NumberFormatSymbols_ca={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_ca_AD=goog.i18n.NumberFormatSymbols_ca;goog.i18n.NumberFormatSymbols_ca_ES=goog.i18n.NumberFormatSymbols_ca;
-goog.i18n.NumberFormatSymbols_chr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_chr_US=goog.i18n.NumberFormatSymbols_chr;
-goog.i18n.NumberFormatSymbols_cs={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CZK"};goog.i18n.NumberFormatSymbols_cs_CZ=goog.i18n.NumberFormatSymbols_cs;
-goog.i18n.NumberFormatSymbols_cy={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_cy_GB=goog.i18n.NumberFormatSymbols_cy;
-goog.i18n.NumberFormatSymbols_da={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"DKK"};goog.i18n.NumberFormatSymbols_da_DK=goog.i18n.NumberFormatSymbols_da;
-goog.i18n.NumberFormatSymbols_de={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_de_AT={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_de_BE=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_de_CH={DECIMAL_SEP:".",GROUP_SEP:"'",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4-#,##0.00",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_de_DE=goog.i18n.NumberFormatSymbols_de;goog.i18n.NumberFormatSymbols_de_LU=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_el={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"[#E0]",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_el_GR=goog.i18n.NumberFormatSymbols_el;
-goog.i18n.NumberFormatSymbols_en={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_en_AS=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_AU={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"AUD"};goog.i18n.NumberFormatSymbols_en_Dsrt_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_FM=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_GB={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_en_GU=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_IE={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_en_IN={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_en_MH=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_MP=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_PR=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_PW=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_SG={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"SGD"};
-goog.i18n.NumberFormatSymbols_en_TC=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_UM=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VG=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VI=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_ZA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};
-goog.i18n.NumberFormatSymbols_es={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_es_419={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"MXN"};goog.i18n.NumberFormatSymbols_es_EA=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_ES=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_IC=goog.i18n.NumberFormatSymbols_es;
-goog.i18n.NumberFormatSymbols_et={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_et_EE=goog.i18n.NumberFormatSymbols_et;
-goog.i18n.NumberFormatSymbols_eu={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%\u00a0#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_eu_ES=goog.i18n.NumberFormatSymbols_eu;
-goog.i18n.NumberFormatSymbols_fa={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u06f0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d7\u06f1\u06f0^",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0646\u0627\u0639\u062f\u062f",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u200e\u00a4#,##0.00;\u200e(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"IRR"};goog.i18n.NumberFormatSymbols_fa_IR=goog.i18n.NumberFormatSymbols_fa;
-goog.i18n.NumberFormatSymbols_fi={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"ep\u00e4luku",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fi_FI=goog.i18n.NumberFormatSymbols_fi;
-goog.i18n.NumberFormatSymbols_fil={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};goog.i18n.NumberFormatSymbols_fil_PH=goog.i18n.NumberFormatSymbols_fil;
-goog.i18n.NumberFormatSymbols_fr={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fr_BL=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_CA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"CAD"};goog.i18n.NumberFormatSymbols_fr_FR=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_GF=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_GP=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MC=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MF=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MQ=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_RE=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_YT=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_gl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_gl_ES=goog.i18n.NumberFormatSymbols_gl;
-goog.i18n.NumberFormatSymbols_gsw={DECIMAL_SEP:".",GROUP_SEP:"\u2019",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_gsw_CH=goog.i18n.NumberFormatSymbols_gsw;
-goog.i18n.NumberFormatSymbols_gu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_gu_IN=goog.i18n.NumberFormatSymbols_gu;
-goog.i18n.NumberFormatSymbols_haw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_haw_US=goog.i18n.NumberFormatSymbols_haw;
-goog.i18n.NumberFormatSymbols_he={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};goog.i18n.NumberFormatSymbols_he_IL=goog.i18n.NumberFormatSymbols_he;
-goog.i18n.NumberFormatSymbols_hi={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_hi_IN=goog.i18n.NumberFormatSymbols_hi;
-goog.i18n.NumberFormatSymbols_hr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HRK"};goog.i18n.NumberFormatSymbols_hr_HR=goog.i18n.NumberFormatSymbols_hr;
-goog.i18n.NumberFormatSymbols_hu={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HUF"};goog.i18n.NumberFormatSymbols_hu_HU=goog.i18n.NumberFormatSymbols_hu;
-goog.i18n.NumberFormatSymbols_id={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};goog.i18n.NumberFormatSymbols_id_ID=goog.i18n.NumberFormatSymbols_id;
-goog.i18n.NumberFormatSymbols_in={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};
-goog.i18n.NumberFormatSymbols_is={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ISK"};goog.i18n.NumberFormatSymbols_is_IS=goog.i18n.NumberFormatSymbols_is;
-goog.i18n.NumberFormatSymbols_it={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_it_IT=goog.i18n.NumberFormatSymbols_it;goog.i18n.NumberFormatSymbols_it_SM=goog.i18n.NumberFormatSymbols_it;
-goog.i18n.NumberFormatSymbols_iw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};
-goog.i18n.NumberFormatSymbols_ja={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"JPY"};goog.i18n.NumberFormatSymbols_ja_JP=goog.i18n.NumberFormatSymbols_ja;
-goog.i18n.NumberFormatSymbols_kn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0c88",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_kn_IN=goog.i18n.NumberFormatSymbols_kn;
-goog.i18n.NumberFormatSymbols_ko={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"KRW"};goog.i18n.NumberFormatSymbols_ko_KR=goog.i18n.NumberFormatSymbols_ko;
-goog.i18n.NumberFormatSymbols_ln={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CDF"};goog.i18n.NumberFormatSymbols_ln_CD=goog.i18n.NumberFormatSymbols_ln;
-goog.i18n.NumberFormatSymbols_lt={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2013",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"LTL"};goog.i18n.NumberFormatSymbols_lt_LT=goog.i18n.NumberFormatSymbols_lt;
-goog.i18n.NumberFormatSymbols_lv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"nav\u00a0skaitlis",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"LVL"};goog.i18n.NumberFormatSymbols_lv_LV=goog.i18n.NumberFormatSymbols_lv;
-goog.i18n.NumberFormatSymbols_ml={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ml_IN=goog.i18n.NumberFormatSymbols_ml;
-goog.i18n.NumberFormatSymbols_mr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u0966",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_mr_IN=goog.i18n.NumberFormatSymbols_mr;
-goog.i18n.NumberFormatSymbols_ms={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"MYR"};goog.i18n.NumberFormatSymbols_ms_Latn_MY=goog.i18n.NumberFormatSymbols_ms;
-goog.i18n.NumberFormatSymbols_mt={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_mt_MT=goog.i18n.NumberFormatSymbols_mt;
-goog.i18n.NumberFormatSymbols_nb={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};goog.i18n.NumberFormatSymbols_nb_NO=goog.i18n.NumberFormatSymbols_nb;
-goog.i18n.NumberFormatSymbols_nl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_nl_NL=goog.i18n.NumberFormatSymbols_nl;
-goog.i18n.NumberFormatSymbols_no={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};
-goog.i18n.NumberFormatSymbols_or={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_or_IN=goog.i18n.NumberFormatSymbols_or;
-goog.i18n.NumberFormatSymbols_pl={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"PLN"};goog.i18n.NumberFormatSymbols_pl_PL=goog.i18n.NumberFormatSymbols_pl;
-goog.i18n.NumberFormatSymbols_pt={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"BRL"};goog.i18n.NumberFormatSymbols_pt_BR=goog.i18n.NumberFormatSymbols_pt;
-goog.i18n.NumberFormatSymbols_pt_PT={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_ro={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RON"};goog.i18n.NumberFormatSymbols_ro_RO=goog.i18n.NumberFormatSymbols_ro;
-goog.i18n.NumberFormatSymbols_ru={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RUB"};goog.i18n.NumberFormatSymbols_ru_RU=goog.i18n.NumberFormatSymbols_ru;
-goog.i18n.NumberFormatSymbols_sk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sk_SK=goog.i18n.NumberFormatSymbols_sk;
-goog.i18n.NumberFormatSymbols_sl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sl_SI=goog.i18n.NumberFormatSymbols_sl;
-goog.i18n.NumberFormatSymbols_sq={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"ALL"};goog.i18n.NumberFormatSymbols_sq_AL=goog.i18n.NumberFormatSymbols_sq;
-goog.i18n.NumberFormatSymbols_sr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RSD"};goog.i18n.NumberFormatSymbols_sr_Cyrl_RS=goog.i18n.NumberFormatSymbols_sr;
-goog.i18n.NumberFormatSymbols_sv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d710^",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u00a4\u00a4\u00a4",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"SEK"};goog.i18n.NumberFormatSymbols_sv_SE=goog.i18n.NumberFormatSymbols_sv;
-goog.i18n.NumberFormatSymbols_sw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"TZS"};goog.i18n.NumberFormatSymbols_sw_TZ=goog.i18n.NumberFormatSymbols_sw;
-goog.i18n.NumberFormatSymbols_ta={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ta_IN=goog.i18n.NumberFormatSymbols_ta;
-goog.i18n.NumberFormatSymbols_te={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_te_IN=goog.i18n.NumberFormatSymbols_te;
-goog.i18n.NumberFormatSymbols_th={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"THB"};goog.i18n.NumberFormatSymbols_th_TH=goog.i18n.NumberFormatSymbols_th;
-goog.i18n.NumberFormatSymbols_tl={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};
-goog.i18n.NumberFormatSymbols_tr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"TRY"};goog.i18n.NumberFormatSymbols_tr_TR=goog.i18n.NumberFormatSymbols_tr;
-goog.i18n.NumberFormatSymbols_uk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0415",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u041d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"UAH"};goog.i18n.NumberFormatSymbols_uk_UA=goog.i18n.NumberFormatSymbols_uk;
-goog.i18n.NumberFormatSymbols_ur={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"PKR"};goog.i18n.NumberFormatSymbols_ur_PK=goog.i18n.NumberFormatSymbols_ur;
-goog.i18n.NumberFormatSymbols_vi={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"VND"};goog.i18n.NumberFormatSymbols_vi_VN=goog.i18n.NumberFormatSymbols_vi;
-goog.i18n.NumberFormatSymbols_zh={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"CNY"};goog.i18n.NumberFormatSymbols_zh_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_HK={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"HKD"};goog.i18n.NumberFormatSymbols_zh_Hans_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_TW={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"TWD"};
-goog.i18n.NumberFormatSymbols_zu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"I-NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_zu_ZA=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-"af"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af);if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg;"bn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn);
-if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca);if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;
-if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr;"cs"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs;
-"cy"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da);if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de);
-if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;
-if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el);if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_AU;if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_GB;
-if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_SG;
-if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et;"eu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu);
-if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi);if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi;
-"fil"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr);if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr_CA;
-if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;
-if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl);
-if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl;"gsw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he;"hi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi);
-if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu);if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu;
-"id"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is);if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is;
-"it"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;"iw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja);
-if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn;"ko"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko;
-"ln"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt);if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv);
-if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml);if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr;
-"ms"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms);if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro;"ru"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru;
-"sk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl);if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq);
-if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr);if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv;
-"sw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw);if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur);if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur;
-"vi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_HK;
-if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormat=function(a,b,c){this.intlCurrencyCode_=b||goog.i18n.NumberFormatSymbols.DEF_CURRENCY_CODE;this.currencyStyle_=c||goog.i18n.NumberFormat.CurrencyStyle.LOCAL;this.maximumIntegerDigits_=40;this.minimumIntegerDigits_=1;this.significantDigits_=0;this.maximumFractionDigits_=3;this.minExponentDigits_=this.minimumFractionDigits_=0;this.showTrailingZeros_=this.useSignForPositiveExponent_=!1;this.positiveSuffix_=this.positivePrefix_="";this.negativePrefix_="-";this.negativeSuffix_="";
-this.multiplier_=1;this.groupingSize_=3;this.useExponentialNotation_=this.decimalSeparatorAlwaysShown_=!1;this.compactStyle_=goog.i18n.NumberFormat.CompactStyle.NONE;this.baseFormattingNumber_=null;"number"==typeof a?this.applyStandardPattern_(a):this.applyPattern_(a)};goog.i18n.NumberFormat.Format={DECIMAL:1,SCIENTIFIC:2,PERCENT:3,CURRENCY:4,COMPACT_SHORT:5,COMPACT_LONG:6};goog.i18n.NumberFormat.CurrencyStyle={LOCAL:0,PORTABLE:1,GLOBAL:2};goog.i18n.NumberFormat.CompactStyle={NONE:0,SHORT:1,LONG:2};
-goog.i18n.NumberFormat.enforceAsciiDigits_=!1;goog.i18n.NumberFormat.setEnforceAsciiDigits=function(a){goog.i18n.NumberFormat.enforceAsciiDigits_=a};goog.i18n.NumberFormat.isEnforceAsciiDigits=function(){return goog.i18n.NumberFormat.enforceAsciiDigits_};goog.i18n.NumberFormat.prototype.setMinimumFractionDigits=function(a){if(0<this.significantDigits_&&0<a)throw Error("Can't combine significant digits and minimum fraction digits");this.minimumFractionDigits_=a};
-goog.i18n.NumberFormat.prototype.setMaximumFractionDigits=function(a){this.maximumFractionDigits_=a};goog.i18n.NumberFormat.prototype.setSignificantDigits=function(a){if(0<this.minimumFractionDigits_&&0<=a)throw Error("Can't combine significant digits and minimum fraction digits");this.significantDigits_=a};
-goog.i18n.NumberFormat.prototype.applyPattern_=function(a){a.replace(/ /g,"\u00a0");var b=[0];this.positivePrefix_=this.parseAffix_(a,b);var c=b[0];this.parseTrunk_(a,b);c=b[0]-c;this.positiveSuffix_=this.parseAffix_(a,b);b[0]<a.length&&a.charAt(b[0])==goog.i18n.NumberFormat.PATTERN_SEPARATOR_?(b[0]++,this.negativePrefix_=this.parseAffix_(a,b),b[0]+=c,this.negativeSuffix_=this.parseAffix_(a,b)):(this.negativePrefix_=this.positivePrefix_+this.negativePrefix_,this.negativeSuffix_+=this.positiveSuffix_)};
-goog.i18n.NumberFormat.prototype.applyStandardPattern_=function(a){switch(a){case goog.i18n.NumberFormat.Format.DECIMAL:this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);break;case goog.i18n.NumberFormat.Format.SCIENTIFIC:this.applyPattern_(goog.i18n.NumberFormatSymbols.SCIENTIFIC_PATTERN);break;case goog.i18n.NumberFormat.Format.PERCENT:this.applyPattern_(goog.i18n.NumberFormatSymbols.PERCENT_PATTERN);break;case goog.i18n.NumberFormat.Format.CURRENCY:this.applyPattern_(goog.i18n.currency.adjustPrecision(goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN,
-this.intlCurrencyCode_));break;case goog.i18n.NumberFormat.Format.COMPACT_SHORT:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.SHORT);break;case goog.i18n.NumberFormat.Format.COMPACT_LONG:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.LONG);break;default:throw Error("Unsupported pattern type.");}};
-goog.i18n.NumberFormat.prototype.applyCompactStyle_=function(a){this.compactStyle_=a;this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);this.setMinimumFractionDigits(0);this.setMaximumFractionDigits(2);this.setSignificantDigits(2)};
-goog.i18n.NumberFormat.prototype.parse=function(a,b){var c=b||[0];if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact numbers is unimplemented");var d=NaN;a=a.replace(/ /g,"\u00a0");var e=a.indexOf(this.positivePrefix_,c[0])==c[0],f=a.indexOf(this.negativePrefix_,c[0])==c[0];e&&f&&(this.positivePrefix_.length>this.negativePrefix_.length?f=!1:this.positivePrefix_.length<this.negativePrefix_.length&&(e=!1));e?c[0]+=this.positivePrefix_.length:f&&(c[0]+=this.negativePrefix_.length);
-a.indexOf(goog.i18n.NumberFormatSymbols.INFINITY,c[0])==c[0]?(c[0]+=goog.i18n.NumberFormatSymbols.INFINITY.length,d=Infinity):d=this.parseNumber_(a,c);if(e){if(a.indexOf(this.positiveSuffix_,c[0])!=c[0])return NaN;c[0]+=this.positiveSuffix_.length}else if(f){if(a.indexOf(this.negativeSuffix_,c[0])!=c[0])return NaN;c[0]+=this.negativeSuffix_.length}return f?-d:d};
-goog.i18n.NumberFormat.prototype.parseNumber_=function(a,b){var c=!1,d=!1,e=!1,f=1,g=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,h=goog.i18n.NumberFormatSymbols.GROUP_SEP,k=goog.i18n.NumberFormatSymbols.EXP_SYMBOL;if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact style numbers is not implemented");for(var l="";b[0]<a.length;b[0]++){var m=a.charAt(b[0]),p=this.getDigit_(m);if(0<=p&&9>=p)l+=p,e=!0;else if(m==g.charAt(0)){if(c||d)break;l+=".";c=!0}else if(m==
-h.charAt(0)&&("\u00a0"!=h.charAt(0)||b[0]+1<a.length&&0<=this.getDigit_(a.charAt(b[0]+1)))){if(c||d)break}else if(m==k.charAt(0)){if(d)break;l+="E";d=!0}else if("+"==m||"-"==m)l+=m;else if(m==goog.i18n.NumberFormatSymbols.PERCENT.charAt(0)){if(1!=f)break;f=100;if(e){b[0]++;break}}else if(m==goog.i18n.NumberFormatSymbols.PERMILL.charAt(0)){if(1!=f)break;f=1E3;if(e){b[0]++;break}}else break}return parseFloat(l)/f};
-goog.i18n.NumberFormat.prototype.format=function(a){if(isNaN(a))return goog.i18n.NumberFormatSymbols.NAN;var b=[],c=goog.isNull(this.baseFormattingNumber_)?a:this.baseFormattingNumber_,c=this.getUnitAfterRounding_(c,a);a/=Math.pow(10,c.divisorBase);b.push(c.prefix);var d=0>a||0==a&&0>1/a;b.push(d?this.negativePrefix_:this.positivePrefix_);isFinite(a)?(a*=d?-1:1,a*=this.multiplier_,this.useExponentialNotation_?this.subformatExponential_(a,b):this.subformatFixed_(a,this.minimumIntegerDigits_,b)):b.push(goog.i18n.NumberFormatSymbols.INFINITY);
-b.push(d?this.negativeSuffix_:this.positiveSuffix_);b.push(c.suffix);return b.join("")};goog.i18n.NumberFormat.prototype.roundNumber_=function(a){var b=Math.pow(10,this.maximumFractionDigits_),c=0>=this.significantDigits_?Math.round(a*b):Math.floor(this.roundToSignificantDigits_(a*b,this.significantDigits_,this.maximumFractionDigits_));isFinite(c)?(a=Math.floor(c/b),b=Math.floor(c-a*b)):b=0;return{intValue:a,fracValue:b}};
-goog.i18n.NumberFormat.prototype.subformatFixed_=function(a,b,c){if(this.minimumFractionDigits_>this.maximumFractionDigits_)throw Error("Min value must be less than max value");a=this.roundNumber_(a);var d=Math.pow(10,this.maximumFractionDigits_),e=a.intValue,f=a.fracValue,g=0==e?0:this.intLog10_(e)+1,h=0<this.minimumFractionDigits_||0<f||this.showTrailingZeros_&&g<this.significantDigits_;a=this.minimumFractionDigits_;h&&(a=this.showTrailingZeros_&&0<this.significantDigits_?this.significantDigits_-
-g:this.minimumFractionDigits_);for(var k="",g=e;1E20<g;)k="0"+k,g=Math.round(g/10);var k=g+k,l=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,m=goog.i18n.NumberFormatSymbols.GROUP_SEP,g=goog.i18n.NumberFormat.enforceAsciiDigits_?48:goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0),p=k.length;if(0<e||0<b){for(e=p;e<b;e++)c.push(String.fromCharCode(g));for(e=0;e<p;e++)c.push(String.fromCharCode(g+1*k.charAt(e))),1<p-e&&0<this.groupingSize_&&1==(p-e)%this.groupingSize_&&c.push(m)}else h||c.push(String.fromCharCode(g));
-(this.decimalSeparatorAlwaysShown_||h)&&c.push(l);b=""+(f+d);for(d=b.length;"0"==b.charAt(d-1)&&d>a+1;)d--;for(e=1;e<d;e++)c.push(String.fromCharCode(g+1*b.charAt(e)))};
-goog.i18n.NumberFormat.prototype.addExponentPart_=function(a,b){b.push(goog.i18n.NumberFormatSymbols.EXP_SYMBOL);0>a?(a=-a,b.push(goog.i18n.NumberFormatSymbols.MINUS_SIGN)):this.useSignForPositiveExponent_&&b.push(goog.i18n.NumberFormatSymbols.PLUS_SIGN);for(var c=""+a,d=goog.i18n.NumberFormat.enforceAsciiDigits_?"0":goog.i18n.NumberFormatSymbols.ZERO_DIGIT,e=c.length;e<this.minExponentDigits_;e++)b.push(d);b.push(c)};
-goog.i18n.NumberFormat.prototype.subformatExponential_=function(a,b){if(0==a)this.subformatFixed_(a,this.minimumIntegerDigits_,b),this.addExponentPart_(0,b);else{var c=goog.math.safeFloor(Math.log(a)/Math.log(10));a/=Math.pow(10,c);var d=this.minimumIntegerDigits_;if(1<this.maximumIntegerDigits_&&this.maximumIntegerDigits_>this.minimumIntegerDigits_){for(;0!=c%this.maximumIntegerDigits_;)a*=10,c--;d=1}else 1>this.minimumIntegerDigits_?(c++,a/=10):(c-=this.minimumIntegerDigits_-1,a*=Math.pow(10,this.minimumIntegerDigits_-
-1));this.subformatFixed_(a,d,b);this.addExponentPart_(c,b)}};goog.i18n.NumberFormat.prototype.getDigit_=function(a){a=a.charCodeAt(0);if(48<=a&&58>a)return a-48;var b=goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0);return b<=a&&a<b+10?a-b:-1};goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_="0";goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_=",";goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_=".";goog.i18n.NumberFormat.PATTERN_PER_MILLE_="\u2030";goog.i18n.NumberFormat.PATTERN_PERCENT_="%";
-goog.i18n.NumberFormat.PATTERN_DIGIT_="#";goog.i18n.NumberFormat.PATTERN_SEPARATOR_=";";goog.i18n.NumberFormat.PATTERN_EXPONENT_="E";goog.i18n.NumberFormat.PATTERN_PLUS_="+";goog.i18n.NumberFormat.PATTERN_MINUS_="-";goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_="\u00a4";goog.i18n.NumberFormat.QUOTE_="'";
-goog.i18n.NumberFormat.prototype.parseAffix_=function(a,b){for(var c="",d=!1,e=a.length;b[0]<e;b[0]++){var f=a.charAt(b[0]);if(f==goog.i18n.NumberFormat.QUOTE_)b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.QUOTE_?(b[0]++,c+="'"):d=!d;else if(d)c+=f;else switch(f){case goog.i18n.NumberFormat.PATTERN_DIGIT_:case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_SEPARATOR_:return c;
-case goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_:if(b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_)b[0]++,c+=this.intlCurrencyCode_;else switch(this.currencyStyle_){case goog.i18n.NumberFormat.CurrencyStyle.LOCAL:c+=goog.i18n.currency.getLocalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.GLOBAL:c+=goog.i18n.currency.getGlobalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.PORTABLE:c+=goog.i18n.currency.getPortableCurrencySign(this.intlCurrencyCode_)}break;
-case goog.i18n.NumberFormat.PATTERN_PERCENT_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=100;c+=goog.i18n.NumberFormatSymbols.PERCENT;break;case goog.i18n.NumberFormat.PATTERN_PER_MILLE_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=1E3;c+=goog.i18n.NumberFormatSymbols.PERMILL;break;default:c+=f}}return c};
-goog.i18n.NumberFormat.prototype.parseTrunk_=function(a,b){for(var c=-1,d=0,e=0,f=0,g=-1,h=a.length,k=!0;b[0]<h&&k;b[0]++){var l=a.charAt(b[0]);switch(l){case goog.i18n.NumberFormat.PATTERN_DIGIT_:0<e?f++:d++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:if(0<f)throw Error('Unexpected "0" in pattern "'+a+'"');e++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:g=0;break;case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:if(0<=c)throw Error('Multiple decimal separators in pattern "'+
-a+'"');c=d+e+f;break;case goog.i18n.NumberFormat.PATTERN_EXPONENT_:if(this.useExponentialNotation_)throw Error('Multiple exponential symbols in pattern "'+a+'"');this.useExponentialNotation_=!0;this.minExponentDigits_=0;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_PLUS_&&(b[0]++,this.useSignForPositiveExponent_=!0);for(;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_;)b[0]++,this.minExponentDigits_++;if(1>d+e||1>this.minExponentDigits_)throw Error('Malformed exponential pattern "'+
-a+'"');k=!1;break;default:b[0]--,k=!1}}0==e&&0<d&&0<=c&&(e=c,0==e&&e++,f=d-e,d=e-1,e=1);if(0>c&&0<f||0<=c&&(c<d||c>d+e)||0==g)throw Error('Malformed pattern "'+a+'"');f=d+e+f;this.maximumFractionDigits_=0<=c?f-c:0;0<=c&&(this.minimumFractionDigits_=d+e-c,0>this.minimumFractionDigits_&&(this.minimumFractionDigits_=0));e=0<=c?c:f;this.minimumIntegerDigits_=e-d;this.useExponentialNotation_&&(this.maximumIntegerDigits_=d+this.minimumIntegerDigits_,0==this.maximumFractionDigits_&&0==this.minimumIntegerDigits_&&
-(this.minimumIntegerDigits_=1));this.groupingSize_=Math.max(0,g);this.decimalSeparatorAlwaysShown_=0==c||c==f};goog.i18n.NumberFormat.NULL_UNIT_={prefix:"",suffix:"",divisorBase:0};
-goog.i18n.NumberFormat.prototype.getUnitFor_=function(a,b){var c=this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.SHORT?goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_SHORT_PATTERN:goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_LONG_PATTERN;if(3>a)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.min(14,a);c=c[Math.pow(10,a)];if(!c)return goog.i18n.NumberFormat.NULL_UNIT_;c=c[b];return c&&"0"!=c?(c=/([^0]*)(0+)(.*)/.exec(c))?{prefix:c[1],suffix:c[3],divisorBase:a-(c[2].length-1)}:
-goog.i18n.NumberFormat.NULL_UNIT_:goog.i18n.NumberFormat.NULL_UNIT_};
-goog.i18n.NumberFormat.prototype.getUnitAfterRounding_=function(a,b){if(this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.NONE)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.abs(a);b=Math.abs(b);var c=this.pluralForm_(a),d=1>=a?0:this.intLog10_(a),c=this.getUnitFor_(d,c).divisorBase,d=b/Math.pow(10,c),d=this.roundNumber_(d),e=a/Math.pow(10,c),e=this.roundNumber_(e),d=this.pluralForm_(d.intValue+d.fracValue);return this.getUnitFor_(c+this.intLog10_(e.intValue),d)};
-goog.i18n.NumberFormat.prototype.intLog10_=function(a){for(var b=0;1<=(a/=10);)b++;return b};goog.i18n.NumberFormat.prototype.roundToSignificantDigits_=function(a,b,c){if(!a)return a;var d=this.intLog10_(a);b=b-d-1;if(b<-c)return c=Math.pow(10,c),Math.round(a/c)*c;c=Math.pow(10,b);a=Math.round(a*c);return a/c};goog.i18n.NumberFormat.prototype.pluralForm_=function(){return"other"};goog.i18n.ordinalRules={};goog.i18n.ordinalRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.ordinalRules.defaultSelect_=function(){return goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.frSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.huSelect_=function(a){return 1==a||5==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.svSelect_=function(a){return 1!=a%10&&2!=a%10||11==a%100||12==a%100?goog.i18n.ordinalRules.Keyword.OTHER:goog.i18n.ordinalRules.Keyword.ONE};goog.i18n.ordinalRules.enSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.ordinalRules.Keyword.ONE:2==a%10&&12!=a%100?goog.i18n.ordinalRules.Keyword.TWO:3==a%10&&13!=a%100?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.itSelect_=function(a){return 11==a||8==a||80==a||800==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.caSelect_=function(a){return 1==a||3==a?goog.i18n.ordinalRules.Keyword.ONE:2==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.mrSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.guSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.bnSelect_=function(a){return 1==a||5==a||7==a||8==a||9==a||10==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.zuSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:a==(a|0)&&2<=a&&9>=a?goog.i18n.ordinalRules.Keyword.FEW:a==(a|0)&&(10<=a&&19>=a||100<=a&&199>=a||1E3<=a&&1999>=a)?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"am"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bg"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.bnSelect_);"br"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ca"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.caSelect_);"chr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"cy"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"da"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"de"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"el"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"en"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"et"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fa"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fil"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"fr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_;"gl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gsw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"haw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"he"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"hr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.huSelect_);"id"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"is"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"it"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.itSelect_);"iw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ja"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ln"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ml"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"mr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.mrSelect_);"ms"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-"mt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nb"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"no"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"or"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"pl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"pt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"ro"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"ru"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"sk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sq"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.svSelect_);"sw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ta"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"te"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"th"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ur"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"vi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"zh"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.zuSelect_);goog.i18n.pluralRules={};goog.i18n.pluralRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.pluralRules.defaultSelect_=function(){return goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.arSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&99>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.heSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:0!=a&&0==a%10?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.enSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.filSelect_=function(a){return 0==a||1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.frSelect_=function(a){return 0<=a&&2>=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.lvSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.iuSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gaSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a&&6>=a?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&7<=a&&10>=a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.roSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||1!=a&&a==(a|0)&&1<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.ltSelect_=function(a){return 1==a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&9>=a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.beSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:0==a%10||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&11<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.csSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&4>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.plSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:1!=a&&(0==a%10||1==a%10)||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&12<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.slSelect_=function(a){return 1==a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%100?goog.i18n.pluralRules.Keyword.TWO:3==a%100||4==a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.mtSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||a==(a|0)&&2<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.mkSelect_=function(a){return 1==a%10&&11!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.cySelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:3==a?goog.i18n.pluralRules.Keyword.FEW:6==a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.lagSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:0<=a&&2>=a&&0!=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.shiSelect_=function(a){return 0<=a&&1>=a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&10>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.brSelect_=function(a){return 1==a%10&&11!=a%100&&71!=a%100&&91!=a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%10&&12!=a%100&&72!=a%100&&92!=a%100?goog.i18n.pluralRules.Keyword.TWO:(3==a%10||4==a%10||9==a%10)&&(10>a%100||19<a%100)&&(70>a%100||79<a%100)&&(90>a%100||99<a%100)?goog.i18n.pluralRules.Keyword.FEW:0!=a&&0==a%1E6?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.kshSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.tzmSelect_=function(a){return 0==a||1==a||a==(a|0)&&11<=a&&99>=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.gvSelect_=function(a){return 1==a%10||2==a%10||0==a%20?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gdSelect_=function(a){return 1==a||11==a?goog.i18n.pluralRules.Keyword.ONE:2==a||12==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&(3<=a&&10>=a||13<=a&&19>=a)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"am"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.arSelect_);"bg"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"bn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"br"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.brSelect_);"ca"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"chr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"cy"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.cySelect_);"da"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"de"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"el"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"en"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"et"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fa"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fil"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"fr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_;
-"gl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gsw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"haw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"he"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"hi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"hr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"hu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"id"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"is"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"it"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"iw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"ja"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ln"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"lt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.ltSelect_);
-"lv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.lvSelect_);"ml"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"mr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ms"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"mt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.mtSelect_);"nb"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"nl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"no"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"or"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"pl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.plSelect_);"pt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"ro"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.roSelect_);"ru"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"sl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.slSelect_);"sq"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"sr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"sw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ta"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"te"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"th"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-"tl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"tr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"ur"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"vi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"zh"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);goog.i18n.MessageFormat=function(a){this.literals_=[];this.parsedPattern_=[];this.numberFormatter_=new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);this.parsePattern_(a)};goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_="\ufddf_";goog.i18n.MessageFormat.Element_={STRING:0,BLOCK:1};goog.i18n.MessageFormat.BlockType_={PLURAL:0,ORDINAL:1,SELECT:2,SIMPLE:3,STRING:4,UNKNOWN:5};goog.i18n.MessageFormat.OTHER_="other";goog.i18n.MessageFormat.REGEX_LITERAL_=/'([{}#].*?)'/g;
-goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_=/''/g;goog.i18n.MessageFormat.prototype.format=function(a){return this.format_(a,!1)};goog.i18n.MessageFormat.prototype.format_=function(a,b){if(0==this.parsedPattern_.length)return"";var c=[];this.formatBlock_(this.parsedPattern_,a,b,c);c=c.join("");for(b||goog.asserts.assert(-1==c.search("#"),"Not all # were replaced.");0<this.literals_.length;)c=c.replace(this.buildPlaceholder_(this.literals_),this.literals_.pop());return c};
-goog.i18n.MessageFormat.prototype.formatBlock_=function(a,b,c,d){for(var e=0;e<a.length;e++)switch(a[e].type){case goog.i18n.MessageFormat.BlockType_.STRING:d.push(a[e].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:var f=a[e].value;this.formatSimplePlaceholder_(f,b,d);break;case goog.i18n.MessageFormat.BlockType_.SELECT:f=a[e].value;this.formatSelectBlock_(f,b,c,d);break;case goog.i18n.MessageFormat.BlockType_.PLURAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.pluralRules.select,
-c,d);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.ordinalRules.select,c,d);break;default:goog.asserts.fail("Unrecognized block type.")}};goog.i18n.MessageFormat.prototype.formatSimplePlaceholder_=function(a,b,c){b=b[a];goog.isDef(b)?(this.literals_.push(b),c.push(this.buildPlaceholder_(this.literals_))):c.push("Undefined parameter - "+a)};
-goog.i18n.MessageFormat.prototype.formatSelectBlock_=function(a,b,c,d){var e=a.argumentIndex;goog.isDef(b[e])?(e=a[b[e]],goog.isDef(e)||(e=a[goog.i18n.MessageFormat.OTHER_],goog.asserts.assertArray(e,"Invalid option or missing other option for select block.")),this.formatBlock_(e,b,c,d)):d.push("Undefined parameter - "+e)};
-goog.i18n.MessageFormat.prototype.formatPluralOrdinalBlock_=function(a,b,c,d,e){var f=a.argumentIndex,g=a.argumentOffset,h=+b[f];isNaN(h)?e.push("Undefined or invalid parameter - "+f):(g=h-g,f=a[b[f]],goog.isDef(f)||(goog.asserts.assert(0<=g,"Argument index smaller than offset."),c=c(g),goog.asserts.assertString(c,"Invalid plural key."),f=a[c],goog.isDef(f)||(f=a[goog.i18n.MessageFormat.OTHER_]),goog.asserts.assertArray(f,"Invalid option or missing other option for plural block.")),a=[],this.formatBlock_(f,
-b,d,a),b=a.join(""),goog.asserts.assertString(b,"Empty block in plural."),d?e.push(b):(d=this.numberFormatter_.format(g),e.push(b.replace(/#/g,d))))};goog.i18n.MessageFormat.prototype.parsePattern_=function(a){a&&(a=this.insertPlaceholders_(a),this.parsedPattern_=this.parseBlock_(a))};
-goog.i18n.MessageFormat.prototype.insertPlaceholders_=function(a){var b=this.literals_,c=goog.bind(this.buildPlaceholder_,this);a=a.replace(goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_,function(){b.push("'");return c(b)});return a=a.replace(goog.i18n.MessageFormat.REGEX_LITERAL_,function(a,e){b.push(e);return c(b)})};
-goog.i18n.MessageFormat.prototype.extractParts_=function(a){var b=0,c=[],d=[],e=/[{}]/g;e.lastIndex=0;for(var f;f=e.exec(a);){var g=f.index;"}"==f[0]?(f=c.pop(),goog.asserts.assert(goog.isDef(f)&&"{"==f,"No matching { for }."),0==c.length&&(f={},f.type=goog.i18n.MessageFormat.Element_.BLOCK,f.value=a.substring(b,g),d.push(f),b=g+1)):(0==c.length&&(b=a.substring(b,g),""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b}),b=g+1),c.push("{"))}goog.asserts.assert(0==c.length,"There are mismatched { or } in the pattern.");
-b=a.substring(b);""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b});return d};goog.i18n.MessageFormat.PLURAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*plural\s*,(?:\s*offset:(\d+))?/;goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*selectordinal\s*,/;goog.i18n.MessageFormat.SELECT_BLOCK_RE_=/^\s*(\w+)\s*,\s*select\s*,/;
-goog.i18n.MessageFormat.prototype.parseBlockType_=function(a){return goog.i18n.MessageFormat.PLURAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.PLURAL:goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.ORDINAL:goog.i18n.MessageFormat.SELECT_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.SELECT:/^\s*\w+\s*/.test(a)?goog.i18n.MessageFormat.BlockType_.SIMPLE:goog.i18n.MessageFormat.BlockType_.UNKNOWN};
-goog.i18n.MessageFormat.prototype.parseBlock_=function(a){var b=[];a=this.extractParts_(a);for(var c=0;c<a.length;c++){var d={};if(goog.i18n.MessageFormat.Element_.STRING==a[c].type)d.type=goog.i18n.MessageFormat.BlockType_.STRING,d.value=a[c].value;else if(goog.i18n.MessageFormat.Element_.BLOCK==a[c].type){var e=this.parseBlockType_(a[c].value);switch(e){case goog.i18n.MessageFormat.BlockType_.SELECT:d.type=goog.i18n.MessageFormat.BlockType_.SELECT;d.value=this.parseSelectBlock_(a[c].value);break;
-case goog.i18n.MessageFormat.BlockType_.PLURAL:d.type=goog.i18n.MessageFormat.BlockType_.PLURAL;d.value=this.parsePluralBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:d.type=goog.i18n.MessageFormat.BlockType_.ORDINAL;d.value=this.parseOrdinalBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:d.type=goog.i18n.MessageFormat.BlockType_.SIMPLE;d.value=a[c].value;break;default:goog.asserts.fail("Unknown block type.")}}else goog.asserts.fail("Unknown part of the pattern.");
-b.push(d)}return b};
-goog.i18n.MessageFormat.prototype.parseSelectBlock_=function(a){var b="",c=goog.i18n.MessageFormat.SELECT_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing select key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid select value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");c[e.replace(/\s/g,
-"")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in select statement.");return c};
-goog.i18n.MessageFormat.prototype.parsePluralBlock_=function(a){var b="",c=0,d=goog.i18n.MessageFormat.PLURAL_BLOCK_RE_;a=a.replace(d,function(a,d,e){b=d;e&&(c=parseInt(e,10));return""});d={};d.argumentIndex=b;d.argumentOffset=c;a=this.extractParts_(a);for(var e=0;e<a.length;){var f=a[e].value;goog.asserts.assertString(f,"Missing plural key element.");e++;goog.asserts.assert(e<a.length,"Missing or invalid plural value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[e].type)var g=this.parseBlock_(a[e].value);
-else goog.asserts.fail("Expected block type.");d[f.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=g;e++}goog.asserts.assertArray(d[goog.i18n.MessageFormat.OTHER_],"Missing other key in plural statement.");return d};
-goog.i18n.MessageFormat.prototype.parseOrdinalBlock_=function(a){var b="",c=goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;c.argumentOffset=0;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing ordinal key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid ordinal value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");
-c[e.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in selectordinal statement.");return c};goog.i18n.MessageFormat.prototype.buildPlaceholder_=function(a){goog.asserts.assert(0<a.length,"Literal array is empty.");a=(a.length-1).toString(10);return goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_+a+"_"};cvox.TtsCapturingEventListener=function(){};cvox.TtsInterface=function(){};cvox.TtsInterface.prototype.speak=function(){};cvox.TtsInterface.prototype.isSpeaking=function(){};cvox.TtsInterface.prototype.stop=function(){};cvox.TtsInterface.prototype.increaseOrDecreaseProperty=function(){};cvox.TtsInterface.prototype.getDefaultProperty=function(){};cvox.AbstractTts=function(){this.ttsProperties={};this.propertyDefault={rate:0.5,pitch:0.5,volume:0.5};this.propertyMin={rate:0,pitch:0,volume:0};this.propertyMax={rate:1,pitch:1,volume:1};this.propertyStep={rate:0.1,pitch:0.1,volume:0.1};if(void 0==cvox.AbstractTts.pronunciationDictionaryRegexp_){var a=[],b;for(b in cvox.AbstractTts.PRONUNCIATION_DICTIONARY)a.push(b);a="\\b("+a.join("|")+")\\b";cvox.AbstractTts.pronunciationDictionaryRegexp_=RegExp(a,"ig")}if(void 0==cvox.AbstractTts.substitutionDictionaryRegexp_){var a=
-[],c;for(c in cvox.AbstractTts.SUBSTITUTION_DICTIONARY)a.push(c);a="("+a.join("|")+")";cvox.AbstractTts.substitutionDictionaryRegexp_=RegExp(a,"ig")}};cvox.AbstractTts.prototype.speak=function(){return this};cvox.AbstractTts.prototype.isSpeaking=function(){return!1};cvox.AbstractTts.prototype.stop=function(){};
-cvox.AbstractTts.prototype.increaseOrDecreaseProperty=function(a,b){var c=this.propertyMin[a],d=this.propertyMax[a],e=this.propertyStep[a],f=this.ttsProperties[a],f=b?f+e:f-e;this.ttsProperties[a]=Math.max(Math.min(f,d),c)};
-cvox.AbstractTts.prototype.mergeProperties=function(a){var b={},c;if(this.ttsProperties)for(c in this.ttsProperties)b[c]=this.ttsProperties[c];if(a){c=cvox.AbstractTts;"number"==typeof a[c.VOLUME]&&(b[c.VOLUME]=a[c.VOLUME]);"number"==typeof a[c.PITCH]&&(b[c.PITCH]=a[c.PITCH]);"number"==typeof a[c.RATE]&&(b[c.RATE]=a[c.RATE]);"string"==typeof a[c.LANG]&&(b[c.LANG]=a[c.LANG]);var d=this,e=function(c,e){if("number"==typeof a[e]&&"number"==typeof b[c]){b[c]+=a[e];var h=d.propertyMin[c],k=d.propertyMax[c];
-b[c]>k?b[c]=k:b[c]<h&&(b[c]=h)}};e(c.VOLUME,c.RELATIVE_VOLUME);e(c.PITCH,c.RELATIVE_PITCH);e(c.RATE,c.RELATIVE_RATE)}return b};cvox.AbstractTts.RATE="rate";cvox.AbstractTts.PITCH="pitch";cvox.AbstractTts.VOLUME="volume";cvox.AbstractTts.LANG="lang";cvox.AbstractTts.RELATIVE_RATE="relativeRate";cvox.AbstractTts.RELATIVE_PITCH="relativePitch";cvox.AbstractTts.RELATIVE_VOLUME="relativeVolume";cvox.AbstractTts.COLOR="color";cvox.AbstractTts.FONT_WEIGHT="fontWeight";cvox.AbstractTts.PUNCTUATION_ECHO="punctuationEcho";
-cvox.AbstractTts.PAUSE="pause";cvox.AbstractTts.PERSONALITY_ANNOTATION={relativePitch:-0.25,color:"yellow",punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT={punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ASIDE={relativePitch:-0.1,color:"#669"};cvox.AbstractTts.PERSONALITY_CAPITAL={relativePitch:0.6};cvox.AbstractTts.PERSONALITY_DELETED={punctuationEcho:"none",relativePitch:-0.6};cvox.AbstractTts.PERSONALITY_QUOTE={relativePitch:0.1,color:"#b6b",fontWeight:"bold"};
-cvox.AbstractTts.PERSONALITY_STRONG={relativePitch:0.1,color:"#b66",fontWeight:"bold"};cvox.AbstractTts.PERSONALITY_EMPHASIS={relativeVolume:0.1,relativeRate:-0.1,color:"#6bb",fontWeight:"bold"};cvox.AbstractTts.DEBUG=!0;cvox.AbstractTts.QUEUE_MODE_FLUSH=0;cvox.AbstractTts.QUEUE_MODE_QUEUE=1;
-cvox.AbstractTts.CHARACTER_DICTIONARY={" ":"space","`":"backtick","~":"tilde","!":"exclamation","@":"at","#":"pound",$:"dollar","%":"percent","^":"caret","&":"ampersand","*":"asterisk","(":"open_paren",")":"close_paren","-":"dash",_:"underscore","=":"equals","+":"plus","[":"left_bracket","]":"right_bracket","{":"left_brace","}":"right_brace","|":"pipe",";":"semicolon",":":"colon",",":"comma",".":"dot","<":"less_than",">":"greater_than","/":"slash","?":"question_mark",'"':"quote","'":"apostrophe",
-"\t":"tab","\r":"return","\n":"new line","\\":"backslash"};cvox.AbstractTts.PRONUNCIATION_DICTIONARY={admob:"ad-mob",adsense:"ad-sense",adwords:"ad-words",angularjs:"angular j s",bcc:"B C C",cc:"C C",chromevox:"chrome vox",cr48:"C R 48",ctrl:"control",doubleclick:"double-click",gmail:"gee mail",gtalk:"gee talk",http:"H T T P",https:"H T T P S",igoogle:"eye google",pagerank:"page-rank",username:"user-name",www:"W W W",youtube:"you tube"};
-cvox.AbstractTts.SUBSTITUTION_DICTIONARY={"://":"colon slash slash","\u00bc":"one fourth","\u00bd":"one half","\u200e":"left to right mark","\u2190":"left arrow","\u2191":"up arrow","\u2192":"right arrow","\u2193":"down arrow","\u21d0":"left double arrow","\u21d1":"up double arrow","\u21d2":"right double arrow","\u21d3":"down double arrow","\u21e6":"left arrow","\u21e7":"up arrow","\u21e8":"right arrow","\u21e9":"down arrow","\u2303":"control","\u2318":"command","\u2325":"option","\u25b2":"up triangle",
-"\u25b3":"up triangle","\u25b4":"up triangle","\u25b5":"up triangle","\u25b6":"right triangle","\u25b7":"right triangle","\u25b8":"right triangle","\u25b9":"right triangle","\u25ba":"right pointer","\u25bb":"right pointer","\u25bc":"down triangle","\u25bd":"down triangle","\u25be":"down triangle","\u25bf":"down triangle","\u25c0":"left triangle","\u25c1":"left triangle","\u25c2":"left triangle","\u25c3":"left triangle","\u25c4":"left pointer","\u25c5":"left pointer","\uf8ff":"apple"};
-cvox.AbstractTts.repetitionRegexp_=/([-\/\\|!@#$%^&*\(\)=_+\[\]\{\}.?;'":<>])\1{2,}/g;cvox.AbstractTts.repetitionReplace_=function(a){var b=a.length;return" "+(new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg(cvox.AbstractTts.CHARACTER_DICTIONARY[a[0]]))).format({COUNT:b})+" "};cvox.AbstractTts.prototype.getDefaultProperty=function(a){return this.propertyDefault[a]};cvox.AbstractEarcons=function(){this.enabled=!0};cvox.AbstractEarcons.prototype.playEarcon=function(){};cvox.AbstractEarcons.prototype.playEarconByName=function(a){this.playEarcon(this.getEarconId(a))};cvox.AbstractEarcons.prototype.earconsAvailable=function(){return!0};
-cvox.AbstractEarcons.prototype.getEarconId=function(a){this.earconNamesToIds||(this.earconNamesToIds={},this.earconNamesToIds.ALERT_MODAL=cvox.AbstractEarcons.ALERT_MODAL,this.earconNamesToIds.ALERT_NONMODAL=cvox.AbstractEarcons.ALERT_NONMODAL,this.earconNamesToIds.BULLET=cvox.AbstractEarcons.BULLET,this.earconNamesToIds.BUSY_PROGRESS_LOOP=cvox.AbstractEarcons.BUSY_PROGRESS_LOOP,this.earconNamesToIds.BUSY_WORKING_LOOP=cvox.AbstractEarcons.BUSY_WORKING_LOOP,this.earconNamesToIds.BUTTON=cvox.AbstractEarcons.BUTTON,
-this.earconNamesToIds.CHECK_OFF=cvox.AbstractEarcons.CHECK_OFF,this.earconNamesToIds.CHECK_ON=cvox.AbstractEarcons.CHECK_ON,this.earconNamesToIds.CHROMEVOX_DISABLED=cvox.AbstractEarcons.CHROMEVOX_DISABLED,this.earconNamesToIds.CHROMEVOX_ENABLED=cvox.AbstractEarcons.CHROMEVOX_ENABLED,this.earconNamesToIds.COLLAPSED=cvox.AbstractEarcons.COLLAPSED,this.earconNamesToIds.EDITABLE_TEXT=cvox.AbstractEarcons.EDITABLE_TEXT,this.earconNamesToIds.ELLIPSIS=cvox.AbstractEarcons.ELLIPSIS,this.earconNamesToIds.EXPANDED=
-cvox.AbstractEarcons.EXPANDED,this.earconNamesToIds.FONT_CHANGE=cvox.AbstractEarcons.FONT_CHANGE,this.earconNamesToIds.INVALID_KEYPRESS=cvox.AbstractEarcons.INVALID_KEYPRESS,this.earconNamesToIds.LINK=cvox.AbstractEarcons.LINK,this.earconNamesToIds.LISTBOX=cvox.AbstractEarcons.LISTBOX,this.earconNamesToIds.LIST_ITEM=cvox.AbstractEarcons.LIST_ITEM,this.earconNamesToIds.LONG_DESC=cvox.AbstractEarcons.LONG_DESC,this.earconNamesToIds.NEW_MAIL=cvox.AbstractEarcons.NEW_MAIL,this.earconNamesToIds.OBJECT_CLOSE=
-cvox.AbstractEarcons.OBJECT_CLOSE,this.earconNamesToIds.OBJECT_DELETE=cvox.AbstractEarcons.OBJECT_DELETE,this.earconNamesToIds.OBJECT_DESELECT=cvox.AbstractEarcons.OBJECT_DESELECT,this.earconNamesToIds.OBJECT_ENTER=cvox.AbstractEarcons.OBJECT_ENTER,this.earconNamesToIds.OBJECT_EXIT=cvox.AbstractEarcons.OBJECT_EXIT,this.earconNamesToIds.OBJECT_OPEN=cvox.AbstractEarcons.OBJECT_OPEN,this.earconNamesToIds.OBJECT_SELECT=cvox.AbstractEarcons.OBJECT_SELECT,this.earconNamesToIds.PARAGRAPH_BREAK=cvox.AbstractEarcons.PARAGRAPH_BREAK,
-this.earconNamesToIds.SEARCH_HIT=cvox.AbstractEarcons.SEARCH_HIT,this.earconNamesToIds.SEARCH_MISS=cvox.AbstractEarcons.SEARCH_MISS,this.earconNamesToIds.SECTION=cvox.AbstractEarcons.SECTION,this.earconNamesToIds.SELECTION=cvox.AbstractEarcons.SELECTION,this.earconNamesToIds.SELECTION_REVERSE=cvox.AbstractEarcons.SELECTION_REVERSE,this.earconNamesToIds.SPECIAL_CONTENT=cvox.AbstractEarcons.SPECIAL_CONTENT,this.earconNamesToIds.TASK_SUCCESS=cvox.AbstractEarcons.TASK_SUCCESS,this.earconNamesToIds.WRAP=
-cvox.AbstractEarcons.WRAP,this.earconNamesToIds.WRAP_EDGE=cvox.AbstractEarcons.WRAP_EDGE);return this.earconNamesToIds[a]};cvox.AbstractEarcons.prototype.getEarconFilename=function(a){return cvox.AbstractEarcons.earconMap[a]};cvox.AbstractEarcons.prototype.toggle=function(){return this.enabled=!this.enabled};cvox.AbstractEarcons.ALERT_MODAL=0;cvox.AbstractEarcons.ALERT_NONMODAL=1;cvox.AbstractEarcons.BULLET=2;cvox.AbstractEarcons.BUSY_PROGRESS_LOOP=3;cvox.AbstractEarcons.BUSY_WORKING_LOOP=4;
-cvox.AbstractEarcons.BUTTON=5;cvox.AbstractEarcons.CHECK_OFF=6;cvox.AbstractEarcons.CHECK_ON=7;cvox.AbstractEarcons.CHROMEVOX_DISABLED=8;cvox.AbstractEarcons.CHROMEVOX_ENABLED=9;cvox.AbstractEarcons.COLLAPSED=10;cvox.AbstractEarcons.EDITABLE_TEXT=11;cvox.AbstractEarcons.ELLIPSIS=12;cvox.AbstractEarcons.EXPANDED=13;cvox.AbstractEarcons.FONT_CHANGE=14;cvox.AbstractEarcons.INVALID_KEYPRESS=15;cvox.AbstractEarcons.LINK=16;cvox.AbstractEarcons.LISTBOX=17;cvox.AbstractEarcons.LIST_ITEM=18;
-cvox.AbstractEarcons.LONG_DESC=19;cvox.AbstractEarcons.NEW_MAIL=20;cvox.AbstractEarcons.OBJECT_CLOSE=21;cvox.AbstractEarcons.OBJECT_DELETE=22;cvox.AbstractEarcons.OBJECT_DESELECT=23;cvox.AbstractEarcons.OBJECT_ENTER=24;cvox.AbstractEarcons.OBJECT_EXIT=25;cvox.AbstractEarcons.OBJECT_OPEN=26;cvox.AbstractEarcons.OBJECT_SELECT=27;cvox.AbstractEarcons.PARAGRAPH_BREAK=28;cvox.AbstractEarcons.SEARCH_HIT=29;cvox.AbstractEarcons.SEARCH_MISS=30;cvox.AbstractEarcons.SECTION=31;
-cvox.AbstractEarcons.SELECTION=32;cvox.AbstractEarcons.SELECTION_REVERSE=33;cvox.AbstractEarcons.SPECIAL_CONTENT=34;cvox.AbstractEarcons.TASK_SUCCESS=35;cvox.AbstractEarcons.WRAP=36;cvox.AbstractEarcons.WRAP_EDGE=37;cvox.AbstractEarcons.earconMap={};cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_MODAL]="alert_modal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_NONMODAL]="alert_nonmodal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BULLET]="bullet.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_PROGRESS_LOOP]="busy_progress_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_WORKING_LOOP]="busy_working_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUTTON]="button.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_OFF]="check_off.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_ON]="check_on.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_DISABLED]="chromevox_disabled.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_ENABLED]="chromevox_enabled.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.COLLAPSED]="collapsed.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EDITABLE_TEXT]="editable_text.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ELLIPSIS]="ellipsis.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EXPANDED]="expanded.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.FONT_CHANGE]="font_change.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.INVALID_KEYPRESS]="invalid_keypress.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LINK]="link.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LISTBOX]="listbox.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LIST_ITEM]="bullet.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LONG_DESC]="long_desc.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.NEW_MAIL]="new_mail.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_CLOSE]="object_close.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DELETE]="object_delete.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DESELECT]="object_deselect.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_ENTER]="object_enter.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_EXIT]="object_exit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_OPEN]="object_open.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_SELECT]="object_select.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.PARAGRAPH_BREAK]="paragraph_break.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_HIT]="search_hit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_MISS]="search_miss.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SECTION]="section.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION]="selection.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION_REVERSE]="selection_reverse.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SPECIAL_CONTENT]="special_content.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.TASK_SUCCESS]="task_success.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP]="wrap.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP_EDGE]="wrap_edge.ogg";cvox.NodeStateUtil={};cvox.NodeStateUtil.expand=function(a){try{return a.map(function(a){if(1>a.length)throw Error("cvox.NodeState must have at least one entry");var b=a.slice(1).map(function(a){return"number"==typeof a?cvox.ChromeVox.msgs.getNumber(a):a});return cvox.ChromeVox.msgs.getMsg(a[0],b)}).join(" ")}catch(b){throw Error("error: "+b+" state: "+a);}};cvox.AriaUtil=function(){};cvox.AriaUtil.NO_ROLE_NAME=" ";
-cvox.AriaUtil.WIDGET_ROLE_TO_NAME={alert:"aria_role_alert",alertdialog:"aria_role_alertdialog",button:"aria_role_button",checkbox:"aria_role_checkbox",columnheader:"aria_role_columnheader",combobox:"aria_role_combobox",dialog:"aria_role_dialog",grid:"aria_role_grid",gridcell:"aria_role_gridcell",link:"aria_role_link",listbox:"aria_role_listbox",log:"aria_role_log",marquee:"aria_role_marquee",menu:"aria_role_menu",menubar:"aria_role_menubar",menuitem:"aria_role_menuitem",menuitemcheckbox:"aria_role_menuitemcheckbox",
-menuitemradio:"aria_role_menuitemradio",option:cvox.AriaUtil.NO_ROLE_NAME,progressbar:"aria_role_progressbar",radio:"aria_role_radio",radiogroup:"aria_role_radiogroup",rowheader:"aria_role_rowheader",scrollbar:"aria_role_scrollbar",slider:"aria_role_slider",spinbutton:"aria_role_spinbutton",status:"aria_role_status",tab:"aria_role_tab",tabpanel:"aria_role_tabpanel",textbox:"aria_role_textbox",timer:"aria_role_timer",toolbar:"aria_role_toolbar",tooltip:"aria_role_tooltip",treeitem:"aria_role_treeitem"};
-cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME={article:"aria_role_article",application:"aria_role_application",banner:"aria_role_banner",columnheader:"aria_role_columnheader",complementary:"aria_role_complementary",contentinfo:"aria_role_contentinfo",definition:"aria_role_definition",directory:"aria_role_directory",document:"aria_role_document",form:"aria_role_form",group:"aria_role_group",heading:"aria_role_heading",img:"aria_role_img",list:"aria_role_list",listitem:"aria_role_listitem",main:"aria_role_main",
-math:"aria_role_math",navigation:"aria_role_navigation",note:"aria_role_note",region:"aria_role_region",rowheader:"aria_role_rowheader",search:"aria_role_search",separator:"aria_role_separator"};
-cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS=[{name:"aria-autocomplete",values:{inline:"aria_autocomplete_inline",list:"aria_autocomplete_list",both:"aria_autocomplete_both"}},{name:"aria-checked",values:{"true":"aria_checked_true","false":"aria_checked_false",mixed:"aria_checked_mixed"}},{name:"aria-disabled",values:{"true":"aria_disabled_true"}},{name:"aria-expanded",values:{"true":"aria_expanded_true","false":"aria_expanded_false"}},{name:"aria-invalid",values:{"true":"aria_invalid_true",grammar:"aria_invalid_grammar",
-spelling:"aria_invalid_spelling"}},{name:"aria-multiline",values:{"true":"aria_multiline_true"}},{name:"aria-multiselectable",values:{"true":"aria_multiselectable_true"}},{name:"aria-pressed",values:{"true":"aria_pressed_true","false":"aria_pressed_false",mixed:"aria_pressed_mixed"}},{name:"aria-readonly",values:{"true":"aria_readonly_true"}},{name:"aria-required",values:{"true":"aria_required_true"}},{name:"aria-selected",values:{"true":"aria_selected_true","false":"aria_selected_false"}}];
-cvox.AriaUtil.isHiddenRecursive=function(a){if(cvox.AriaUtil.isHidden(a))return!0;for(a=a.parentElement;a;){if("true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return!0;a=a.parentElement}return!1};cvox.AriaUtil.isHidden=function(a){return!a||a.getAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")?!0:!1};
-cvox.AriaUtil.isForcedVisibleRecursive=function(a){for(;a;){if(a.getAttribute&&a.hasAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return"false"==a.getAttribute("aria-hidden");a=a.parentElement}return!1};cvox.AriaUtil.isLeafElement=function(a){var b=a.getAttribute("role");a=a.hasAttribute("aria-label")&&0<a.getAttribute("aria-label").length;return"img"==b||"progressbar"==b||a};
-cvox.AriaUtil.isDescendantOfRole=function(a,b){for(;a;){if(b&&a&&a.getAttribute("role")==b)return!0;a=a.parentNode}return!1};cvox.AriaUtil.getRoleNameMsgForRole_=function(a){return(a=cvox.AriaUtil.WIDGET_ROLE_TO_NAME[a])?a==cvox.AriaUtil.NO_ROLE_NAME?" ":a:null};cvox.AriaUtil.isButton=function(a){var b=cvox.AriaUtil.getRoleAttribute(a);return"button"==b||"BUTTON"==a.tagName?!0:"INPUT"==a.tagName?"submit"==a.type||"reset"==a.type||"button"==a.type:!1};
-cvox.AriaUtil.getRoleNameMsg=function(a){var b;if(a&&a.getAttribute){var c=cvox.AriaUtil.getRoleAttribute(a);if("true"==a.getAttribute("aria-haspopup")&&cvox.AriaUtil.isButton(a))return"aria_role_popup_button";c&&((b=cvox.AriaUtil.getRoleNameMsgForRole_(c))||(b=cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME[c]));if("menuitem"==c){for(a=a.parentElement;a&&(!a.getAttribute||"menu"!=cvox.AriaUtil.getRoleAttribute(a)&&"menubar"!=cvox.AriaUtil.getRoleAttribute(a));)a=a.parentElement;a&&"menubar"==cvox.AriaUtil.getRoleAttribute(a)&&
-(b=cvox.AriaUtil.getRoleNameMsgForRole_("menu"))}}b||(b="");return b};cvox.AriaUtil.getRoleName=function(a){var b=cvox.AriaUtil.getRoleNameMsg(a),b=cvox.ChromeVox.msgs.getMsg(b),c=cvox.AriaUtil.getRoleAttribute(a);"heading"==c&&a.hasAttribute("aria-level")&&(b+=" "+a.getAttribute("aria-level"));return b?b:""};
-cvox.AriaUtil.getStateMsgs=function(a,b){var c=[];if(!a||!a.getAttribute)return c;for(var d=0,e;e=cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS[d];d++){var f=a.getAttribute(e.name);(e=e.values[f])&&c.push([e])}if("grid"==a.getAttribute("role"))return cvox.AriaUtil.getGridState_(a,a);e=cvox.AriaUtil.getRoleAttribute(a);"true"==a.getAttribute("aria-haspopup")&&("menuitem"==e?c.push(["has_submenu"]):cvox.AriaUtil.isButton(a)||c.push(["has_popup"]));if(d=a.getAttribute("aria-valuetext"))return c.push([d]),
-c;var d=a.getAttribute("aria-valuenow"),f=a.getAttribute("aria-valuemin"),g=a.getAttribute("aria-valuemax");if(null!=d&&null!=f&&null!=g&&("scrollbar"==e||"progressbar"==e)){var h=Math.round(d/(g-f)*100);c.push(["state_percent",h]);return c}null!=d&&c.push(["aria_value_now",d]);null!=f&&c.push(["aria_value_min",f]);null!=g&&c.push(["aria_value_max",g]);f=a;d=null;if(cvox.AriaUtil.isCompositeControl(f)&&b)d=cvox.AriaUtil.getActiveDescendant(f);else if(e=cvox.AriaUtil.getRoleAttribute(a),"option"==
-e||"menuitem"==e||"menuitemcheckbox"==e||"menuitemradio"==e||"radio"==e||"tab"==e||"treeitem"==e)for(d=a,f=a.parentElement;f&&!cvox.AriaUtil.isCompositeControl(f)&&(!(f=f.parentElement)||"treeitem"!=cvox.AriaUtil.getRoleAttribute(f)););if(f&&(cvox.AriaUtil.isCompositeControl(f)||"treeitem"==cvox.AriaUtil.getRoleAttribute(f))&&d){e=cvox.AriaUtil.getRoleAttribute(f);var k;switch(e){case "combobox":case "listbox":k=["option"];break;case "menu":k=["menuitem","menuitemcheck","menuitemradio"];break;case "radiogroup":k=
-["radio"];break;case "tablist":k=["tab"];break;case "tree":case "treegrid":case "treeitem":k=["treeitem"]}if(k){var l;e=parseInt(d.getAttribute("aria-setsize"),10);isNaN(e)||(h=e);e=parseInt(d.getAttribute("aria-posinset"),10);isNaN(e)||(l=e);if(void 0==h||void 0==l)if(k=cvox.AriaUtil.getNextLevel(f,k),void 0==h&&(h=k.length),void 0==l)for(e=0;e<k.length;e++)k[e]==d&&(l=e+1);l&&h&&c.push(["list_position",l,h])}}return c};
-cvox.AriaUtil.getGridState_=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(b);if(c)for(var d='*[role~="row"]',d=b.querySelectorAll(d),e=0;e<d.length;e++)for(var f=d[e].querySelectorAll('*[role~="gridcell"]'),g=0;g<f.length;g++)if(f[g]==c)return[["aria_role_gridcell_pos",e+1,g+1]];return[]};cvox.AriaUtil.getActiveDescendantId_=function(a){return a.getAttribute?(a=a.getAttribute("aria-activedescendant"))?a:null:null};
-cvox.AriaUtil.getNextLevel=function(a,b){for(var c=[],d=a.childNodes,e=0;e<d.length;e++)if(!cvox.AriaUtil.isHidden(d[e])&&cvox.DomUtil.isVisible(d[e])){var f=cvox.AriaUtil.getNextLevelItems(d[e],b);0<f.length&&(c=c.concat(f))}return c};
-cvox.AriaUtil.getNextLevelItems=function(a,b){if(1!=a.nodeType)return[];if(-1!=b.indexOf(cvox.AriaUtil.getRoleAttribute(a)))return[a];var c=a.childNodes,d=c.length;if(0==d)return[];for(var e=[],f=0;f<d;f++){var g=cvox.AriaUtil.getNextLevelItems(c[f],b);0<g.length&&(e=e.concat(g))}return e};cvox.AriaUtil.getActiveDescendant=function(a){for(var b={},c=a;c;){var d=cvox.AriaUtil.getActiveDescendantId_(c);if(!d)break;if(d in b)return null;b[d]=!0;c=document.getElementById(d)}return c==a?null:c};
-cvox.AriaUtil.isControlWidget=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "button":case "checkbox":case "combobox":case "listbox":case "menu":case "menuitemcheckbox":case "menuitemradio":case "radio":case "slider":case "progressbar":case "scrollbar":case "spinbutton":case "tab":case "tablist":case "textbox":return!0}return!1};cvox.AriaUtil.isCompositeControl=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "combobox":case "grid":case "listbox":case "menu":case "menubar":case "radiogroup":case "tablist":case "tree":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getAriaLive=function(a){if(!a.hasAttribute)return null;var b=a.getAttribute("aria-live");if("off"==b)return null;if(b)return b;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "alert":return"assertive";case "log":case "status":return"polite";default:return null}};cvox.AriaUtil.getAriaAtomic=function(a){if(!a.hasAttribute)return!1;var b=a.getAttribute("aria-atomic");if(b)return"true"===b;a=cvox.AriaUtil.getRoleAttribute(a);return"alert"==a?!0:!1};
-cvox.AriaUtil.getAriaBusy=function(a){return a.hasAttribute?(a=a.getAttribute("aria-busy"))?"true"===a:!1:!1};cvox.AriaUtil.getAriaRelevant=function(a,b){if(!a.hasAttribute)return!1;var c;c=a.hasAttribute("aria-relevant")?a.getAttribute("aria-relevant"):"additions text";"all"==c&&(c="additions removals text");c=c.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").split(" ");return"all"==b?0<=c.indexOf("additions")&&0<=c.indexOf("text")&&0<=c.indexOf("removals"):0<=c.indexOf(b)};
-cvox.AriaUtil.getLiveRegions=function(a){var b=[];if(a.querySelectorAll){var c=a.querySelectorAll('[role="alert"], [role="log"], [role="marquee"], [role="status"], [role="timer"], [aria-live]');if(c)for(var d=0;d<c.length;d++)b.push(c[d])}for(;a;){if(cvox.AriaUtil.getAriaLive(a)){b.push(a);break}a=a.parentElement}return b};cvox.AriaUtil.isLandmark=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "application":case "banner":case "complementary":case "contentinfo":case "form":case "main":case "navigation":case "search":return!0}return!1};
-cvox.AriaUtil.isGrid=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "grid":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getEarcon=function(a){if(!a||!a.getAttribute)return null;var b=cvox.AriaUtil.getRoleAttribute(a);switch(b){case "button":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":case "menuitemcheckbox":case "menuitemradio":return a=a.getAttribute("aria-checked"),"true"==a?cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;case "combobox":case "listbox":return cvox.AbstractEarcons.LISTBOX;case "textbox":return cvox.AbstractEarcons.EDITABLE_TEXT;case "listitem":return cvox.AbstractEarcons.BULLET;
-case "link":return cvox.AbstractEarcons.LINK}return null};cvox.AriaUtil.getRoleAttribute=function(a){if(!a.getAttribute)return"";var b=a.getAttribute("role");a.hasAttribute("chromevoxoriginalrole")&&(b=a.getAttribute("chromevoxoriginalrole"));return b};cvox.AriaUtil.isMath=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);return"math"==a};cvox.DomPredicates={};cvox.DomPredicates.checkboxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"checkbox"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"checkbox"==a[b].type)return a[b];return null};cvox.DomPredicates.radioPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"radio"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"radio"==a[b].type)return a[b];return null};
-cvox.DomPredicates.sliderPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"slider"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"range"==a[b].type)return a[b];return null};cvox.DomPredicates.graphicPredicate=function(a){for(var b=0;b<a.length;b++)if("IMG"==a[b].tagName||"INPUT"==a[b].tagName&&"img"==a[b].type)return a[b];return null};
-cvox.DomPredicates.buttonPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"button"==a[b].getAttribute("role")||"BUTTON"==a[b].tagName||"INPUT"==a[b].tagName&&"submit"==a[b].type||"INPUT"==a[b].tagName&&"button"==a[b].type||"INPUT"==a[b].tagName&&"reset"==a[b].type)return a[b];return null};cvox.DomPredicates.comboBoxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"combobox"==a[b].getAttribute("role")||"SELECT"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.editTextPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"textbox"==a[b].getAttribute("role")||"TEXTAREA"==a[b].tagName||a[b].isContentEditable||"INPUT"==a[b].tagName&&cvox.DomUtil.isInputTypeText(a[b]))return a[b];return null};cvox.DomPredicates.headingPredicate=function(a){for(var b=0;b<a.length;b++){if(a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.heading1Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H1")};cvox.DomPredicates.heading2Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H2")};cvox.DomPredicates.heading3Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H3")};cvox.DomPredicates.heading4Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H4")};cvox.DomPredicates.heading5Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H5")};
-cvox.DomPredicates.heading6Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H6")};cvox.DomPredicates.linkPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.tablePredicate=function(a){return(a=cvox.DomUtil.findTableNodeInList(a,{allowCaptions:!0}))&&!cvox.DomUtil.isLayoutTable(a)?a:null};
-cvox.DomPredicates.cellPredicate=function(a){for(var b=a.length-1;0<=b;--b){var c=a[b];if("TD"==c.tagName||"TH"==c.tagName||c.getAttribute&&"gridcell"==c.getAttribute("role"))return c}return null};cvox.DomPredicates.visitedLinkPredicate=function(a){for(var b=a.length-1;0<=b;--b)if(cvox.DomPredicates.linkPredicate([a[b]])&&cvox.ChromeVox.visitedUrls[a[b].href])return a[b]};
-cvox.DomPredicates.listPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"list"==a[b].getAttribute("role")||"UL"==a[b].tagName||"OL"==a[b].tagName)return a[b];return null};cvox.DomPredicates.listItemPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"listitem"==a[b].getAttribute("role")||"LI"==a[b].tagName)return a[b];return null};cvox.DomPredicates.blockquotePredicate=function(a){return cvox.DomPredicates.containsTagName_(a,"BLOCKQUOTE")};
-cvox.DomPredicates.formFieldPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b]))return a[b];return null};cvox.DomPredicates.landmarkPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.AriaUtil.isLandmark(a[b]))return a[b];return null};cvox.DomPredicates.containsTagName_=function(a,b){for(var c=a.length;c--;)if(a[c].tagName==b)return a[c];return null};cvox.DomPredicates.mathPredicate=function(a){return cvox.DomUtil.findMathNodeInList(a)};
-cvox.DomPredicates.sectionPredicate=function(a){for(var b=0;b<a.length;b++){if(cvox.DomUtil.isSemanticElt(a[b])||cvox.AriaUtil.isLandmark(a[b])||a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.controlPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b])||a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.captionPredicate=function(a){for(var b=0;b<a.length;b++)if("CAPTION"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.articlePredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"article"==a[b].getAttribute("role")||"ARTICLE"==a[b].tagName)return a[b];return null};cvox.DomPredicates.mediaPredicate=function(a){for(var b=0;b<a.length;b++)if("AUDIO"==a[b].tagName||"VIDEO"==a[b].tagName)return a[b];return null};cvox.DomPredicates.orderedListPredicate=function(a){for(var b=0;b<a.length;b++)if("OL"==a[b].tagName)return a[b];return null};cvox.XpathUtil=function(){};cvox.XpathUtil.nameSpaces_={xhtml:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML"};cvox.XpathUtil.resolveNameSpace=function(a){return cvox.XpathUtil.nameSpaces_[a]||null};cvox.XpathUtil.evalXPath=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(d){return[]}for(var e=[],f=c.iterateNext();f;f=c.iterateNext())e.push(f);return e};
-cvox.XpathUtil.getLeafNodes=function(a){try{var b=a.ownerDocument.evaluate(".//*[count(*)=0]",a,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(c){return[]}a=[];for(var d=b.iterateNext();d;d=b.iterateNext())a.push(d);return a};cvox.XpathUtil.xpathSupported=function(){return"undefined"==typeof XPathResult?!1:!0};cvox.XpathUtil.evaluateBoolean=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.BOOLEAN_TYPE,null)}catch(d){return!1}return c.booleanValue};
-cvox.XpathUtil.evaluateString=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.STRING_TYPE,null)}catch(d){return""}return c.stringValue};cvox.DomUtil=function(){};
-cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG={button:"input_type_button",checkbox:"input_type_checkbox",color:"input_type_color",datetime:"input_type_datetime","datetime-local":"input_type_datetime_local",date:"input_type_date",email:"input_type_email",file:"input_type_file",image:"input_type_image",month:"input_type_month",number:"input_type_number",password:"input_type_password",radio:"input_type_radio",range:"input_type_range",reset:"input_type_reset",search:"input_type_search",submit:"input_type_submit",
-tel:"input_type_tel",text:"input_type_text",url:"input_type_url",week:"input_type_week"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG={A:"tag_link",ARTICLE:"tag_article",ASIDE:"tag_aside",AUDIO:"tag_audio",BUTTON:"tag_button",FOOTER:"tag_footer",H1:"tag_h1",H2:"tag_h2",H3:"tag_h3",H4:"tag_h4",H5:"tag_h5",H6:"tag_h6",HEADER:"tag_header",HGROUP:"tag_hgroup",LI:"tag_li",MARK:"tag_mark",NAV:"tag_nav",OL:"tag_ol",SECTION:"tag_section",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",TIME:"tag_time",UL:"tag_ul",VIDEO:"tag_video"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG={AUDIO:"tag_audio",BUTTON:"tag_button",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",VIDEO:"tag_video"};cvox.DomUtil.FORMATTING_TAGS="B BIG CITE CODE DFN EM I KBD SAMP SMALL SPAN STRIKE STRONG SUB SUP U VAR".split(" ");
-cvox.DomUtil.isVisible=function(a,b){b=b||{};"undefined"===typeof b.checkAncestors&&(b.checkAncestors=!0);"undefined"===typeof b.checkDescendants&&(b.checkDescendants=!0);if("IFRAME"==a.tagName&&!a.src)return!1;if(cvox.AriaUtil.isForcedVisibleRecursive(a))return!0;if(b.checkAncestors&&cvox.DomUtil.hasInvisibleAncestor_(a))return!1;var c=b.checkDescendants;return cvox.DomUtil.hasVisibleNodeSubtree_(a,c)?!0:!1};
-cvox.DomUtil.hasInvisibleAncestor_=function(a){for(;a=a.parentElement;){var b=document.defaultView.getComputedStyle(a,null);if(cvox.DomUtil.isInvisibleStyle(b,!0))return!0}return!1};
-cvox.DomUtil.hasVisibleNodeSubtree_=function(a,b){if(!(a instanceof Element)){var c=document.defaultView.getComputedStyle(a.parentElement,null);return c=!cvox.DomUtil.isInvisibleStyle(c)}var c=document.defaultView.getComputedStyle(a,null),d=!cvox.DomUtil.isInvisibleStyle(c);if(d)return!0;c=cvox.DomUtil.isInvisibleStyle(c,!0);if(!b||c)return!1;c=a.childNodes;for(d=0;d<c.length;d++){var e=c[d];if(cvox.DomUtil.hasVisibleNodeSubtree_(e,b))return!0}return!1};
-cvox.DomUtil.isInvisibleStyle=function(a,b){return a?"none"!=a.display&&0!=parseFloat(a.opacity)&&(b||"hidden"!=a.visibility&&"collapse"!=a.visibility)?!1:!0:!1};cvox.DomUtil.isDisabled=function(a){if(a.disabled)return!0;for(;a=a.parentElement;)if("FIELDSET"==a.tagName&&a.disabled)return!0;return!1};cvox.DomUtil.isSemanticElt=function(a){return a.tagName&&(a=a.tagName,"SECTION"==a||"NAV"==a||"ARTICLE"==a||"ASIDE"==a||"HGROUP"==a||"HEADER"==a||"FOOTER"==a||"TIME"==a||"MARK"==a)?!0:!1};
-cvox.DomUtil.isLeafNode=function(a,b){if(!(a instanceof Element))return null==a.firstChild;var c=a;if(!b&&!cvox.DomUtil.isVisible(c,{checkAncestors:!1})||!b&&cvox.AriaUtil.isHidden(c)||cvox.AriaUtil.isLeafElement(c))return!0;switch(c.tagName){case "OBJECT":case "EMBED":case "VIDEO":case "AUDIO":case "IFRAME":case "FRAME":return!0}return cvox.DomPredicates.linkPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.headingPredicate([a])}):cvox.DomUtil.isLeafLevelControl(c)||
-!c.firstChild||cvox.DomUtil.isMath(c)?!0:cvox.DomPredicates.headingPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.controlPredicate([a])}):!1};cvox.DomUtil.isDescendantOf=function(a,b,c){for(;a;){if(b&&c&&a.tagName&&a.tagName==b&&a.className&&a.className==c||b&&!c&&a.tagName&&a.tagName==b||!b&&c&&a.className&&a.className==c)return!0;a=a.parentNode}return!1};cvox.DomUtil.isDescendantOfNode=function(a,b){for(;a&&b;){if(a.isSameNode(b))return!0;a=a.parentNode}return!1};
-cvox.DomUtil.collapseWhitespace=function(a){return a.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")};
-cvox.DomUtil.getBaseLabel_=function(a,b,c){var d="";if(a.hasAttribute){if(a.hasAttribute("aria-labelledby"))for(var e=a.getAttribute("aria-labelledby").split(" "),f,g=0;f=e[g];g++)(f=document.getElementById(f))&&(d+=" "+cvox.DomUtil.getName(f,!0,c,!0));else if(a.hasAttribute("aria-label"))d=a.getAttribute("aria-label");else if(a.constructor==HTMLImageElement)d=cvox.DomUtil.getImageTitle(a);else if("FIELDSET"==a.tagName)for(e=a.getElementsByTagName("LEGEND"),d="",g=0;f=e[g];g++)d+=" "+cvox.DomUtil.getName(f,
-!0,c);0==d.length&&a&&a.id&&(a=document.querySelector('label[for="'+a.id+'"]'))&&(d=cvox.DomUtil.getName(a,b,c))}return cvox.DomUtil.collapseWhitespace(d)};cvox.DomUtil.getNearestAncestorLabel_=function(a){for(var b="";a&&"LABEL"!=a.tagName;)a=a.parentElement;a&&!a.hasAttribute("for")&&(b=cvox.DomUtil.getName(a,!0,!1));return b};
-cvox.DomUtil.getInputName_=function(a){var b="";"image"==a.type?b=cvox.DomUtil.getImageTitle(a):"submit"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Submit":"reset"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Reset":"button"==a.type&&a.hasAttribute("value")&&(b=a.getAttribute("value"));return b};
-cvox.DomUtil.getName=function(a,b,c,d){if(!a||!0==a.cvoxGetNameMarked)return"";a.cvoxGetNameMarked=!0;b=cvox.DomUtil.getName_(a,b,c,d);a.cvoxGetNameMarked=!1;a=cvox.DomUtil.getPrefixText(a);return a+b};cvox.DomUtil.hasChildrenBasedName_=function(a,b){return cvox.DomPredicates.linkPredicate([a])||cvox.DomPredicates.headingPredicate([a])||"BUTTON"==a.tagName||cvox.AriaUtil.isControlWidget(a)||!cvox.DomUtil.isLeafNode(a,b)?!0:!1};
-cvox.DomUtil.getName_=function(a,b,c,d){"undefined"===typeof b&&(b=!0);"undefined"===typeof c&&(c=!0);if(a.constructor==Text)return a.data;var e=cvox.DomUtil.getBaseLabel_(a,b,c);0==e.length&&cvox.DomUtil.isControl(a)&&(e=cvox.DomUtil.getNearestAncestorLabel_(a));0==e.length&&a.constructor==HTMLInputElement&&(e=cvox.DomUtil.getInputName_(a));return cvox.DomUtil.isInputTypeText(a)&&a.hasAttribute("placeholder")?(b=a.getAttribute("placeholder"),0<e.length?0<cvox.DomUtil.getValue(a).length?e:e+" with hint "+
-b:b):0<e.length?e:0==cvox.DomUtil.collapseWhitespace(a.textContent).length&&a.hasAttribute&&a.hasAttribute("title")?a.getAttribute("title"):!b||cvox.AriaUtil.isCompositeControl(a)?"":cvox.DomUtil.hasChildrenBasedName_(a,d)?cvox.DomUtil.getNameFromChildren(a,c,d):""};
-cvox.DomUtil.getNameFromChildren=function(a,b,c){void 0==b&&(b=!0);for(var d="",e="",f=0;f<a.childNodes.length;f++){var g=a.childNodes[f],e=a.childNodes[f-1]||g;if(b||!cvox.DomUtil.isControl(g)){var h=cvox.DomUtil.isVisible(g,{checkAncestors:!1});if(c||h&&!cvox.AriaUtil.isHidden(g))e="SPAN"==e.tagName||"SPAN"==g.tagName||"SPAN"==g.parentNode.tagName?"":" ",d+=e+cvox.DomUtil.getName(g,!0,b)}}return d};
-cvox.DomUtil.getPrefixText=function(a,b){b=b||0;for(var c=cvox.DomUtil.getAncestors(a),d="",e=c=cvox.DomPredicates.listItemPredicate(c);e&&e.firstChild;)e=e.firstChild;c&&c.parentNode&&0==b&&"OL"==c.parentNode.tagName&&a==e&&"none"!=document.defaultView.getComputedStyle(c.parentNode).listStyleType&&(d=cvox.DomUtil.toArray(c.parentNode.children).filter(function(a){return"LI"==a.tagName}),d=d.indexOf(c)+1,-1!=document.defaultView.getComputedStyle(c.parentNode).listStyleType.indexOf("latin")&&(d--,d=
-String.fromCharCode(65+d%26)),d+=". ");return d};
-cvox.DomUtil.getControlLabelHeuristics=function(a){if(a.hasAttribute&&(a.hasAttribute("aria-label")&&""==a.getAttribute("aria-label")||a.hasAttribute("aria-title")&&""==a.getAttribute("aria-title")))return"";for(var b=cvox.DomUtil.previousLeafNode(a),c=0;b&&(!cvox.DomUtil.hasContent(b)||cvox.DomUtil.isControl(b));)b=cvox.DomUtil.previousLeafNode(b),c++;for(var c=cvox.DomUtil.directedNextLeafNode(a),d=0;c&&(!cvox.DomUtil.hasContent(c)||cvox.DomUtil.isControl(c));)c=cvox.DomUtil.directedNextLeafNode(c),
-d++;if(b&&c){for(var d=a,e=0;d&&!cvox.DomUtil.isDescendantOfNode(b,d);)d=d.parentNode,e++;d=a;for(a=0;d&&!cvox.DomUtil.isDescendantOfNode(c,d);)d=d.parentNode,a++;b=a<e?c:b}else b=b||c;return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b)):""};
-cvox.DomUtil.getValue=function(a){var b=cvox.AriaUtil.getActiveDescendant(a);if(b)return cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b));if(a.constructor==HTMLSelectElement){var b="",c=a.selectedOptions?a.selectedOptions[0]:null;a=a.selectedOptions?a.selectedOptions[a.selectedOptions.length-1]:null;c&&a&&c!=a?b=cvox.ChromeVox.msgs.getMsg("selected_options_value",[c.text,a.text]):c&&(b=c.text+"");return b}if(a.constructor==HTMLTextAreaElement)return a.value;if(a.constructor==
-HTMLInputElement)switch(a.type){case "hidden":case "image":case "submit":case "reset":case "button":case "checkbox":case "radio":return"";case "password":return a.value.replace(/./g,"dot ");default:return a.value}return a.isContentEditable?cvox.DomUtil.getNameFromChildren(a,!0):""};
-cvox.DomUtil.getImageTitle=function(a){a.hasAttribute("alt")?a=a.alt:a.hasAttribute("title")?a=a.title:(a=a.src,"data"!=a.substring(0,4)?(a=a.substring(a.lastIndexOf("/")+1,a.lastIndexOf(".")),a=1<=a.length&&16>=a.length?a+" Image":"Image"):a="Image");return a};
-cvox.DomUtil.hasContent=function(a){if(8==a.nodeType||cvox.DomUtil.isDescendantOf(a,"HEAD")||cvox.DomUtil.isDescendantOf(a,"SCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOSCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOEMBED")||cvox.DomUtil.isDescendantOf(a,"STYLE")||!cvox.DomUtil.isVisible(a)||cvox.AriaUtil.isHidden(a))return!1;if(cvox.DomUtil.isControl(a)||cvox.DomUtil.isDescendantOf(a,"VIDEO")||cvox.DomUtil.isDescendantOf(a,"AUDIO")||"IFRAME"==a.tagName&&a.src&&0!=a.src.indexOf("javascript:"))return!0;
-for(var b="button,input,select,textarea",c=a.parentElement;c&&"LABEL"!=c.tagName;)c=c.parentElement;if(c){var d=c.querySelector(b);if(c.hasAttribute("for")){if(c=c.getAttribute("for"),(c=document.getElementById(c))&&cvox.DomUtil.isControl(c)&&!d)return!1}else if(d)return!1}for(d=a.parentElement;d&&"LEGEND"!=d.tagName;)d=d.parentElement;if(d){for(c=d.parentElement;c&&"FIELDSET"!=c.tagName;)c=c.parentElement;d=c&&c.querySelector(b);if(c&&!d)return!1}if(cvox.DomPredicates.linkPredicate([a])||"TABLE"==
-a.tagName||cvox.DomUtil.isMath(a)||cvox.DomPredicates.headingPredicate([a]))return!0;b=cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a);a=cvox.DomUtil.getState(a,!0);return b.match(/^\s+$/)&&""===a?!1:!0};cvox.DomUtil.getAncestors=function(a){for(var b=[];a;)b.push(a),a=a.parentNode;for(b.reverse();b.length&&!b[0].tagName&&!b[0].nodeValue;)b.shift();return b};cvox.DomUtil.compareAncestors=function(a,b){for(var c=0;a[c]&&b[c]&&a[c]==b[c];)c++;a[c]||b[c]||(c=-1);return c};
-cvox.DomUtil.getUniqueAncestors=function(a,b,c){a=cvox.DomUtil.getAncestors(a);b=cvox.DomUtil.getAncestors(b);a=cvox.DomUtil.compareAncestors(a,b);a=b.slice(a);return 0==a.length&&c?b:a};
-cvox.DomUtil.getRoleMsg=function(a,b){var c;c=cvox.AriaUtil.getRoleNameMsg(a);c||("INPUT"==a.tagName?c=cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG[a.type]:"A"==a.tagName&&cvox.DomUtil.isInternalLink(a)?c="internal_link":"A"==a.tagName&&a.getAttribute("name")?c="":a.isContentEditable?c="input_type_text":cvox.DomUtil.isMath(a)?c="math_expr":"TABLE"==a.tagName&&cvox.DomUtil.isLayoutTable(a)?c="":b==cvox.VERBOSITY_BRIEF?c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG[a.tagName]:(c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG[a.tagName],
-cvox.DomUtil.hasLongDesc(a)&&(c="image_with_long_desc"),!c&&a.onclick&&(c="clickable")));return c};cvox.DomUtil.getRole=function(a,b){var c=cvox.DomUtil.getRoleMsg(a,b)||"",d=c&&" "!=c?cvox.ChromeVox.msgs.getMsg(c):"";return d?d:c};cvox.DomUtil.getListLength=function(a){var b=0;for(a=a.firstChild;a;a=a.nextSibling)if("LI"==a.tagName||a.getAttribute&&"listitem"==a.getAttribute("role")){if(a.hasAttribute("aria-setsize")){var c=parseInt(a.getAttribute("aria-setsize"),10);if(!isNaN(c))return c}b++}return b};
-cvox.DomUtil.getStateMsgs=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(a);if(c)return cvox.DomUtil.getStateMsgs(c,b);var c=[],d=a.getAttribute?a.getAttribute("role"):"";(c=cvox.AriaUtil.getStateMsgs(a,b))||(c=[]);"INPUT"==a.tagName?a.hasAttribute("aria-checked")||(d={"checkbox-true":"checkbox_checked_state","checkbox-false":"checkbox_unchecked_state","radio-true":"radio_selected_state","radio-false":"radio_unselected_state"},(d=d[a.type+"-"+!!a.checked])&&c.push([d])):"SELECT"==a.tagName?
-a.selectedOptions&&1>=a.selectedOptions.length?c.push(["list_position",cvox.ChromeVox.msgs.getNumber(a.selectedIndex+1),cvox.ChromeVox.msgs.getNumber(a.options.length)]):c.push(["selected_options_state",cvox.ChromeVox.msgs.getNumber(a.selectedOptions.length)]):"UL"!=a.tagName&&"OL"!=a.tagName&&"list"!=d||c.push(["list_with_items",cvox.ChromeVox.msgs.getNumber(cvox.DomUtil.getListLength(a))]);cvox.DomUtil.isDisabled(a)&&c.push(["aria_disabled_true"]);cvox.DomPredicates.linkPredicate([a])&&cvox.ChromeVox.visitedUrls[a.href]&&
-c.push(["visited_url"]);a.accessKey&&c.push(["access_key",a.accessKey]);return c};cvox.DomUtil.getState=function(a,b){return cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,b))};cvox.DomUtil.isFocusable=function(a){return a&&"number"==typeof a.tabIndex&&("A"!=a.tagName||a.hasAttribute("href")||a.hasAttribute("tabindex"))?0<=a.tabIndex||a.hasAttribute&&a.hasAttribute("tabindex")&&"-1"==a.getAttribute("tabindex")?!0:!1:!1};
-cvox.DomUtil.findFocusableDescendant=function(a){return a&&(a=cvox.DomUtil.findNode(a,cvox.DomUtil.isFocusable))?a:null};cvox.DomUtil.countFocusableDescendants=function(a){return a?cvox.DomUtil.countNodes(a,cvox.DomUtil.isFocusable):0};cvox.DomUtil.isAttachedToDocument=function(a){for(;a;){if(a.tagName&&"HTML"==a.tagName)return!0;a=a.parentNode}return!1};
-cvox.DomUtil.clickElem=function(a,b,c,d){var e=cvox.AriaUtil.getActiveDescendant(a);e&&(a=e);if(c){c=null;a.onclick&&(c=a.onclick);!c&&1!=a.nodeType&&a.parentNode&&a.parentNode.onclick&&(c=a.parentNode.onclick);e=!0;if(c)try{e=c()}catch(f){}if(!e)return}c=document.createEvent("MouseEvents");d=d?"dblclick":"mousedown";c.initMouseEvent(d,!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(g){}c=document.createEvent("MouseEvents");c.initMouseEvent("mouseup",
-!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(h){}c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(k){}cvox.DomUtil.isInternalLink(a)&&cvox.DomUtil.syncInternalLink(a)};
-cvox.DomUtil.syncInternalLink=function(a){var b=a.href.split("#")[1];a=document.getElementById(b);a||(b=document.getElementsByName(b),0<b.length&&(a=b[0]));if(a){var b=a.parentNode,c=document.createElement("div");c.setAttribute("tabindex","-1");b.insertBefore(c,a);c.setAttribute("chromevoxignoreariahidden",1);c.focus();cvox.ChromeVox.syncToNode(a,!0)}};
-cvox.DomUtil.isInputTypeText=function(a){if(!a||a.constructor!=HTMLInputElement)return!1;switch(a.type){case "email":case "number":case "password":case "search":case "text":case "tel":case "url":case "":return!0;default:return!1}};cvox.DomUtil.isControl=function(a){if(cvox.AriaUtil.isControlWidget(a)&&cvox.DomUtil.isFocusable(a))return!0;if(a.tagName)switch(a.tagName){case "BUTTON":case "TEXTAREA":case "SELECT":return!0;case "INPUT":return"hidden"!=a.type}return a.isContentEditable?!0:!1};
-cvox.DomUtil.isLeafLevelControl=function(a){return cvox.DomUtil.isControl(a)?!(cvox.AriaUtil.isCompositeControl(a)&&cvox.DomUtil.findFocusableDescendant(a)):!1};cvox.DomUtil.getSurroundingControl=function(a){var b=null;if(!cvox.DomUtil.isControl(a)&&a.hasAttribute&&a.hasAttribute("role"))for(b=a.parentElement;b&&!cvox.AriaUtil.isCompositeControl(b);)b=b.parentElement;return b};
-cvox.DomUtil.directedNextLeafLikeNode=function(a,b,c){if(a!=document.body){for(;!cvox.DomUtil.directedNextSibling(a,b);){if(!a)return null;a=a.parentNode;if(a==document.body)return null}cvox.DomUtil.directedNextSibling(a,b)&&(a=cvox.DomUtil.directedNextSibling(a,b))}for(;cvox.DomUtil.directedFirstChild(a,b)&&!c(a);)a=cvox.DomUtil.directedFirstChild(a,b);return a==document.body?null:a};cvox.DomUtil.directedNextLeafNode=function(a,b){b=!!b;return cvox.DomUtil.directedNextLeafLikeNode(a,b,cvox.DomUtil.isLeafNode)};
-cvox.DomUtil.previousLeafNode=function(a){return cvox.DomUtil.directedNextLeafNode(a,!0)};cvox.DomUtil.directedFindFirstNode=function(a,b,c){for(a=cvox.DomUtil.directedFirstChild(a,b);a;){if(c(a))return a;var d=cvox.DomUtil.directedFindFirstNode(a,b,c);if(d)return d;a=cvox.DomUtil.directedNextSibling(a,b)}return null};cvox.DomUtil.directedFindDeepestNode=function(a,b,c){var d=cvox.DomUtil.directedFindFirstNode(a,b,c);return d?cvox.DomUtil.directedFindDeepestNode(d,b,c):c(a)?a:null};
-cvox.DomUtil.directedFindNextNode=function(a,b,c,d,e,f){e=!!e;f=!!f;if(!cvox.DomUtil.isDescendantOfNode(a,b)||a==b)return null;for(var g=cvox.DomUtil.directedNextSibling(a,c);g;){if(!f&&d(g))return g;var h=(f?cvox.DomUtil.directedFindDeepestNode:cvox.DomUtil.directedFindFirstNode)(g,c,d);if(h)return h;if(f&&d(g))return g;g=cvox.DomUtil.directedNextSibling(g,c)}a=a.parentNode;return e&&d(a)?a:cvox.DomUtil.directedFindNextNode(a,b,c,d,e,f)};
-cvox.DomUtil.getControlValueAndStateString=function(a){var b=cvox.DomUtil.getSurroundingControl(a);return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a)+" "+cvox.DomUtil.getState(a,!0)):cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getState(a,!0))};cvox.DomUtil.isInternalLink=function(a){return 1==a.nodeType&&(a=a.getAttribute("href"))&&-1!=a.indexOf("#")?(a=a.split("#")[0],""==a||a==window.location.pathname):!1};
-cvox.DomUtil.getLinkURL=function(a){if("A"==a.tagName){if(a.getAttribute("href"))return cvox.DomUtil.isInternalLink(a)?cvox.ChromeVox.msgs.getMsg("internal_link"):a.getAttribute("href")}else if(cvox.AriaUtil.getRoleName(a)==cvox.ChromeVox.msgs.getMsg("aria_role_link"))return cvox.ChromeVox.msgs.getMsg("unknown_link");return""};cvox.DomUtil.getContainingTable=function(a,b){var c=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findTableNodeInList(c,b)};
-cvox.DomUtil.findTableNodeInList=function(a,b){b=b||{allowCaptions:!1};for(var c=a.length-1,d;d=a[c];c--)if(d.constructor!=Text){if(!b.allowCaptions&&"CAPTION"==d.tagName)break;if("TABLE"==d.tagName||cvox.AriaUtil.isGrid(d))return d}return null};
-cvox.DomUtil.isLayoutTable=function(a){if(a.rows&&(1==a.rows.length||1==a.rows[0].childElementCount))return!0;if(cvox.AriaUtil.isGrid(a)||cvox.AriaUtil.isLandmark(a)||a.caption||a.summary||0<cvox.XpathUtil.evalXPath("tbody/tr/th",a).length&&0<cvox.XpathUtil.evalXPath("tbody/tr/td",a).length||0<cvox.XpathUtil.evalXPath("colgroup",a).length||0<cvox.XpathUtil.evalXPath("thead",a).length||0<cvox.XpathUtil.evalXPath("tfoot",a).length)return!1;if(0<cvox.XpathUtil.evalXPath("tbody/tr/td/embed",a).length||
-0<cvox.XpathUtil.evalXPath("tbody/tr/td/object",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/iframe",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/applet",a).length)return!0;var b=0;cvox.DomUtil.hasBorder(a)||b++;6>=a.rows.length&&b++;12>=cvox.DomUtil.countPreviousTags(a)&&b++;0<cvox.XpathUtil.evalXPath("tbody/tr/td/table",a).length&&b++;return 3<=b};cvox.DomUtil.countPreviousTags=function(a){var b=cvox.DomUtil.getAncestors(a);return b.length+cvox.DomUtil.countPreviousSiblings(a)};
-cvox.DomUtil.countPreviousSiblings=function(a){var b=0;for(a=a.previousSibling;null!=a;)a.constructor!=Text&&b++,a=a.previousSibling;return b};cvox.DomUtil.hasBorder=function(a){return a.frame?-1==a.frame.indexOf("void"):a.border?1==a.border.length?"0"!=a.border:0!=a.border.slice(0,-2):a.style.borderStyle&&"none"==a.style.borderStyle?!1:a.style.borderWidth?0!=a.style.borderWidth.slice(0,-2):a.style.borderColor?!0:!1};
-cvox.DomUtil.getFirstLeafNode=function(){for(var a=document.body;a&&a.firstChild;)a=a.firstChild;for(;a&&!cvox.DomUtil.hasContent(a);)a=cvox.DomUtil.directedNextLeafNode(a);return a};cvox.DomUtil.findNode=function(a,b){var c=[],d=cvox.DomUtil.findNodes_(a,b,c,!0,1E4);return d?c[0]:void 0};cvox.DomUtil.countNodes=function(a,b){var c=[];cvox.DomUtil.findNodes_(a,b,c,!1,1E4);return c.length};
-cvox.DomUtil.findNodes_=function(a,b,c,d,e){if(null!=a||0==e)for(a=a.firstChild;a;){if(b(a)&&(c.push(a),d))return!0;e-=1;if(cvox.DomUtil.findNodes_(a,b,c,d,e))return!0;a=a.nextSibling}return!1};cvox.DomUtil.toArray=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c]);return b};
-cvox.DomUtil.shallowChildlessClone=function(a,b){if("#text"==a.nodeName)return document.createTextNode(a.nodeValue);if("#comment"==a.nodeName)return document.createComment(a.nodeValue);for(var c=document.createElement(a.nodeName),d=0;d<a.attributes.length;++d){var e=a.attributes[d];b&&b[e.nodeName]||c.setAttribute(e.nodeName,e.nodeValue)}return c};
-cvox.DomUtil.deepClone=function(a,b){for(var c=cvox.DomUtil.shallowChildlessClone(a,b),d=0;d<a.childNodes.length;++d)c.appendChild(cvox.DomUtil.deepClone(a.childNodes[d],b));return c};cvox.DomUtil.directedFirstChild=function(a,b){return b?a.lastChild:a.firstChild};cvox.DomUtil.directedNextSibling=function(a,b){return a?b?a.previousSibling:a.nextSibling:null};cvox.DomUtil.createSimpleClickFunction=function(a){var b=a.cloneNode(!0);return function(){cvox.DomUtil.clickElem(b,!1,!1)}};
-cvox.DomUtil.addNodeToHead=function(a,b){if(!b||!document.getElementById(b)){var c=document.head||document.body;c.appendChild(a)}};cvox.DomUtil.getContainingMath=function(a){a=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findMathNodeInList(a)};cvox.DomUtil.findMathNodeInList=function(a){for(var b=0,c;c=a[b];b++)if(cvox.DomUtil.isMath(c))return c;return null};cvox.DomUtil.isMath=function(a){return cvox.DomUtil.isMathml(a)||cvox.DomUtil.isMathJax(a)||cvox.DomUtil.isMathImg(a)||cvox.AriaUtil.isMath(a)};
-cvox.DomUtil.ALT_MATH_CLASSES={tex:["tex","latex"],asciimath:["numberedequation","inlineformula","displayformula"]};cvox.DomUtil.altMathQuerySelector=function(a){return(a=cvox.DomUtil.ALT_MATH_CLASSES[a])?a.map(function(a){return"img."+a}).join(", "):""};cvox.DomUtil.isMathImg=function(a){if(!a||!a.tagName||!a.className||"IMG"!=a.tagName)return!1;a=a.className.toLowerCase();return-1!=cvox.DomUtil.ALT_MATH_CLASSES.tex.indexOf(a)||-1!=cvox.DomUtil.ALT_MATH_CLASSES.asciimath.indexOf(a)};
-cvox.DomUtil.isMathml=function(a){return a&&a.tagName?"math"==a.tagName.toLowerCase():!1};cvox.DomUtil.isMathJax=function(a){function b(a,b){return"SPAN"==a.tagName&&a.className.split(" ").some(function(a){return a.toLowerCase()==b})}return a&&a.tagName&&a.className?b(a,"math")?(a=cvox.DomUtil.getAncestors(a),a.some(function(a){return b(a,"mathjax")})):!1:!1};cvox.DomUtil.getMathSpanId=function(a){if(a=document.getElementById(a+"-Frame"))if(a=a.querySelector("span.math"))return a.id};
-cvox.DomUtil.hasLongDesc=function(a){return a&&a.longDesc?!0:!1};cvox.DomUtil.getNodeTagName=function(a){return a.nodeType==Node.ELEMENT_NODE?a.tagName:""};cvox.DomUtil.purgeNodes=function(a){return cvox.DomUtil.toArray(a).filter(function(a){return a.nodeType!=Node.TEXT_NODE||!a.textContent.match(/^\s+$/)})};cvox.DomUtil.elementToPoint=function(a){if(!a)return{x:0,y:0};a.constructor==Text&&(a=a.parentNode);a=a.getBoundingClientRect();return{x:a.left+a.width/2,y:a.top+a.height/2}};cvox.SelectionUtil=function(){};cvox.SelectionUtil.cleanUpParagraphForward=function(a){for(;3==a.focusNode.nodeType;){var b=a.focusNode,c=a.focusOffset;a.modify("extend","forward","sentence");if(b==a.focusNode&&c==a.focusOffset)return!1}return!0};cvox.SelectionUtil.cleanUpParagraphBack=function(a){for(var b,c;3==a.focusNode.nodeType&&(b=a.focusNode,c=a.focusOffset,a.modify("extend","backward","sentence"),b!=a.focusNode||c!=a.focusOffset););return!0};
-cvox.SelectionUtil.cleanUpSentence=function(a){for(var b=!0;b;)if(3==a.focusNode.nodeType){var c=a.focusNode,d=a.focusOffset;if(0<a.rangeCount&&0<a.getRangeAt(0).endOffset)if("."==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else if(" "==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else{if(a.modify("extend","forward","sentence"),c==a.focusNode&&d==a.focusOffset)return!1}else break}else break;return!0};
-cvox.SelectionUtil.findSelPosition=function(a){if(0==a.rangeCount)return[0,0];var b=a.getRangeAt(0).getBoundingClientRect();if(!b)return[0,0];a=window.pageYOffset+b.top;b=window.pageXOffset+b.left;return[a,b]};cvox.SelectionUtil.findTopLeftPosition=function(a){var b=0,c=0;if(a.offsetParent)for(b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;null!==a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return[c,b]};
-cvox.SelectionUtil.isSelectionValid=function(a){var b=RegExp(/^\s+$/);return!(b.test(a.toString())||""==a.toString())};cvox.SelectionUtil.isRangeValid=function(a){a=a.cloneContents().textContent;var b=RegExp(/^\s+$/);return!(b.test(a)||""==a)};cvox.SelectionUtil.findPos_=function(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]};
-cvox.SelectionUtil.scrollElementsToView=function(a){for(;a&&!a.getBoundingClientRect;)a=a.parentElement;if(a){for(var b=a,c=b.parentElement;b!=document.body&&c;)b.scrollTop=b.offsetTop,b.scrollLeft=b.offsetLeft,b=c,c=b.parentElement;a=cvox.SelectionUtil.findPos_(a);window.scrollTo(a[0]-window.innerWidth/2,a[1]-window.innerHeight/2)}};
-cvox.SelectionUtil.scrollToSelection=function(a){if(0!=a.rangeCount){cvox.SelectionUtil.scrollElementsToView(a.focusNode);var b=cvox.SelectionUtil.findSelPosition(a);a=b[0];var b=b[1],c=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,d=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,e=window.innerWidth||document.documentElement.innerWidth||document.body.clientWidth;b<e&&(b=0);c+d<a?(a-=d,window.scroll(b,a+100)):a<c&&window.scroll(b,
-a-100)}};cvox.SelectionUtil.isAllWs=function(a){return!/[^\t\n\r ]/.test(a.data)};cvox.SelectionUtil.isIgnorable=function(a){return 8==a.nodeType||3==a.nodeType&&cvox.SelectionUtil.isAllWs(a)};cvox.SelectionUtil.nodeBefore=function(a){for(;a=a.previousSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};cvox.SelectionUtil.nodeAfter=function(a){for(;a=a.nextSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};
-cvox.SelectionUtil.lastChildNode=function(a){for(a=a.lastChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.previousSibling}return null};cvox.SelectionUtil.firstChildNode=function(a){for(a=a.firstChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.nextSibling}return null};cvox.SelectionUtil.dataOf=function(a){a=a.data;a=a.replace(/[\t\n\r ]+/g," ");" "==a.charAt(0)&&(a=a.substring(1,a.length));" "==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));return a};
-cvox.SelectionUtil.hasContentWithTag=function(a,b){if(!a||!a.anchorNode||!a.focusNode)return!1;if(a.anchorNode.tagName&&a.anchorNode.tagName==b||a.focusNode.tagName&&a.focusNode.tagName==b||a.anchorNode.parentNode.tagName&&a.anchorNode.parentNode.tagName==b||a.focusNode.parentNode.tagName&&a.focusNode.parentNode.tagName==b)return!0;var c=a.getRangeAt(0).cloneContents(),d=document.createElement("span");d.appendChild(c);return 0<d.getElementsByTagName(b).length};
-cvox.SelectionUtil.selectText=function(a,b,c){var d=document.createRange();d.setStart(a,b);d.setEnd(a,c);a=window.getSelection();a.removeAllRanges();a.addRange(d)};cvox.SelectionUtil.selectAllTextInNode=function(a){var b=document.createRange();b.setStart(a,0);b.setEndAfter(a);a=window.getSelection();a.removeAllRanges();a.addRange(b)};
-cvox.SelectionUtil.collapseToStart=function(a){var b=window.getSelection(),c=b.anchorNode,d=b.anchorOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};cvox.SelectionUtil.collapseToEnd=function(a){var b=window.getSelection(),c=b.focusNode,d=b.focusOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};
-cvox.SelectionUtil.getText=function(){var a=window.getSelection();if(cvox.SelectionUtil.hasContentWithTag(a,"IMG")){var b="",a=a.getRangeAt(0).cloneContents(),c=document.createElement("span");c.appendChild(a);for(var a=cvox.XpathUtil.getLeafNodes(c),c=0,d;d=a[c];c++)b=b+" "+cvox.DomUtil.getName(d);return b}return this.getSelectionText_()};cvox.SelectionUtil.getSelectionText_=function(){return""+window.getSelection()};
-cvox.SelectionUtil.getRangeText=function(a){return a?a.cloneContents().textContent.replace(/\s+/g," "):""};cvox.TraverseUtil=function(){};cvox.TraverseUtil.getNodeText=function(a){return a.constructor==Text?a.data:""};cvox.TraverseUtil.treatAsLeafNode=function(a){return 0==a.childNodes.length||"SELECT"==a.nodeName||"listbox"==a.getAttribute("role")||"OBJECT"==a.nodeName};cvox.TraverseUtil.isWhitespace=function(a){return" "==a||"\n"==a||"\r"==a||"\t"==a};
-cvox.TraverseUtil.setSelection=function(a,b){var c=window.getSelection();c.removeAllRanges();var d=document.createRange();d.setStart(a.node,a.index);d.setEnd(b.node,b.index);c.addRange(d);return c};cvox.TraverseUtil.isHidden=function(a){if(a instanceof HTMLElement&&"true"==a.getAttribute("aria-hidden"))return!0;switch(a.tagName){case "SCRIPT":case "NOSCRIPT":return!0}return!1};
-cvox.TraverseUtil.forwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index;e<a.node.childNodes.length;e++){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.index=0,a.text=cvox.TraverseUtil.getNodeText(a.node),a.node instanceof HTMLElement&&b.push(a.node);else{if(a.index<a.text.length)return a.text[a.index++];for(;null!=
-a.node;){d=null;for(f=a.node.nextSibling;null!=f;f=f.nextSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=0;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof HTMLElement&&c.push(a.node),a.node=a.node.parentNode,
-a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.backwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index-1;0<=e;e--){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.text=cvox.TraverseUtil.getNodeText(a.node),a.index=a.text.length?a.text.length:a.node.childNodes.length,a.node instanceof HTMLElement&&b.push(a.node);else{if(0<a.text.length&&0<a.index)return a.text[--a.index];
-for(;;){d=null;for(f=a.node.previousSibling;null!=f;f=f.previousSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=a.text.length?a.text.length:a.node.childNodes.length;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof
-HTMLElement&&c.push(a.node),a.node=a.node.parentNode,a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.getNextChar=function(a,b,c,d,e){a.copyFrom(b);var f=cvox.TraverseUtil.forwardsChar(b,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(b.node);)if(f=cvox.TraverseUtil.forwardsChar(b,c,d),null==f)return null;if(e||!g)return a.copyFrom(b),a.index--,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return b.index--,a.copyFrom(b),a.index--," ";b.index--;return" "};
-cvox.TraverseUtil.getPreviousChar=function(a,b,c,d,e){b.copyFrom(a);var f=cvox.TraverseUtil.backwardsChar(a,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(a.node);)if(f=cvox.TraverseUtil.backwardsChar(a,c,d),null==f)return null;if(e||!g)return b.copyFrom(a),b.index++,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return a.index++,b.copyFrom(a),b.index++," ";a.index++;return" "};
-cvox.TraverseUtil.getNextWord=function(a,b,c,d){var e=b.clone(),f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.forwardsChar(e,c,d),null==f)return null;a.copyFrom(e);a.index--;b.copyFrom(e);a=f;c=[];d=[];f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return a;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d&&(a+=f,b.copyFrom(e),f=cvox.TraverseUtil.forwardsChar(e,c,d),null!=
-f););return a};
-cvox.TraverseUtil.getPreviousWord=function(a,b,c,d){var e=a.clone(),f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.backwardsChar(e,c,d),null==f)return null;b.copyFrom(e);b.index++;a.copyFrom(e);b=f;c=[];d=[];f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return b;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d.length&&(b=f+b,a.copyFrom(e),f=cvox.TraverseUtil.backwardsChar(e,c,
-d),null!=f););return b};cvox.TraverseUtil.includesBreakTagOrSkippedNode=function(a,b,c){for(var d=0;d<a.length;d++){if(cvox.TraverseUtil.isHidden(a[d]))return!0;var e=window.getComputedStyle(a[d],null);if(e&&"inline"!=e.display||c[a[d].tagName])return!0}for(d=0;d<b.length;d++)if((e=window.getComputedStyle(b[d],null))&&"inline"!=e.display||c[b[d].tagName])return!0;return!1};
-cvox.TraverseUtil.getNextSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){return"."==a.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};cvox.TraverseUtil.getPreviousSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){return"."==b.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};
-cvox.TraverseUtil.getNextLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=b.clone();return cvox.TraverseUtil.getNextString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.bottom!=g.bottom&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(b.node)))return b.copyFrom(h),!0;g=c;h.copyFrom(b);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getPreviousLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=a.clone();return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.top!=g.top&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(a.node)))return a.copyFrom(h),!0;g=c;h.copyFrom(a);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getNextParagraph=function(a,b,c,d){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getPreviousParagraph=function(a,b,c,d){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getNextString=function(a,b,c,d,e){c=b.clone();d=b.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getNextWord(c,d,f,g);if(null==k)return null;for(a.copyFrom(c);!(h&&e(h,k,f,g)||(h&&(h+=" "),h+=k,b.copyFrom(d),f=[],g=[],k=cvox.TraverseUtil.getNextWord(c,d,f,g),null==k)););return h};
-cvox.TraverseUtil.getPreviousString=function(a,b,c,d,e){c=a.clone();d=a.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getPreviousWord(c,d,f,g);if(null==k)return null;for(b.copyFrom(d);!(h&&e(h,k,f,g)||(h&&(h=" "+h),h=k+h,a.copyFrom(c),f=[],g=[],k=cvox.TraverseUtil.getPreviousWord(c,d,f,g),null==k)););return h};cvox.CursorSelection=function(a,b,c){this.start=a.clone();this.end=b.clone();void 0==c&&(c=!1);if((this.isReversed_=c)&&this.start.node.compareDocumentPosition(this.end.node)==cvox.CursorSelection.BEFORE||!this.isReversed_&&this.end.node.compareDocumentPosition(this.start.node)==cvox.CursorSelection.BEFORE)a=this.start,this.start=this.end,this.end=a};cvox.CursorSelection.BEFORE=4;
-cvox.CursorSelection.prototype.setReversed=function(a){if(a==this.isReversed_)return this;var b=this.start;this.start=this.end;this.end=b;this.isReversed_=a;return this};cvox.CursorSelection.prototype.isReversed=function(){return this.isReversed_};cvox.CursorSelection.prototype.absStart=function(){return this.isReversed_?this.end:this.start};cvox.CursorSelection.prototype.absEnd=function(){return this.isReversed_?this.start:this.end};
-cvox.CursorSelection.prototype.clone=function(){return new cvox.CursorSelection(this.start,this.end,this.isReversed_)};cvox.CursorSelection.prototype.select=function(){var a=window.getSelection();a.removeAllRanges();this.normalize();a.addRange(this.getRange())};cvox.CursorSelection.fromNode=function(a){if(!a)return null;var b=cvox.TraverseUtil.getNodeText(a);return new cvox.CursorSelection(new cvox.Cursor(a,0,b),new cvox.Cursor(a,0,b))};cvox.CursorSelection.fromBody=function(){return cvox.CursorSelection.fromNode(document.body)};
-cvox.CursorSelection.prototype.getText=function(){return this.start.equals(this.end)?cvox.TraverseUtil.getNodeText(this.start.node):cvox.SelectionUtil.getRangeText(this.getRange())};cvox.CursorSelection.prototype.getRange=function(){var a=document.createRange();this.isReversed_?(a.setStart(this.end.node,this.end.index),a.setEnd(this.start.node,this.start.index)):(a.setStart(this.start.node,this.start.index),a.setEnd(this.end.node,this.end.index));return a};
-cvox.CursorSelection.prototype.equals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)};cvox.CursorSelection.prototype.absEquals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)||this.end.equals(a.start)&&this.start.equals(a.end)};cvox.CursorSelection.prototype.directedBefore=function(a){var b=this.start.node.compareDocumentPosition(a.start.node)==cvox.CursorSelection.BEFORE;return this.start.node==a.start.node||(this.isReversed()?!b:b)};
-cvox.CursorSelection.prototype.normalize=function(){if(0==this.absEnd().index&&this.absEnd().node){var a=this.absEnd().node,b=document.createRange();b.selectNodeContents(a);this.absEnd().index=b.endOffset}return this};cvox.CursorSelection.prototype.collapse=function(){if(this.start.equals(this.end))return this;this.end.copyFrom(this.start);if(0==this.start.text.length)return this;this.isReversed()?0<this.end.index&&this.end.index--:this.end.index<this.end.text.length&&this.end.index++;return this};cvox.PlatformUtil={};cvox.PlatformFilter={NONE:0,WINDOWS:1,MAC:2,LINUX:4,WML:7,CHROMEOS:8,ANDROID:16};cvox.PlatformUtil.matchesPlatform=function(a){var b=navigator.userAgent;return void 0==a?!0:-1!=b.indexOf("Android")?0!=(a&cvox.PlatformFilter.ANDROID):-1!=b.indexOf("Win")?0!=(a&cvox.PlatformFilter.WINDOWS):-1!=b.indexOf("Mac")?0!=(a&cvox.PlatformFilter.MAC):-1!=b.indexOf("Linux")?0!=(a&cvox.PlatformFilter.LINUX):-1!=b.indexOf("CrOS")?0!=(a&cvox.PlatformFilter.CHROMEOS):!1};cvox.Spannable=function(a,b){this.string_=a||"";this.spans_=[];if(goog.isDef(b)){var c=this.string_.length;this.spans_.push({value:b,start:0,end:c})}};cvox.Spannable.prototype.toString=function(){return this.string_};cvox.Spannable.prototype.getLength=function(){return this.string_.length};cvox.Spannable.prototype.setSpan=function(a,b,c){this.removeSpan(a);if(0<=b&&b<=c&&c<=this.string_.length)this.spans_.push({value:a,start:b,end:c});else throw new RangeError("span out of range");};
-cvox.Spannable.prototype.removeSpan=function(a){for(var b=this.spans_.length-1;0<=b;b--)this.spans_[b].value===a&&this.spans_.splice(b,1)};cvox.Spannable.prototype.append=function(a){if(a instanceof cvox.Spannable){var b=a,c=this.getLength();this.string_+=b.string_;a.spans_.forEach(goog.bind(function(a){this.setSpan(a.value,a.start+c,a.end+c)},this))}else"string"===typeof a&&(this.string_+=a)};
-cvox.Spannable.prototype.getSpan=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.start<=a&&a<c.end)return c.value}};cvox.Spannable.prototype.getSpanInstanceOf=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value instanceof a)return c.value}};cvox.Spannable.prototype.getSpans=function(a){for(var b=[],c=0;c<this.spans_.length;c++){var d=this.spans_[c];d.start<=a&&a<d.end&&b.push(d.value)}return b};
-cvox.Spannable.prototype.getSpanStart=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.start}return null};cvox.Spannable.prototype.getSpanEnd=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.end}return null};
-cvox.Spannable.prototype.substring=function(a,b){var c=goog.isDef(b)?b:this.string_.length;if(0>a||c>this.string_.length||a>c)throw new RangeError("substring indices out of range");for(var d=new cvox.Spannable(this.string_.substring(a,c)),e=0;e<this.spans_.length;e++){var f=this.spans_[e];if(f.start<=c&&f.end>=a){var g=Math.max(0,f.start-a),h=Math.min(c-a,f.end-a);d.spans_.push({value:f.value,start:g,end:h})}}return d};
-cvox.Spannable.prototype.trim=function(){if(/^\s*$/.test(this.string_))return this.substring(0,0);var a=this.string_.match(/^\s*/)[0].length,b=this.string_.match(/\s*$/).index;return this.substring(a,b)};cvox.NavBraille=function(a){this.text=a.text instanceof cvox.Spannable?a.text:new cvox.Spannable(a.text);this.startIndex=a.startIndex?a.startIndex:0;this.endIndex=a.endIndex?a.endIndex:0};cvox.NavBraille.fromText=function(a){return new cvox.NavBraille({text:a})};cvox.NavBraille.prototype.isEmpty=function(){return 0==this.text.getLength()};cvox.NavBraille.prototype.toString=function(){return'NavBraille(text="'+this.text.toString()+'" startIndex="'+this.startIndex+'" endIndex="'+this.endIndex+'")'};
-cvox.NavBraille.prototype.toJson=function(){return{text:this.text.toString(),startIndex:this.startIndex,endIndex:this.endIndex}};cvox.NavBraille.prototype.write=function(){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.CHROMEOS|cvox.PlatformFilter.ANDROID)&&cvox.ChromeVox.braille.write(this)};cvox.BrailleKeyCommand={PAN_LEFT:"pan_left",PAN_RIGHT:"pan_right",LINE_UP:"line_up",LINE_DOWN:"line_down",TOP:"top",BOTTOM:"bottom",ROUTING:"routing",SECONDARY_ROUTING:"secondary_routing",DOTS:"dots",STANDARD_KEY:"standard_key"};cvox.BrailleKeyEvent={};cvox.BrailleInterface=function(){};cvox.BrailleInterface.prototype.write=function(){};cvox.AbstractBraille=function(){};cvox.AbstractHost=function(){};cvox.AbstractHost.State={ACTIVE:0,INACTIVE:1,KILLED:2};cvox.AbstractHost.prototype.init=function(){};cvox.AbstractHost.prototype.reinit=function(){};cvox.AbstractHost.prototype.onPageLoad=function(){};cvox.AbstractHost.prototype.getApiSrc=function(){return""};cvox.AbstractHost.prototype.getFileSrc=function(){return""};cvox.AbstractHost.prototype.hasTtsCallback=function(){return!0};cvox.AbstractHost.prototype.ttsLoaded=function(){return!0};
-cvox.AbstractHost.prototype.mustRedispatchClickEvent=function(){return!1};cvox.AbstractHost.prototype.activateOrDeactivateChromeVox=function(a){this.onStateChanged_(a?cvox.AbstractHost.State.ACTIVE:cvox.AbstractHost.State.INACTIVE)};cvox.AbstractHost.prototype.killChromeVox=function(){this.onStateChanged_(cvox.AbstractHost.State.KILLED)};
-cvox.AbstractHost.prototype.onStateChanged_=function(a){var b=a==cvox.AbstractHost.State.ACTIVE;if(b!=cvox.ChromeVox.isActive)switch(cvox.ChromeVoxEventWatcher.cleanup(window),a){case cvox.AbstractHost.State.ACTIVE:cvox.ChromeVox.isActive=!0;cvox.ChromeVox.navigationManager.showOrHideIndicator(!0);cvox.ChromeVoxEventWatcher.init(window);document.activeElement?(a=document.hasFocus()&&!document.webkitHidden,cvox.ApiImplementation.syncToNode(document.activeElement,a)):cvox.ChromeVox.navigationManager.updateIndicator();
-break;case cvox.AbstractHost.State.INACTIVE:cvox.ChromeVox.isActive=!1;cvox.ChromeVox.navigationManager.showOrHideIndicator(!1);cvox.ChromeVoxEventWatcher.init(window);break;case cvox.AbstractHost.State.KILLED:cvox.ChromeVox.isActive=!1,cvox.ChromeVox.navigationManager.showOrHideIndicator(!1)}};cvox.MathJaxInterface=function(){};cvox.MathJaxInterface.prototype.isMathjaxActive=function(){};cvox.MathJaxInterface.prototype.getAllJax=function(){};cvox.MathJaxInterface.prototype.registerSignal=function(){};cvox.MathJaxInterface.prototype.injectScripts=function(){};cvox.MathJaxInterface.prototype.configMediaWiki=function(){};cvox.MathJaxInterface.prototype.getTex=function(){};cvox.MathJaxInterface.prototype.getAsciiMath=function(){};cvox.AbstractMathJax=function(){};cvox.AbstractMathJax.prototype.getAllTexs=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("tex")),c=0,d;d=b[c];c++)this.getTex(a,d)};cvox.AbstractMathJax.prototype.getAllAsciiMaths=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("asciimath")),c=0,d;d=b[c];c++)this.getAsciiMath(a,d)};
-cvox.AbstractMathJax.prototype.convertMarkupToDom=function(a,b,c){if(b){var d=new DOMParser;b=b.replace(/>\s+</g,"><");a(d.parseFromString(b,"text/xml").firstChild,c)}};cvox.AbstractMsgs=function(){};cvox.AbstractMsgs.prototype.getMsg=function(){};cvox.AbstractMsgs.prototype.getNumber=function(){};cvox.HostFactory=function(){};cvox.HostFactory.getHost=function(){return new cvox.HostFactory.hostConstructor};cvox.HostFactory.getTts=function(){return new cvox.HostFactory.ttsConstructor};cvox.HostFactory.getBraille=function(){return new cvox.HostFactory.brailleConstructor};cvox.HostFactory.getMsgs=function(){return new cvox.HostFactory.msgsConstructor};cvox.HostFactory.getEarcons=function(){return new cvox.HostFactory.earconsConstructor};cvox.HostFactory.getMathJax=function(){return new cvox.HostFactory.mathJaxConstructor};cvox.SpokenMessage=function(){this.raw=this.id=this.count=null};cvox.SpokenMessages={};cvox.SpokenMessages.messages=[];cvox.SpokenMessages.speakFlush=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_FLUSH)};cvox.SpokenMessages.speakQueued=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_QUEUE)};
-cvox.SpokenMessages.speak=function(a){for(var b=0;b<cvox.SpokenMessages.messages.length;++b){var c=cvox.SpokenMessages.messages[b];if(!c||!c.id&&!c.raw)throw"Invalid message received.";var d="";if(null!=c.count)if(0>=c.count)try{d+=cvox.ChromeVox.msgs.getMsg(c.id[0]+"_optional_default")}catch(e){continue}else d=1==c.count?d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_singular"):d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_plural",[c.count]);else d=c.raw?d+c.raw:d+cvox.ChromeVox.msgs.getMsg.apply(cvox.ChromeVox.msgs,
-c.id);cvox.ChromeVox.tts.speak(d,a,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=cvox.AbstractTts.QUEUE_MODE_QUEUE}cvox.SpokenMessages.messages=[]};cvox.SpokenMessages.currentMessage=function(){if(0==cvox.SpokenMessages.messages.length)throw"Invalid usage of SpokenMessages; start the chain using $m()";return cvox.SpokenMessages.messages[cvox.SpokenMessages.messages.length-1]};cvox.SpokenMessages.withCount=function(a){cvox.SpokenMessages.currentMessage().count=a;return cvox.SpokenMessages};
-cvox.SpokenMessages.andIndexTotal=function(a,b){var c=new cvox.SpokenMessage;c.raw=cvox.ChromeVox.msgs.getMsg("index_total",[a,b]);cvox.SpokenMessages.messages.push(c);return cvox.SpokenMessages};cvox.SpokenMessages.andEnd=function(){return cvox.SpokenMessages.andMessage("end")};cvox.SpokenMessages.andMessage=function(a){var b=new cvox.SpokenMessage;b.id="string"==typeof a?[a]:a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};
-cvox.SpokenMessages.andRawMessage=function(a){var b=new cvox.SpokenMessage;b.raw=a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};cvox.SpokenMessages.andPause=function(){return cvox.SpokenMessages.andMessage("pause")};cvox.$m=cvox.SpokenMessages.andMessage;cvox.CompositeTts=function(){this.ttsEngines_=[]};cvox.CompositeTts.prototype.add=function(a){this.ttsEngines_.push(a);return this};cvox.CompositeTts.prototype.speak=function(a,b,c){this.ttsEngines_.forEach(function(d){d.speak(a,b,c)})};cvox.CompositeTts.prototype.isSpeaking=function(){return this.ttsEngines_.some(function(a){return a.isSpeaking()})};cvox.CompositeTts.prototype.stop=function(){this.ttsEngines_.forEach(function(a){a.stop()})};
-cvox.CompositeTts.prototype.increaseOrDecreaseProperty=function(a,b){this.ttsEngines_.forEach(function(c){c.increaseOrDecreaseProperty(a,b)})};cvox.CompositeTts.prototype.getDefaultProperty=function(a){for(var b=0,c;c=this.ttsEngines_[b];b++)if(c=c.getDefaultProperty(a))return c};cvox.BuildInfo={};cvox.BuildInfo.build="1384906195.369502";cvox.ChromeVoxJSON||(cvox.ChromeVoxJSON={});
-window.JSON&&"[object JSON]"==window.JSON.toString()?cvox.ChromeVoxJSON=window.JSON:function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,n,s,u=f,t,r=d[a];r&&"object"===typeof r&&"function"===typeof r.toJSON&&(r=r.toJSON(a));"function"===typeof k&&(r=k.call(d,a,r));switch(typeof r){case "string":return b(r);
-case "number":return isFinite(r)?String(r):"null";case "boolean":case "null":return String(r);case "object":if(!r)return"null";f+=g;t=[];if("[object Array]"===Object.prototype.toString.apply(r)){s=r.length;for(e=0;e<s;e+=1)t[e]=c(e,r)||"null";n=0===t.length?"[]":f?"[\n"+f+t.join(",\n"+f)+"\n"+u+"]":"["+t.join(",")+"]";f=u;return n}if(k&&"object"===typeof k)for(s=k.length,e=0;e<s;e+=1)h=k[e],"string"===typeof h&&(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);else for(h in r)Object.hasOwnProperty.call(r,h)&&
-(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);n=0===t.length?"{}":f?"{\n"+f+t.join(",\n"+f)+"\n"+u+"}":"{"+t.join(",")+"}";f=u;return n}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":"null"},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});
-var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof cvox.ChromeVoxJSON.stringify&&(cvox.ChromeVoxJSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&
-(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});"function"!==typeof cvox.ChromeVoxJSON.parse&&(cvox.ChromeVoxJSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=String(a);d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
-if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})}();"undefined"!=typeof goog&&goog.provide&&(cvox.ApiUtil={});window.cvox||(window.cvox={});cvox.ApiUtils=function(){};cvox.ApiUtils.nextCvoxId_=1;
-cvox.ApiUtils.makeNodeReference=function(a){if(a.id&&document.getElementById(a.id)==a)return{id:a.id};if(a instanceof HTMLElement){var b=cvox.ApiUtils.nextCvoxId_;a.setAttribute("cvoxid",b);cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+1)%100;return{cvoxid:b}}if(a.parentElement){for(var c=a.parentElement,d=-1,b=0;b<c.childNodes.length;b++)if(c.childNodes[b]==a){d=b;break}if(0<=d)return b=cvox.ApiUtils.nextCvoxId_,c.setAttribute("cvoxid",b),cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+
-1)%100,{cvoxid:b,childIndex:d}}throw"Cannot reference node: "+a;};cvox.ApiUtils.getNodeFromRef=function(a){if(a.id)return document.getElementById(a.id);if(a.cvoxid){var b='*[cvoxid="'+a.cvoxid+'"]';(b=document.querySelector(b))&&b.removeAttribute&&b.removeAttribute("cvoxid");return null!=a.childIndex?b.childNodes[a.childIndex]:b}throw"Bad node reference: "+cvox.ChromeVoxJSON.stringify(a);};cvox.ScriptInstaller={};
-cvox.ScriptInstaller.installScript=function(a,b,c,d){if(document.querySelector("script["+b+"]")||!a)return!1;for(var e=0,f;f=a[e];e++){var g=new XMLHttpRequest,h=f+"?"+(new Date).getTime();g.onreadystatechange=function(){if(4==g.readyState){var a=g.responseText,a=a+("\n//# sourceURL="+f+"\n"),c=document.createElement("script");c.type="text/javascript";c.setAttribute(b,"1");c.textContent=a;d&&c.setAttribute("chromevoxScriptBase",d);cvox.DomUtil.addNodeToHead(c)}};try{g.open("GET",h,!1),g.send(null)}catch(k){return window.console.log("Warning: ChromeVox external script loading for "+
-document.location+" stopped after failing to install "+f),!1}}c&&c();return!0};cvox.ApiImplementation=function(){};cvox.ApiImplementation.init=function(a){window.addEventListener("message",cvox.ApiImplementation.portSetup,!0);var b=[];b.push(cvox.ChromeVox.host.getFileSrc("chromevox/injected/api_util.js"));b.push(cvox.ChromeVox.host.getApiSrc());b.push(cvox.ApiImplementation.siteSpecificScriptLoader);a=cvox.ScriptInstaller.installScript(b,"cvoxapi",a,cvox.ApiImplementation.siteSpecificScriptBase);a||(window.location.href="javascript:cvox.Api.internalEnable();")};
-cvox.ApiImplementation.portSetup=function(a){return"cvox.PortSetup"==a.data?(cvox.ApiImplementation.port=a.ports[0],cvox.ApiImplementation.port.onmessage=function(a){cvox.ApiImplementation.dispatchApiMessage(cvox.ChromeVoxJSON.parse(a.data))},a.stopPropagation(),!1):!0};
-cvox.ApiImplementation.dispatchApiMessage=function(a){var b;switch(a.cmd){case "speak":b=cvox.ApiImplementation.speak;break;case "speakNodeRef":b=cvox.ApiImplementation.speakNodeRef;break;case "stop":b=cvox.ApiImplementation.stop;break;case "playEarcon":b=cvox.ApiImplementation.playEarcon;break;case "syncToNodeRef":b=cvox.ApiImplementation.syncToNodeRef;break;case "clickNodeRef":b=cvox.ApiImplementation.clickNodeRef;break;case "getBuild":b=cvox.ApiImplementation.getBuild;break;case "getVersion":b=
-cvox.ApiImplementation.getVersion;break;case "getCurrentNode":b=cvox.ApiImplementation.getCurrentNode;break;case "getCvoxModKeys":b=cvox.ApiImplementation.getCvoxModKeys;break;case "isKeyShortcut":b=cvox.ApiImplementation.isKeyShortcut;break;case "setKeyEcho":b=cvox.ApiImplementation.setKeyEcho;break;case "Math.defineRule":b=cvox.ApiImplementation.Math.defineRule}if(!b)throw"Unknown API call: "+a.cmd;b.apply(cvox.ApiImplementation,a.args)};
-function setupEndCallback_(a,b){var c=function(){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:b}))};a&&(a.endCallback=c)}cvox.ApiImplementation.speak=function(a,b,c,d){cvox.ChromeVox.isActive&&(d||(d={}),setupEndCallback_(d,a),cvox.ChromeVox.tts.speak(b,c,d))};cvox.ApiImplementation.speakNode=function(a,b,c){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(a),b,c)};
-cvox.ApiImplementation.speakNodeRef=function(a,b,c,d){b=cvox.ApiUtils.getNodeFromRef(b);d||(d={});setupEndCallback_(d,a);cvox.ApiImplementation.speakNode(b,c,d)};cvox.ApiImplementation.stop=function(){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.stop()};cvox.ApiImplementation.playEarcon=function(a){cvox.ChromeVox.isActive&&cvox.ChromeVox.earcons.playEarconByName(a)};cvox.ApiImplementation.syncToNodeRef=function(a,b){var c=cvox.ApiUtils.getNodeFromRef(a);cvox.ApiImplementation.syncToNode(c,b)};
-cvox.ApiImplementation.syncToNode=function(a,b,c){cvox.ChromeVox.isActive&&(void 0==c&&(c=cvox.AbstractTts.QUEUE_MODE_FLUSH),cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a,!0),cvox.ChromeVox.navigationManager.updateIndicator(),void 0==b&&(b=!1),cvox.AriaUtil.isHiddenRecursive(a)&&(b=!1),b&&cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ApiImplementation.getDesc_(a),c,null),cvox.ChromeVox.navigationManager.getBraille().write(),cvox.ChromeVox.navigationManager.updatePosition(a))};
-cvox.ApiImplementation.getCurrentNode=function(a){var b=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,currentNode:cvox.ApiUtils.makeNodeReference(b)}))};
-cvox.ApiImplementation.getDesc_=function(a){if(!a.hasAttribute("cvoxnodedesc"))return cvox.ChromeVox.navigationManager.getDescription();a=cvox.ChromeVoxJSON.parse(a.getAttribute("cvoxnodedesc"));for(var b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b};cvox.ApiImplementation.clickNodeRef=function(a,b){cvox.DomUtil.clickElem(cvox.ApiUtils.getNodeFromRef(a),b,!1)};
-cvox.ApiImplementation.getBuild=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,build:cvox.BuildInfo.build}))};cvox.ApiImplementation.getVersion=function(a){var b=cvox.ChromeVox.version;null==b?window.setTimeout(function(){cvox.ApiImplementation.getVersion(a)},1E3):cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,version:b}))};
-cvox.ApiImplementation.getCvoxModKeys=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,keyCodes:cvox.KeyUtil.cvoxModKeyCodes()}))};cvox.ApiImplementation.isKeyShortcut=function(a,b){var c=cvox.KeyUtil.keyEventToKeySequence(b);cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,isHandled:cvox.ChromeVoxKbHandler.handlerKeyMap.hasKey(c)}))};
-cvox.ApiImplementation.setKeyEcho=function(a){var b=cvox.ChromeVox.keyEcho;b[document.location.href]=a;JSON.stringify(b)};cvox.ApiImplementation.Math=function(){};cvox.ApiImplementation.Math.defineRule=function(a,b,c,d,e){var f=cvox.MathmlStore.getInstance(),g=Array.prototype.slice.call(arguments,4),g=[a,b,c,d].concat(g);f.defineRule.apply(f,g)};cvox.ConsoleTts=function(){this.enabled_=!1};goog.addSingletonGetter(cvox.ConsoleTts);cvox.ConsoleTts.prototype.speak=function(a,b,c){if(this.enabled_&&window.console){var d="Speak",d=b==cvox.AbstractTts.QUEUE_MODE_FLUSH?d+" (I)":d+" (Q)",d=d+(' "'+a+'"');window.console.log(d);c&&void 0!=c.startCallback&&window.console.log(" using startCallback");c&&void 0!=c.endCallback&&window.console.log(" using endCallback")}return this};cvox.ConsoleTts.prototype.isSpeaking=function(){return!1};
-cvox.ConsoleTts.prototype.stop=function(){this.enabled_&&window.console.log("Stop")};cvox.ConsoleTts.prototype.increaseOrDecreaseProperty=function(){};cvox.ConsoleTts.prototype.setEnabled=function(a){this.enabled_=a};cvox.ConsoleTts.prototype.getDefaultProperty=function(){};cvox.ChromeVoxHTMLDateWidget=function(a,b){var c=this;this.pos_=0;var d=2;if("month"==a.type||"week"==a.type)d=1;this.maxPos_=d;this.dateElem_=a;this.dateTts_=b;this.pDay_=this.pWeek_=this.pMonth_=this.pYear_=-1;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};0==this.dateElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e);
-e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e)}this.dateElem_.addEventListener("keydown",this.keyListener_,!1);this.dateElem_.addEventListener("keyup",this.keyListener_,!1);this.dateElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLDateWidget.prototype.shutdown=function(){this.dateElem_.removeEventListener("blur",this.blurListener_,!1);this.dateElem_.removeEventListener("keydown",this.keyListener_,!1);this.dateElem_.removeEventListener("keyup",this.keyListener_,!1)};
-cvox.ChromeVoxHTMLDateWidget.prototype.forceInitTime_=function(){var a=new Date,b="",b=a.getFullYear()+"",c=a.getMonth()+1+"";2>c.length&&(c="0"+c);var d=a.getDate()+"";switch(this.dateElem_.type){case "month":b=b+"-"+c;break;case "week":a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));c=new Date(a.getFullYear(),0,1);a=Math.ceil(((a-c)/864E5+1)/7)+"";2>a.length&&(a="0"+a);a="W"+a;b=b+"-"+a;break;default:b=b+"-"+c+"-"+d}this.dateElem_.setAttribute("value",b)};
-cvox.ChromeVoxHTMLDateWidget.prototype.handlePosChange_=function(){this.pos_=Math.max(this.pos_,0);this.pos_=Math.min(this.pos_,this.maxPos_);switch(this.pos_){case 0:"week"==this.dateElem_.type?this.pWeek_=-1:this.pMonth_=-1;break;case 1:"date"==this.dateElem_.type?this.pDay_=-1:this.pYear_=-1;break;case 2:this.pYear_=-1}};
-cvox.ChromeVoxHTMLDateWidget.prototype.update_=function(a){var b=this.dateElem_.value.split("-");if(1>b.length)this.forceInitTime_();else{var c=-1,d=-1,e=-1,f=-1,c=parseInt(b[0],10);"week"==this.dateElem_.type?e=parseInt(b[1].replace("W",""),10):"date"==this.dateElem_.type?(d=parseInt(b[1],10),f=parseInt(b[2],10)):d=parseInt(b[1],10);b="";a&&(b=cvox.DomUtil.getName(this.dateElem_,!0,!0)+"\n");e!=this.pWeek_&&(b=b+cvox.ChromeVox.msgs.getMsg("datewidget_week")+e+"\n",this.pWeek_=e);if(d!=this.pMonth_){a=
-"";switch(d){case 1:a=cvox.ChromeVox.msgs.getMsg("datewidget_january");break;case 2:a=cvox.ChromeVox.msgs.getMsg("datewidget_february");break;case 3:a=cvox.ChromeVox.msgs.getMsg("datewidget_march");break;case 4:a=cvox.ChromeVox.msgs.getMsg("datewidget_april");break;case 5:a=cvox.ChromeVox.msgs.getMsg("datewidget_may");break;case 6:a=cvox.ChromeVox.msgs.getMsg("datewidget_june");break;case 7:a=cvox.ChromeVox.msgs.getMsg("datewidget_july");break;case 8:a=cvox.ChromeVox.msgs.getMsg("datewidget_august");
-break;case 9:a=cvox.ChromeVox.msgs.getMsg("datewidget_september");break;case 10:a=cvox.ChromeVox.msgs.getMsg("datewidget_october");break;case 11:a=cvox.ChromeVox.msgs.getMsg("datewidget_november");break;case 12:a=cvox.ChromeVox.msgs.getMsg("datewidget_december")}b=b+a+"\n";this.pMonth_=d}f!=this.pDay_&&(b=b+f+"\n",this.pDay_=f);c!=this.pYear_&&(b=b+c+"\n",this.pYear_=c);0<b.length&&this.dateTts_.speak(b,0,null)}};
-cvox.ChromeVoxHTMLDateWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.BrailleTextHandler=function(a){this.braille_=a};cvox.BrailleTextHandler.prototype.changed=function(a,b,c,d){var e;d?(e=cvox.NavBraille.fromText(a),e.startIndex=b,e.endIndex=c):cvox.ChromeVox.navigationManager&&(e=cvox.ChromeVox.navigationManager.getBraille());e&&this.braille_.write(e)};cvox.ContentEditableExtractor=function(){this.text_="";this.end_=this.start_=0;this.lines_={};this.characterToLineMap_=[]};
-cvox.ContentEditableExtractor.prototype.update=function(a){for(var b={0:{startIndex:0,endIndex:0}},c=new cvox.Cursor(a,0,""),d=c.clone(),e=document.createRange(),f,g=0,h=null,k="",l=0,m=-1,p=-1,q=window.getSelection(),n=new cvox.Cursor(q.baseNode,q.baseOffset,""),q=new cvox.Cursor(q.extentNode,q.extentOffset,""),s=!1,u=!1;;){f=[];var t=[],r=cvox.TraverseUtil.forwardsChar(d,f,t),v=!1;r||(v=!0);for(f=0;f<t.length&&!v;f++)t[f]==a&&(v=!0);if(v)break;e.setStart(c.node,c.index);e.setEnd(d.node,d.index);
-if((f=e.getBoundingClientRect())&&0!=f.width&&0!=f.height){null!==h&&f.bottom!=h&&0<l&&k.substr(-1).match(/\S/)&&r.match(/\S/)&&(k+="\n",l++);if(c.node!=d.node&&0<d.index&&(e.setStart(d.node,d.index-1),f=e.getBoundingClientRect(),!f||0==f.width||0==f.height))continue;!s&&-1==m&&d.node==n.node&&d.index>=n.index&&(d.index>n.index?m=l:s=!0);!u&&-1==p&&d.node==q.node&&d.index>=q.index&&(d.index>q.index?p=l:u=!0);null===h?h=f.bottom:f.bottom!=h&&(b[g].endIndex=l,g++,b[g]={startIndex:l,endIndex:l},h=f.bottom);
-k+=r;l++;c=d.clone();s&&(m=l,s=!1);u&&(p=l,u=!1)}}b[g].endIndex=l;a=[];for(f=0;f<=g;f++)for(c=b[f].startIndex;c<=b[f].endIndex;c++)a[c]=f;this.text_=k;this.characterToLineMap_=a;this.lines_=b;this.start_=0<=m?m:k.length;this.end_=0<=p?p:k.length};cvox.ContentEditableExtractor.prototype.getText=function(){return this.text_};cvox.ContentEditableExtractor.prototype.getStartIndex=function(){return this.start_};cvox.ContentEditableExtractor.prototype.getEndIndex=function(){return this.end_};
-cvox.ContentEditableExtractor.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.ContentEditableExtractor.prototype.getLineStart=function(a){return this.lines_[a].startIndex};cvox.ContentEditableExtractor.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.EditableTextAreaShadow=function(){this.shadowElement_=document.createElement("div");this.lines_={};this.characterToLineMap_=[]};
-cvox.EditableTextAreaShadow.prototype.update=function(a){for(document.body.appendChild(this.shadowElement_);this.shadowElement_.childNodes.length;)this.shadowElement_.removeChild(this.shadowElement_.childNodes[0]);this.shadowElement_.style.cssText=window.getComputedStyle(a,null).cssText;this.shadowElement_.style.position="absolute";this.shadowElement_.style.top=-9999;this.shadowElement_.style.left=-9999;this.shadowElement_.setAttribute("aria-hidden","true");var b=a.value,c=document.createTextNode(b+
-".");this.shadowElement_.appendChild(c);a={0:{startIndex:0,endIndex:0}};for(var d=document.createRange(),e=0,f=0,g=0,h=null,k=!1,l;e<=b.length;){d.setStart(c,e);if(e+8>b.length||0<=b.substr(e,8).indexOf("\n"))k=!0;k?(e++,d.setEnd(c,e),l=d.getBoundingClientRect()):(d.setEnd(c,e+8),l=d.getBoundingClientRect(),l.bottom==h?e+=8:(l&&null!==h&&(k=!0),e++,d.setEnd(c,e),l=d.getBoundingClientRect()));0<e&&"\n"==b[e-1]?(a[g].endIndex=e-1,g++,a[g]={startIndex:e,endIndex:e},h=null,k=!1,f=e):l&&null===h?h=l.bottom:
-l&&l.bottom!=h&&(a[g].endIndex=f,g++,a[g]={startIndex:f,endIndex:f},h=l?l.bottom:null,k=!1);l&&(f=e)}a[g].endIndex=b.length;b=[];for(c=0;c<=g;c++)for(d=a[c].startIndex;d<=a[c].endIndex;d++)b[d]=c;this.characterToLineMap_=b;this.lines_=a;document.body.removeChild(this.shadowElement_)};cvox.EditableTextAreaShadow.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.EditableTextAreaShadow.prototype.getLineStart=function(a){return this.lines_[a].startIndex};
-cvox.EditableTextAreaShadow.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.TextChangeEvent=function(a,b,c,d){this.value=a;this.start=b;this.end=c;this.triggeredByUser=d;this.start>this.end&&(a=this.end,this.end=this.start,this.start=a)};cvox.TypingEcho={CHARACTER:0,WORD:1,CHARACTER_AND_WORD:2,NONE:3,COUNT:4};cvox.TypingEcho.cycle=function(a){return(a+1)%cvox.TypingEcho.COUNT};cvox.TypingEcho.shouldSpeakChar=function(a){return a==cvox.TypingEcho.CHARACTER_AND_WORD||a==cvox.TypingEcho.CHARACTER};cvox.TextHandlerInterface=function(){};
-cvox.TextHandlerInterface.prototype.changed=function(){};cvox.ChromeVoxEditableTextBase=function(a,b,c,d,e){this.value=a;this.start=b;this.end=c;this.isPassword=d;this.tts=e;this.multiline=!1;this.brailleHandler_=cvox.ChromeVox.braille?new cvox.BrailleTextHandler(cvox.ChromeVox.braille):void 0};cvox.ChromeVoxEditableTextBase.useIBeamCursor=cvox.ChromeVox.isMac;cvox.ChromeVoxEditableTextBase.eventTypingEcho=!1;cvox.ChromeVoxEditableTextBase.prototype.maxShortPhraseLen=60;
-cvox.ChromeVoxEditableTextBase.prototype.isPassword=!1;cvox.ChromeVoxEditableTextBase.prototype.lastChangeDescribed=!1;cvox.ChromeVoxEditableTextBase.prototype.getValue=function(){var a="";if(this.multiline){if(a+="multiline editable text. ",this.start==this.end)var b=this.getLine(this.getLineIndex(this.start)),a=b?a+b:a+"blank"}else a=this.node?a+cvox.DomUtil.getValue(this.node):a+this.value,a=a<=this.maxShortPhraseLen?a+", editable text":a.substring(0,this.maxShortPhraseLen)+", editable text";return a};
-cvox.ChromeVoxEditableTextBase.prototype.getLineIndex=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineStart=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineEnd=function(){return this.value.length};cvox.ChromeVoxEditableTextBase.prototype.getLine=function(a){var b=this.getLineStart(a);a=this.getLineEnd(a);b=this.value.substr(b,a-b);return b.replace(/^\s+|\s+$/g,"")};cvox.ChromeVoxEditableTextBase.prototype.isWordBreakChar=function(a){return!!a.match(/^\W$/)};
-cvox.ChromeVoxEditableTextBase.prototype.isLastChar=function(a){return void 0==this.getLineIndex(a.start+1)};cvox.ChromeVoxEditableTextBase.prototype.speak=function(a,b,c){if(!this.node||document.activeElement==this.node){var d=cvox.AbstractTts.QUEUE_MODE_QUEUE;!0===b&&(d=cvox.AbstractTts.QUEUE_MODE_FLUSH);this.tts.speak(a,d,c||{})}};
-cvox.ChromeVoxEditableTextBase.prototype.changed=function(a){if(a.value!=this.value||a.start!=this.start||a.end!=this.end||this.isLastChar(a)){if(a.value==this.value?this.describeSelectionChanged(a):this.describeTextChanged(a),this.lastChangeDescribed=!0,this.value=a.value,this.start=a.start,this.end=a.end,this.brailleHandler_){var b=this.getLine(this.getLineIndex(a.start)),c=this.getLineStart(this.getLineIndex(a.start)),d=a.start-c;a=a.end-c;this.brailleHandler_.changed(b,d,a,this.multiline)}}else this.lastChangeDescribed=
-!1};
-cvox.ChromeVoxEditableTextBase.prototype.describeSelectionChanged=function(a){if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser);else if(a.start==a.end)if(this.start!=this.end)this.speak(cvox.ChromeVox.msgs.getMsg("Unselected"),a.triggeredByUser);else if(this.getLineIndex(this.start)!=this.getLineIndex(a.start)){var b=this.getLine(this.getLineIndex(a.start));""==b&&(b=cvox.ChromeVox.msgs.getMsg("text_box_blank"));this.speak(b,
-a.triggeredByUser)}else this.start==a.start+1||this.start==a.start-1?cvox.ChromeVoxEditableTextBase.useIBeamCursor?this.speak(this.value.substr(Math.min(this.start,a.start),1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):a.start==this.value.length?this.speak(cvox.ChromeVox.msgs.getMsg("end"),a.triggeredByUser):this.speak(this.value.substr(a.start,1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):this.speak(this.value.substr(Math.min(this.start,a.start),Math.abs(this.start-
-a.start)),a.triggeredByUser);else this.start+1==a.start&&this.end==this.value.length&&a.end==this.value.length?(this.speak(this.value.substr(this.start,1),a.triggeredByUser),this.speak(this.value.substr(a.start))):this.start==this.end?(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected"))):this.start==a.start&&this.end<a.end?(this.speak(this.value.substr(this.end,a.end-this.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):
-this.start==a.start&&this.end>a.end?(this.speak(this.value.substr(a.end,this.end-a.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):this.end==a.end&&this.start>a.start?(this.speak(this.value.substr(a.start,this.start-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):this.end==a.end&&this.start<a.start?(this.speak(this.value.substr(this.start,a.start-this.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):
-(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected")))};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChanged=function(a){var b={};a.value.length<this.value.length&&(b=cvox.AbstractTts.PERSONALITY_DELETED);if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser,b);else{var c=this.value,d=c.length,e=a.value.length,f="",g=a.value,h=a.end;a.start<h&&h==e&&(f=g.substr(a.start),g=g.substr(0,a.start),h=a.start);var k=this.start,l=d-this.end;if(e>=k+l+(h-a.start)&&g.substr(0,k)==
-c.substr(0,k)&&g.substr(e-l)==c.substr(this.end))this instanceof cvox.ChromeVoxEditableContentEditable&&!(e<d||this.isWordBreakChar(a.value[e-1]||""))||this.describeTextChangedHelper(a,k,l,f,b);else if(k=a.start,l=e-h,this.start==this.end&&a.start==h&&g.substr(0,k)==c.substr(0,k)&&g.substr(e-l)==c.substr(d-l))this.describeTextChangedHelper(a,k,l,f,b);else{g+=f;if(g.length==c.length+1||g.length+1==c.length){if(g.length>c.length){if(0==g.indexOf(c)){this.speak(g[g.length-1],a.triggeredByUser,b);return}if(1==
-g.indexOf(c)){this.speak(g[0],a.triggeredByUser,b);return}}if(g.length<c.length){if(0==c.indexOf(g)){this.speak(c[c.length-1],a.triggeredByUser,b);return}if(1==c.indexOf(g)){this.speak(c[0],a.triggeredByUser,b);return}}}if(this.multiline)a.value.length<this.value.length&&this.speak(cvox.ChromeVox.msgs.getMsg("text_deleted"),a.triggeredByUser,b);else if(e<=this.maxShortPhraseLen)this.describeTextChangedHelper(a,0,0,"",b);else{for(k=0;k<d&&k<e&&c[k]==g[k];)k++;for(;0<k&&!this.isWordBreakChar(c[k-1]);)k--;
-for(l=0;l<d-k&&l<e-k&&c[d-l-1]==g[e-l-1];)l++;for(;0<l&&!this.isWordBreakChar(c[d-l]);)l--;this.describeTextChangedHelper(a,k,l,"",b)}}}};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChangedHelper=function(a,b,c,d,e){var f=this.value.length,g=a.value.length,f=f-b-c,h=this.value.substr(b,f),k=g-b-c;c=a.value.substr(b,k);var l="",g=a.triggeredByUser;if(1<k)l=c;else if(1==k)if((cvox.ChromeVox.typingEcho==cvox.TypingEcho.WORD||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)&&this.isWordBreakChar(c)&&0<b&&!this.isWordBreakChar(a.value.substr(b-1,1))){for(f=b;0<f&&!this.isWordBreakChar(a.value[f-1]);)f--;f<b?l=a.value.substr(f,
-b+1-f):(l=c,g=!1)}else{if(cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)l=cvox.ChromeVoxEditableTextBase.eventTypingEcho?"":c}else 1<f&&!d?l=h+", deleted":1==f&&(l=h);d&&l?l+=", "+d:d&&(l=d);l&&this.speak(l,g,e)};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextCharacter=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousCharacter=function(){return!1};
-cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextParagraph=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousParagraph=function(){return!1};
-cvox.ChromeVoxEditableElement=function(a,b,c,d,e,f){cvox.ChromeVoxEditableTextBase.call(this,b,c,d,e,f);this.node=a;this.justSpokeDescription_=!1};goog.inherits(cvox.ChromeVoxEditableElement,cvox.ChromeVoxEditableTextBase);cvox.ChromeVoxEditableElement.prototype.changed=function(a){this.justSpokeDescription_&&this.value==a.value&&(this.value=a.value,this.start=a.start,this.end=a.end,this.justSpokeDescription_=!1);cvox.ChromeVoxEditableElement.superClass_.changed.call(this,a)};
-cvox.ChromeVoxEditableElement.prototype.getValue=function(){this.justSpokeDescription_=!0;return cvox.ChromeVoxEditableElement.superClass_.getValue.call(this)};cvox.ChromeVoxEditableElement.prototype.moveCursorToNextCharacter=function(){var a=this.node;a.selectionEnd++;a.selectionStart=a.selectionEnd;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousCharacter=function(){var a=this.node;a.selectionStart--;a.selectionEnd=a.selectionStart;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextWord=function(){var a=this.node,b=a.value.length,c=/\W+/gm,d=a.value.substring(a.selectionEnd),e=c.exec(d);null!==e&&0==e.index&&(e=c.exec(d));b=null===e?b:e.index+a.selectionEnd;a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousWord=function(){for(var a=this.node,b=/\W+/gm,c=a.value.substring(0,a.selectionStart),d=0;null!==b.exec(c);)b.lastIndex<a.selectionStart&&(d=b.lastIndex);a.selectionStart=a.selectionEnd=d;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextParagraph=function(){var a=this.node,b=a.value.length,c=a.selectionEnd>=b?b:a.value.indexOf("\n",a.selectionEnd);0>c&&(c=b);a.selectionStart=a.selectionEnd=c+1;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousParagraph=function(){var a=this.node,b=0>=a.selectionStart?0:a.value.lastIndexOf("\n",a.selectionStart-2)+1;0>b&&(b=0);a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableHTMLInput=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,"password"===a.type,b)};goog.inherits(cvox.ChromeVoxEditableHTMLInput,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableHTMLInput.prototype.update=function(a){var b=this.node.value;a=new cvox.TextChangeEvent(b,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,!1,b);this.multiline=!0;this.shadowIsCurrent_=!1};goog.inherits(cvox.ChromeVoxEditableTextArea,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableTextArea.prototype.update=function(a){this.node.value!=this.value&&(this.shadowIsCurrent_=!1);a=new cvox.TextChangeEvent(this.node.value,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineIndex=function(a){return this.getShadow().getLineIndex(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineStart=function(a){return this.getShadow().getLineStart(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineEnd=function(a){return this.getShadow().getLineEnd(a)};
-cvox.ChromeVoxEditableTextArea.prototype.getShadow=function(){var a=cvox.ChromeVoxEditableTextArea.shadow_;a||(a=cvox.ChromeVoxEditableTextArea.shadow_=new cvox.EditableTextAreaShadow);this.shadowIsCurrent_||(a.update(this.node),this.shadowIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToNextLine=function(){var a=this.node,b=a.value.length;if(a.selectionEnd>=b)return!1;var c=this.getShadow(),d=c.getLineIndex(a.selectionEnd),e=c.getLineStart(d),e=a.selectionEnd-e,f=0==b?0:c.getLineIndex(b-1),b=d>=f?b:Math.min(c.getLineStart(d+1)+e,c.getLineEnd(d+1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToPreviousLine=function(){var a=this.node;if(0>=a.selectionStart)return!1;var b=this.getShadow(),c=b.getLineIndex(a.selectionStart),d=b.getLineStart(c),d=a.selectionStart-d,b=0>=c?0:Math.min(b.getLineStart(c-1)+d,b.getLineEnd(c-1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,"",0,0,!1,b);this.extractorIsCurrent_=!1;var c=this.getExtractor();this.value=c.getText();this.start=c.getStartIndex();this.end=c.getEndIndex();this.multiline=!0};goog.inherits(cvox.ChromeVoxEditableContentEditable,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableContentEditable.prototype.update=function(a){this.extractorIsCurrent_=!1;a=new cvox.TextChangeEvent(this.getExtractor().getText(),this.getExtractor().getStartIndex(),this.getExtractor().getEndIndex(),a);this.changed(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineIndex=function(a){return this.getExtractor().getLineIndex(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineStart=function(a){return this.getExtractor().getLineStart(a)};
-cvox.ChromeVoxEditableContentEditable.prototype.getLineEnd=function(a){return this.getExtractor().getLineEnd(a)};cvox.ChromeVoxEditableContentEditable.prototype.getExtractor=function(){var a=cvox.ChromeVoxEditableContentEditable.extractor_;a||(a=cvox.ChromeVoxEditableContentEditable.extractor_=new cvox.ContentEditableExtractor);this.extractorIsCurrent_||(a.update(this.node),this.extractorIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableContentEditable.prototype.describeSelectionChanged=function(a){a.triggeredByUser&&(this.start==this.end&&a.start==a.end&&1!=Math.abs(this.start-a.start)&&this.isLastChar(a)?this.speak(cvox.ChromeVox.msgs.getMsg("text_box_blank"),!0):cvox.ChromeVoxEditableContentEditable.superClass_.describeSelectionChanged.call(this,a))};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextCharacter=function(){window.getSelection().modify("move","forward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousCharacter=function(){window.getSelection().modify("move","backward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextParagraph=function(){window.getSelection().modify("move","forward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousParagraph=function(){window.getSelection().modify("move","backward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEventSuspender=function(){};cvox.ChromeVoxEventSuspender.suspendLevel_=0;cvox.ChromeVoxEventSuspender.enterSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_+=1};cvox.ChromeVoxEventSuspender.exitSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_-=1};cvox.ChromeVoxEventSuspender.areEventsSuspended=function(){return 0<cvox.ChromeVoxEventSuspender.suspendLevel_};
-cvox.ChromeVoxEventSuspender.withSuspendedEvents=function(a){return function(){cvox.ChromeVoxEventSuspender.enterSuspendEvents();var b=a.apply(this,arguments);cvox.ChromeVoxEventSuspender.exitSuspendEvents();return b}};cvox.ChromeVoxEventSuspender.makeSuspendableHandler=function(a,b){return function(){return cvox.ChromeVoxEventSuspender.areEventsSuspended()?b:a()}};cvox.Focuser={};
-cvox.Focuser.setFocus=function(a,b){var c=window.getSelection(),d;0<c.rangeCount&&(d=c.getRangeAt(0));document.activeElement&&!cvox.DomUtil.isDescendantOfNode(a,document.activeElement)&&document.activeElement.blur();a&&a.constructor==HTMLVideoElement&&(cvox.DomUtil.isFocusable(a)||a.setAttribute("tabIndex",0));if(b&&!cvox.DomUtil.isFocusable(a)){var e=cvox.DomUtil.findFocusableDescendant(a);e&&(a=e)}else for(;a&&!cvox.DomUtil.isFocusable(a);)a=a.parentNode;cvox.DomUtil.isFocusable(a)?"IFRAME"!=a.tagName&&
-(cvox.ChromeVoxEventSuspender.areEventsSuspended()?(cvox.Focuser.shouldEnterSuspendEvents_(a)&&cvox.ChromeVoxEventSuspender.enterSuspendEvents(),window.setTimeout(function(){a.focus();cvox.ChromeVoxEventSuspender.exitSuspendEvents()},0)):window.setTimeout(function(){a.focus()},0)):document.activeElement&&"BODY"!=document.activeElement.tagName&&document.activeElement.blur();cvox.DomUtil.isInputTypeText(a)?a.select():d&&(c.removeAllRanges(),c.addRange(d))};
-cvox.Focuser.shouldEnterSuspendEvents_=function(a){if(a.constructor&&a.constructor==HTMLVideoElement)return!1;if(a.hasAttribute)switch(a.getAttribute("type")){case "time":case "date":case "week":case "month":return!1}return!0};cvox.ChromeVoxHTMLMediaWidget=function(a){var b=this;this.mediaElem_=a;this.keyListener_=function(a){b.eventHandler_(a)};this.blurListener_=function(){b.shutdown()};this.mediaElem_.addEventListener("keydown",this.keyListener_,!1);this.mediaElem_.addEventListener("keyup",this.keyListener_,!1);this.mediaElem_.addEventListener("blur",this.blurListener_,!1)};
-cvox.ChromeVoxHTMLMediaWidget.prototype.shutdown=function(){this.mediaElem_.removeEventListener("blur",this.blurListener_,!1);this.mediaElem_.removeEventListener("keydown",this.keyListener_,!1);this.mediaElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLMediaWidget.prototype.jumpToTime_=function(a){0>a&&(a=0);a>this.mediaElem_.duration&&(a=this.mediaElem_.duration);this.mediaElem_.currentTime=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.setVolume_=function(a){0>a&&(a=0);1<a&&(a=1);this.mediaElem_.volume=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.eventHandler_=function(a){"keydown"==a.type&&(13==a.keyCode||32==a.keyCode?this.mediaElem_.paused?this.mediaElem_.play():this.mediaElem_.pause():39==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime+this.mediaElem_.duration/10):37==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime-this.mediaElem_.duration/10):38==a.keyCode?this.setVolume_(this.mediaElem_.volume+0.1):40==a.keyCode&&this.setVolume_(this.mediaElem_.volume-0.1))};cvox.ChromeVoxHTMLTimeWidget=function(a,b){var c=this;this.timeElem_=a;this.timeTts_=b;this.pMinutes_=this.pHours_=-1;this.pMilliseconds_=this.pSeconds_=0;this.pAmpm_="";this.pos_=0;this.maxPos_=2;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};if(this.timeElem_.hasAttribute("step")){var d=this.timeElem_.getAttribute("step");0<d&&(this.maxPos_=1<=d?3:4)}0==this.timeElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");
-e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e);e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e)}this.timeElem_.addEventListener("keydown",this.keyListener_,!1);this.timeElem_.addEventListener("keyup",this.keyListener_,!1);this.timeElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLTimeWidget.prototype.shutdown=function(){this.timeElem_.removeEventListener("blur",this.blurListener_,!1);this.timeElem_.removeEventListener("keydown",this.keyListener_,!1);this.timeElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLTimeWidget.prototype.forceInitTime_=function(){this.timeElem_.setAttribute("value","12:00")};
-cvox.ChromeVoxHTMLTimeWidget.prototype.handlePosChange_=function(){0>this.pos_&&(this.pos_=0);this.pos_>this.maxPos_&&(this.pos_=this.maxPos_);if(this.pos_==this.maxPos_)this.pAmpm_="";else switch(this.pos_){case 0:this.pHours_=-1;break;case 1:this.pMinutes_=-1;break;case 2:this.pSeconds_=-1;break;case 3:this.pMilliseconds_=-1}};
-cvox.ChromeVoxHTMLTimeWidget.prototype.update_=function(a){var b=this.timeElem_.value.split(":");if(1>b.length)this.forceInitTime_();else{var c=b[0],d=-1,e=0,f=0,g=cvox.ChromeVox.msgs.getMsg("timewidget_am");1<b.length&&(d=b[1]);2<b.length&&(b=b[2].split("."),e=b[0],1<b.length&&(f=b[1]));12<c&&(c-=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));12==c&&(g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));0==c&&(c=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_am"));b="";a&&(b=cvox.DomUtil.getName(this.timeElem_,
-!0,!0)+"\n");c!=this.pHours_&&(b=b+c+" "+cvox.ChromeVox.msgs.getMsg("timewidget_hours")+"\n",this.pHours_=c);d!=this.pMinutes_&&(b=b+d+" "+cvox.ChromeVox.msgs.getMsg("timewidget_minutes")+"\n",this.pMinutes_=d);e!=this.pSeconds_&&(b=b+e+" "+cvox.ChromeVox.msgs.getMsg("timewidget_seconds")+"\n",this.pSeconds_=e);f!=this.pMilliseconds_&&(b=b+f+" "+cvox.ChromeVox.msgs.getMsg("timewidget_milliseconds")+"\n",this.pMilliseconds_=f);g!=this.pAmpm_&&(b+=g,this.pAmpm_=g);0<b.length&&this.timeTts_.speak(b,
-0,null)}};cvox.ChromeVoxHTMLTimeWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.ActiveIndicator=function(){this.lastMoveTime_=0;this.zoom_=1;this.updateIndicatorTimeoutId_=this.lastClientRects_=this.lastSyncTarget_=this.container_=null;this.blurred_=!1;window.addEventListener("focus",goog.bind(function(){this.blurred_=!1;this.container_&&this.container_.classList.remove("cvox_indicator_window_not_focused")},this),!1);window.addEventListener("blur",goog.bind(function(){this.blurred_=!0;this.container_&&this.container_.classList.add("cvox_indicator_window_not_focused")},this),
-!1)};cvox.ActiveIndicator.STYLE=".cvox_indicator_container { position: absolute !important; left: 0 !important; top: 0 !important; z-index: 2147483647 !important; pointer-events: none !important;}.cvox_indicator_window_not_focused { visibility: hidden !important;}.cvox_indicator_pulsing { -webkit-animation: cvox_indicator_pulsing_animation 0s 2 alternate !important; -webkit-animation-timing-function: ease-in-out !important;}.cvox_indicator_region { opacity: 0 !important; -webkit-transition: opacity 1s !important;}.cvox_indicator_visible { opacity: 1 !important;}.cvox_indicator_container .cvox_indicator_region * { position:absolute !important; box-shadow: 0 0 4px 4px #f7983a !important; border-radius: 6px !important; -webkit-transition: none !important;}.cvox_indicator_animate_normal .cvox_indicator_region * { -webkit-transition: all 0.3s !important;}.cvox_indicator_animate_quick .cvox_indicator_region * { -webkit-transition: all 0.1s !important;}.cvox_indicator_top { border-radius: inherit inherit 0 0 !important;}.cvox_indicator_middle_nw { border-radius: inherit 0 0 0 !important;}.cvox_indicator_middle_ne { border-radius: 0 inherit 0 0 !important;}.cvox_indicator_middle_se { border-radius: 0 0 inherit 0 !important;}.cvox_indicator_middle_sw { border-radius: 0 0 0 inherit !important;}.cvox_indicator_bottom { border-radius: 0 0 inherit inherit !important;}@-webkit-keyframes cvox_indicator_pulsing_animation { 0% {opacity: 1.0} 50% {opacity: 0.5} 100% {opacity: 1.0}}";
-cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS=100;cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS=300;cvox.ActiveIndicator.MARGIN=8;cvox.ActiveIndicator.prototype.removeFromDom=function(){this.container_&&this.container_.parentElement&&this.container_.parentElement.removeChild(this.container_)};cvox.ActiveIndicator.prototype.syncToNode=function(a){a&&(a==document.body?this.removeFromDom():this.syncToNodes([a]))};
-cvox.ActiveIndicator.prototype.syncToNodes=function(a){var b=this.clientRectsFromNodes_(a);this.moveIndicator_(b,cvox.ActiveIndicator.MARGIN);this.lastSyncTarget_=a;this.lastClientRects_=b;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToRange=function(a){var b=cvox.ActiveIndicator.MARGIN;a.startContainer==a.endContainer&&a.startOffset+1==a.endOffset&&(b=1);var c=a.getClientRects();this.moveIndicator_(c,b);this.lastSyncTarget_=a;this.lastClientRects_=c;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToCursorSelection=function(a){if(a.start.node==a.end.node&&a.start.index==a.end.index)this.syncToNode(a.start.node);else{var b=document.createRange();b.setStart(a.start.node,a.start.index);b.setEnd(a.end.node,a.end.index);this.syncToRange(b)}};cvox.ActiveIndicator.prototype.updateIndicatorIfChanged=function(){this.updateIndicatorTimeoutId_||(this.updateIndicatorTimeoutId_=window.setTimeout(goog.bind(function(){this.handleUpdateIndicatorIfChanged_()},this),100))};
-cvox.ActiveIndicator.prototype.handleUpdateIndicatorIfChanged_=function(){this.updateIndicatorTimeoutId_=null;if(this.lastSyncTarget_){var a;if((a=this.lastSyncTarget_ instanceof Array?this.clientRectsFromNodes_(this.lastSyncTarget_):this.lastSyncTarget_.getClientRects())&&0!=a.length){var b=!1;if(a.length!=this.lastClientRects_.length)b=!0;else for(var c=0;c<this.lastClientRects_.length;++c){var d=this.lastClientRects_[c],e=a[c];if(d.top!=e.top||d.right!=e.right||d.bottom!=e.bottom||d.left!=d.left){b=
-!0;break}}b&&(this.moveIndicator_(a,cvox.ActiveIndicator.MARGIN),this.lastClientRects_=a)}else this.syncToNode(document.body)}};cvox.ActiveIndicator.prototype.clientRectsFromNodes_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(d.constructor==Text){var e=document.createRange();e.selectNode(d);e=e.getClientRects()}else{for(;!d.getClientRects;)d=d.parentElement;e=d.getClientRects()}for(d=0;d<e.length;++d)b.push(e[d])}return b};
-cvox.ActiveIndicator.prototype.moveIndicator_=function(a,b){if(document.body.isContentEditable)this.removeFromDom();else{var c=a.length;if(0!=c){var d,e;"static"!=window.getComputedStyle(document.body,null).position?(d=-document.body.getBoundingClientRect().left,e=-document.body.getBoundingClientRect().top):"static"!=window.getComputedStyle(document.documentElement,null).position?(d=-document.documentElement.getBoundingClientRect().left,e=-document.documentElement.getBoundingClientRect().top):(d=
-window.pageXOffset,e=window.pageYOffset);for(var f=[],g=0;g<c;g++)f.push(this.inset_(a[g],d,e,-d,-e));if(!this.container_||!this.container_.parentElement){g=document.getElementsByClassName("cvox_indicator_container");for(c=0;d=g[c];c++)d.parentNode&&d.parentNode.removeChild(d);this.container_=this.createDiv_(document.body,"cvox_indicator_container",document.body.firstChild)}g=document.createElement("style");g.id="cvox_indicator_style";g.innerHTML=cvox.ActiveIndicator.STYLE;cvox.DomUtil.addNodeToHead(g,
-g.id);g=(new Date).getTime();c=g-this.lastMoveTime_;this.container_.className="cvox_indicator_container";document.hasFocus()&&!this.blurred_||this.container_.classList.add("cvox_indicator_window_not_focused");c>cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS?this.container_.classList.add("cvox_indicator_animate_normal"):c>cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS&&this.container_.classList.add("cvox_indicator_animate_quick");this.lastMoveTime_=g;this.computeZoomLevel_();for(window.setTimeout(goog.bind(function(){this.container_.classList.add("cvox_indicator_pulsing")},
-this),0);1<this.container_.childElementCount;)this.container_.removeChild(this.container_.lastElementChild);d=[[f[0]]];e=[f[0]];for(g=1;g<f.length;g++){for(var h=!1,c=0;c<d.length&&!h;c++)this.intersects_(f[g],e[c])&&(d[c].push(f[g]),e[c]=this.union_(e[c],f[g]),h=!0);h||(d.push([f[g]]),e.push(f[g]))}do for(f=!1,g=0;g<d.length-1&&!f;g++)for(c=g+1;c<d.length&&!f;c++)this.intersects_(e[g],e[c])&&(d[g]=d[g].concat(d[c]),e[g]=this.union_(e[g],e[c]),d.splice(c,1),e.splice(c,1),f=!0);while(f);for(g=0;g<
-d.length;g++)d[g].sort(function(a,b){return a.top!=b.top?a.top-b.top:a.left-b.left});for(g=0;g<d.length;g++)f=null,0==g&&1==this.container_.childElementCount&&6==this.container_.children[0].childElementCount&&(f=this.container_.children[0]),this.updateIndicatorRegion_(d[g],f,b)}}};
-cvox.ActiveIndicator.prototype.updateIndicatorRegion_=function(a,b,c){if(b)var d=b.children[0],e=b.children[1],f=b.children[2],g=b.children[3],h=b.children[4],k=b.children[5];else b=this.createDiv_(this.container_,"cvox_indicator_region"),window.setTimeout(function(){b.classList.add("cvox_indicator_visible")},0),d=this.createDiv_(b,"cvox_indicator_top"),e=this.createDiv_(b,"cvox_indicator_middle_nw"),f=this.createDiv_(b,"cvox_indicator_middle_ne"),g=this.createDiv_(b,"cvox_indicator_middle_sw"),h=
-this.createDiv_(b,"cvox_indicator_middle_se"),k=this.createDiv_(b,"cvox_indicator_bottom");for(var l=a[0],m=Math.floor((l.top+l.bottom)/2),p=1,q=a.length;p<q&&a[p].top<m;)l=this.union_(l,a[p]),m=Math.floor((l.top+l.bottom)/2),p++;if(p==q)l=this.inset_(l,-c,-c,-c,-c),a=Math.floor((3*l.top+1*l.bottom)/4),c=Math.floor((2*l.top+2*l.bottom)/4),m=Math.floor((1*l.top+3*l.bottom)/4),this.setElementCoords_(d,l.left,l.top,l.right,a,!0,!0,!0,!1),this.setElementCoords_(e,l.left,a,l.left,c,!0,!0,!1,!1),this.setElementCoords_(g,
-l.left,c,l.left,m,!0,!1,!1,!0),this.setElementCoords_(f,l.right,a,l.right,c,!1,!0,!0,!1),this.setElementCoords_(h,l.right,c,l.right,m,!1,!1,!0,!0),this.setElementCoords_(k,l.left,m,l.right,l.bottom,!0,!1,!0,!0);else{for(var m=a[q-1],n=Math.floor((m.top+m.bottom)/2),q=q-2;0<=q&&a[q].bottom>n;)m=this.union_(m,a[q]),n=Math.floor((m.top+m.bottom)/2),q--;l=this.inset_(l,-c,-c,-c,c);m=this.inset_(m,-c,c,-c,-c);if(p>q)n=this.union_(l,m),n.top=l.bottom,n.bottom=m.top,n.height=Math.floor((n.top+n.bottom)/
-2);else{n=a[p];for(p+=1;p<=q;)n=this.union_(n,a[p]),p++;n=this.inset_(n,-c,-c,-c,-c);n.left=Math.min(n.left,l.left,m.left);n.right=Math.max(n.right,l.right,m.right);n.width=n.right-n.left}l.right>n.right-40&&(l.right=n.right,l.width=l.right-l.left);l.left<n.left+40&&(l.left=n.left,l.width=l.right-l.left);m.right>n.right-40&&(m.right=n.right,m.width=m.right-m.left);m.left<n.left+40&&(m.left=n.left,m.width=m.right-m.left);a=Math.floor((n.top+n.bottom)/2);this.setElementRect_(d,l,!0,!0,!0,!1);this.setElementRect_(k,
-m,!0,!1,!0,!0);this.setElementCoords_(e,n.left,l.bottom,l.left,a,!0,!0,!1,!1);this.setElementCoords_(f,l.right,l.bottom,n.right,a,!1,!0,!0,!1);this.setElementCoords_(g,n.left,a,m.left,m.top,!0,!1,!1,!0);this.setElementCoords_(h,m.right,a,n.right,m.top,!1,!1,!0,!0)}};cvox.ActiveIndicator.prototype.intersects_=function(a,b){var c=2*cvox.ActiveIndicator.MARGIN;return b.left<=a.right+c&&b.right>=a.left-c&&b.top<=a.bottom+c&&b.bottom>=a.top-c};
-cvox.ActiveIndicator.prototype.union_=function(a,b){var c={left:Math.min(a.left,b.left),top:Math.min(a.top,b.top),right:Math.max(a.right,b.right),bottom:Math.max(a.bottom,b.bottom)};c.width=c.right-c.left;c.height=c.bottom-c.top;return c};cvox.ActiveIndicator.prototype.inset_=function(a,b,c,d,e){a={left:a.left+b,top:a.top+c,right:a.right-d,bottom:a.bottom-e};a.width=a.right-a.left;a.height=a.bottom-a.top;return a};
-cvox.ActiveIndicator.prototype.createDiv_=function(a,b,c){var d=document.createElement("div");d.className=b;c?a.insertBefore(d,c):a.appendChild(d);return d};cvox.ActiveIndicator.prototype.fixZoom_=function(a){return(Math.round(a*this.zoom_)+0.1)/this.zoom_};cvox.ActiveIndicator.prototype.fixZoomSum_=function(a,b){var c=Math.round(a*this.zoom_),d=Math.round((a+b)*this.zoom_),c=d-c;return(c+0.1)/this.zoom_};
-cvox.ActiveIndicator.prototype.setElementCoords_=function(a,b,c,d,e,f,g,h,k){var l=d-b,m=e-c;d-=b;e-=c;var p=f?-20:0,q=g?-20:0,n=h?20:0,s=k?20:0;0==d&&(h?(b-=5,d+=5):f&&(d+=10),s=q=10,c-=10,e+=20);k||(e+=5);g||(c-=5,e+=5,q+=5,s+=5);n=0==n&&0==l?1:this.fixZoomSum_(b,n+l);s=this.fixZoomSum_(c,s+m);a.style.left=this.fixZoom_(b)+"px";a.style.top=this.fixZoom_(c)+"px";a.style.width=this.fixZoomSum_(b,d)+"px";a.style.height=this.fixZoomSum_(c,e)+"px";a.style.clip="rect("+[q,n,s,p].join("px ")+"px)"};
-cvox.ActiveIndicator.prototype.setElementRect_=function(a,b,c,d,e,f){this.setElementCoords_(a,b.left,b.top,b.right,b.bottom,c,d,e,f)};
-cvox.ActiveIndicator.prototype.computeZoomLevel_=function(){if(window.innerHeight!==this.innerHeight_||window.innerWidth!==this.innerWidth_){this.innerHeight_=window.innerHeight;this.innerWidth_=window.innerWidth;var a=document.createElement("div");a.innerHTML="X";a.setAttribute("style","font: 5000px/1em sans-serif !important; -webkit-text-size-adjust:none !important; visibility:hidden !important; left: -10000px !important; top: -10000px !important; position:absolute !important;");document.body.appendChild(a);
-var b=5E3/a.clientHeight,b=Math.round(500*b)/500;0.1<b&&10>b&&(this.zoom_=b);a.parentNode.removeChild(a)}};cvox.NodeBreadcrumb=function(){this.cvTagCounter_=0};goog.addSingletonGetter(cvox.NodeBreadcrumb);cvox.NodeBreadcrumb.TOUCHED_TAG="chromevoxtag";cvox.NodeBreadcrumb.NEEDED_TAG_="chromevoxneeded";
-cvox.NodeBreadcrumb.prototype.tagCurrentNode=function(){for(var a,b=cvox.ChromeVox.navigationManager.getCurrentNode();b&&!b.hasAttribute;)b=b.parentNode;b?b.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a=b.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):(a=this.cvTagCounter_,b.setAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG,a),this.cvTagCounter_++):a=-1;return a};
-cvox.NodeBreadcrumb.prototype.smartStart_=function(a){for(var b=0;b<a.children.length;++b){var c=a.children[b];this.smartStart_(c);c.getAttribute&&!goog.isNull(c.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))&&this.setNeeded_(c)}};cvox.NodeBreadcrumb.prototype.setNeeded_=function(a){a&&a.getAttribute&&goog.isNull(a.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&(a.setAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_,!0),"body"!==a.nodeName&&this.setNeeded_(a.parentElement))};
-cvox.NodeBreadcrumb.prototype.smartClone_=function(a){var b={};b[cvox.NodeBreadcrumb.TOUCHED_TAG]=!0;b[cvox.NodeBreadcrumb.NEEDED_TAG_]=!0;if(a.getAttribute&&a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))return cvox.DomUtil.deepClone(a,b);for(var b=cvox.DomUtil.shallowChildlessClone(a,b),c=0;c<a.childNodes.length;++c){var d=a.childNodes[c];d.getAttribute&&!goog.isNull(d.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&b.appendChild(this.smartClone_(d))}return b};
-cvox.NodeBreadcrumb.prototype.dumpWalkedDom=function(){this.smartStart_(document.body);return this.smartClone_(document.body)};cvox.NodeBreadcrumb.getCurrentNodeTag=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a&&!a.hasAttribute;)a=a.parentNode;return a&&a.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):-1};cvox.HistoryEvent=function(a){this.spoken_=[];a?this.userCommand_=a.cmd:this.startTime_=(new Date).getTime()};cvox.HistoryEvent.prototype.withUserCommand=function(a){if(this.userCommand_)return window.console.error("Two user commands on "+a,this),this;this.userCommand_=a;return this};cvox.HistoryEvent.prototype.speak=function(a){this.spoken_.push(a);return this};
-cvox.HistoryEvent.prototype.done=function(){this.endTime_=(new Date).getTime();cvox.NodeBreadcrumb.getInstance().tagCurrentNode();window.console.log("User command done.",this);return this};cvox.HistoryEvent.prototype.outputObject=function(){return{start:this.startTime_,end:this.endTime_,cmd:this.userCommand_,spoken:this.spoken_}};
-cvox.HistoryEvent.prototype.outputHTML=function(){var a=document.createElement("div");a.className="cvoxHistoryEvent";var b=this.endTime_-this.startTime_;a.innerHTML=this.userCommand_+" ("+b+"ms)";for(b=0;b<this.spoken_.length;b++){var c=document.createElement("div");c.className="cvoxHistoryEventSpoken";c.innerHTML=this.spoken_[b].substr(0,20);20<this.spoken_[b].length&&(c.innerHTML+="...");a.appendChild(c)}return a};
-cvox.HistoryEvent.prototype.outputJs=function(){var a="this.waitForCalm(this.userCommand, '"+this.userCommand_+"')";return a=0<this.spoken_.length?a+("\n .waitForCalm(this.assertSpoken, '"+cvox.DomUtil.collapseWhitespace(this.spoken_.join(" "))+"');\n"):a+";\n"};cvox.History=function(){this.recording_=!1;this.events_=[];this.styleDiv_=this.listDiv_=this.mainDiv_=this.currentEvent_=null;this.nodeBreadcrumb_=cvox.NodeBreadcrumb.getInstance()};goog.addSingletonGetter(cvox.History);
-cvox.History.prototype.addListDiv_=function(){this.mainDiv_=document.createElement("div");this.mainDiv_.style.position="fixed";this.mainDiv_.style.bottom="0";this.mainDiv_.style.right="0";this.mainDiv_.style.zIndex="999";this.listDiv_=document.createElement("div");this.listDiv_.id="cvoxEventList";this.mainDiv_.appendChild(this.listDiv_);var a=document.createElement("div"),b=document.createElement("button");b.onclick=cvox.History.sendToFeedback;b.innerHTML="Create bug";a.appendChild(b);this.mainDiv_.appendChild(a);
-a=document.createElement("div");b=document.createElement("button");b.onclick=cvox.History.dumpJs;b.innerHTML="Dump test case";a.appendChild(b);this.mainDiv_.appendChild(a);document.body.appendChild(this.mainDiv_);this.styleDiv_=document.createElement("style");this.styleDiv_.innerHTML=".cvoxHistoryEventSpoken { color: gray; font-size: 75% }";document.body.appendChild(this.styleDiv_)};
-cvox.History.prototype.removeListDiv_=function(){document.body.removeChild(this.mainDiv_);document.body.removeChild(this.styleDiv_);this.styleDiv_=this.listDiv_=this.mainDiv_=null};
-cvox.History.prototype.addBigTextBox_=function(){function a(a,b){var c=document.createElement("button");c.onclick=b;c.innerHTML=a;d.appendChild(c)}var b=document.createElement("div");b.style.position="fixed";b.style.top="0";b.style.left="0";b.style.zIndex="999";var c=document.createElement("textarea");c.style.width="500px";c.style.height="500px";c.innerHTML=this.dumpJsOutput_();b.appendChild(c);var d=document.createElement("div");b.appendChild(d);a("Close dialog",function(){document.body.removeChild(b)});
-a("Remove fluff",goog.bind(function(){c.innerHTML=this.dumpJsOutput_(["stopSpeech","toggleKeyPrefix"])},this));document.body.appendChild(b)};cvox.History.prototype.startRecording=function(){this.recording_=!0;this.addListDiv_()};cvox.History.prototype.stopRecording=function(){this.recording_=!1;this.removeListDiv_();this.events_=[];this.currentEvent_=null};
-cvox.History.prototype.enterUserCommand=function(a){this.recording_&&(this.currentEvent_&&window.console.error("User command "+a+" overlaps current event",this.currentEvent_),this.currentEvent_=(new cvox.HistoryEvent).withUserCommand(a),this.events_.push(this.currentEvent_))};cvox.History.prototype.exitUserCommand=function(){this.recording_&&this.currentEvent_&&(this.currentEvent_.done(),this.listDiv_.appendChild(this.currentEvent_.outputHTML()),this.currentEvent_=null)};
-cvox.History.prototype.speak=function(a){if(!this.recording_)return this;if(!this.currentEvent_)return window.console.error("Speak called outside of a user command."),this;this.currentEvent_.speak(a);return this};cvox.History.prototype.isSpeaking=function(){return!1};cvox.History.prototype.stop=function(){};cvox.History.prototype.increaseOrDecreaseProperty=function(){};cvox.History.prototype.getDefaultProperty=function(){};
-cvox.History.dumpJs=function(){var a=cvox.History.getInstance();a.addBigTextBox_();window.console.log(a.dumpJsOutput_())};cvox.History.prototype.dumpJsOutput_=function(a){var b={};a&&a.forEach(function(a){b[a]=1});return["/*DOC: += ",this.nodeBreadcrumb_.dumpWalkedDom().innerHTML,"*/\n"].concat(this.events_.filter(function(a){return!(a.userCommand_ in b)}).map(function(a){return a.outputJs()})).join("")};
-cvox.History.sendToFeedback=function(){var a=cvox.History.getInstance(),a=a.events_.map(function(a){return a.outputObject()}),b=document.createElement("script");b.type="text/javascript";b.src="https://www.gstatic.com/feedback/api.js";var c=document.createElement("script");c.type="text/javascript";c.innerHTML="userfeedback.api.startFeedback({ productId: '76092' }, { cvoxHistory: "+cvox.ChromeVoxJSON.stringify(cvox.ChromeVoxJSON.stringify(a))+" });";b.onload=function(){document.body.appendChild(c)};
-document.body.appendChild(b)};cvox.KeySequence=function(a,b,c,d){this.doubleTap=!!d;this.cvoxModifier=void 0==b?this.isCVoxModifierActive(a):b;this.stickyMode=!!a.stickyMode;this.prefixKey=!!a.keyPrefix;this.skipStripping=!!c;if(this.stickyMode&&this.prefixKey)throw"Prefix key and sticky mode cannot both be enabled: "+a;a=this.resolveChromeOSSpecialKeys_(a);this.keys={ctrlKey:[],searchKeyHeld:[],altKey:[],altGraphKey:[],shiftKey:[],metaKey:[],keyCode:[]};this.extractKey_(a)};
-cvox.KeySequence.KEY_PRESS_CODE={39:222,44:188,45:189,46:190,47:191,59:186,91:219,92:220,93:221};cvox.KeySequence.doubleTapCache=[];cvox.KeySequence.prototype.addKeyEvent=function(a){if(1<this.keys.keyCode.length)return!1;this.extractKey_(a);return!0};cvox.KeySequence.prototype.equals=function(a){if(!this.checkKeyEquality_(a)||this.doubleTap!=a.doubleTap)return!1;if(this.cvoxModifier===a.cvoxModifier)return!0;a=this.cvoxModifier?a:this;return a.stickyMode||a.prefixKey};
-cvox.KeySequence.prototype.extractKey_=function(a){for(var b in this.keys)if("keyCode"==b){var c;"keypress"==a.type&&97<=a[b]&&122>=a[b]?c=a[b]-32:"keypress"==a.type&&(c=cvox.KeySequence.KEY_PRESS_CODE[a[b]]);this.keys[b].push(c||a[b])}else this.isKeyModifierActive(a,b)?this.keys[b].push(!0):this.keys[b].push(!1);this.cvoxModifier&&this.rationalizeKeys_()};
-cvox.KeySequence.prototype.rationalizeKeys_=function(){if(!this.skipStripping){var a=cvox.ChromeVox.modKeyStr.split(/\+/g),b=this.keys.keyCode.length-1;-1!=a.indexOf("Ctrl")&&(this.keys.ctrlKey[b]=!1);-1!=a.indexOf("Alt")&&(this.keys.altKey[b]=!1);-1!=a.indexOf("Shift")&&(this.keys.shiftKey[b]=!1);var c=this.getMetaKeyName_();if(-1!=a.indexOf(c))if("Search"==c)this.keys.searchKeyHeld[b]=!1;else if("Cmd"==c||"Win"==c)this.keys.metaKey[b]=!1}};
-cvox.KeySequence.prototype.getMetaKeyName_=function(){return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win"};cvox.KeySequence.prototype.checkKeyEquality_=function(a){for(var b in this.keys)for(var c=this.keys[b].length;c--;)if(this.keys[b][c]!==a.keys[b][c])return!1;return!0};cvox.KeySequence.prototype.length=function(){return this.keys.keyCode.length};cvox.KeySequence.prototype.isModifierKey=function(a){return 16==a||17==a||18==a||91==a||93==a};
-cvox.KeySequence.prototype.isCVoxModifierActive=function(a){var b=cvox.ChromeVox.modKeyStr.split(/\+/g);this.isKeyModifierActive(a,"ctrlKey")&&(b=b.filter(function(a){return"Ctrl"!=a}));this.isKeyModifierActive(a,"altKey")&&(b=b.filter(function(a){return"Alt"!=a}));this.isKeyModifierActive(a,"shiftKey")&&(b=b.filter(function(a){return"Shift"!=a}));if(this.isKeyModifierActive(a,"metaKey")||this.isKeyModifierActive(a,"searchKeyHeld"))var c=this.getMetaKeyName_(),b=b.filter(function(a){return a!=c});
-return 0==b.length};cvox.KeySequence.prototype.isKeyModifierActive=function(a,b){switch(b){case "ctrlKey":return a.ctrlKey||17==a.keyCode;case "altKey":return a.altKey||18==a.keyCode;case "shiftKey":return a.shiftKey||16==a.keyCode;case "metaKey":return a.metaKey||!cvox.ChromeVox.isChromeOS&&91==a.keyCode;case "searchKeyHeld":return cvox.ChromeVox.isChromeOS&&91==a.keyCode||a.searchKeyHeld}return!1};
-cvox.KeySequence.deserialize=function(a){var b={};b.stickyMode=void 0==a.stickyMode?!1:a.stickyMode;b.prefixKey=void 0==a.prefixKey?!1:a.prefixKey;var c=1<a.keys.keyCode.length,d={},e;for(e in a.keys)b[e]=a.keys[e][0],c&&(d[e]=a.keys[e][1]);e=new cvox.KeySequence(b,a.cvoxModifier,!0,a.doubleTap);c&&(cvox.ChromeVox.sequenceSwitchKeyCodes.push(new cvox.KeySequence(b,a.cvoxModifier)),e.addKeyEvent(d));a.doubleTap&&cvox.KeySequence.doubleTapCache.push(e);return e};
-cvox.KeySequence.fromStr=function(a){var b={},c={},d;d=-1==a.indexOf(">")?!1:!0;var e=!1;b.stickyMode=!1;b.prefixKey=!1;a=a.split("+");for(var f=0;f<a.length;f++)for(var g=a[f].split(">"),h=0;h<g.length;h++){if("#"==g[h].charAt(0)){var k=parseInt(g[h].substr(1),10);0<h?c.keyCode=k:b.keyCode=k}k=g[h];1==g[h].length?0<h?c.keyCode=g[h].charCodeAt(0):b.keyCode=g[h].charCodeAt(0):(0<h?cvox.KeySequence.setModifiersOnEvent_(k,c):cvox.KeySequence.setModifiersOnEvent_(k,b),"Cvox"==k&&(e=!0))}b=new cvox.KeySequence(b,
-e);d&&b.addKeyEvent(c);return b};cvox.KeySequence.setModifiersOnEvent_=function(a,b){"Ctrl"==a?(b.ctrlKey=!0,b.keyCode=17):"Alt"==a?(b.altKey=!0,b.keyCode=18):"Shift"==a?(b.shiftKey=!0,b.keyCode=16):"Search"==a?(b.searchKeyHeld=!0,b.keyCode=91):"Cmd"==a?(b.metaKey=!0,b.keyCode=91):"Win"==a?(b.metaKey=!0,b.keyCode=91):"Insert"==a&&(b.keyCode=45)};
-cvox.KeySequence.prototype.resolveChromeOSSpecialKeys_=function(a){if(!this.cvoxModifier||this.stickyMode||this.prefixKey||!cvox.ChromeVox.isChromeOS)return a;var b={},c;for(c in a)b[c]=a[c];switch(b.keyCode){case 33:b.keyCode=38;break;case 34:b.keyCode=40;break;case 35:b.keyCode=39;break;case 36:b.keyCode=37;break;case 45:b.keyCode=190;break;case 46:b.keyCode=8;break;case 112:b.keyCode=49;break;case 113:b.keyCode=50;break;case 114:b.keyCode=51;break;case 115:b.keyCode=52;break;case 116:b.keyCode=
-53;break;case 117:b.keyCode=54;break;case 118:b.keyCode=55;break;case 119:b.keyCode=56;break;case 120:b.keyCode=57;break;case 121:b.keyCode=48;break;case 122:b.keyCode=189;break;case 123:b.keyCode=187}return b};cvox.KeyUtil=function(){};cvox.KeyUtil.modeKeyPressTime=0;cvox.KeyUtil.sequencing=!1;cvox.KeyUtil.prevKeySequence=null;cvox.KeyUtil.stickyKeySequence=null;cvox.KeyUtil.maxSeqLength=2;
-cvox.KeyUtil.keyEventToKeySequence=function(a){var b=cvox.KeyUtil;b.prevKeySequence&&b.maxSeqLength==b.prevKeySequence.length()&&(b.sequencing=!1,b.prevKeySequence=null);var c=b.sequencing||a.keyPrefix||a.stickyMode,d=new cvox.KeySequence(a),e=d.cvoxModifier;if(c||e){if(!b.sequencing&&b.isSequenceSwitchKeyCode(d))return b.sequencing=!0,b.prevKeySequence=d;if(b.sequencing){if(b.prevKeySequence.addKeyEvent(a))return d=b.prevKeySequence,b.prevKeySequence=null,b.sequencing=!1,d;throw"Think sequencing is enabled, yet util.prevKeySequence alreadyhas two key codes"+
-b.prevKeySequence;}}else b.sequencing=!1;c=(new Date).getTime();if(cvox.KeyUtil.isDoubleTapKey(d)&&b.prevKeySequence&&d.equals(b.prevKeySequence)&&(e=b.modeKeyPressTime,0<e&&300>c-e))return d=b.prevKeySequence,d.doubleTap=!0,b.prevKeySequence=null,b.sequencing=!1,cvox.ChromeVox.isChromeOS&&a.keyCode==cvox.KeyUtil.getStickyKeyCode()&&(cvox.ChromeVox.searchKeyHeld=!1),d;b.prevKeySequence=d;b.modeKeyPressTime=c;return d};
-cvox.KeyUtil.keyCodeToString=function(a){return 17==a?"Ctrl":18==a?"Alt":16==a?"Shift":91==a||93==a?cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win":45==a?"Insert":65<=a&&90>=a?String.fromCharCode(a):48<=a&&57>=a?String.fromCharCode(a):"#"+a};cvox.KeyUtil.modStringToKeyCode=function(a){switch(a){case "Ctrl":return 17;case "Alt":return 18;case "Shift":return 16;case "Cmd":case "Win":return 91}return-1};
-cvox.KeyUtil.cvoxModKeyCodes=function(){var a=cvox.ChromeVox.modKeyStr.split(/\+/g);return a=a.map(function(a){return cvox.KeyUtil.modStringToKeyCode(a)})};cvox.KeyUtil.isSequenceSwitchKeyCode=function(a){for(var b=0;b<cvox.ChromeVox.sequenceSwitchKeyCodes.length;b++){var c=cvox.ChromeVox.sequenceSwitchKeyCodes[b];if(c.equals(a))return!0}return!1};
-cvox.KeyUtil.getReadableNameForKeyCode=function(a){if(0==a)return"Power button";if(17==a)return"Control";if(18==a)return"Alt";if(16==a)return"Shift";if(9==a)return"Tab";if(91==a||93==a)return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win";if(8==a)return"Backspace";if(32==a)return"Space";if(35==a)return"end";if(36==a)return"home";if(37==a)return"Left arrow";if(38==a)return"Up arrow";if(39==a)return"Right arrow";if(40==a)return"Down arrow";if(45==a)return"Insert";if(13==a)return"Enter";
-if(27==a)return"Escape";if(112==a)return cvox.ChromeVox.isChromeOS?"Back":"F1";if(113==a)return cvox.ChromeVox.isChromeOS?"Forward":"F2";if(114==a)return cvox.ChromeVox.isChromeOS?"Refresh":"F3";if(115==a)return cvox.ChromeVox.isChromeOS?"Toggle full screen":"F4";if(116==a)return"F5";if(117==a)return"F6";if(118==a)return"F7";if(119==a)return"F8";if(120==a)return"F9";if(121==a)return"F10";if(122==a)return"F11";if(123==a)return"F12";if(186==a)return"Semicolon";if(187==a)return"Equal sign";if(188==a)return"Comma";
-if(189==a)return"Dash";if(190==a)return"Period";if(191==a)return"Forward slash";if(192==a)return"Grave accent";if(219==a)return"Open bracket";if(220==a)return"Back slash";if(221==a)return"Close bracket";if(222==a)return"Single quote";if(115==a)return"Toggle full screen";if(48<=a&&90>=a)return String.fromCharCode(a)};cvox.KeyUtil.getStickyKeyCode=function(){var a=45;if(cvox.ChromeVox.isChromeOS||cvox.ChromeVox.isMac)a=91;return a};
-cvox.KeyUtil.getStickyKeySequence=function(){if(null==cvox.KeyUtil.stickyKeySequence){var a=cvox.KeyUtil.getStickyKeyCode(),a={keyCode:a,stickyMode:!0},b=new cvox.KeySequence(a);b.addKeyEvent(a);cvox.KeyUtil.stickyKeySequence=b}return cvox.KeyUtil.stickyKeySequence};cvox.KeyUtil.getReadableNameForStr=function(){return null};
-cvox.KeyUtil.keySequenceToString=function(a,b,c){for(var d="",e=a.length(),f=0;f<e;f++){""==d||c?""!=d&&(d+="+"):d+=">";var g="",h;for(h in a.keys)if(a.keys[h][f]){var k="";switch(h){case "ctrlKey":k="Ctrl";break;case "searchKeyHeld":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "altKey":k="Alt";break;case "altGraphKey":k="AltGraph";break;case "shiftKey":k="Shift";break;case "metaKey":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "keyCode":var l=a.keys[h][f];a.isModifierKey(l)||
-c||(g=b?g+cvox.KeyUtil.getReadableNameForKeyCode(l):g+cvox.KeyUtil.keyCodeToString(l))}-1==d.indexOf(k)&&(g+=k+"+")}d+=g;"+"==d[d.length-1]&&(d=d.slice(0,-1))}a.cvoxModifier||a.prefixKey?d=""!=d?"Cvox+"+d:"Cvox":a.stickyMode&&(">"==d[d.length-1]&&(d=d.slice(0,-1)),d=d+"+"+d);return d};cvox.KeyUtil.isDoubleTapKey=function(a){var b=!1,c=a.doubleTap;a.doubleTap=!0;for(var d=0,e;e=cvox.KeySequence.doubleTapCache[d];d++)if(e.equals(a)){b=!0;break}a.doubleTap=c;return b};cvox.KeyMap=function(a){this.bindings_=a;this.commandToKey_={};this.buildCommandToKey_()};cvox.KeyMap.KEYMAP_PATH="chromevox/background/keymaps/";cvox.KeyMap.AVAILABLE_MAP_INFO={keymap_classic:{file:"classic_keymap.json"},keymap_flat:{file:"flat_keymap.json"},keymap_experimental:{file:"experimental.json"}};cvox.KeyMap.DEFAULT_KEYMAP=0;cvox.KeyMap.prototype.length=function(){return this.bindings_.length};cvox.KeyMap.prototype.keys=function(){return this.bindings_.map(function(a){return a.sequence})};
-cvox.KeyMap.prototype.bindings=function(){return this.bindings_};cvox.KeyMap.prototype.toJSON=function(){return JSON.stringify({bindings:this.bindings_})};cvox.KeyMap.prototype.hasKey=function(a){for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return!0}return!1};cvox.KeyMap.prototype.commandForKey=function(a){if(null!=a)for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return c.command}return null};
-cvox.KeyMap.fromDefaults=function(){return cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO.keymap_classic.file)};cvox.KeyMap.fromJSON=function(a){try{var b=JSON.parse(a).bindings,b=b.filter(function(a){return void 0===a.sequence.platformFilter||cvox.PlatformUtil.matchesPlatform(a.sequence.platformFilter)})}catch(c){return null}if("object"!=typeof b)return null;for(a=0;a<b.length;a++){if(void 0==b[a].command||void 0==b[a].sequence)return null;b[a].sequence=cvox.KeySequence.deserialize(b[a].sequence)}return new cvox.KeyMap(b)};
-cvox.KeyMap.fromLocalStorage=function(){return localStorage.keyBindings?cvox.KeyMap.fromJSON(localStorage.keyBindings):null};cvox.KeyMap.fromPath=function(a){return cvox.KeyMap.fromJSON(cvox.KeyMap.readJSON_(a))};cvox.KeyMap.fromCurrentKeyMap=function(){var a=localStorage.currentKeyMap;return a&&cvox.KeyMap.AVAILABLE_MAP_INFO[a]?cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO[a].file):cvox.KeyMap.fromDefaults()};
-cvox.KeyMap.readJSON_=function(a){var b=chrome.extension.getURL(a);if(!b)throw"Invalid path: "+a;a=new XMLHttpRequest;a.open("GET",b,!1);a.send();return a.responseText};cvox.KeyMap.prototype.buildCommandToKey_=function(){for(var a=0;a<this.bindings_.length;a++){var b=this.bindings_[a];void 0==this.commandToKey_[b.command]&&(this.commandToKey_[b.command]=b.sequence)}};cvox.CommandStore={};cvox.CommandStore.categories=function(){var a={},b;for(b in cvox.CommandStore.CMD_WHITELIST){var c=cvox.CommandStore.CMD_WHITELIST[b];c.category&&(a[c.category]=!0)}b=[];for(var d in a)b.push(d);return b};cvox.CommandStore.messageForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).msgId};cvox.CommandStore.categoryForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).category};
-cvox.CommandStore.commandsForCategory=function(a){var b=[],c;for(c in cvox.CommandStore.CMD_WHITELIST){var d=cvox.CommandStore.CMD_WHITELIST[c];a==d.category&&b.push(c)}return b};
-cvox.CommandStore.CMD_WHITELIST={toggleStickyMode:{announce:!1,msgId:"toggle_sticky_mode",disallowOOBE:!0,category:"modifier_keys"},toggleKeyPrefix:{announce:!1,skipInput:!0,msgId:"prefix_key",disallowOOBE:!0,category:"modifier_keys"},stopSpeech:{announce:!1,disallowContinuation:!0,doDefault:!0,msgId:"stop_speech_key",category:"controlling_speech"},toggleChromeVox:{announce:!1,platformFilter:cvox.PlatformFilter.WML,msgId:"toggle_chromevox_active",category:"controlling_speech"},decreaseTtsRate:{announce:!1,
-msgId:"decrease_tts_rate",category:"controlling_speech"},increaseTtsRate:{announce:!1,msgId:"increase_tts_rate",category:"controlling_speech"},decreaseTtsPitch:{announce:!1,msgId:"decrease_tts_pitch",category:"controlling_speech"},increaseTtsPitch:{announce:!1,msgId:"increase_tts_pitch",category:"controlling_speech"},decreaseTtsVolume:{announce:!1,msgId:"decrease_tts_volume",category:"controlling_speech"},increaseTtsVolume:{announce:!1,msgId:"increase_tts_volume",category:"controlling_speech"},cyclePunctuationEcho:{announce:!1,
-msgId:"cycle_punctuation_echo",category:"controlling_speech"},cycleTypingEcho:{announce:!1,msgId:"cycle_typing_echo",category:"controlling_speech"},toggleEarcons:{announce:!0,msgId:"toggle_earcons",category:"controlling_speech"},handleTab:{allowEvents:!0,msgId:"handle_tab_next",disallowContinuation:!0,category:"navigation"},handleTabPrev:{allowEvents:!0,msgId:"handle_tab_prev",disallowContinuation:!0,category:"navigation"},forward:{forward:!0,announce:!0,msgId:"forward",category:"navigation"},backward:{backward:!0,
-announce:!0,msgId:"backward",category:"navigation"},right:{forward:!0,announce:!0,msgId:"right",category:"navigation"},left:{backward:!0,announce:!0,msgId:"left",category:"navigation"},previousGranularity:{announce:!0,msgId:"previous_granularity",category:"navigation"},nextGranularity:{announce:!0,msgId:"next_granularity",category:"navigation"},previousCharacter:{backward:!0,announce:!0,msgId:"previous_character",skipInput:!0,category:"navigation"},nextCharacter:{forward:!0,announce:!0,msgId:"next_character",
-skipInput:!0,category:"navigation"},previousWord:{backward:!0,announce:!0,msgId:"previous_word",skipInput:!0,category:"navigation"},nextWord:{forward:!0,announce:!0,msgId:"next_word",skipInput:!0,category:"navigation"},previousLine:{backward:!0,announce:!0,msgId:"previous_line",category:"navigation"},nextLine:{forward:!0,announce:!0,msgId:"next_line",category:"navigation"},previousSentence:{backward:!0,announce:!0,msgId:"previous_sentence",skipInput:!0,category:"navigation"},nextSentence:{forward:!0,
-announce:!0,msgId:"next_sentence",skipInput:!0,category:"navigation"},previousObject:{backward:!0,announce:!0,msgId:"previous_object",skipInput:!0,category:"navigation"},nextObject:{forward:!0,announce:!0,msgId:"next_object",skipInput:!0,category:"navigation"},previousGroup:{backward:!0,announce:!0,msgId:"previous_group",skipInput:!0,category:"navigation"},nextGroup:{forward:!0,announce:!0,msgId:"next_group",skipInput:!0,category:"navigation"},jumpToTop:{forward:!0,announce:!0,msgId:"jump_to_top",
-category:"navigation"},jumpToBottom:{backward:!0,announce:!0,msgId:"jump_to_bottom",category:"navigation"},moveToStartOfLine:{forward:!0,announce:!0},moveToEndOfLine:{backward:!0,announce:!0},readFromHere:{forward:!0,announce:!1,msgId:"read_from_here",category:"navigation"},performDefaultAction:{disallowContinuation:!0,msgId:"perform_default_action",doDefault:!0,skipInput:!0,category:"navigation"},forceClickOnCurrentItem:{announce:!0,disallowContinuation:!0,allowEvents:!0,msgId:"force_click_on_current_item",
-category:"navigation"},forceDoubleClickOnCurrentItem:{announce:!0,allowEvents:!0,disallowContinuation:!0},readLinkURL:{announce:!1,msgId:"read_link_url",category:"information"},readCurrentTitle:{announce:!1,msgId:"read_current_title",category:"information"},readCurrentURL:{announce:!1,msgId:"read_current_url",category:"information"},fullyDescribe:{announce:!1,msgId:"fully_describe",category:"information"},speakTimeAndDate:{announce:!1,msgId:"speak_time_and_date",category:"information"},toggleSelection:{announce:!0,
-msgId:"toggle_selection",category:"information"},toggleSearchWidget:{announce:!1,disallowContinuation:!0,msgId:"toggle_search_widget",category:"information"},toggleKeyboardHelp:{announce:!1,disallowContinuation:!0,msgId:"show_power_key",category:"help_commands"},help:{announce:!1,msgId:"help",disallowOOBE:!0,disallowContinuation:!0,category:"help_commands"},contextMenu:{announce:!1,disallowContinuation:!0},showOptionsPage:{announce:!1,disallowContinuation:!0,msgId:"show_options_page",disallowOOBE:!0,
-category:"help_commands"},showKbExplorerPage:{announce:!1,disallowContinuation:!0,msgId:"show_kb_explorer_page",disallowOOBE:!0,category:"help_commands"},showFormsList:{announce:!1,disallowContinuation:!0,nodeList:"formField",msgId:"show_forms_list",category:"overview"},showHeadingsList:{announce:!1,nodeList:"heading",disallowContinuation:!0,msgId:"show_headings_list",category:"overview"},showLandmarksList:{announce:!1,nodeList:"landmark",disallowContinuation:!0,msgId:"show_landmarks_list",category:"overview"},
-showLinksList:{announce:!1,nodeList:"link",disallowContinuation:!0,msgId:"show_links_list",category:"overview"},showTablesList:{announce:!1,nodeList:"table",disallowContinuation:!0,msgId:"show_tables_list",category:"overview"},startHistoryRecording:{announce:!1},stopHistoryRecording:{announce:!1},enableConsoleTts:{announce:!1},autorunner:{announce:!1},nextArticle:{forward:!0,findNext:"article"},nextButton:{forward:!0,findNext:"button",msgId:"next_button",category:"jump_commands"},nextCheckbox:{forward:!0,
-findNext:"checkbox",msgId:"next_checkbox",category:"jump_commands"},nextComboBox:{forward:!0,findNext:"combobox",msgId:"next_combo_box",category:"jump_commands"},nextControl:{forward:!0,findNext:"control"},nextEditText:{forward:!0,findNext:"editText",msgId:"next_edit_text",category:"jump_commands"},nextFormField:{forward:!0,findNext:"formField",msgId:"next_form_field",category:"jump_commands"},nextGraphic:{forward:!0,findNext:"graphic",msgId:"next_graphic",category:"jump_commands"},nextHeading:{forward:!0,
-findNext:"heading",msgId:"next_heading",category:"jump_commands"},nextHeading1:{forward:!0,findNext:"heading1",msgId:"next_heading1",category:"jump_commands"},nextHeading2:{forward:!0,findNext:"heading2",msgId:"next_heading2",category:"jump_commands"},nextHeading3:{forward:!0,findNext:"heading3",msgId:"next_heading3",category:"jump_commands"},nextHeading4:{forward:!0,findNext:"heading4",msgId:"next_heading4",category:"jump_commands"},nextHeading5:{forward:!0,findNext:"heading5",msgId:"next_heading5",
-category:"jump_commands"},nextHeading6:{forward:!0,findNext:"heading6",msgId:"next_heading6",category:"jump_commands"},nextLandmark:{forward:!0,findNext:"landmark",msgId:"next_landmark",category:"jump_commands"},nextLink:{forward:!0,findNext:"link",msgId:"next_link",category:"jump_commands"},nextList:{forward:!0,findNext:"list",msgId:"next_list",category:"jump_commands"},nextListItem:{forward:!0,findNext:"listItem",msgId:"next_list_item",category:"jump_commands"},nextMath:{forward:!0,findNext:"math",
-msgId:"next_math",category:"jump_commands"},nextMedia:{forward:!0,findNext:"media",msgId:"next_media",category:"jump_commands"},nextRadio:{forward:!0,findNext:"radio",msgId:"next_radio",category:"jump_commands"},nextSection:{forward:!0,findNext:"section"},nextSlider:{forward:!0,findNext:"slider"},nextTable:{forward:!0,findNext:"table",msgId:"next_table",category:"jump_commands"},nextVisitedLink:{forward:!0,findNext:"visitedLink",msgId:"next_visited_link",category:"jump_commands"},previousArticle:{backward:!0,
-findNext:"article"},previousButton:{backward:!0,findNext:"button",msgId:"previous_button",category:"jump_commands"},previousCheckbox:{backward:!0,findNext:"checkbox",msgId:"previous_checkbox",category:"jump_commands"},previousComboBox:{backward:!0,findNext:"combobox",msgId:"previous_combo_box",category:"jump_commands"},previousControl:{backward:!0,findNext:"control"},previousEditText:{backward:!0,findNext:"editText",msgId:"previous_edit_text",category:"jump_commands"},previousFormField:{backward:!0,
-findNext:"formField",msgId:"previous_form_field",category:"jump_commands"},previousGraphic:{backward:!0,findNext:"graphic",msgId:"previous_graphic",category:"jump_commands"},previousHeading:{backward:!0,findNext:"heading",msgId:"previous_heading",category:"jump_commands"},previousHeading1:{backward:!0,findNext:"heading1",msgId:"previous_heading1",category:"jump_commands"},previousHeading2:{backward:!0,findNext:"heading2",msgId:"previous_heading2",category:"jump_commands"},previousHeading3:{backward:!0,
-findNext:"heading3",msgId:"previous_heading3",category:"jump_commands"},previousHeading4:{backward:!0,findNext:"heading4",msgId:"previous_heading4",category:"jump_commands"},previousHeading5:{backward:!0,findNext:"heading5",msgId:"previous_heading5",category:"jump_commands"},previousHeading6:{backward:!0,findNext:"heading6",msgId:"previous_heading6",category:"jump_commands"},previousLandmark:{backward:!0,findNext:"landmark",msgId:"previous_landmark",category:"jump_commands"},previousLink:{backward:!0,
-findNext:"link",msgId:"previous_link",category:"jump_commands"},previousList:{backward:!0,findNext:"list",msgId:"previous_list",category:"jump_commands"},previousListItem:{backward:!0,findNext:"listItem",msgId:"previous_list_item",category:"jump_commands"},previousMath:{backward:!0,findNext:"math",msgId:"previous_math",category:"jump_commands"},previousMedia:{backward:!0,findNext:"media",msgId:"previous_media",category:"jump_commands"},previousRadio:{backward:!0,findNext:"radio",msgId:"previous_radio",
-category:"jump_commands"},previousSection:{backward:!0,findNext:"section"},previousSlider:{backward:!0,findNext:"slider"},previousTable:{backward:!0,findNext:"table",msgId:"previous_table",category:"jump_commands"},previousVisitedLink:{backward:!0,findNext:"visitedLink",msgId:"previous_visited_link",category:"jump_commands"},announceHeaders:{announce:!1,msgId:"announce_headers",category:"tables"},speakTableLocation:{announce:!1,msgId:"speak_table_location",category:"tables"},goToFirstCell:{announce:!0,
-msgId:"skip_to_beginning",category:"tables"},goToLastCell:{announce:!0,msgId:"skip_to_end",category:"tables"},goToRowFirstCell:{announce:!0,msgId:"skip_to_row_beginning",category:"tables"},goToRowLastCell:{announce:!0,msgId:"skip_to_row_end",category:"tables"},goToColFirstCell:{announce:!0,msgId:"skip_to_col_beginning",category:"tables"},goToColLastCell:{announce:!0,msgId:"skip_to_col_end",category:"tables"},previousRow:{backward:!0,announce:!0,skipInput:!0},previousCol:{backward:!0,announce:!0,skipInput:!0},
-nextRow:{forward:!0,announce:!0,skipInput:!0},nextCol:{forward:!0,announce:!0,skipInput:!0},enterShifter:{announce:!0,msgId:"enter_content",category:"navigation"},exitShifter:{announce:!0,msgId:"exit_content",category:"navigation"},exitShifterContent:{announce:!0},openLongDesc:{announce:!1,msgId:"open_long_desc",category:"information"},pauseAllMedia:{announce:!1,msgId:"pause_all_media",category:"information"},toggleSemantics:{announce:!1,msgId:"toggle_semantics",category:"information"},routing:{announce:!0,
-msgId:"braille_routing",category:"braille"},pan_left:{backward:!0,announce:!0,msgId:"braille_pan_left",category:"braille"},pan_right:{forward:!0,announce:!0,msgId:"braille_pan_right",category:"braille"},line_up:{backward:!0,announce:!0,msgId:"braille_line_up",category:"braille"},line_down:{forward:!0,announce:!0,msgId:"braille_line_down",category:"braille"},top:{forward:!0,announce:!0,msgId:"braille_top",category:"braille"},bottom:{backward:!0,announce:!0,msgId:"braille_bottom",category:"braille"},
-debug:{announce:!1},nop:{announce:!1}};
-cvox.CommandStore.NODE_INFO_MAP={checkbox:{predicate:"checkboxPredicate",forwardError:"no_next_checkbox",backwardError:"no_previous_checkbox",typeMsg:"aria_role_checkbox"},radio:{predicate:"radioPredicate",forwardError:"no_next_radio_button",backwardError:"no_previous_radio_button",typeMsg:"aria_role_radio"},slider:{predicate:"sliderPredicate",forwardError:"no_next_slider",backwardError:"no_previous_slider",typeMsg:"aria_role_slider"},graphic:{predicate:"graphicPredicate",forwardError:"no_next_graphic",
-backwardError:"no_previous_graphic",typeMsg:"UNUSED"},article:{predicate:"articlePredicate",forwardError:"no_next_ARTICLE",backwardError:"no_previous_ARTICLE",typeMsg:"TAG_ARTICLE"},button:{predicate:"buttonPredicate",forwardError:"no_next_button",backwardError:"no_previous_button",typeMsg:"aria_role_button"},combobox:{predicate:"comboBoxPredicate",forwardError:"no_next_combo_box",backwardError:"no_previous_combo_box",typeMsg:"aria_role_combobox"},editText:{predicate:"editTextPredicate",forwardError:"no_next_edit_text",
-backwardError:"no_previous_edit_text",typeMsg:"input_type_text"},heading:{predicate:"headingPredicate",forwardError:"no_next_heading",backwardError:"no_previous_heading",typeMsg:"aria_role_heading"},heading1:{predicate:"heading1Predicate",forwardError:"no_next_heading_1",backwardError:"no_previous_heading_1"},heading2:{predicate:"heading2Predicate",forwardError:"no_next_heading_2",backwardError:"no_previous_heading_2"},heading3:{predicate:"heading3Predicate",forwardError:"no_next_heading_3",backwardError:"no_previous_heading_3"},
-heading4:{predicate:"heading4Predicate",forwardError:"no_next_heading_4",backwardError:"no_previous_heading_4"},heading5:{predicate:"heading5Predicate",forwardError:"no_next_heading_5",backwardError:"no_previous_heading_5"},heading6:{predicate:"heading6Predicate",forwardError:"no_next_heading_6",backwardError:"no_previous_heading_6"},link:{predicate:"linkPredicate",forwardError:"no_next_link",backwardError:"no_previous_link",typeMsg:"aria_role_link"},table:{predicate:"tablePredicate",forwardError:"no_next_table",
-backwardError:"no_previous_table",typeMsg:"table_strategy"},visitedLink:{predicate:"visitedLinkPredicate",forwardError:"no_next_visited_link",backwardError:"no_previous_visited_link",typeMsg:"tag_link"},list:{predicate:"listPredicate",forwardError:"no_next_list",backwardError:"no_previous_list",typeMsg:"aria_role_list"},listItem:{predicate:"listItemPredicate",forwardError:"no_next_list_item",backwardError:"no_previous_list_item",typeMsg:"aria_role_listitem"},formField:{predicate:"formFieldPredicate",
-forwardError:"no_next_form_field",backwardError:"no_previous_form_field",typeMsg:"aria_role_form"},landmark:{predicate:"landmarkPredicate",forwardError:"no_next_landmark",backwardError:"no_previous_landmark",typeMsg:"role_landmark"},math:{predicate:"mathPredicate",forwardError:"no_next_math",backwardError:"no_previous_math",typeMsg:"math_expr"},media:{predicate:"mediaPredicate",forwardError:"no_next_media_widget",backwardError:"no_previous_media_widget"},section:{predicate:"sectionPredicate",forwardError:"no_next_section",
-backwardError:"no_previous_section"},control:{predicate:"controlPredicate",forwardError:"no_next_control",backwardError:"no_previous_control"}};cvox.Widget=function(){this.active=!1;this.initialNode=null;cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||(cvox.Widget.ref_=this)};cvox.Widget.prototype.isActive=function(){return this.active};
-cvox.Widget.prototype.show=function(){this.isActive()&&this.hide(!0);this.onKeyDown=goog.bind(this.onKeyDown,this);this.onKeyPress=goog.bind(this.onKeyPress,this);window.addEventListener("keydown",this.onKeyDown,!0);window.addEventListener("keypress",this.onKeyPress,!0);this.initialNode=cvox.ChromeVox.navigationManager.getCurrentNode();this.isStickyOn=cvox.ChromeVox.isStickyOn;this.getNameMsg()&&this.getHelpMsg()&&cvox.$m(this.getNameMsg()).andPause().andMessage(this.getHelpMsg()).speakFlush();cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_OPEN);
-this.active=!0};cvox.Widget.prototype.hide=function(a){window.removeEventListener("keypress",this.onKeyPress,!0);window.removeEventListener("keydown",this.onKeyDown,!0);cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_CLOSE);a||(this.initialNode=1==this.initialNode.nodeType?this.initialNode:this.initialNode.parentNode,cvox.ApiImplementation.syncToNode(this.initialNode,!0,cvox.AbstractTts.QUEUE_MODE_QUEUE));this.active=!1};
-cvox.Widget.prototype.toggle=function(){this.isActive()?this.hide():this.show()};cvox.Widget.prototype.onKeyDown=function(a){if(27==a.keyCode)return this.hide(),a.preventDefault(),!0;if(9==a.keyCode)return this.hide(),!0;17==a.keyCode&&cvox.ChromeVox.tts.stop();a.stopPropagation();return!0};cvox.Widget.prototype.onKeyPress=function(){return!1};cvox.Widget.isActive=function(){return cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||!1};cvox.NavDescription=function(a){this.context=a.context?a.context:"";this.text=a.text?a.text:"";this.userValue=a.userValue?a.userValue:"";this.annotation=a.annotation?a.annotation:"";this.earcons=a.earcons?a.earcons:[];this.personality=a.personality};cvox.NavDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.earcons.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};
-cvox.NavDescription.prototype.toString=function(){return'NavDescription(context="'+this.context+'" text="'+this.text+'" userValue="'+this.userValue+'" annotation="'+this.annotation+'")'};cvox.NavDescription.prototype.pushEarcon=function(a){this.earcons.push(a)};
-cvox.NavDescription.prototype.speak=function(a,b,c){function d(){var a={},b=cvox.AbstractTts.PERSONALITY_ANNOTATION,c;for(c in b)a[c]=b[c];return a}var e=[];this.context&&(e.push([this.context,a,d()]),a=1);e.push([this.text,a,this.personality?this.personality:{}]);a=1;this.userValue&&e.push([this.userValue,a,{}]);this.annotation&&e.push([this.annotation,a,d()]);a=e.length;for(var f=0;f<a;f++)0==f&&b&&(e[f][2].startCallback=b),f==a-1&&c&&(e[f][2].endCallback=c),cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts,
-e[f])};cvox.NavDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};cvox.NavMathDescription=function(a){cvox.NavDescription.call(this,a);var b=this.personality?this.personality:{},c={};c.domain=a.domain?a.domain:"";c.style=a.style?a.style:"";b.math=c;this.personality=b};goog.inherits(cvox.NavMathDescription,cvox.NavDescription);cvox.SemanticUtil=function(){};cvox.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};cvox.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[],c=function(a){for(var c in a)b.push(a[c])};a.forEach(c);return b};
-cvox.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};cvox.SemanticUtil.numberToUnicode=function(a){if(65536<=a){var b=(a-65536)/1024+55296;a=(a-65536)%1024+56320;return String.fromCharCode(b,a)}return String.fromCharCode(a)};cvox.SemanticUtil.tagName=function(a){return a.tagName.toUpperCase()};cvox.SemanticUtil.IGNORETAGS="MERROR MPHANTOM MSPACE MACTION MALIGNGROUP MALIGNMARK MACTION".split(" ");
-cvox.SemanticUtil.EMPTYTAGS=["MATH","MROW","MPADDED","MSTYLE"];cvox.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=cvox.SemanticUtil.tagName(d);-1==cvox.SemanticUtil.IGNORETAGS.indexOf(e)&&(-1!=cvox.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d))}return b};cvox.SemanticAttr=function(){this.generalPunctuations="!\"#%&'*,:;?@\\\u00a1\u00a7\u00b6\u00b7\u00bf\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2027\u2030\u2031\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\ufe10\ufe13\ufe14\ufe15\ufe16\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0f\uff1a\uff1b\uff1f\uff20\uff3c".split("");
-this.invisibleComma_=cvox.SemanticUtil.numberToUnicode(8291);this.generalPunctuations.push(this.invisibleComma_);this.ellipses="\u2026\u22ee\u22ef\u22f0\u22f1\ufe19".split("");this.fullStops=[".","\ufe52","\uff0e"];this.dashes="\u2012\u2013\u2014\u2015\u301c\ufe31\ufe32\ufe58".split("");this.primes="\u2032\u2033\u2034\u2035\u2036\u2037\u2057".split("");this.openClosePairs={"(":")","[":"]","{":"}","\u2045":"\u2046","\u2329":"\u232a","\u2768":"\u2769","\u276a":"\u276b","\u276c":"\u276d","\u276e":"\u276f",
-"\u2770":"\u2771","\u2772":"\u2773","\u2774":"\u2775","\u27c5":"\u27c6","\u27e6":"\u27e7","\u27e8":"\u27e9","\u27ea":"\u27eb","\u27ec":"\u27ed","\u27ee":"\u27ef","\u2983":"\u2984","\u2985":"\u2986","\u2987":"\u2988","\u2989":"\u298a","\u298b":"\u298c","\u298d":"\u298e","\u298f":"\u2990","\u2991":"\u2992","\u2993":"\u2994","\u2995":"\u2996","\u2997":"\u2998","\u29d8":"\u29d9","\u29da":"\u29db","\u29fc":"\u29fd","\u2e22":"\u2e23","\u2e24":"\u2e25","\u2e26":"\u2e27","\u2e28":"\u2e29","\u3008":"\u3009",
-"\u300a":"\u300b","\u300c":"\u300d","\u300e":"\u300f","\u3010":"\u3011","\u3014":"\u3015","\u3016":"\u3017","\u3018":"\u3019","\u301a":"\u301b","\u301d":"\u301e","\ufd3e":"\ufd3f","\ufe17":"\ufe18","\ufe59":"\ufe5a","\ufe5b":"\ufe5c","\ufe5d":"\ufe5e","\uff08":"\uff09","\uff3b":"\uff3d","\uff5b":"\uff5d","\uff5f":"\uff60","\uff62":"\uff63","\u2308":"\u2309","\u230a":"\u230b","\u230c":"\u230d","\u230e":"\u230f","\u231c":"\u231d","\u231e":"\u231f","\u239b":"\u239e","\u239c":"\u239f","\u239d":"\u23a0",
-"\u23a1":"\u23a4","\u23a2":"\u23a5","\u23a3":"\u23a6","\u23a7":"\u23ab","\u23a8":"\u23ac","\u23a9":"\u23ad","\u23b0":"\u23b1","\u23b8":"\u23b9"};this.topBottomPairs={"\u23b4":"\u23b5","\u23dc":"\u23dd","\u23de":"\u23df","\u23e0":"\u23e1","\ufe35":"\ufe36","\ufe37":"\ufe38","\ufe39":"\ufe3a","\ufe3b":"\ufe3c","\ufe3d":"\ufe3e","\ufe3f":"\ufe40","\ufe41":"\ufe42","\ufe43":"\ufe44","\ufe47":"\ufe48"};this.leftFences=cvox.SemanticUtil.objectsToKeys(this.openClosePairs);this.rightFences=cvox.SemanticUtil.objectsToValues(this.openClosePairs);
-this.rightFences.push("\u301f");this.topFences=cvox.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=cvox.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences="|\u00a6\u2016\u2758\u2980\u2af4\uffe4\uff5c".split("");this.capitalLatin="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");this.smallLatin="abcdefghijklmnopqrstuvwxyz\u0131\u0237".split("");this.capitalLatinFullWidth="\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a".split("");
-this.smallLatinFullWidth="\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a".split("");this.capitalLatinBold="\ud835\udc00 \ud835\udc01 \ud835\udc02 \ud835\udc03 \ud835\udc04 \ud835\udc05 \ud835\udc06 \ud835\udc07 \ud835\udc08 \ud835\udc09 \ud835\udc0a \ud835\udc0b \ud835\udc0c \ud835\udc0d \ud835\udc0e \ud835\udc0f \ud835\udc10 \ud835\udc11 \ud835\udc12 \ud835\udc13 \ud835\udc14 \ud835\udc15 \ud835\udc16 \ud835\udc17 \ud835\udc18 \ud835\udc19".split(" ");
-this.smallLatinBold="\ud835\udc1a \ud835\udc1b \ud835\udc1c \ud835\udc1d \ud835\udc1e \ud835\udc1f \ud835\udc20 \ud835\udc21 \ud835\udc22 \ud835\udc23 \ud835\udc24 \ud835\udc25 \ud835\udc26 \ud835\udc27 \ud835\udc28 \ud835\udc29 \ud835\udc2a \ud835\udc2b \ud835\udc2c \ud835\udc2d \ud835\udc2e \ud835\udc2f \ud835\udc30 \ud835\udc31 \ud835\udc32 \ud835\udc33".split(" ");this.capitalLatinItalic="\ud835\udc34 \ud835\udc35 \ud835\udc36 \ud835\udc37 \ud835\udc38 \ud835\udc39 \ud835\udc3a \ud835\udc3b \ud835\udc3c \ud835\udc3d \ud835\udc3e \ud835\udc3f \ud835\udc40 \ud835\udc41 \ud835\udc42 \ud835\udc43 \ud835\udc44 \ud835\udc45 \ud835\udc46 \ud835\udc47 \ud835\udc48 \ud835\udc49 \ud835\udc4a \ud835\udc4b \ud835\udc4c \ud835\udc4d".split(" ");
-this.smallLatinItalic="\ud835\udc4e \ud835\udc4f \ud835\udc50 \ud835\udc51 \ud835\udc52 \ud835\udc53 \ud835\udc54 \u210e \ud835\udc56 \ud835\udc57 \ud835\udc58 \ud835\udc59 \ud835\udc5a \ud835\udc5b \ud835\udc5c \ud835\udc5d \ud835\udc5e \ud835\udc5f \ud835\udc60 \ud835\udc61 \ud835\udc62 \ud835\udc63 \ud835\udc64 \ud835\udc65 \ud835\udc66 \ud835\udc67 \ud835\udea4 \ud835\udea5".split(" ");this.capitalLatinScript="\ud835\udc9c \u212c \ud835\udc9e \ud835\udc9f \u2130 \u2131 \ud835\udca2 \u210b \u2110 \ud835\udca5 \ud835\udca6 \u2112 \u2133 \ud835\udca9 \ud835\udcaa \ud835\udcab \ud835\udcac \u211b \ud835\udcae \ud835\udcaf \ud835\udcb0 \ud835\udcb1 \ud835\udcb2 \ud835\udcb3 \ud835\udcb4 \ud835\udcb5 \u2118".split(" ");
-this.smallLatinScript="\ud835\udcb6 \ud835\udcb7 \ud835\udcb8 \ud835\udcb9 \u212f \ud835\udcbb \u210a \ud835\udcbd \ud835\udcbe \ud835\udcbf \ud835\udcc0 \ud835\udcc1 \ud835\udcc2 \ud835\udcc3 \u2134 \ud835\udcc5 \ud835\udcc6 \ud835\udcc7 \ud835\udcc8 \ud835\udcc9 \ud835\udcca \ud835\udccb \ud835\udccc \ud835\udccd \ud835\udcce \ud835\udccf \u2113".split(" ");this.capitalLatinBoldScript="\ud835\udcd0 \ud835\udcd1 \ud835\udcd2 \ud835\udcd3 \ud835\udcd4 \ud835\udcd5 \ud835\udcd6 \ud835\udcd7 \ud835\udcd8 \ud835\udcd9 \ud835\udcda \ud835\udcdb \ud835\udcdc \ud835\udcdd \ud835\udcde \ud835\udcdf \ud835\udce0 \ud835\udce1 \ud835\udce2 \ud835\udce3 \ud835\udce4 \ud835\udce5 \ud835\udce6 \ud835\udce7 \ud835\udce8 \ud835\udce9".split(" ");
-this.smallLatinBoldScript="\ud835\udcea \ud835\udceb \ud835\udcec \ud835\udced \ud835\udcee \ud835\udcef \ud835\udcf0 \ud835\udcf1 \ud835\udcf2 \ud835\udcf3 \ud835\udcf4 \ud835\udcf5 \ud835\udcf6 \ud835\udcf7 \ud835\udcf8 \ud835\udcf9 \ud835\udcfa \ud835\udcfb \ud835\udcfc \ud835\udcfd \ud835\udcfe \ud835\udcff \ud835\udd00 \ud835\udd01 \ud835\udd02 \ud835\udd03".split(" ");this.capitalLatinFraktur="\ud835\udd04 \ud835\udd05 \u212d \ud835\udd07 \ud835\udd08 \ud835\udd09 \ud835\udd0a \u210c \u2111 \ud835\udd0d \ud835\udd0e \ud835\udd0f \ud835\udd10 \ud835\udd11 \ud835\udd12 \ud835\udd13 \ud835\udd14 \u211c \ud835\udd16 \ud835\udd17 \ud835\udd18 \ud835\udd19 \ud835\udd1a \ud835\udd1b \ud835\udd1c \u2128".split(" ");
-this.smallLatinFraktur="\ud835\udd1e \ud835\udd1f \ud835\udd20 \ud835\udd21 \ud835\udd22 \ud835\udd23 \ud835\udd24 \ud835\udd25 \ud835\udd26 \ud835\udd27 \ud835\udd28 \ud835\udd29 \ud835\udd2a \ud835\udd2b \ud835\udd2c \ud835\udd2d \ud835\udd2e \ud835\udd2f \ud835\udd30 \ud835\udd31 \ud835\udd32 \ud835\udd33 \ud835\udd34 \ud835\udd35 \ud835\udd36 \ud835\udd37".split(" ");this.capitalLatinDoubleStruck="\ud835\udd38 \ud835\udd39 \u2102 \ud835\udd3b \ud835\udd3c \ud835\udd3d \ud835\udd3e \u210d \ud835\udd40 \ud835\udd41 \ud835\udd42 \ud835\udd43 \ud835\udd44 \u2115 \ud835\udd46 \u2119 \u211a \u211d \ud835\udd4a \ud835\udd4b \ud835\udd4c \ud835\udd4d \ud835\udd4e \ud835\udd4f \ud835\udd50 \u2124".split(" ");
-this.smallLatinDoubleStruck="\ud835\udd52 \ud835\udd53 \ud835\udd54 \ud835\udd55 \ud835\udd56 \ud835\udd57 \ud835\udd58 \ud835\udd59 \ud835\udd5a \ud835\udd5b \ud835\udd5c \ud835\udd5d \ud835\udd5e \ud835\udd5f \ud835\udd60 \ud835\udd61 \ud835\udd62 \ud835\udd63 \ud835\udd64 \ud835\udd65 \ud835\udd66 \ud835\udd67 \ud835\udd68 \ud835\udd69 \ud835\udd6a \ud835\udd6b".split(" ");this.capitalLatinBoldFraktur="\ud835\udd6c \ud835\udd6d \ud835\udd6e \ud835\udd6f \ud835\udd70 \ud835\udd71 \ud835\udd72 \ud835\udd73 \ud835\udd74 \ud835\udd75 \ud835\udd76 \ud835\udd77 \ud835\udd78 \ud835\udd79 \ud835\udd7a \ud835\udd7b \ud835\udd7c \ud835\udd7d \ud835\udd7e \ud835\udd7f \ud835\udd80 \ud835\udd81 \ud835\udd82 \ud835\udd83 \ud835\udd84 \ud835\udd85".split(" ");
-this.smallLatinBoldFraktur="\ud835\udd86 \ud835\udd87 \ud835\udd88 \ud835\udd89 \ud835\udd8a \ud835\udd8b \ud835\udd8c \ud835\udd8d \ud835\udd8e \ud835\udd8f \ud835\udd90 \ud835\udd91 \ud835\udd92 \ud835\udd93 \ud835\udd94 \ud835\udd95 \ud835\udd96 \ud835\udd97 \ud835\udd98 \ud835\udd99 \ud835\udd9a \ud835\udd9b \ud835\udd9c \ud835\udd9d \ud835\udd9e \ud835\udd9f".split(" ");this.capitalLatinSansSerif="\ud835\udda0 \ud835\udda1 \ud835\udda2 \ud835\udda3 \ud835\udda4 \ud835\udda5 \ud835\udda6 \ud835\udda7 \ud835\udda8 \ud835\udda9 \ud835\uddaa \ud835\uddab \ud835\uddac \ud835\uddad \ud835\uddae \ud835\uddaf \ud835\uddb0 \ud835\uddb1 \ud835\uddb2 \ud835\uddb3 \ud835\uddb4 \ud835\uddb5 \ud835\uddb6 \ud835\uddb7 \ud835\uddb8 \ud835\uddb9".split(" ");
-this.smallLatinSansSerif="\ud835\uddba \ud835\uddbb \ud835\uddbc \ud835\uddbd \ud835\uddbe \ud835\uddbf \ud835\uddc0 \ud835\uddc1 \ud835\uddc2 \ud835\uddc3 \ud835\uddc4 \ud835\uddc5 \ud835\uddc6 \ud835\uddc7 \ud835\uddc8 \ud835\uddc9 \ud835\uddca \ud835\uddcb \ud835\uddcc \ud835\uddcd \ud835\uddce \ud835\uddcf \ud835\uddd0 \ud835\uddd1 \ud835\uddd2 \ud835\uddd3".split(" ");this.capitalLatinSansSerifBold="\ud835\uddd4 \ud835\uddd5 \ud835\uddd6 \ud835\uddd7 \ud835\uddd8 \ud835\uddd9 \ud835\uddda \ud835\udddb \ud835\udddc \ud835\udddd \ud835\uddde \ud835\udddf \ud835\udde0 \ud835\udde1 \ud835\udde2 \ud835\udde3 \ud835\udde4 \ud835\udde5 \ud835\udde6 \ud835\udde7 \ud835\udde8 \ud835\udde9 \ud835\uddea \ud835\uddeb \ud835\uddec \ud835\udded".split(" ");
-this.smallLatinSansSerifBold="\ud835\uddee \ud835\uddef \ud835\uddf0 \ud835\uddf1 \ud835\uddf2 \ud835\uddf3 \ud835\uddf4 \ud835\uddf5 \ud835\uddf6 \ud835\uddf7 \ud835\uddf8 \ud835\uddf9 \ud835\uddfa \ud835\uddfb \ud835\uddfc \ud835\uddfd \ud835\uddfe \ud835\uddff \ud835\ude00 \ud835\ude01 \ud835\ude02 \ud835\ude03 \ud835\ude04 \ud835\ude05 \ud835\ude06 \ud835\ude07".split(" ");this.capitalLatinSansSerifItalic="\ud835\ude08 \ud835\ude09 \ud835\ude0a \ud835\ude0b \ud835\ude0c \ud835\ude0d \ud835\ude0e \ud835\ude0f \ud835\ude10 \ud835\ude11 \ud835\ude12 \ud835\ude13 \ud835\ude14 \ud835\ude15 \ud835\ude16 \ud835\ude17 \ud835\ude18 \ud835\ude19 \ud835\ude1a \ud835\ude1b \ud835\ude1c \ud835\ude1d \ud835\ude1e \ud835\ude1f \ud835\ude20 \ud835\ude21".split(" ");
-this.smallLatinSansSerifItalic="\ud835\ude22 \ud835\ude23 \ud835\ude24 \ud835\ude25 \ud835\ude26 \ud835\ude27 \ud835\ude28 \ud835\ude29 \ud835\ude2a \ud835\ude2b \ud835\ude2c \ud835\ude2d \ud835\ude2e \ud835\ude2f \ud835\ude30 \ud835\ude31 \ud835\ude32 \ud835\ude33 \ud835\ude34 \ud835\ude35 \ud835\ude36 \ud835\ude37 \ud835\ude38 \ud835\ude39 \ud835\ude3a \ud835\ude3b".split(" ");this.capitalLatinMonospace="\ud835\ude70 \ud835\ude71 \ud835\ude72 \ud835\ude73 \ud835\ude74 \ud835\ude75 \ud835\ude76 \ud835\ude77 \ud835\ude78 \ud835\ude79 \ud835\ude7a \ud835\ude7b \ud835\ude7c \ud835\ude7d \ud835\ude7e \ud835\ude7f \ud835\ude80 \ud835\ude81 \ud835\ude82 \ud835\ude83 \ud835\ude84 \ud835\ude85 \ud835\ude86 \ud835\ude87 \ud835\ude88 \ud835\ude89".split(" ");
-this.smallLatinMonospace="\ud835\ude8a \ud835\ude8b \ud835\ude8c \ud835\ude8d \ud835\ude8e \ud835\ude8f \ud835\ude90 \ud835\ude91 \ud835\ude92 \ud835\ude93 \ud835\ude94 \ud835\ude95 \ud835\ude96 \ud835\ude97 \ud835\ude98 \ud835\ude99 \ud835\ude9a \ud835\ude9b \ud835\ude9c \ud835\ude9d \ud835\ude9e \ud835\ude9f \ud835\udea0 \ud835\udea1 \ud835\udea2 \ud835\udea3".split(" ");this.latinDoubleStruckItalic=["\u2145","\u2146","\u2147","\u2148","\u2149"];this.capitalGreek="\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9".split("");
-this.smallGreek="\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9".split("");this.capitalGreekBold="\ud835\udea8 \ud835\udea9 \ud835\udeaa \ud835\udeab \ud835\udeac \ud835\udead \ud835\udeae \ud835\udeaf \ud835\udeb0 \ud835\udeb1 \ud835\udeb2 \ud835\udeb3 \ud835\udeb4 \ud835\udeb5 \ud835\udeb6 \ud835\udeb7 \ud835\udeb8 \ud835\udeba \ud835\udebb \ud835\udebc \ud835\udebd \ud835\udebe \ud835\udebf \ud835\udec0".split(" ");
-this.smallGreekBold="\ud835\udec2 \ud835\udec3 \ud835\udec4 \ud835\udec5 \ud835\udec6 \ud835\udec7 \ud835\udec8 \ud835\udec9 \ud835\udeca \ud835\udecb \ud835\udecc \ud835\udecd \ud835\udece \ud835\udecf \ud835\uded0 \ud835\uded1 \ud835\uded2 \ud835\uded3 \ud835\uded4 \ud835\uded5 \ud835\uded6 \ud835\uded7 \ud835\uded8 \ud835\uded9 \ud835\udeda".split(" ");this.capitalGreekItalic="\ud835\udee2 \ud835\udee3 \ud835\udee4 \ud835\udee5 \ud835\udee6 \ud835\udee7 \ud835\udee8 \ud835\udee9 \ud835\udeea \ud835\udeeb \ud835\udeec \ud835\udeed \ud835\udeee \ud835\udeef \ud835\udef0 \ud835\udef1 \ud835\udef2 \ud835\udef4 \ud835\udef5 \ud835\udef6 \ud835\udef7 \ud835\udef8 \ud835\udef9 \ud835\udefa".split(" ");
-this.smallGreekItalic="\ud835\udefc \ud835\udefd \ud835\udefe \ud835\udeff \ud835\udf00 \ud835\udf01 \ud835\udf02 \ud835\udf03 \ud835\udf04 \ud835\udf05 \ud835\udf06 \ud835\udf07 \ud835\udf08 \ud835\udf09 \ud835\udf0a \ud835\udf0b \ud835\udf0c \ud835\udf0d \ud835\udf0e \ud835\udf0f \ud835\udf10 \ud835\udf11 \ud835\udf12 \ud835\udf13 \ud835\udf14".split(" ");this.capitalGreekSansSerifBold="\ud835\udf56 \ud835\udf57 \ud835\udf58 \ud835\udf59 \ud835\udf5a \ud835\udf5b \ud835\udf5c \ud835\udf5d \ud835\udf5e \ud835\udf5f \ud835\udf60 \ud835\udf61 \ud835\udf62 \ud835\udf63 \ud835\udf64 \ud835\udf65 \ud835\udf66 \ud835\udf68 \ud835\udf69 \ud835\udf6a \ud835\udf6b \ud835\udf6c \ud835\udf6d \ud835\udf6e".split(" ");
-this.smallGreekSansSerifBold="\ud835\udf70 \ud835\udf71 \ud835\udf72 \ud835\udf73 \ud835\udf74 \ud835\udf75 \ud835\udf76 \ud835\udf77 \ud835\udf78 \ud835\udf79 \ud835\udf7a \ud835\udf7b \ud835\udf7c \ud835\udf7d \ud835\udf7e \ud835\udf7f \ud835\udf80 \ud835\udf81 \ud835\udf82 \ud835\udf83 \ud835\udf84 \ud835\udf85 \ud835\udf86 \ud835\udf87 \ud835\udf88".split(" ");this.greekDoubleStruck=["\u213c","\u213d","\u213e","\u213f"];this.hebrewLetters=["\u2135","\u2136","\u2137","\u2138"];this.additions="+\u00b1\u2213\u2214\u2227\u2228\u2229\u222a\u228c\u2293\u2294\u229d\u229e\u22a4\u22a5\u22ba\u22bb\u22bc\u22c4\u22ce\u22cf\u22d2\u22d3\u25b3\u25b7\u25bd\u25c1\u2a5e\u2295".split("");
-this.invisiblePlus_=cvox.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications="\u2020\u2021\u2210\u2217\u2218\u2219\u2240\u229a\u229b\u22a0\u22a1\u22c5\u22c6\u22c7\u22c9\u22ca\u22cb\u22cc\u25cb".split("");this.invisibleTimes_=cvox.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions="-\u2052\u207b\u208b\u2212\u2216\u2238\u2242\u2296\u229f\u2796\u2a29\u2a2a\u2a2b\u2a2c\u2a3a\u2a41\u2a6c\ufe63\uff0d\u2010\u2011".split("");
-this.divisions="/\u00f7\u2044\u2215\u2298\u27cc\u29bc\u2a38".split("");this.functionApplication_=cvox.SemanticUtil.numberToUnicode(8289);this.equalities="=~\u207c\u208c\u223c\u223d\u2243\u2245\u2248\u224a\u224b\u224c\u224d\u224e\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2263\u29e4\u2a66\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u22d5\u2a6d\u2a6a\u2a6b\u2a6c\ufe66\uff1d".split("");this.inequalities="<>\u2241\u2242\u2244\u2246\u2247\u2249\u224f\u2250\u2260\u2262\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2af7\u2af8\u2af9\u2afa\u29c0\u29c1\ufe64\ufe65\uff1c\uff1e".split("");
-this.relations=[];this.arrows="\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219a\u219b\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21ae\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cd\u21ce\u21cf\u21d0\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2301\u2303\u2304\u2324\u238b\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u29b3\u29b4\u29bd\u29ea\u29ec\u29ed\u2a17\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\uffe9\uffea\uffeb\uffec\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21cb\u21cc\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u297c\u297d\u297e\u297f".split("");
-this.sumOps="\u2140\u220f\u2210\u2211\u22c0\u22c1\u22c2\u22c3\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2afc\u2aff".split("");this.intOps="\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c".split("");this.prefixOps=["\u2200","\u2203"];this.digitsNormal="0123456789".split("");this.digitsFullWidth="\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19".split("");
-this.digitsBold="\ud835\udfce \ud835\udfcf \ud835\udfd0 \ud835\udfd1 \ud835\udfd2 \ud835\udfd3 \ud835\udfd4 \ud835\udfd5 \ud835\udfd6 \ud835\udfd7".split(" ");this.digitsDoubleStruck="\ud835\udfd8 \ud835\udfd9 \ud835\udfda \ud835\udfdb \ud835\udfdc \ud835\udfdd \ud835\udfde \ud835\udfdf \ud835\udfe0 \ud835\udfe1".split(" ");this.digitsSansSerif="\ud835\udfe2 \ud835\udfe3 \ud835\udfe4 \ud835\udfe5 \ud835\udfe6 \ud835\udfe7 \ud835\udfe8 \ud835\udfe9 \ud835\udfea \ud835\udfeb".split(" ");this.digitsSansSerifBold=
-"\ud835\udfec \ud835\udfed \ud835\udfee \ud835\udfef \ud835\udff0 \ud835\udff1 \ud835\udff2 \ud835\udff3 \ud835\udff4 \ud835\udff5".split(" ");this.digitsMonospace="\ud835\udff6 \ud835\udff7 \ud835\udff8 \ud835\udff9 \ud835\udffa \ud835\udffb \ud835\udffc \ud835\udffd \ud835\udffe \ud835\udfff".split(" ");this.digitsSuperscript="\u00b2\u00b3\u00b9\u2070\u2074\u2075\u2076\u2077\u2078\u2079".split("");this.digitsSubscript="\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089".split("");this.fractions=
-"\u00bc\u00bd\u00be\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2189".split("");this.enclosedNumbers="\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf".split("");
-this.fencedNumbers="\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487".split("");this.punctuatedNumbers="\u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496 \u2497 \u2498 \u2499 \u249a \u249b \ud83c\udd00 \ud83c\udd01 \ud83c\udd02 \ud83c\udd03 \ud83c\udd04 \ud83c\udd05 \ud83c\udd06 \ud83c\udd07 \ud83c\udd08 \ud83c\udd09 \ud83c\udd0a".split(" ");this.numbers=this.fractions.concat(this.digitsSuperscript,
-this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.trigonometricFunctions="cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan".split(" ");this.hyperbolicFunctions="cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh".split(" ");this.algebraicFunctions="deg det dim hom ker Tr tr".split(" ");this.elementaryFunctions="log ln lg exp expt gcd gcd arg im re Pr".split(" ");this.prefixFunctions=
-this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions="inf lim liminf limsup max min sup injlim projlim".split(" ");this.infixFunctions=["mod","rem"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.ellipses,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:cvox.SemanticAttr.Type.PUNCTUATION,
-role:cvox.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.DASH},{set:this.primes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.PRIME},{set:this.leftFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.OPEN},{set:this.rightFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.CLOSE},{set:this.topFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.TOP},{set:this.bottomFences,
-type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},
-{set:this.smallLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.smallLatinFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.capitalLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCKITALIC},
-{set:this.smallGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,
-font:cvox.SemanticAttr.Font.BOLD},{set:this.smallGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallGreekSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.greekDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.hebrewLetters,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.OTHERLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsNormal,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.digitsSansSerif,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER},{set:this.additions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.ADDITION},
-{set:this.multiplications,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:cvox.SemanticAttr.Type.PREFIXOP,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.equalities,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.EQUALITY},{set:this.inequalities,
-type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.ARROW},{set:this.sumOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.SUM},{set:this.intOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.LIMFUNC},
-{set:this.prefixFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION}]};goog.addSingletonGetter(cvox.SemanticAttr);
-cvox.SemanticAttr.Type={PUNCTUATION:"punctuation",FENCE:"fence",NUMBER:"number",IDENTIFIER:"identifier",TEXT:"text",OPERATOR:"operator",RELATION:"relation",LARGEOP:"largeop",FUNCTION:"function",ACCENT:"accent",FENCED:"fenced",FRACTION:"fraction",PUNCTUATED:"punctuated",RELSEQ:"relseq",MULTIREL:"multirel",INFIXOP:"infixop",PREFIXOP:"prefixop",POSTFIXOP:"postfixop",APPL:"appl",INTEGRAL:"integral",BIGOP:"bigop",SQRT:"sqrt",ROOT:"root",LIMUPPER:"limupper",LIMLOWER:"limlower",LIMBOTH:"limboth",SUBSCRIPT:"subscript",
-SUPERSCRIPT:"superscript",UNDERSCORE:"underscore",OVERSCORE:"overscore",TABLE:"table",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",ROW:"row",LINE:"line",CELL:"cell",UNKNOWN:"unknown",EMPTY:"empty"};
-cvox.SemanticAttr.Role={ELLIPSIS:"ellipsis",FULLSTOP:"fullstop",DASH:"dash",PRIME:"prime",VBAR:"vbar",OPENFENCE:"openfence",CLOSEFENCE:"closefence",APPLICATION:"application",OPEN:"open",CLOSE:"close",TOP:"top",BOTTOM:"bottom",NEUTRAL:"neutral",LATINLETTER:"latinletter",GREEKLETTER:"greekletter",OTHERLETTER:"otherletter",INTEGER:"integer",FLOAT:"float",OTHERNUMBER:"othernumber",MULTIACCENT:"multiaccent",OVERACCENT:"overaccent",UNDERACCENT:"underaccent",LEFTRIGHT:"leftright",ABOVEBELOW:"abovebelow",
-SEQUENCE:"sequence",ENDPUNCT:"endpunct",STARTPUNCT:"startpunct",NEGATIVE:"negative",NEGATION:"negation",MULTIOP:"multiop",LIMFUNC:"limit function",INFIXFUNC:"infix function",PREFIXFUNC:"prefix function",POSTFIXFUNC:"postfix function",SUM:"sum",INTEGRAL:"integral",ADDITION:"addition",MULTIPLICATION:"multiplication",DIVISION:"division",SUBTRACTION:"subtraction",IMPLICIT:"implicit",EQUALITY:"equality",INEQUALITY:"inequality",ELEMENT:"element",BINREL:"binrel",ARROW:"arrow",MULTILINE:"multiline",MATRIX:"matrix",
-VECTOR:"vector",CASES:"cases",TABLE:"table",UNKNOWN:"unknown"};cvox.SemanticAttr.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",DOUBLESTRUCK:"double-struck",DOUBLESTRUCKITALIC:"double-struck-italic",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",UNKNOWN:"unknown"};
-cvox.SemanticAttr.lookupMeaning=function(a){return cvox.SemanticAttr.getInstance().lookupMeaning_(a)};cvox.SemanticAttr.invisibleTimes=function(){return cvox.SemanticAttr.getInstance().invisibleTimes_};cvox.SemanticAttr.invisibleComma=function(){return cvox.SemanticAttr.getInstance().invisibleComma_};cvox.SemanticAttr.functionApplication=function(){return cvox.SemanticAttr.getInstance().functionApplication_};
-cvox.SemanticAttr.isMatchingFenceRole=function(a,b){return a==cvox.SemanticAttr.Role.OPEN&&b==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL&&b==cvox.SemanticAttr.Role.NEUTRAL||a==cvox.SemanticAttr.Role.TOP&&b==cvox.SemanticAttr.Role.BOTTOM};cvox.SemanticAttr.isMatchingFence=function(a,b){return cvox.SemanticAttr.getInstance().isMatchingFence_(a,b)};cvox.SemanticAttr.isOpeningFence=function(a){return a==cvox.SemanticAttr.Role.OPEN||a==cvox.SemanticAttr.Role.NEUTRAL};
-cvox.SemanticAttr.isClosingFence=function(a){return a==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL};cvox.SemanticAttr.isCharacterD=function(a){var b="d \u2146 \uff44 \ud835\udc1d \ud835\udc51 \ud835\udcb9 \ud835\udced \ud835\udd21 \ud835\udd55 \ud835\udd89 \ud835\uddbd \ud835\uddf1 \ud835\ude25 \ud835\ude8d".split(" ");return-1!=b.indexOf(a)};
-cvox.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};
-cvox.SemanticAttr.prototype.lookupMeaning_=function(a){for(var b=0,c;c=this.symbolSetToSemantic_[b];b++)if(-1!=c.set.indexOf(a))return{role:c.role||cvox.SemanticAttr.Role.UNKNOWN,type:c.type||cvox.SemanticAttr.Type.UNKNOWN,font:c.font||cvox.SemanticAttr.Font.UNKNOWN};return{role:cvox.SemanticAttr.Role.UNKNOWN,type:cvox.SemanticAttr.Type.UNKNOWN,font:cvox.SemanticAttr.Font.UNKNOWN}};cvox.SemanticTree=function(a){this.idCounter_=0;this.mathml=a;this.root=this.parseMathml_(a)};cvox.SemanticTree.Node=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=cvox.SemanticAttr.Type.UNKNOWN;this.role=cvox.SemanticAttr.Role.UNKNOWN;this.font=cvox.SemanticAttr.Font.UNKNOWN;this.childNodes=[];this.textContent="";this.contentNodes=[]};
-cvox.SemanticTree.Node.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};cvox.SemanticTree.prototype.xml=function(a){var b=new DOMParser,b=b.parseFromString("<stree></stree>","text/xml");a=this.root.xml(b,a);b.childNodes[0].appendChild(a);return b.childNodes[0]};
-cvox.SemanticTree.Node.prototype.xml=function(a,b){var c=function(c,d){for(var g=d.map(function(c){return c.xml(a,b)}),h=a.createElement(c),k=0,l;l=g[k];k++)h.appendChild(l);return h},d=a.createElement(this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c("content",this.contentNodes));0<this.childNodes.length&&d.appendChild(c("children",this.childNodes));return d};cvox.SemanticTree.prototype.toString=function(a){var b=new XMLSerializer;return b.serializeToString(this.xml(a))};
-cvox.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return cvox.SemanticTree.formatXml(a)};cvox.SemanticTree.formatXml=function(a){var b=/(>)(<)(\/*)/g;a=a.replace(b,"$1\r\n$2$3");b=/(>)(.+)(<c)/g;a=a.replace(b,"$1\r\n$2\r\n$3");var c="",d="";a.split("\r\n").forEach(function(a){a.match(/.+<\/\w[^>]*>$/)?c+=d+a+"\r\n":a.match(/^<\/\w/)?d&&(d=d.slice(2),c+=d+a+"\r\n"):a.match(/^<\w[^>]*[^\/]>.*$/)?(c+=d+a+"\r\n",d+=" "):c+=d+a+"\r\n"});return c};
-cvox.SemanticTree.Node.prototype.toString=function(a){var b=new XMLSerializer,c=new DOMParser,c=c.parseFromString("","text/xml");return b.serializeToString(this.xml(c,a))};cvox.SemanticTree.Node.prototype.xmlAttributes_=function(a){a.setAttribute("role",this.role);this.font!=cvox.SemanticAttr.Font.UNKNOWN&&a.setAttribute("font",this.font);a.setAttribute("id",this.id)};cvox.SemanticTree.prototype.createNode_=function(){return new cvox.SemanticTree.Node(this.idCounter_++)};
-cvox.SemanticTree.Node.prototype.updateContent_=function(a){a=a.trim();if(this.textContent!=a){var b=cvox.SemanticAttr.lookupMeaning(a);this.textContent=a;this.role=b.role;this.type=b.type;this.font=b.font}};cvox.SemanticTree.Node.prototype.addMathmlNodes_=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};cvox.SemanticTree.Node.prototype.appendChild_=function(a){this.childNodes.push(a);this.addMathmlNodes_(a.mathml);a.parent=this};
-cvox.SemanticTree.Node.prototype.appendContentNode_=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes_(a.mathml),a.parent=this)};
-cvox.SemanticTree.prototype.parseMathml_=function(a){var b=cvox.DomUtil.toArray(a.children);switch(cvox.SemanticUtil.tagName(a)){case "MATH":case "MROW":case "MPADDED":case "MSTYLE":return b=cvox.SemanticUtil.purgeNodes(b),1==b.length?this.parseMathml_(b[0]):this.processRow_(this.parseMathmlChildren_(b));case "MFRAC":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.FRACTION,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]),a.role=cvox.SemanticAttr.Role.DIVISION,a;case "MSUB":case "MSUP":case "MSUBSUP":case "MOVER":case "MUNDER":case "MUNDEROVER":return this.makeLimitNode_(cvox.SemanticUtil.tagName(a),
-this.parseMathmlChildren_(b));case "MROOT":return this.makeBranchNode_(cvox.SemanticAttr.Type.ROOT,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]);case "MSQRT":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),this.makeBranchNode_(cvox.SemanticAttr.Type.SQRT,[this.processRow_(b)],[]);case "MTABLE":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.TABLE,this.parseMathmlChildren_(b),[]),cvox.SemanticTree.tableIsMultiline_(a)&&this.tableToMultiline_(a),a;case "MTR":return a=
-this.makeBranchNode_(cvox.SemanticAttr.Type.ROW,this.parseMathmlChildren_(b),[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTD":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),a=this.makeBranchNode_(cvox.SemanticAttr.Type.CELL,[this.processRow_(b)],[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTEXT":return a=this.makeLeafNode_(a),a.type=cvox.SemanticAttr.Type.TEXT,a;case "MI":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.IDENTIFIER),
-a;case "MN":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.NUMBER),a;case "MO":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.OPERATOR),a;default:return this.makeUnprocessed_(a)}};cvox.SemanticTree.prototype.parseMathmlChildren_=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parseMathml_(d));return b};
-cvox.SemanticTree.prototype.makeUnprocessed_=function(a){var b=this.createNode_();b.mathml=[a];return b};cvox.SemanticTree.prototype.makeEmptyNode_=function(){var a=this.createNode_();a.type=cvox.SemanticAttr.Type.EMPTY;return a};cvox.SemanticTree.prototype.makeLeafNode_=function(a){var b=this.createNode_();b.mathml=[a];b.updateContent_(a.textContent);b.font=a.getAttribute("mathvariant")||b.font;return b};
-cvox.SemanticTree.prototype.makeBranchNode_=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent_(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(a){a.parent=e;e.addMathmlNodes_(a.mathml)});return e};cvox.SemanticTree.prototype.makeImplicitNode_=function(a){if(1==a.length)return a[0];var b=this.createNode_();b.updateContent_(cvox.SemanticAttr.invisibleTimes());a=this.makeInfixNode_(a,b);a.role=cvox.SemanticAttr.Role.IMPLICIT;return a};
-cvox.SemanticTree.prototype.makeInfixNode_=function(a,b){return this.makeBranchNode_(cvox.SemanticAttr.Type.INFIXOP,a,[b],b.textContent)};cvox.SemanticTree.prototype.makeConcatNode_=function(a,b,c){if(0==b.length)return a;var d=b.map(function(a){return a.textContent}).join(" ");a=this.makeBranchNode_(c,[a],b,d);0<b.length&&(a.role=cvox.SemanticAttr.Role.MULTIOP);return a};
-cvox.SemanticTree.prototype.makePrefixNode_=function(a,b){for(var c=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.attrPred_("role","SUBTRACTION")),d=this.makeConcatNode_(a,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);0<c.rel.length;)d=this.makeConcatNode_(d,[c.rel.pop()],cvox.SemanticAttr.Type.PREFIXOP),d.role=cvox.SemanticAttr.Role.NEGATIVE,d=this.makeConcatNode_(d,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);return d};
-cvox.SemanticTree.prototype.makePostfixNode_=function(a,b){return this.makeConcatNode_(a,b,cvox.SemanticAttr.Type.POSTFIXOP)};cvox.SemanticTree.prototype.processRow_=function(a){if(0==a.length)return this.makeEmptyNode_();a=this.getFencesInRow_(a);a=this.processTablesInRow_(a);a=this.getPunctuationInRow_(a);a=this.getFunctionsInRow_(a);return this.processRelationsInRow_(a)};
-cvox.SemanticTree.prototype.processRelationsInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","RELATION")),c=b.rel[0];if(!c)return this.processOperationsInRow_(a);if(1==a.length)return a[0];a=b.comp.map(goog.bind(this.processOperationsInRow_,this));return b.rel.every(function(a){return a.textContent==c.textContent})?this.makeBranchNode_(cvox.SemanticAttr.Type.RELSEQ,a,b.rel,c.textContent):this.makeBranchNode_(cvox.SemanticAttr.Type.MULTIREL,a,b.rel)};
-cvox.SemanticTree.prototype.processOperationsInRow_=function(a){if(0==a.length)return this.makeEmptyNode_();if(1==a.length)return a[0];for(var b=[];0<a.length&&a[0].type==cvox.SemanticAttr.Type.OPERATOR;)b.push(a.shift());if(0==a.length)return this.makePrefixNode_(b.pop(),b);if(1==a.length)return this.makePrefixNode_(a[0],b);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));b=this.makePrefixNode_(this.makeImplicitNode_(a.head),b);return a.div?this.makeOperationsTree_(a.tail,
-b,a.div):b};
-cvox.SemanticTree.prototype.makeOperationsTree_=function(a,b,c,d){d=d||[];if(0==a.length)return d.unshift(c),b.type==cvox.SemanticAttr.Type.INFIXOP?(d=this.makePostfixNode_(b.childNodes.pop(),d),b.appendChild_(d),b):this.makePostfixNode_(b,d);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));if(0==a.head.length)return d.push(a.div),this.makeOperationsTree_(a.tail,b,c,d);d=this.makePrefixNode_(this.makeImplicitNode_(a.head),d);b=this.appendOperand_(b,c,d);return a.div?
-this.makeOperationsTree_(a.tail,b,a.div,[]):b};cvox.SemanticTree.prototype.appendOperand_=function(a,b,c){return a.type!=cvox.SemanticAttr.Type.INFIXOP?this.makeInfixNode_([a,c],b):this.appendExistingOperator_(a,b,c)?a:b.role==cvox.SemanticAttr.Role.MULTIPLICATION?this.appendMultiplicativeOp_(a,b,c):this.appendAdditiveOp_(a,b,c)};
-cvox.SemanticTree.prototype.appendMultiplicativeOp_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type==cvox.SemanticAttr.Type.INFIXOP;)d=e,e=d.childNodes[a.childNodes.length-1];b=this.makeInfixNode_([d.childNodes.pop(),c],b);d.appendChild_(b);return a};cvox.SemanticTree.prototype.appendAdditiveOp_=function(a,b,c){return this.makeInfixNode_([a,c],b)};
-cvox.SemanticTree.prototype.appendExistingOperator_=function(a,b,c){if(!a||a.type!=cvox.SemanticAttr.Type.INFIXOP)return!1;if(a.textContent==b.textContent)return a.appendContentNode_(b),a.appendChild_(c),!0;this.appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};cvox.SemanticTree.prototype.getFencesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","FENCE"));var b=a.comp.shift();return this.processFences_(a.rel,a.comp,[],[b])};
-cvox.SemanticTree.prototype.processFences_=function(a,b,c,d){if(0==a.length&&0==c.length)return d[0];var e=cvox.SemanticTree.attrPred_("role","OPEN");if(0==a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),cvox.SemanticTree.fenceToPunct_(b),a.push(b);else{c=cvox.SemanticTree.sliceNodes_(c,e);var f=c.head.length-1,g=this.processNeutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=c[c.length-1];g=a[0].role;
-if(g==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!=f.textContent))return c.push(a.shift()),d.push(b.shift()),this.processFences_(a,b,c,d);if(f&&(g==cvox.SemanticAttr.Role.CLOSE&&f.role==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&a[0].textContent==f.textContent))return e=this.makeHorizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c,d);if(f&&g==cvox.SemanticAttr.Role.CLOSE&&f.role==
-cvox.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=cvox.SemanticTree.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=this.processNeutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=this.makeHorizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c.head,d);e=a.shift();cvox.SemanticTree.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return this.processFences_(a,b,c,d)};
-cvox.SemanticTree.prototype.processNeutralFences_=function(a,b){if(0==a.length)return a;if(1==a.length)return cvox.SemanticTree.fenceToPunct_(a[0]),a;var c=a.shift(),d=cvox.SemanticTree.sliceNodes_(a,function(a){return a.textContent==c.textContent});if(!d.div){cvox.SemanticTree.fenceToPunct_(c);var e=b.shift();e.unshift(c);return e.concat(this.processNeutralFences_(a,b))}var f=this.combineFencedContent_(c,d.div,d.head,b);return 0<d.tail.length?(e=f.shift(),d=this.processNeutralFences_(d.tail,f),e.concat(d)):
-f[0]};cvox.SemanticTree.prototype.combineFencedContent_=function(a,b,c,d){if(0==c.length)return a=this.makeHorizontalFencedNode_(a,b,d.shift()),d.unshift(a),d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=this.processNeutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=this.makeHorizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};
-cvox.SemanticTree.fenceToPunct_=function(a){a.type=cvox.SemanticAttr.Type.PUNCTUATION;switch(a.role){case cvox.SemanticAttr.Role.NEUTRAL:a.role=cvox.SemanticAttr.Role.VBAR;break;case cvox.SemanticAttr.Role.OPEN:a.role=cvox.SemanticAttr.Role.OPENFENCE;break;case cvox.SemanticAttr.Role.CLOSE:a.role=cvox.SemanticAttr.Role.CLOSEFENCE}};
-cvox.SemanticTree.prototype.makeHorizontalFencedNode_=function(a,b,c){c=this.processRow_(c);b=this.makeBranchNode_(cvox.SemanticAttr.Type.FENCED,[c],[a,b]);b.role=a.role==cvox.SemanticAttr.Role.OPEN?cvox.SemanticAttr.Role.LEFTRIGHT:a.role;return b};
-cvox.SemanticTree.prototype.getPunctuationInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,function(a){return cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)&&!cvox.SemanticTree.attrPred_("role","ELLIPSIS")(a)});if(0==b.rel.length)return a;a=[];var c=b.comp.shift();0<c.length&&a.push(this.processRow_(c));for(var d=0;0<b.comp.length;)a.push(b.rel[d++]),c=b.comp.shift(),0<c.length&&a.push(this.processRow_(c));return[this.makePunctuatedNode_(a,b.rel)]};
-cvox.SemanticTree.prototype.makePunctuatedNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.PUNCTUATED,a,b);c.role=1==b.length&&a[0].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.STARTPUNCT:1==b.length&&a[a.length-1].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.ENDPUNCT:cvox.SemanticAttr.Role.SEQUENCE;return c};
-cvox.SemanticTree.prototype.makeLimitNode_=function(a,b){var c=b[0],d=cvox.SemanticTree.attrPred_("type","FUNCTION")(c),d=cvox.SemanticTree.attrPred_("type","LARGEOP")(c)||cvox.SemanticTree.attrPred_("type","LIMBOTH")(c)||cvox.SemanticTree.attrPred_("type","LIMLOWER")(c)||cvox.SemanticTree.attrPred_("type","LIMUPPER")(c)||d&&cvox.SemanticTree.attrPred_("role","LIMFUNC")(c),e=cvox.SemanticAttr.Type.UNKNOWN;if(d)switch(a){case "MSUB":case "MUNDER":e=cvox.SemanticAttr.Type.LIMLOWER;break;case "MSUP":case "MOVER":e=
-cvox.SemanticAttr.Type.LIMUPPER;break;case "MSUBSUP":case "MUNDEROVER":e=cvox.SemanticAttr.Type.LIMBOTH}else switch(a){case "MSUB":e=cvox.SemanticAttr.Type.SUBSCRIPT;break;case "MSUP":e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MSUBSUP":d=this.makeBranchNode_(cvox.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=c.role;b=[d,b[2]];e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MOVER":e=cvox.SemanticAttr.Type.OVERSCORE;break;case "MUNDER":e=cvox.SemanticAttr.Type.UNDERSCORE;break;default:d=this.makeBranchNode_(cvox.SemanticAttr.Type.UNDERSCORE,
-[c,b[1]],[]),d.role=c.role,b=[d,b[2]],e=cvox.SemanticAttr.Type.OVERSCORE}d=this.makeBranchNode_(e,b,[]);d.role=c.role;return d};cvox.SemanticTree.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0==a.length)return b;var c=a.shift(),d=cvox.SemanticTree.classifyFunction_(c,a);if(!d)return b.push(c),this.getFunctionsInRow_(a,b);var e=this.getFunctionsInRow_(a,[]),c=this.getFunctionArgs_(c,e,d);return b.concat(c)};
-cvox.SemanticTree.classifyFunction_=function(a,b){if(a.type==cvox.SemanticAttr.Type.APPL||a.type==cvox.SemanticAttr.Type.BIGOP||a.type==cvox.SemanticAttr.Type.INTEGRAL)return"";if(b[0]&&b[0].textContent==cvox.SemanticAttr.functionApplication())return b.shift(),cvox.SemanticTree.propagatePrefixFunc_(a),"prefix";switch(a.role){case cvox.SemanticAttr.Role.INTEGRAL:return"integral";case cvox.SemanticAttr.Role.SUM:return"bigop";case cvox.SemanticAttr.Role.PREFIXFUNC:case cvox.SemanticAttr.Role.LIMFUNC:return"prefix";
-default:if(a.type==cvox.SemanticAttr.Type.IDENTIFIER)return"simple"}return""};cvox.SemanticTree.propagatePrefixFunc_=function(a){a&&(a.role=cvox.SemanticAttr.Role.PREFIXFUNC,cvox.SemanticTree.propagatePrefixFunc_(a.childNodes[0]))};
-cvox.SemanticTree.prototype.getFunctionArgs_=function(a,b,c){switch(c){case "integral":return b=this.getIntegralArgs_(b),c=this.processRow_(b.integrand),a=this.makeIntegralNode_(a,c,b.intvar),b.rest.unshift(a),b.rest;case "prefix":if(b[0]&&b[0].type==cvox.SemanticAttr.Type.FENCED)return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;case "bigop":b=cvox.SemanticTree.sliceNodes_(b,cvox.SemanticTree.prefixFunctionBoundary_);var d=this.processRow_(b.head);a="prefix"==c?this.makeFunctionNode_(a,
-d):this.makeBigOpNode_(a,d);b.div&&b.tail.unshift(b.div);b.tail.unshift(a);return b.tail;case "simple":if(0==b.length)return[a];c=b[0];if(c.type==cvox.SemanticAttr.Type.FENCED&&c.role!=cvox.SemanticAttr.Role.NEUTRAL&&this.simpleFunctionHeuristic_(c))return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;b.unshift(a);return b}};
-cvox.SemanticTree.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0==a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(cvox.SemanticTree.generalFunctionBoundary_(c))return{integrand:b,intvar:null,rest:a};if(cvox.SemanticTree.integralDxBoundarySingle_(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&cvox.SemanticTree.integralDxBoundary_(c,a[1])){var d=this.createNode_();d.updateContent_(cvox.SemanticAttr.invisibleComma());c=this.makePunctuatedNode_([c,d,a[1]],[d]);c.role=cvox.SemanticAttr.Role.INTEGRAL;
-return{integrand:b,intvar:c,rest:a.slice(2)}}b.push(a.shift());return this.getIntegralArgs_(a,b)};cvox.SemanticTree.prototype.makeFunctionNode_=function(a,b){var c=this.createNode_();c.updateContent_(cvox.SemanticAttr.functionApplication());c.type=cvox.SemanticAttr.Type.PUNCTUATION;c.role=cvox.SemanticAttr.Role.APPLICATION;c=this.makeBranchNode_(cvox.SemanticAttr.Type.APPL,[a,b],[c]);c.role=a.role;return c};
-cvox.SemanticTree.prototype.makeBigOpNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.BIGOP,[a,b],[]);c.role=a.role;return c};cvox.SemanticTree.prototype.makeIntegralNode_=function(a,b,c){b=b||this.makeEmptyNode_();c=c||this.makeEmptyNode_();b=this.makeBranchNode_(cvox.SemanticAttr.Type.INTEGRAL,[a,b,c],[]);b.role=a.role;return b};
-cvox.SemanticTree.prototype.simpleFunctionHeuristic_=function(a){a=a.childNodes;if(0==a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!=cvox.SemanticAttr.Type.INFIXOP||a.role==cvox.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(cvox.SemanticTree.attrPred_("type","INFIXOP"))?!0:!1};cvox.SemanticTree.prefixFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","OPERATOR")(a)||cvox.SemanticTree.generalFunctionBoundary_(a)};
-cvox.SemanticTree.integralDxBoundary_=function(a,b){return!!b&&cvox.SemanticTree.attrPred_("type","IDENTIFIER")(b)&&cvox.SemanticAttr.isCharacterD(a.textContent)};cvox.SemanticTree.integralDxBoundarySingle_=function(a){if(cvox.SemanticTree.attrPred_("type","IDENTIFIER")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&cvox.SemanticAttr.isCharacterD(b)}return!1};
-cvox.SemanticTree.generalFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","RELATION")(a)||cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)};
-cvox.SemanticTree.prototype.processTablesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.tableIsMatrixOrVector_);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(this.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.isTableOrMultiline_);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();cvox.SemanticTree.tableIsCases_(d,e)&&this.tableToCases_(d,e.pop());b=b.concat(e);b.push(d)}return b.concat(a.comp.shift())};
-cvox.SemanticTree.isTableOrMultiline_=function(a){return!!a&&(cvox.SemanticTree.attrPred_("type","TABLE")(a)||cvox.SemanticTree.attrPred_("type","MULTILINE")(a))};cvox.SemanticTree.tableIsMatrixOrVector_=function(a){return!!a&&cvox.SemanticTree.attrPred_("type","FENCED")(a)&&cvox.SemanticTree.attrPred_("role","LEFTRIGHT")(a)&&1==a.childNodes.length&&cvox.SemanticTree.isTableOrMultiline_(a.childNodes[0])};
-cvox.SemanticTree.prototype.tableToMatrixOrVector_=function(a){var b=a.childNodes[0],c=cvox.SemanticTree.attrPred_("type","MULTILINE")(b)?"VECTOR":"MATRIX";b.type=cvox.SemanticAttr.Type[c];a.contentNodes.forEach(goog.bind(b.appendContentNode_,b));a=0;for(var d;d=b.childNodes[a];a++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role[c]);return b};cvox.SemanticTree.tableIsCases_=function(a,b){return 0<b.length&&cvox.SemanticTree.attrPred_("role","OPENFENCE")(b[b.length-1])};
-cvox.SemanticTree.prototype.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role.CASES);a.type=cvox.SemanticAttr.Type.CASES;a.appendContentNode_(b);return a};cvox.SemanticTree.tableIsMultiline_=function(a){return a.childNodes.every(function(a){a=a.childNodes.length;return 1>=a})};
-cvox.SemanticTree.prototype.tableToMultiline_=function(a){a.type=cvox.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)cvox.SemanticTree.rowToLine_(c,cvox.SemanticAttr.Role.MULTILINE)};cvox.SemanticTree.rowToLine_=function(a,b){b=b||cvox.SemanticAttr.Role.UNKNOWN;cvox.SemanticTree.attrPred_("type","ROW")(a)&&1==a.childNodes.length&&cvox.SemanticTree.attrPred_("type","CELL")(a.childNodes[0])&&(a.type=cvox.SemanticAttr.Type.LINE,a.role=b,a.childNodes=a.childNodes[0].childNodes)};
-cvox.SemanticTree.assignRoleToRow_=function(a,b){if(cvox.SemanticTree.attrPred_("type","LINE")(a))a.role=b;else if(cvox.SemanticTree.attrPred_("type","ROW")(a)){a.role=b;var c=cvox.SemanticTree.attrPred_("type","CELL");a.childNodes.forEach(function(a){c(a)&&(a.role=b)})}};
-cvox.SemanticTree.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};cvox.SemanticTree.partitionNodes_=function(a,b){var c=a,d=[],e=[];do{var f=cvox.SemanticTree.sliceNodes_(c,b);e.push(f.head);d.push(f.div);c=f.tail}while(f.div);d.pop();return{rel:d,comp:e}};
-cvox.SemanticTree.attrPred_=function(a,b){return function(c){var d;o:{switch(a){case "type":d=cvox.SemanticAttr.Type[b];break o;case "role":d=cvox.SemanticAttr.Role[b];break o;case "font":d=cvox.SemanticAttr.Font[b];break o}d=void 0}return c[a]==d}};cvox.TraverseMath=function(){this.activeNode=this.activeMath=null;this.allTexs_={};this.allMathjaxs_={};this.activeMathmlHost=null;this.domain="default";this.style="short";cvox.ChromeVox.mathJax&&(this.initializeMathjaxs(),this.initializeAltMaths())};goog.addSingletonGetter(cvox.TraverseMath);cvox.TraverseMath.setSemantic_=!1;cvox.TraverseMath.toggleSemantic=function(){return cvox.TraverseMath.setSemantic_=!cvox.TraverseMath.setSemantic_};
-cvox.TraverseMath.prototype.initialize=function(a){if(cvox.DomUtil.isMathImg(a)){if(!a.hasAttribute("cvoxid"))return;a=a.getAttribute("cvoxid");a=this.allTexs_[a]}cvox.DomUtil.isMathJax(a)&&(this.activeMathmlHost=this.allMathjaxs_[a.getAttribute("id")]);this.activeMath=this.activeMathmlHost||a;(this.activeNode=this.activeMathmlHost||a)&&cvox.TraverseMath.setSemantic_&&this.activeNode.nodeType==Node.ELEMENT_NODE&&(this.activeNode=(new cvox.SemanticTree(this.activeNode)).xml())};
-cvox.TraverseMath.prototype.addMathjax=function(a,b){var c=cvox.DomUtil.getMathSpanId(b);c?this.allMathjaxs_[c]=a:this.redoMathjaxs(a,b)};cvox.TraverseMath.prototype.redoMathjaxs=function(a,b){var c=goog.bind(function(){this.addMathjax(a,b)},this);setTimeout(c,500)};
-cvox.TraverseMath.prototype.initializeMathjaxs=function(){var a=goog.bind(function(a,c){this.addMathjax(a,c)},this);cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.getAllJax(a),cvox.ChromeVox.mathJax.registerSignal(a,"New Math"))})};
-cvox.TraverseMath.prototype.initializeAltMaths=function(){if(document.querySelector(cvox.DomUtil.altMathQuerySelector("tex")+", "+cvox.DomUtil.altMathQuerySelector("asciimath"))){var a=goog.bind(function(a,c){this.allTexs_[c]=a},this);cvox.ChromeVox.mathJax.injectScripts();cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.configMediaWiki(),cvox.ChromeVox.mathJax.getAllTexs(a),cvox.ChromeVox.mathJax.getAllAsciiMaths(a))})}};
-cvox.TraverseMath.prototype.nextSibling=function(a){if(!this.activeNode||!this.activeMath)return null;var b=this.activeNode,b=a?b.previousSibling:b.nextSibling;return b?this.activeNode=b:null};cvox.TraverseMath.prototype.nextParentChild=function(a){if(!this.activeNode||!this.activeMath||this.activeNode==this.activeMath&&a)return null;var b=this.activeNode,b=a?b.parentNode:b.firstChild;return b?this.activeNode=b:null};
-cvox.TraverseMath.prototype.getAttachedActiveNode=function(){var a=this.activeNode;if(!a||a.nodeType!=Node.ELEMENT_NODE)return null;a=a.getAttribute("spanID");return document.getElementById(a)};cvox.MathUtil={};cvox.MathUtil.isMathmlNodeOfClass_=function(a,b){return-1!=b.indexOf(a.tagName.toUpperCase())};cvox.MathUtil.isMathjaxNodeOfClass_=function(a,b){if("SPAN"==a.tagName){var c=a.className.split(" ");return c.some(function(a){return-1!=b.indexOf(a.toUpperCase())})}return!1};cvox.MathUtil.isMathNodeOfClass_=function(a,b){return a.nodeType==Node.ELEMENT_NODE&&(cvox.MathUtil.isMathmlNodeOfClass_(a,b)||cvox.MathUtil.isMathjaxNodeOfClass_(a,b))};cvox.MathUtil.TOKEN_LIST="MI MN MO MTEXT MSPACE MS".split(" ");
-cvox.MathUtil.isToken=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TOKEN_LIST)};cvox.MathUtil.LAYOUT_LIST="MROW MFRAC MSQRT MROOT MSTYLE MERROR MPADDED MPHANTOM MFENCED MENCLOSE".split(" ");cvox.MathUtil.isLayout=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.LAYOUT_LIST)};cvox.MathUtil.SCRIPT_LIST="MSUB MSUP MSUBSUP MUNDER MOVER MUNDEROVER MMULTISCRIPTS MPRESCRIPTS".split(" ");
-cvox.MathUtil.isScript=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.SCRIPT_LIST)};cvox.MathUtil.TABLES_LIST="MTABLE MLABELEDTR MTR MTD MALIGNGROUP MALIGNMARK".split(" ");cvox.MathUtil.isTables=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TABLES_LIST)};cvox.MathUtil.ELEMENTARY_LIST="MSTACK MLONGDIV MSGROUP MSROW MSCARRIES MSCARRY MSLINE".split(" ");cvox.MathUtil.isElementary=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.ELEMENTARY_LIST)};
-cvox.MathUtil.MATHML_TAG_LIST=[cvox.MathUtil.TOKEN_LIST,cvox.MathUtil.LAYOUT_LIST,cvox.MathUtil.SCRIPT_LIST,cvox.MathUtil.TABLES_LIST,cvox.MathUtil.ELEMENTARY_LIST].reduce(function(a,b){return a.concat(b)});cvox.MathUtil.isMathmlTag=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.MATHML_TAG_LIST)};cvox.MathUtil.WHITESPACE_LIST=["MSROW","MROW","MSPACE","MPHANTOM","MPADDED"];cvox.MathUtil.isWhitespace=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.WHITESPACE_LIST)};
-cvox.MathUtil.isNotWhitespace=function(a){return cvox.MathUtil.isMathmlTag(a)&&!cvox.MathUtil.isWhitespace(a)};cvox.MathUtil.union=function(a,b){return a.concat(b.filter(function(b){return 0>a.indexOf(b)}))};cvox.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d};cvox.SpeechRule.prototype.toString=function(){var a=[],b;for(b in this.dynamicCstr)a.push(this.dynamicCstr[b]);return this.name+" | "+a.join(".")+" | "+this.precondition.toString()+" ==> "+this.action.toString()};cvox.SpeechRule.Type={NODE:"NODE",MULTI:"MULTI",TEXT:"TEXT",PERSONALITY:"PERSONALITY"};
-cvox.SpeechRule.Type.fromString=function(a){switch(a){case "[n]":return cvox.SpeechRule.Type.NODE;case "[m]":return cvox.SpeechRule.Type.MULTI;case "[t]":return cvox.SpeechRule.Type.TEXT;case "[p]":return cvox.SpeechRule.Type.PERSONALITY;default:throw"Parse error: "+a;}};
-cvox.SpeechRule.Type.toString=function(a){switch(a){case cvox.SpeechRule.Type.NODE:return"[n]";case cvox.SpeechRule.Type.MULTI:return"[m]";case cvox.SpeechRule.Type.TEXT:return"[t]";case cvox.SpeechRule.Type.PERSONALITY:return"[p]";default:throw"Unknown type error: "+a;}};cvox.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content};
-cvox.SpeechRule.Component.fromString=function(a){var b={};b.type=cvox.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trimLeft();if(!a)throw new cvox.SpeechRule.OutputError("Missing content.");switch(b.type){case cvox.SpeechRule.Type.TEXT:if('"'==a[0]){var c=cvox.SpeechRule.splitString_(a,"\\(")[0].trim();if('"'!=c.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid string syntax.");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf("(")&&(a="");break}case cvox.SpeechRule.Type.NODE:case cvox.SpeechRule.Type.MULTI:c=
-a.indexOf(" (");if(-1==c){b.content=a.trim();a="";break}b.content=a.substring(0,c).trim();a=a.slice(c).trimLeft()}b=new cvox.SpeechRule.Component(b);a&&b.addAttributes(a);return b};cvox.SpeechRule.Component.prototype.toString=function(){var a="",a=a+cvox.SpeechRule.Type.toString(this.type),a=a+(this.content?" "+this.content:""),b=this.getAttributes();0<b.length&&(a+=" ("+b.join(", ")+")");return a};
-cvox.SpeechRule.Component.prototype.addAttribute=function(a){var b=a.indexOf(":");-1==b?this[a.trim()]="true":this[a.substring(0,b).trim()]=a.slice(b+1).trim()};cvox.SpeechRule.Component.prototype.addAttributes=function(a){if("("!=a[0]||")"!=a.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid attribute expression: "+a);a=cvox.SpeechRule.splitString_(a.slice(1,-1),",");for(var b=0;b<a.length;b++)this.addAttribute(a[b])};
-cvox.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this)"content"!=b&&"type"!=b&&"function"!=typeof this[b]&&a.push(b+":"+this[b]);return a};cvox.SpeechRule.Action=function(a){this.components=a};cvox.SpeechRule.Action.fromString=function(a){a=cvox.SpeechRule.splitString_(a,";").filter(function(a){return a.match(/\S/)}).map(function(a){return a.trim()});for(var b=[],c=0;c<a.length;c++){var d=cvox.SpeechRule.Component.fromString(a[c]);d&&b.push(d)}return new cvox.SpeechRule.Action(b)};
-cvox.SpeechRule.Action.prototype.toString=function(){var a=this.components.map(function(a){return a.toString()});return a.join("; ")};cvox.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};cvox.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(", ");return this.query+", "+a};
-cvox.SpeechRule.splitString_=function(a,b){for(var c=[],d="";""!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/"/g)||[]).length%2)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);c.push(d+a);a=d=""}else if(0==(a.substring(0,e).match(/"/g)||[]).length%2)c.push(d+a.substring(0,e)),d="",a=a.substring(e+1);else{var f=a.substring(e).search('"');if(-1==f)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&
-c.push(d);return c};cvox.SpeechRule.DynamicCstrAttrib={STYLE:"style"};cvox.SpeechRule.OutputError=function(a){this.name="RuleError";this.message=a||""};goog.inherits(cvox.SpeechRule.OutputError,Error);cvox.SpeechRuleFunctions=function(){};cvox.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};cvox.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};cvox.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};cvox.SpeechRuleFunctions.CustomQueries=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CQF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomQueries,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.CustomStrings=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CSF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomStrings,cvox.SpeechRuleFunctions.Store_);cvox.SpeechRuleFunctions.ContextFunctions=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CTXF",a)};goog.inherits(cvox.SpeechRuleFunctions.ContextFunctions,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){var b=RegExp("^"+this.prefix_);return a.match(b)?!0:(console.log("FunctionError: Invalid function name. Expected prefix"+this.prefix_),!1)};cvox.BaseRuleStore=function(){this.customQueries=new cvox.SpeechRuleFunctions.CustomQueries;this.customStrings=new cvox.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new cvox.SpeechRuleFunctions.ContextFunctions;this.speechRules_=[];this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[]};
-cvox.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=Node.ELEMENT_NODE&&a.nodeType!=Node.TEXT_NODE)return null;var c=this.speechRules_.filter(goog.bind(function(c){return this.testDynamicConstraints(b,c)&&this.testPrecondition_(a,c)},this));return 0<c.length?this.pickMostConstraint_(b,c):null};
-cvox.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=cvox.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new cvox.SpeechRule.Precondition(d,g),g={};g[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;var k=new cvox.SpeechRule(a,g,h,f)}catch(l){if("RuleError"==l.name)return console.log("Rule Error ",d,"("+b+"):",l.message),null;throw l;}this.addRule(k);return k};cvox.BaseRuleStore.prototype.addRule=function(a){this.speechRules_.unshift(a)};
-cvox.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};cvox.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};cvox.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};cvox.BaseRuleStore.prototype.evaluateDefault=function(a){return[new cvox.NavDescription({text:a.textContent})]};
-cvox.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&cvox.BaseRuleStore.compareDynamicConstraints_(c.dynamicCstr,a.dynamicCstr)&&cvox.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};cvox.BaseRuleStore.prototype.applyCustomQuery=function(a,b){var c=this.customQueries.lookup(b);return c?c(a):null};
-cvox.BaseRuleStore.prototype.applySelector=function(a,b){var c=this.applyCustomQuery(a,b);return c||cvox.XpathUtil.evalXPath(b,a)};cvox.BaseRuleStore.prototype.applyQuery=function(a,b){var c=this.applySelector(a,b);return 0<c.length?c[0]:null};cvox.BaseRuleStore.prototype.applyConstraint=function(a,b){var c=this.applyQuery(a,b);return!!c||cvox.XpathUtil.evaluateBoolean(b,a)};
-cvox.BaseRuleStore.prototype.testDynamicConstraints=function(a,b){var c=Object.keys(a);return c.every(function(c){return a[c]==b.dynamicCstr[c]||"default"==b.dynamicCstr[c]})};cvox.BaseRuleStore.prototype.getDynamicConstraintValues=function(){for(var a={},b=0,c;c=this.speechRules_[b];b++)for(var d in c.dynamicCstr){var e=[c.dynamicCstr[d]];a[d]=a[d]?cvox.MathUtil.union(a[d],e):e}return a};
-cvox.BaseRuleStore.prototype.countMatchingDynamicConstraintValues_=function(a,b){for(var c=0,d=0,e;e=this.dynamicCstrAttribs[d];d++)if(a[e]==b.dynamicCstr[e])c++;else break;return c};cvox.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){b.sort(goog.bind(function(b,d){var e=this.countMatchingDynamicConstraintValues_(a,b),f=this.countMatchingDynamicConstraintValues_(a,d);return e>f?-1:f>e?1:d.precondition.constraints.length-b.precondition.constraints.length},this));return b[0]};
-cvox.BaseRuleStore.prototype.testPrecondition_=function(a,b){var c=b.precondition;return this.applyQuery(a,c.query)===a&&c.constraints.every(goog.bind(function(b){return this.applyConstraint(a,b)},this))};cvox.BaseRuleStore.compareDynamicConstraints_=function(a,b){if(Object.keys(a).length!=Object.keys(b).length)return!1;for(var c in a)if(!b[c]||a[c]!==b[c])return!1;return!0};
-cvox.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};cvox.BaseRuleStore.comparePreconditions_=function(a,b){var c=a.precondition,d=b.precondition;return c.query!=d.query?!1:cvox.BaseRuleStore.compareStaticConstraints_(c.constraints,d.constraints)};cvox.MathStore=function(){cvox.BaseRuleStore.call(this);this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN,cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[cvox.AbstractTts.PITCH,cvox.AbstractTts.RATE]};goog.inherits(cvox.MathStore,cvox.BaseRuleStore);cvox.SpeechRule.DynamicCstrAttrib.DOMAIN="domain";
-cvox.MathStore.prototype.defineRule=function(a,b,c,d,e){var f=this.parseDynamicConstraint(b),g=Array.prototype.slice.call(arguments,4),g=cvox.MathStore.superClass_.defineRule.apply(this,[a,f[cvox.SpeechRule.DynamicCstrAttrib.STYLE],c,d].concat(g));g.dynamicCstr=f;this.removeDuplicates(g);return g};
-cvox.MathStore.prototype.parseDynamicConstraint=function(a){var b=a.split(".");if(!b[0]||!b[1])throw new cvox.SpeechRule.OutputError("Invalid domain assignment:"+a);return cvox.MathStore.createDynamicConstraint(b[0],b[1])};cvox.MathStore.createDynamicConstraint=function(a,b){var c={};c[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN]=a;c[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;return c};
-cvox.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(b){return b.name==a});if(!d)throw new cvox.SpeechRule.OutputError("Rule with named "+a+" does not exist.");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};cvox.MathStore.prototype.addAlias_=function(a,b,c){b=new cvox.SpeechRule.Precondition(b,c);b=new cvox.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};cvox.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};
-cvox.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\s+$/))return b;a=cvox.MathStore.removeEmpty_(a.replace(/\s/g," ").split(" "));for(var c=0,d;d=a[c];c++)if(1==d.length)b.push(this.evaluate_(d));else if(d.match(/^[a-zA-Z]+$/))b.push(this.evaluate_(d));else for(;d;){var e=d.match(/^\d+/),f=d.match(/^[a-zA-Z]+/);e?(b.push(this.evaluate_(e[0])),d=d.substring(e[0].length)):f?(b.push(this.evaluate_(f[0])),d=d.substring(f[0].length)):(e=d[0],e=e.charCodeAt(0),55296<=e&&56319>=e&&
-1<d.length&&!isNaN(d.charCodeAt(1))?(b.push(this.evaluate_(d.slice(0,2))),d=d.substring(2)):(b.push(this.evaluate_(d[0])),d=d.substring(1)))}return b};cvox.MathStore.prototype.evaluate_=function(a){return cvox.ChromeVox.host.mathMap?cvox.ChromeVox.host.mathMap.evaluate(a,cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style):new cvox.NavMathDescription({text:a,domain:cvox.TraverseMath.getInstance().domain,style:cvox.TraverseMath.getInstance().style})};
-cvox.MathStore.removeEmpty_=function(a){return a.filter(function(a){return a})};cvox.MathmlStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathmlStore,cvox.MathStore);goog.addSingletonGetter(cvox.MathmlStore);cvox.MathmlStore.prototype.defineDefaultMathmlRule=function(a,b){this.defineRule(a,"default.default",b,"self::mathml:"+a)};cvox.SpeechRuleEngine=function(){this.activeStore_=null;this.dynamicCstr={};this.dynamicCstr[cvox.SpeechRule.DynamicCstrAttrib.STYLE]="short"};goog.addSingletonGetter(cvox.SpeechRuleEngine);cvox.SpeechRuleEngine.prototype.parameterize=function(a){try{a.initialize()}catch(b){if("StoreError"==b.name)console.log("Store Error:",b.message);else throw b;}this.activeStore_=a};cvox.SpeechRuleEngine.prototype.setDynamicConstraint=function(a){a&&(this.dynamicCstr=a)};
-cvox.SpeechRuleEngine.prototype.constructString=function(a,b){if(!b)return"";if('"'==b.charAt(0))return b.slice(1,-1);var c=this.activeStore_.customStrings.lookup(b);return c?c(a):cvox.XpathUtil.evaluateString(b,a)};cvox.SpeechRuleEngine.prototype.evaluateNode=function(a){return a?this.evaluateTree_(a):[]};
-cvox.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=this.activeStore_.lookupRule(a,this.dynamicCstr);if(!b)return this.activeStore_.evaluateDefault(a);for(var b=b.action.components,c=[],d=0,e;e=b[d];d++){var f=[],g=e.content||"";switch(e.type){case cvox.SpeechRule.Type.NODE:(g=this.activeStore_.applyQuery(a,g))&&(f=this.evaluateTree_(g));break;case cvox.SpeechRule.Type.MULTI:g=this.activeStore_.applySelector(a,g);0<g.length&&(f=this.evaluateNodeList_(g,e.sepFunc,this.constructString(a,
-e.separator),e.ctxtFunc,this.constructString(a,e.context)));break;case cvox.SpeechRule.Type.TEXT:(g=this.constructString(a,g))&&(f=[new cvox.NavDescription({text:g})]);break;default:f=[new cvox.NavDescription({text:g})]}f[0]&&e.context&&e.type!=cvox.SpeechRule.Type.MULTI&&(f[0].context=this.constructString(a,e.context)+(f[0].context||""));c=c.concat(this.addPersonality_(f,e))}return c};
-cvox.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e){if(a==[])return[];var f=c||"",g=e||"";c=(c=this.activeStore_.contextFunctions.lookup(d))?c(a,g):function(){return g};b=(b=this.activeStore_.contextFunctions.lookup(b))?b(a,f):function(){return f};d=[];e=0;for(var h;h=a[e];e++)h=this.evaluateTree_(h),0<h.length&&(h[0].context=c()+(h[0].context||""),d=d.concat(h),e<a.length-1&&(h=b())&&d.push(new cvox.NavDescription({text:h})));return d};
-cvox.SpeechRuleEngine.propMap={pitch:cvox.AbstractTts.RELATIVE_PITCH,rate:cvox.AbstractTts.RELATIVE_RATE,volume:cvox.AbstractTts.RELATIVE_VOLUME,pause:cvox.AbstractTts.PAUSE};cvox.SpeechRuleEngine.prototype.addPersonality_=function(a,b){var c={},d;for(d in cvox.SpeechRuleEngine.propMap){var e=parseFloat(b[d]);isNaN(e)||(c[cvox.SpeechRuleEngine.propMap[d]]=e)}a.forEach(goog.bind(function(a){this.addRelativePersonality_(a,c);this.resetPersonality_(a)},this));return a};
-cvox.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&"number"==typeof c[d]?c[d]+b[d]:b[d];return a};cvox.SpeechRuleEngine.prototype.resetPersonality_=function(a){if(this.activeStore_.defaultTtsProps)for(var b=0,c;c=this.activeStore_.defaultTtsProps[b];b++)a.personality[c]=cvox.ChromeVox.tts.getDefaultProperty(c)};cvox.SpeechRuleEngine.debugMode=!1;
-cvox.SpeechRuleEngine.outputDebug=function(a){if(cvox.SpeechRuleEngine.debugMode){var b=Array.prototype.slice.call(arguments,0);console.log.apply(console,["Speech Rule Engine Debugger:"].concat(b))}};cvox.SpeechRuleEngine.prototype.toString=function(){var a=this.activeStore_.findAllRules(function(){return!0});return a.map(function(a){return a.toString()}).join("\n")};
-cvox.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=cvox.SpeechRuleEngine.getInstance().activeStore_;if(c){var d=a.precondition;cvox.SpeechRuleEngine.outputDebug(d.query,c.applyQuery(b,d.query));d.constraints.forEach(function(a){cvox.SpeechRuleEngine.outputDebug(a,c.applyConstraint(b,a))})}};
-cvox.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){for(var c=cvox.SpeechRuleEngine.getInstance().activeStore_,c=c.findAllRules(function(b){return b.name==a}),d=0,e;e=c[d];d++)cvox.SpeechRuleEngine.outputDebug("Rule",a,"number",d),cvox.SpeechRuleEngine.debugSpeechRule(e,b)};cvox.AbstractWalker=function(){};cvox.AbstractWalker.prototype.begin=function(a){a=a||{reversed:!1};return this.sync(cvox.CursorSelection.fromBody().setReversed(a.reversed))};cvox.AbstractWalker.prototype.hasAction=function(a){return"function"==typeof this[a]};cvox.AbstractWalker.prototype.performAction=function(a,b){return this.hasAction(a)?this[a](b):null};cvox.AbstractNodeWalker=function(){this.wasBegin_=!1};goog.inherits(cvox.AbstractNodeWalker,cvox.AbstractWalker);cvox.AbstractNodeWalker.prototype.next=function(a){var b=a.isReversed();a=a.end.node||document.body;do if(a=cvox.DomUtil.directedNextLeafLikeNode(a,b,goog.bind(this.stopNodeDescent,this)),!a)return null;while(a&&!cvox.DomUtil.hasContent(a));return cvox.CursorSelection.fromNode(a).setReversed(b)};
-cvox.AbstractNodeWalker.prototype.sync=function(a){a=this.privateSync_(a);this.wasBegin_=!1;return a};
-cvox.AbstractNodeWalker.prototype.privateSync_=function(a){var b=a.isReversed();if(a.equals(cvox.CursorSelection.fromBody())){if(this.wasBegin_)return cvox.CursorSelection.fromBody().setReversed(b);this.wasBegin_=!0}for(a=a.start.node;a!=document.body&&a.parentNode&&this.stopNodeDescent(a.parentNode);)a=a.parentNode;for(;!this.stopNodeDescent(a);)a=cvox.DomUtil.directedFirstChild(a,b);var c=cvox.CursorSelection.fromNode(a);cvox.DomUtil.hasContent(a)||(c=this.next(cvox.CursorSelection.fromNode(a).setReversed(b)));
-return c?c.setReversed(b):this.begin({reversed:b})};cvox.BareObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.BareObjectWalker,cvox.AbstractNodeWalker);cvox.BareObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AuralStyleConverter={};cvox.AuralStyleUtil={};
-cvox.AuralProperty={VOLUME:"VOLUME",SPEAK:"SPEAK",PAUSE_BEFORE:"PAUSE_BEFORE",PAUSE_AFTER:"PAUSE_AFTER",PAUSE:"PAUSE",CUE_BEFORE:"CUE_BEFORE",CUE_AFTER:"CUE_AFTER",CUE:"CUE",PLAY_DURING:"PLAY_DURING",AZIMUTH:"AZIMUTH",ELEVATION:"ELEVATION",SPEECH_RATE:"SPEECH_RATE",VOICE_FAMILY:"VOICE_FAMILY",PITCH:"PITCH",PITCH_RANGE:"PITCH_RANGE",STRESS:"STRESS",RICHNESS:"RICHNESS",SPEAK_PUNCTUATION:"SPEAK_PUNCTUATION",SPEAK_NUMERIAL:"SPEAK_NUMERIAL",SPEAK_HEADER:"SPEAK_HEADER",NONE:"NONE"};
-cvox.AuralStyleConverter.identity=function(a){return a};cvox.AuralStyleConverter.propertyTable={VOLUME:"volume",SPEAK:"no-op",PAUSE_BEFORE:"no-op",PAUSE_AFTER:"no-op",PAUSE:"no-op",CUE_BEFORE:"no-op",CUE_AFTER:"no-op",CUE:"no-op",PLAY_DURING:"no-op",AZIMUTH:"no-op",ELEVATION:"no-op",SPEECH_RATE:"relativeRate",VOICE_FAMILY:"no-op",PITCH:"relativePitch",PITCH_RANGE:"no-op",STRESS:"no-op",RICHNESS:"no-op",SPEAK_PUNCTUATION:"no-op",SPEAK_NUMERIAL:"no-op",SPEAK_HEADER:"no-op",NONE:"no-op"};
-cvox.AuralStyleConverter.valueTable={VOLUME:cvox.AuralStyleConverter.identity,SPEAK:cvox.AuralStyleConverter.identity,PAUSE_BEFORE:cvox.AuralStyleConverter.identity,PAUSE_AFTER:cvox.AuralStyleConverter.identity,PAUSE:cvox.AuralStyleConverter.identity,CUE_BEFORE:cvox.AuralStyleConverter.identity,CUE_AFTER:cvox.AuralStyleConverter.identity,CUE:cvox.AuralStyleConverter.identity,PLAY_DURING:cvox.AuralStyleConverter.identity,AZIMUTH:cvox.AuralStyleConverter.identity,ELEVATION:cvox.AuralStyleConverter.identity,
-SPEECH_RATE:cvox.AuralStyleConverter.identity,VOICE_FAMILY:cvox.AuralStyleConverter.identity,PITCH:cvox.AuralStyleConverter.identity,PITCH_RANGE:cvox.AuralStyleConverter.identity,STRESS:cvox.AuralStyleConverter.identity,RICHNESS:cvox.AuralStyleConverter.identity,SPEAK_PUNCTUATION:cvox.AuralStyleConverter.identity,SPEAK_NUMERIAL:cvox.AuralStyleConverter.identity,SPEAK_HEADER:cvox.AuralStyleConverter.identity,NONE:cvox.AuralStyleConverter.identity};
-cvox.AuralStyleConverter.convertRule=function(a,b){return{property:cvox.AuralStyleConverter.propertyTable[a],value:cvox.AuralStyleConverter.valueTable[a](b)}};cvox.AuralStyleConverter.convertStyle=function(a){var b={},c;for(c in a){var d=cvox.AuralStyleConverter.convertRule(c,a[c]);b[d.property]=d.value}return b};cvox.AuralStyleUtil.getStyleForNode=function(a){return(a=cvox.AuralStyleUtil.defaultStyles[a.tagName])?cvox.AuralStyleConverter.convertStyle(a):null};
-cvox.AuralStyleUtil.defaultStyles={ARTICLE:{PITCH:-0.1},ASIDE:{PITCH:-0.1},FOOTER:{PITCH:-0.1},H1:{PITCH:-0.3},H2:{PITCH:-0.25},H3:{PITCH:-0.2},H4:{PITCH:-0.15},H5:{PITCH:-0.1},H6:{PITCH:-0.05},HEADER:{PITCH:-0.1},HGROUP:{PITCH:-0.1},MARK:{PITCH:-0.1},NAV:{PITCH:-0.1},SECTION:{PITCH:-0.1},TIME:{PITCH:-0.1}};cvox.EarconUtil={};
-cvox.EarconUtil.getEarcon=function(a){var b=cvox.AriaUtil.getEarcon(a);if(null!=b)return b;switch(a.tagName){case "BUTTON":return cvox.AbstractEarcons.BUTTON;case "A":if(a.hasAttribute("href"))return cvox.AbstractEarcons.LINK;break;case "IMG":if(cvox.DomUtil.hasLongDesc(a))return cvox.AbstractEarcons.LONG_DESC;break;case "LI":return cvox.AbstractEarcons.LIST_ITEM;case "SELECT":return cvox.AbstractEarcons.LISTBOX;case "TEXTAREA":return cvox.AbstractEarcons.EDITABLE_TEXT;case "INPUT":switch(a.type){case "button":case "submit":case "reset":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":return a.checked?
-cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;default:if(cvox.DomUtil.isInputTypeText(a))return cvox.AbstractEarcons.EDITABLE_TEXT}}return null};cvox.DescriptionUtil={};cvox.DescriptionUtil.COLLECTION_NODE_TYPE={H1:!0,H2:!0,H3:!0,H4:!0,H5:!0,H6:!0};
-cvox.DescriptionUtil.getControlDescription=function(a,b){var c=[a];if(b&&0<b.length)c=b;else{var d=cvox.DomUtil.getSurroundingControl(a);d&&(c=[d,a])}c=cvox.DescriptionUtil.getDescriptionFromAncestors(c,!0,cvox.VERBOSITY_VERBOSE);if(d){var e=cvox.DomUtil.getName(d);0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(d),0<e.length&&(c.context=e+" "+c.context))}else e=cvox.DomUtil.getName(a),0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(a),0<e.length&&(c.text=cvox.DomUtil.collapseWhitespace(e))),
-d=cvox.DomUtil.getValue(a),0<d.length&&(c.userValue=cvox.DomUtil.collapseWhitespace(d));return c};
-cvox.DescriptionUtil.getDescriptionFromAncestors=function(a,b,c){"undefined"===typeof b&&(b=!0);var d=a.length,e="",f="",g="",h="",k=[],l=null;0<d&&(f=cvox.DomUtil.getName(a[d-1],b),g=cvox.DomUtil.getValue(a[d-1]));for(b=d-1;0<=b;b--){var m=a[b],p=m.getAttribute?m.getAttribute("role"):null;if("dialog"!=p&&"alertdialog"!=p){p=cvox.DomUtil.getRole(m,c);l||(l=cvox.AuralStyleUtil.getStyleForNode(m));if(b<d-1&&m.hasAttribute("role")){var q=cvox.DomUtil.getName(m,!1);q&&(p=q+" "+p)}0<p.length&&(0<e.length||
-0<h.length&&1<m.childElementCount?e=p+" "+cvox.DomUtil.getState(m,!1)+" "+e:h=0<h.length?h+(" "+p+" "+cvox.DomUtil.getState(m,!0)):p+" "+cvox.DomUtil.getState(m,!0));m=cvox.EarconUtil.getEarcon(m);null!=m&&-1==k.indexOf(m)&&k.push(m)}}return new cvox.NavDescription({context:cvox.DomUtil.collapseWhitespace(e),text:cvox.DomUtil.collapseWhitespace(f),userValue:cvox.DomUtil.collapseWhitespace(g),annotation:cvox.DomUtil.collapseWhitespace(h),earcons:k,personality:l})};
-cvox.DescriptionUtil.getDescriptionFromNavigation=function(a,b,c,d){if(!a||!b)return[];if(cvox.DomUtil.isMath(b)&&!cvox.AriaUtil.isMath(b))return cvox.DescriptionUtil.getMathDescription(b);if(cvox.DescriptionUtil.COLLECTION_NODE_TYPE[b.tagName])return cvox.DescriptionUtil.getCollectionDescription(cvox.CursorSelection.fromNode(a),cvox.CursorSelection.fromNode(b));var e=cvox.DomUtil.getUniqueAncestors(a,b,!0),e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,c,d);a=cvox.DomUtil.getUniqueAncestors(b,
-a);cvox.DescriptionUtil.shouldDescribeExit_(a)&&(c=cvox.DescriptionUtil.getDescriptionFromAncestors(a,c,d),c.context&&!e.context&&(e.context=cvox.ChromeVox.msgs.getMsg("exited_container",[c.context])));return[e]};cvox.DescriptionUtil.getCollectionDescription=function(a,b){var c=cvox.DescriptionUtil.getRawDescriptions_(a,b);cvox.DescriptionUtil.insertCollectionDescription_(c);return c};cvox.DescriptionUtil.subWalker_=new cvox.BareObjectWalker;
-cvox.DescriptionUtil.getRawDescriptions_=function(a,b){var c=[];b=b.clone().setReversed(!1);var d=cvox.DescriptionUtil.subWalker_.sync(b).start.node,e=a.end.node,f=cvox.CursorSelection.fromNode(d);if(!f)return[];for(;cvox.DomUtil.isDescendantOfNode(d,b.start.node);){e=cvox.DomUtil.getUniqueAncestors(e,d);cvox.DomUtil.isMath(d)&&!cvox.AriaUtil.isMath(d)?c=c.concat(cvox.DescriptionUtil.getMathDescription(d)):(e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,!0,cvox.ChromeVox.verbosity),c.push(e));
-f=cvox.DescriptionUtil.subWalker_.next(f);if(!f)break;e=d;d=f.start.node}return c};
-cvox.DescriptionUtil.getFullDescriptionsFromChildren=function(a,b){var c=[];if(!b)return c;var d;if(cvox.DomUtil.isLeafNode(b))return a?d=cvox.DomUtil.getUniqueAncestors(a,b):(d=[],d.push(b)),d=cvox.DescriptionUtil.getDescriptionFromAncestors(d,!0,cvox.ChromeVox.verbosity),c.push(d),c;d=b;var e=cvox.CursorSelection.fromNode(b);if(!e)return c;b=cvox.DescriptionUtil.subWalker_.sync(e).start.node;e=cvox.CursorSelection.fromNode(b);if(!e)return c;for(;cvox.DomUtil.isDescendantOfNode(b,d);){c=c.concat(cvox.DescriptionUtil.getFullDescriptionsFromChildren(a,
-b));e=cvox.DescriptionUtil.subWalker_.next(e);if(!e)break;a=b;b=e.start.node}return c};
-cvox.DescriptionUtil.insertCollectionDescription_=function(a){var b=cvox.DescriptionUtil.getAnnotations_(a);if(3<=a.length&&0==a[0].context.length&&1==b.length&&0<b[0].length&&cvox.DescriptionUtil.isAnnotationCollection_(b[0])){var b=b[0],c=a[0].context;a[0].context="";for(var d=0;d<a.length;d++)a[d].annotation="";a.splice(0,0,new cvox.NavDescription({context:c,text:"",annotation:cvox.ChromeVox.msgs.getMsg("collection",[b,cvox.ChromeVox.msgs.getNumber(a.length)])}))}};
-cvox.DescriptionUtil.getAnnotations_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(-1==b.indexOf(d.annotation)){var e=cvox.ChromeVox.msgs.getMsg("tag_link");-1!=d.annotation.toLowerCase().indexOf(e.toLowerCase())?-1==b.indexOf(e)&&b.push(e):b.push(d.annotation)}}return b};cvox.DescriptionUtil.isAnnotationCollection_=function(a){return a==cvox.ChromeVox.msgs.getMsg("tag_link")};cvox.DescriptionUtil.shouldDescribeExit_=function(a){return a.some(function(a){switch(a.tagName){case "TABLE":case "MATH":return!0}return cvox.AriaUtil.isLandmark(a)})};
-cvox.DescriptionUtil.getMathDescription=function(a){var b=cvox.SpeechRuleEngine.getInstance(),c=cvox.TraverseMath.getInstance();b.parameterize(cvox.MathmlStore.getInstance());c.initialize(a);a=b.evaluateNode(c.activeNode);if(a==[])return[new cvox.NavDescription({text:"empty math"})];cvox.ChromeVox.verbosity==cvox.VERBOSITY_VERBOSE&&(a[a.length-1].annotation="math");a[0].pushEarcon(cvox.AbstractEarcons.SPECIAL_CONTENT);return a};cvox.FindUtil={};cvox.FindUtil.objectWalker_=new cvox.BareObjectWalker;cvox.FindUtil.findNext=function(a,b,c){var d=a.isReversed();a=(new cvox.CursorSelection(a.absStart(),a.absStart())).setReversed(d);var e;if(e=b(cvox.DomUtil.getAncestors(a.start.node)))if(a=cvox.CursorSelection.fromNode(e).setReversed(d),c)return a;for(;a;){a=cvox.FindUtil.objectWalker_.next(a);c=null;if(!a||(c=b(cvox.DomUtil.getAncestors(a.start.node))))return c?cvox.CursorSelection.fromNode(c):null;if("IFRAME"==a.start.node.tagName)return a}return null};cvox.Interframe=function(){};cvox.Interframe.IF_MSG_PREFIX="cvox.INTERFRAME:";cvox.Interframe.SET_ID="cvox.INTERFRAME_SET_ID";cvox.Interframe.listeners=[];cvox.Interframe.allowAccessToIframeContentWindow=!0;
-cvox.Interframe.init=function(){cvox.Interframe.messageListener=function(a){if("string"===typeof a.data&&0==a.data.indexOf(cvox.Interframe.IF_MSG_PREFIX)){a=a.data.substr(cvox.Interframe.IF_MSG_PREFIX.length);a=cvox.ChromeVoxJSON.parse(a);a.command==cvox.Interframe.SET_ID&&(cvox.Interframe.id=a.id);for(var b=0,c;c=cvox.Interframe.listeners[b];b++)c(a)}return!1};window.addEventListener("message",cvox.Interframe.messageListener,!0)};
-cvox.Interframe.shutdown=function(){window.removeEventListener("message",cvox.Interframe.messageListener,!0)};cvox.Interframe.addListener=function(a){cvox.Interframe.listeners.push(a)};cvox.Interframe.sendMessageToWindow=function(a,b){var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null);b.postMessage(c,"*")};
-cvox.Interframe.sendMessageToIFrame=function(a,b){if(cvox.Interframe.allowAccessToIframeContentWindow&&b.contentWindow)cvox.Interframe.sendMessageToWindow(a,b.contentWindow);else{var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),d=document.createElement("script");d.type="text/javascript";if(b.hasAttribute("id")&&document.getElementById(b.id)==b)d.innerHTML="document.getElementById(decodeURI('"+encodeURI(b.id)+"')).contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');";
-else{var e="cvox_iframe"+a.id;""===b.className?b.className=e:-1==b.className.indexOf(e)&&(b.className+=" "+e);d.innerHTML="document.getElementsByClassName(decodeURI('"+encodeURI(e)+"'))[0].contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');"}document.head.appendChild(d);window.setTimeout(function(){document.head.removeChild(d)},1E3)}};
-cvox.Interframe.sendMessageToParentWindow=function(a){cvox.Interframe.isIframe()&&(a.sourceId=cvox.Interframe.id,window.parent?cvox.Interframe.sendMessageToWindow(a,window.parent):(a=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),window.location.href="javascript:window.parent.postMessage('"+encodeURI(a)+"', '*');"))};cvox.Interframe.sendIdToIFrame=function(a,b){var c={command:cvox.Interframe.SET_ID,id:a};cvox.Interframe.sendMessageToIFrame(c,b)};
-cvox.Interframe.isIframe=function(){return window!=window.parent};cvox.Interframe.init();cvox.PageSelection=function(a){this.sel_=a.clone();this.sel_.select();this.wasBegin_=!0};
-cvox.PageSelection.prototype.getDescription=function(a,b,c){var d=[];this.sel_.isReversed()!=c.isReversed()?(d=a.getDescription(c,b),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE)):(d=a.getDescription(b,c),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_selected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION),!this.wasBegin_&&this.sel_.absEquals(c.clone().normalize())&&(a=a.getDescription(c,b),a[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),
-a[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE),a[0].pushEarcon(cvox.AbstractEarcons.WRAP),d=a.concat(d)));return d};cvox.PageSelection.prototype.getFullDescription=function(){return[new cvox.NavDescription({text:window.getSelection().toString(),context:cvox.ChromeVox.msgs.getMsg("selection_is")})]};
-cvox.PageSelection.prototype.extend=function(a){this.sel_.directedBefore(a)?this.sel_.end=this.sel_.isReversed()==a.isReversed()?a.end.clone():a.start.clone():this.sel_=a.clone();this.sel_.select();this.wasBegin_=!1;return!this.sel_.absEquals(a)};cvox.BrailleUtil={};cvox.BrailleUtil.ITEM_SEPARATOR=" ";cvox.BrailleUtil.CONTAINER="tag_h1_brl tag_h2_brl tag_h3_brl tag_h4_brl tag_h5_brl tag_h6_brl".split(" ");
-cvox.BrailleUtil.TEMPLATE={base:"c n v r s",aria_role_button:"[n]",aria_role_textbox:"n: v r",input_type_button:"[n]",input_type_checkbox:"n (s)",input_type_email:"n: v r",input_type_number:"n: v r",input_type_password:"n: v r",input_type_search:"n: v r",input_type_submit:"[n]",input_type_text:"n: v r",input_type_tel:"n: v r",input_type_url:"n: v r",tag_button:"[n]",tag_textarea:"n: v r"};cvox.BrailleUtil.ValueSpan=function(a){this.offset=a};cvox.BrailleUtil.ValueSelectionSpan=function(){};
-cvox.BrailleUtil.getName=function(a){return a?cvox.DomUtil.getName(a).trim():""};cvox.BrailleUtil.getRoleMsg=function(a){if(!a)return"";(a=cvox.DomUtil.getRoleMsg(a,cvox.VERBOSITY_VERBOSE))&&(a=cvox.DomUtil.collapseWhitespace(a));a&&0<a.length&&cvox.ChromeVox.msgs.getMsg(a+"_brl")&&(a+="_brl");return a};cvox.BrailleUtil.getRole=function(a){return a?(a=cvox.BrailleUtil.getRoleMsg(a))?cvox.ChromeVox.msgs.getMsg(a):"":""};
-cvox.BrailleUtil.getState=function(a){return a?cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,!0).map(function(a){cvox.ChromeVox.msgs.getMsg(a[0]+"_brl")&&(a[0]+="_brl");return a})):""};cvox.BrailleUtil.getContainer=function(a,b){if(!a||!b)return"";for(var c=cvox.DomUtil.getUniqueAncestors(a,b),d=0,e;e=c[d];d++)if((e=cvox.BrailleUtil.getRoleMsg(e))&&-1!=cvox.BrailleUtil.CONTAINER.indexOf(e))return cvox.ChromeVox.msgs.getMsg(e);return""};
-cvox.BrailleUtil.getValue=function(a){if(!a)return new cvox.Spannable;var b=new cvox.BrailleUtil.ValueSpan(0);if(cvox.DomUtil.isInputTypeText(a)){var c=a.value;"password"===a.type&&(c=c.replace(/./g,"*"));b=new cvox.Spannable(c,b);a===document.activeElement&&b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,a.selectionStart,a.selectionEnd);return b}if(a instanceof HTMLTextAreaElement){var d=new cvox.EditableTextAreaShadow;d.update(a);var e=d.getLineIndex(a.selectionEnd),c=d.getLineStart(e),d=d.getLineEnd(e),
-d=a.value.substring(c,d);b.offset=c;b=new cvox.Spannable(d,b);a===document.activeElement&&(d=Math.max(a.selectionStart-c,0),a=Math.min(a.selectionEnd-c,b.getLength()),b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,d,a));return b}return new cvox.Spannable(cvox.DomUtil.getValue(a),b)};
-cvox.BrailleUtil.getTemplated=function(a,b,c){c=c?c:{};for(var d=c.roleMsg||(b?cvox.DomUtil.getRoleMsg(b,cvox.VERBOSITY_VERBOSE):""),d=cvox.BrailleUtil.TEMPLATE[d]||cvox.BrailleUtil.TEMPLATE.base,e=new cvox.Spannable,f=function(d){switch(d){case "n":return c.name||cvox.BrailleUtil.getName(b);case "r":return c.role||cvox.BrailleUtil.getRole(b);case "s":return c.state||cvox.BrailleUtil.getState(b);case "c":return c.container||cvox.BrailleUtil.getContainer(a,b);case "v":return c.value?new cvox.Spannable(c.value,
-new cvox.BrailleUtil.ValueSpan(0)):cvox.BrailleUtil.getValue(b);default:return d}},g=0;g<d.length;g++){var h=f(d[g]);e.append(h);h.toString()||" "!=d[g+1]||g++}return e.trim()};cvox.MathmlStoreUtil={};cvox.MathmlStoreUtil.matchMathjaxToMathml=function(a){var b=cvox.TraverseMath.getInstance().activeMathmlHost;return b.querySelector("#"+a.id)};cvox.MathmlStoreUtil.retrieveMathjaxExtender=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};cvox.MathmlStoreUtil.retrieveMathjaxLeaf=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};
-cvox.MathmlStoreUtil.checkMathjaxTag=function(a,b){var c=cvox.MathmlStoreUtil.matchMathjaxToMathml(a);return c&&c.tagName.toUpperCase()==b?[c]:[]};cvox.MathmlStoreUtil.checkMathjaxMunder=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MUNDER")};cvox.MathmlStoreUtil.checkMathjaxMover=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MOVER")};cvox.MathmlStoreUtil.checkMathjaxMsub=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUB")};
-cvox.MathmlStoreUtil.checkMathjaxMsup=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUP")};cvox.MathmlStoreUtil.nextSeparatorFunction=function(a){if(a){if(a.match(/^\s+$/))return null;var b=a.replace(/\s/g,"").split("").filter(function(a){return a})}else b=[","];return function(){return 1<b.length?b.shift():b[0]}};cvox.MathmlStoreUtil.mfencedSeparators=function(a,b){var c=cvox.MathmlStoreUtil.nextSeparatorFunction(b);return function(){return c?c():""}};
-cvox.MathmlStoreUtil.contentIterator=function(a,b){var c=0<a.length?cvox.XpathUtil.evalXPath("../../content/*",a[0]):[];return function(){var a=c.shift();return b+(a?a.textContent:"")}};cvox.StoreUtil={};cvox.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e="");return function(){d<c&&(d+=1);return e+" "+d}};cvox.MathmlStoreRules=function(){cvox.MathmlStoreRules.initCustomFunctions_();cvox.MathmlStoreRules.initDefaultRules_();cvox.MathmlStoreRules.initMathjaxRules_();cvox.MathmlStoreRules.initAliases_();cvox.MathmlStoreRules.initSpecializationRules_();cvox.MathmlStoreRules.initSemanticRules_()};goog.addSingletonGetter(cvox.MathmlStoreRules);cvox.MathmlStoreRules.mathStore=cvox.MathmlStore.getInstance();cvox.MathmlStoreRules.mathStore.initialize=cvox.MathmlStoreRules.getInstance;
-cvox.MathmlStoreRules.defineDefaultMathmlRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineDefaultMathmlRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRuleAlias_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRuleAlias,cvox.MathmlStoreRules.mathStore);
-cvox.MathmlStoreRules.addContextFunction_=goog.bind(cvox.MathmlStoreRules.mathStore.contextFunctions.add,cvox.MathmlStoreRules.mathStore.contextFunctions);cvox.MathmlStoreRules.addCustomQuery_=goog.bind(cvox.MathmlStoreRules.mathStore.customQueries.add,cvox.MathmlStoreRules.mathStore.customQueries);
-cvox.MathmlStoreRules.initCustomFunctions_=function(){(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFnodeCounter",cvox.StoreUtil.nodeCounter);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFmfSeparators",cvox.MathmlStoreUtil.mfencedSeparators);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFcontentIterator",cvox.MathmlStoreUtil.contentIterator);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFextender",cvox.MathmlStoreUtil.retrieveMathjaxExtender);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmunder",
-cvox.MathmlStoreUtil.checkMathjaxMunder);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmover",cvox.MathmlStoreUtil.checkMathjaxMover);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsub",cvox.MathmlStoreUtil.checkMathjaxMsub);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsup",cvox.MathmlStoreUtil.checkMathjaxMsup);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFlookupleaf",cvox.MathmlStoreUtil.retrieveMathjaxLeaf)};
-cvox.MathmlStoreRules.initDefaultRules_=function(){(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("math","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mspace","[p] (pause:250)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mstyle","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mpadded","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("merror","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mphantom","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mtext",
-"[t] text(); [p] (pause:200)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mi","[n] text()");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mo","[n] text() (rate:-0.1)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mn","[n] text()");(0,cvox.MathmlStoreRules.defineRule_)("mtext-variant","default.default",'[t] "begin"; [t] @mathvariant (pause:150);[t] text() (pause:150); [t] "end"; [t] @mathvariant (pause:200)',"self::mathml:mtext","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mi-variant",
-"default.default","[t] @mathvariant; [n] text()","self::mathml:mi","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mi-variant","self::mathml:mn","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mo-variant","default.default","[t] @mathvariant; [n] text() (rate:-0.1)","self::mathml:mo","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("ms",'[t] "string" (pitch:0.5, rate:0.5); [t] text()');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msup",
-'[n] ./*[1]; [t] "super";[n] ./*[2] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msubsup",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "super"; [n] ./*[3] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msub",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mover",'[n] ./*[2] (pitch:0.35); [p] (pause:200); [t] "over"; [n] ./*[1]; [p] (pause:400)');
-(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munder",'[n] ./*[2] (pitch:-0.35); [t] "under"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munderover",'[n] ./*[2] (pitch:-0.35); [t] "under and"; [n] ./*[3] (pitch:0.35); [t] "over"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mrow","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msqrt",'[t] "Square root of"; [m] ./* (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mroot",
-'[t] "root of order"; [n] ./*[2]; [t] "of";[n] ./*[1] (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mfrac",' [p] (pause:400); [n] ./*[1] (pitch:0.3); [t] "divided by"; [n] ./*[2] (pitch:-0.3); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-single","default.default",'[t] @open (context:"opening"); [m] ./* (separator:@separators);[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-empty",
-"default.default",'[t] @open (context:"opening"); [m] ./*;[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1",'string(@separators)=" "');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-comma","default.default",'[t] @open (context:"opening"); [m] ./* (separator:"comma");[t] @close (context:"closing")',"self::mathml:mfenced");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-multi","default.default",'[t] @open (context:"opening"); [m] ./* (sepFunc:CTXFmfSeparators,separator:@separators); [t] @close (context:"closing")',
-"self::mathml:mfenced","string-length(string(@separators))>1");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.default",'[t] "matrix"; [m] ./* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.default","[m] ./*","self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mtable",
-"default.superbrief",'[t] count(child::mathml:mtr); [t] "by";[t] count(child::mathml:mtr[1]/mathml:mtd); [t] "matrix";',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.short",'[t] "matrix"; [m] ./*',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.short","[m] ./*","self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.short",'[t] "Element"; [t] count(./preceding-sibling::mathml:mtd)+1;[t] count(./parent::mathml:mtr/preceding-sibling::mathml:mtr)+1;[p] (pause:500); [m] ./*',
-"self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-3",
-"default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[5]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[6]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-2-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[5]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[6]")};
-cvox.MathmlStoreRules.initMathjaxRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("mj-math","default.default","[n] ./*[1]/*[1]/*[1]",'self::span[@class="math"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-leaf","default.default","[n] CQFlookupleaf",'self::span[@class="mi"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mo"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mn"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtext"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-mo-ext","default.default","[n] CQFextender",'self::span[@class="mo"]',"./*[1]/*[1]/text()","./*[1]/*[2]/text()");(0,cvox.MathmlStoreRules.defineRule_)("mj-texatom","default.default","[n] ./*[1]",'self::span[@class="texatom"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msubsup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35);[p] (pause:200); [t] "super"; [n] ./*[1]/*[2]/*[1] (pitch:0.35);[p] (pause:300)','self::span[@class="msubsup"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-msub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub";[n] ./*[1]/*[2]/*[1] (pitch:-0.35); [p] (pause:300)','self::span[@class="msub"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "super";[n] ./*[1]/*[2]/*[1] (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munderover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under and";[n] ./*[1]/*[3]/*[1] (pitch:-0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)',
-'self::span[@class="munderover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munder","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="munder"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="mover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfrac","default.default",'[p] (pause:250); [n] ./*[1]/*[1]/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] ./*[1]/*[2]/*[1] (pitch:-0.3);[p] (pause:400)',
-'self::span[@class="mfrac"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msqrt","default.default",'[t] "Square root of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="msqrt"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mroot","default.default",'[t] "root of order"; [n] ./*[1]/*[4]/*[1]; [t] "of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="mroot"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfenced","default.default",'[t] "opening"; [n] ./*[1]; [m] ./*[position()>1 and position()<last()]; [t] "closing"; [n] ./*[last()]',
-'self::span[@class="mfenced"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtable"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mmultiscripts"]')};
-cvox.MathmlStoreRules.initAliases_=function(){(0,cvox.MathmlStoreRules.defineRuleAlias_)("mspace",'self::span[@class="mspace"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mstyle",'self::span[@class="mstyle"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mpadded",'self::span[@class="mpadded"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("merror",'self::span[@class="merror"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mphantom",'self::span[@class="mphantom"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("ms",
-'self::span[@class="ms"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mrow",'self::span[@class="mrow"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msub",'self::span[@class="msubsup"]',"CQFmathmlmsub");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msup",'self::span[@class="msubsup"]',"CQFmathmlmsup");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-munder",'self::span[@class="munderover"]',"CQFmathmlmunder");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-mover",'self::span[@class="munderover"]',
-"CQFmathmlmover")};
-cvox.MathmlStoreRules.initSpecializationRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] ./*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("cube","default.default",'[n] ./*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=3]");
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("square-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("cube-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',
-"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",
-'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square-sub",'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube-sub",
-'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]")};
-cvox.MathmlStoreRules.initSemanticRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("stree","default.default","[n] ./*[1]","self::stree");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel");(0,cvox.MathmlStoreRules.defineRule_)("variable-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',
-"count(./children/*)>2",'./children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.short",'[t] "equation sequence"; [m] ./children/* (separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("equality",
-"default.default",'[t] "equation"; [t] "left hand side"; [n] children/*[1];[p] (pause:200); [n] text() (pause:200);[t] "right hand side"; [n] children/*[2]','self::relseq[@role="equality"]',"count(./children/*)=2");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality","default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/identifier or ./children/number");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality2",
-"default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/function or ./children/appl");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default","[m] children/* (separator:./text())","self::relseq");(0,cvox.MathmlStoreRules.defineRule_)("binary-operation","default.default","[m] children/* (separator:text());","self::infixop");(0,cvox.MathmlStoreRules.defineRule_)("variable-addition",
-"default.default",'[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (separator:./text())','self::infixop[@role="addition"]',"count(children/*)>2",'children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-addition","default.default",'[t] "sum with,"; [t] count(./children/*); [t] ", summands";[p] (pause:400); [m] ./children/* (separator:./text())','self::infixop[@role="addition"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("prefix",
-"default.default",'[t] "prefix"; [n] text(); [t] "of" (pause 150);[n] children/*[1]',"self::prefixop");(0,cvox.MathmlStoreRules.defineRule_)("negative","default.default",'[t] "negative"; [n] children/*[1]',"self::prefixop",'self::prefixop[@role="negative"]');(0,cvox.MathmlStoreRules.defineRule_)("postfix","default.default",'[n] children/*[1]; [t] "postfix"; [n] text() (pause 300)',"self::postfixop");(0,cvox.MathmlStoreRules.defineRule_)("identifier","default.default","[n] text()","self::identifier");
-(0,cvox.MathmlStoreRules.defineRule_)("number","default.default","[n] text()","self::number");(0,cvox.MathmlStoreRules.defineRule_)("fraction","default.default",'[p] (pause:250); [n] children/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] children/*[2] (pitch:-0.3); [p] (pause:400)',"self::fraction");(0,cvox.MathmlStoreRules.defineRule_)("superscript","default.default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript");(0,cvox.MathmlStoreRules.defineRule_)("subscript",
-"default.default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',"self::subscript");(0,cvox.MathmlStoreRules.defineRule_)("ellipsis","default.default",'[p] (pause:200); [t] "dot dot dot"; [p] (pause:300)',"self::punct",'self::punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("fence-single","default.default","[n] text()","self::punct",'self::punct[@role="openfence"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="closefence"]');
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="vbar"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="application"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-punct","default.default","[p] (pause:200);","self::punct");(0,cvox.MathmlStoreRules.defineRule_)("omit-empty","default.default","","self::empty");(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close","default.default",'[p] (pause:100); [t] "open"; [n] children/*[1]; [p] (pause:200);[t] "close"',
-'self::fenced[@role="leftright"]');(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close-in-appl","default.default","[p] (pause:100); [n] children/*[1]; [p] (pause:200);",'self::fenced[@role="leftright"]',"./parent::children/parent::appl");(0,cvox.MathmlStoreRules.defineRule_)("fences-neutral","default.default",'[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);',"self::fenced",'self::fenced[@role="neutral"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-fences","default.default",
-"[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced");(0,cvox.MathmlStoreRules.defineRule_)("matrix","default.default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix");(0,cvox.MathmlStoreRules.defineRule_)("matrix-row","default.default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]');(0,cvox.MathmlStoreRules.defineRule_)("matrix-cell","default.default","[n] children/*[1]",'self::cell[@role="matrix"]');
-(0,cvox.MathmlStoreRules.defineRule_)("vector","default.default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',"self::vector");(0,cvox.MathmlStoreRules.defineRule_)("cases","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases");(0,cvox.MathmlStoreRules.defineRule_)("cases-row","default.default","[m] children/*",'self::row[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("cases-cell",
-"default.default","[n] children/*[1]",'self::cell[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("row","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row"');(0,cvox.MathmlStoreRules.defineRule_)("cases-end","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"',"self::cases","following-sibling::*");(0,cvox.MathmlStoreRules.defineRule_)("multiline","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',
-"self::multiline");(0,cvox.MathmlStoreRules.defineRule_)("line","default.default","[m] children/*","self::line");(0,cvox.MathmlStoreRules.defineRule_)("table","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table");(0,cvox.MathmlStoreRules.defineRule_)("table-row","default.default","[m] children/* (pause:100)",'self::row[@role="table"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("cases-cell",'self::cell[@role="table"]');(0,cvox.MathmlStoreRules.defineRule_)("end-punct",
-"default.default","[m] children/*; [p] (pause:300)","self::punctuated",'@role="endpunct"');(0,cvox.MathmlStoreRules.defineRule_)("start-punct","default.default","[n] content/*[1]; [p] (pause:200); [m] children/*","self::punctuated",'@role="startpunct"');(0,cvox.MathmlStoreRules.defineRule_)("integral-punct","default.default","[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2)","self::punctuated",'@role="integral"');(0,cvox.MathmlStoreRules.defineRule_)("punctuated","default.default","[m] children/* (pause:100)",
-"self::punctuated");(0,cvox.MathmlStoreRules.defineRule_)("function","default.default","[n] text()","self::function");(0,cvox.MathmlStoreRules.defineRule_)("appl","default.default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl");(0,cvox.MathmlStoreRules.defineRule_)("limboth","default.default",'[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3]',"self::limboth");(0,cvox.MathmlStoreRules.defineRule_)("sum-only","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::limboth",'self::limboth[@role="sum"]');(0,cvox.MathmlStoreRules.defineRule_)("limlower","default.default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower");(0,cvox.MathmlStoreRules.defineRule_)("limupper","default.default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',"self::limupper");(0,cvox.MathmlStoreRules.defineRule_)("largeop","default.default","[n] text()","self::largeop");(0,cvox.MathmlStoreRules.defineRule_)("bigop","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::bigop");(0,cvox.MathmlStoreRules.defineRule_)("integral","default.default","[n] children/*[1]; [p] (pause 100); [n] children/*[2]; [p] (pause 200);[n] children/*[3] (rate:0.35);","self::integral");(0,cvox.MathmlStoreRules.defineRule_)("sqrt","default.default",'[t] "Square root of"; [n] children/*[1] (rate:0.2); [p] (pause:400)',"self::sqrt");(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] children/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::superscript","children/*[2][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("text-no-mult","default.default","[n] children/*[1]; [p] (pause:200); [n] children/*[2]","self::infixop","children/text")};cvox.AbstractShifter=function(){this.isSubnavigating_=!1};cvox.AbstractShifter.prototype.begin=function(a,b){return this.currentWalker_.begin(b)};cvox.AbstractShifter.prototype.makeLessGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.makeMoreGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.ensureSubnavigating=function(){!1==this.isSubnavigating_&&(this.makeMoreGranular(),this.isSubnavigating_=!0)};
-cvox.AbstractShifter.prototype.ensureNotSubnavigating=function(){!0==this.isSubnavigating_&&(this.isSubnavigating_=!1,this.makeLessGranular())};cvox.AbstractShifter.prototype.isSubnavigating=function(){return this.isSubnavigating_};cvox.AbstractShifter.prototype.hasAction=function(a){return this.currentWalker_.hasAction(a)};cvox.AbstractShifter.prototype.performAction=function(a,b){return this.currentWalker_.performAction(a,b)};cvox.MathShifter=function(a){cvox.AbstractShifter.call(this);this.level_=0;this.bumped_=this.direction_=!1;cvox.TraverseMath.getInstance().initialize(a.start.node)};goog.inherits(cvox.MathShifter,cvox.AbstractShifter);cvox.MathShifter.prototype.next=function(a){var b=a.isReversed();this.bumped_=!cvox.TraverseMath.getInstance().nextSibling(b);return(b=cvox.TraverseMath.getInstance().getAttachedActiveNode())?cvox.CursorSelection.fromNode(b):a};
-cvox.MathShifter.prototype.sync=function(a){var b=cvox.TraverseMath.getInstance().getAttachedActiveNode();return b?cvox.CursorSelection.fromNode(b):a};cvox.MathShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("math_shifter")};cvox.MathShifter.prototype.getDescription=function(){var a=cvox.SpeechRuleEngine.getInstance().evaluateNode(cvox.TraverseMath.getInstance().activeNode);this.bumped_&&0<a.length&&a[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE);return a};
-cvox.MathShifter.prototype.getBraille=function(a,b){return new cvox.NavBraille({text:cvox.BrailleUtil.getTemplated(a.start.node,b.start.node)})};cvox.MathShifter.prototype.getGranularityMsg=function(){return this.direction_?"up to level "+this.level_:"down to level "+this.level_};cvox.MathShifter.prototype.makeLessGranular=function(){this.level_=0<this.level_?this.level_-1:0;this.direction_=!0;this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!0)};
-cvox.MathShifter.prototype.makeMoreGranular=function(){this.direction_=!1;(this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!1))||this.level_++};
-cvox.MathShifter.create=function(a){if(cvox.DomPredicates.mathPredicate(cvox.DomUtil.getAncestors(a.start.node))){var b=cvox.DomUtil.getContainingMath(a.end.node);cvox.TraverseMath.getInstance().initialize(b);cvox.SpeechRuleEngine.getInstance().parameterize(cvox.MathmlStore.getInstance());b=cvox.MathStore.createDynamicConstraint(cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style);cvox.SpeechRuleEngine.getInstance().setDynamicConstraint(b);return new cvox.MathShifter(a)}return null};cvox.TableUtil={};cvox.TableUtil.checkIfHeader=function(a){return"TH"==a.tagName||a.hasAttribute("scope")||a.hasAttribute("role")&&("rowheader"==a.getAttribute("role")||"columnheader"==a.getAttribute("role"))};
-cvox.TableUtil.determineColGroups=function(a){var b=[];if(0==a.length)return b;for(var c=0;c<a.length;c++){var d=a[c],e=cvox.TableUtil.getColNodes(d);if(0<e.length)for(d=0;d<e.length;d++){var f=e[d];if(f.hasAttribute("span"))for(var f=parseInt(f.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}else if(d.hasAttribute("span"))for(f=parseInt(d.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}return b};cvox.TableUtil.pushIfNotContained=function(a,b){-1==a.indexOf(b)&&a.push(b)};
-cvox.TableUtil.getChildRows=function(a){return cvox.XpathUtil.evalXPath('child::tbody/tr | child::thead/tr | child::*[attribute::role="row"]',a)};cvox.TableUtil.getChildCells=function(a){return cvox.XpathUtil.evalXPath('child::td | child::th | child::*[attribute::role="gridcell"] |child::*[attribute::role="rowheader"] |child::*[attribute::role="columnheader"]',a)};cvox.TableUtil.getCellWithID=function(a,b){return cvox.XpathUtil.evalXPath("id('"+b+"')",a)};
-cvox.TableUtil.getColGroups=function(a){return cvox.XpathUtil.evalXPath("child::colgroup",a)};cvox.TableUtil.getColNodes=function(a){return cvox.XpathUtil.evalXPath("child::col",a)};function ShadowTableNode(){}ShadowTableNode.prototype.rowHeaderCells=[];ShadowTableNode.prototype.colHeaderCells=[];cvox.TraverseTable=function(a){this.activeTable_=null;this.shadowTable_=[];this.candidateHeaders_=[];this.idToShadowNode_=[];this.initialize(a)};cvox.TraverseTable.prototype.colCount=null;cvox.TraverseTable.prototype.rowCount=null;cvox.TraverseTable.prototype.tableRowHeaders=null;cvox.TraverseTable.prototype.tableColHeaders=null;
-cvox.TraverseTable.prototype.initialize=function(a){a&&a!=this.activeTable_&&(this.activeTable_=a,this.currentCellCursor=null,this.tableRowHeaders=[],this.tableColHeaders=[],this.buildShadowTable_(),this.colCount=this.shadowColCount_(),this.rowCount=this.countRows_(),this.findHeaderCells_(),this.activeTable_.addEventListener("DOMSubtreeModified",goog.bind(function(){this.buildShadowTable_();this.colCount=this.shadowColCount_();this.rowCount=this.countRows_();this.tableRowHeaders=[];this.tableColHeaders=
-[];this.findHeaderCells_();0==this.colCount&&0==this.rowCount||null!=this.getCell()||this.attachCursorToNearestCell_()},this),!1))};
-cvox.TraverseTable.prototype.findNearestCursor=function(a){for(;a.firstElementChild&&"TABLE"!=a.firstElementChild.tagName&&!cvox.AriaUtil.isGrid(a.firstElementChild);)a=a.firstElementChild;for(;!cvox.DomPredicates.cellPredicate(cvox.DomUtil.getAncestors(a));)if(a=cvox.DomUtil.directedNextLeafNode(a),!cvox.DomUtil.getContainingTable(a,{allowCaptions:!0}))return null;for(var b=0;b<this.rowCount;++b)for(var c=0;c<this.colCount;++c)if(this.shadowTable_[b][c]&&cvox.DomUtil.isDescendantOfNode(a,this.shadowTable_[b][c].activeCell))return[b,
-c];return null};cvox.TraverseTable.prototype.attachCursorToNearestCell_=function(){if(this.currentCellCursor){var a=this.currentCellCursor,b=this.shadowTable_[a[0]];if(b)this.currentCellCursor=[a[0],b.length-1];else if(b=this.shadowTable_.length,0==b)this.currentCellCursor=null;else{var c=this.shadowTable_[b-1][a[1]];c?this.currentCellCursor=[b-1,a[1]]:this.goToLastCell()}}else this.goToLastCell()};
-cvox.TraverseTable.prototype.buildShadowTable_=function(){this.shadowTable_=[];for(var a=cvox.TableUtil.getChildRows(this.activeTable_),b=null,c=null,d=cvox.TableUtil.getColGroups(this.activeTable_),d=cvox.TableUtil.determineColGroups(d),e=0;e<a.length;e++)this.shadowTable_.push([]);for(e=0;e<a.length;e++)for(var f=cvox.TableUtil.getChildCells(a[e]),g=0,h=0;g<f.length;)if(null==this.shadowTable_[e][h]){var k=f[g],l=1,m=1;k.hasAttribute("colspan")&&(l=parseInt(k.getAttribute("colspan"),10),isNaN(l)||
-0>=l)&&(l=1);k.hasAttribute("rowspan")&&(m=parseInt(k.getAttribute("rowspan"),10),isNaN(m)||0>=m)&&(m=1);for(var p=0;p<m;p++)for(var q=0;q<l;q++){var n=new ShadowTableNode;0==p&&0==q?(n.spanned=!1,n.rowSpan=!1,n.colSpan=!1):(n.spanned=!0,n.rowSpan=1<m,n.colSpan=1<l);n.i=e;n.j=h;n.activeCell=k;n.rowHeaderCells=[];n.colHeaderCells=[];n.isRowHeader=!1;n.isColHeader=!1;cvox.TableUtil.checkIfHeader(n.activeCell)?this.candidateHeaders_.push(n):n.activeCell.hasAttribute("headers")&&this.candidateHeaders_.push(n);
-null==b?(b=a[e].parentNode,c=0):a[e].parentNode!=b&&(b=a[e].parentNode,c+=1);n.rowGroup=c;n.colGroup=0<d.length?d[h]:0;n.spanned||null!=k.id&&(this.idToShadowNode_[k.id]=n);this.shadowTable_[e+p][h+q]=n}h+=l;g++}else h+=1;return this.shadowTable_};
-cvox.TraverseTable.prototype.findHeaderCells_=function(){for(var a=0;a<this.candidateHeaders_.length;a++){var b=this.candidateHeaders_[a],c=b.activeCell,d=null,e=null;if(!b.spanned){"TH"!=c.tagName||c.hasAttribute("scope")?c.hasAttribute("scope")?e=c.getAttribute("scope"):c.hasAttribute("role")&&"rowheader"==c.getAttribute("role")?e="row":c.hasAttribute("role")&&"columnheader"==c.getAttribute("role")&&(e="col"):(0<b.j?"TH"==this.shadowTable_[b.i][b.j-1].activeCell.tagName&&(d="col"):b.j<this.shadowTable_[b.i].length-
-1?"TH"==this.shadowTable_[b.i][b.j+1].activeCell.tagName&&(d="col"):d="col",null==d&&(0<b.i?"TH"==this.shadowTable_[b.i-1][b.j].activeCell.tagName&&(d="row"):b.i<this.shadowTable_.length-1?"TH"==this.shadowTable_[b.i+1][b.j].activeCell.tagName&&(d="row"):d="row"));if("row"==e||"row"==d){b.isRowHeader=!0;for(d=b.j;d<this.shadowTable_[b.i].length;d++)e=this.shadowTable_[b.i][d],e.rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("col"==e||"col"==d){b.isColHeader=!0;for(e=b.i;e<this.shadowTable_.length;e++){d=
-this.shadowTable_[e][b.j];if(null==d)break;d.colHeaderCells.push(c)}this.tableColHeaders.push(c)}else if("rowgroup"==e){b.isRowHeader=!0;for(var f=b.rowGroup,d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].rowHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length&&this.shadowTable_[e][0].rowGroup==f;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("colgroup"==e){b.isColHeader=!0;f=b.colGroup;
-for(d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].colGroup==f&&this.shadowTable_[b.i][d].colHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].colGroup==f&&this.shadowTable_[e][d].colHeaderCells.push(c);this.tableColHeaders.push(c)}c.hasAttribute("headers")&&this.findAttrbHeaders_(b);c.hasAttribute("aria-describedby")&&this.findAttrbDescribedBy_(b)}}};
-cvox.TraverseTable.prototype.findAttrbHeaders_=function(a){for(var b=a.activeCell,c=b.getAttribute("headers").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];if(!cvox.TableUtil.checkIfHeader(g.activeCell)){var h=Math.abs(g.i-a.i),k=Math.abs(g.j-a.j);0==h||h<k?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,g.activeCell)):
-(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell))}}};
-cvox.TraverseTable.prototype.findAttrbDescribedBy_=function(a){for(var b=a.activeCell,c=b.getAttribute("aria-describedby").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];cvox.TableUtil.checkIfHeader(g.activeCell)||(g.activeCell.hasAttribute("role")&&"rowheader"==g.activeCell.getAttribute("role")?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,
-g.activeCell)):g.activeCell.hasAttribute("role")&&"columnheader"==g.activeCell.getAttribute("role")&&(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell)))}};cvox.TraverseTable.prototype.getCell=function(){if(!this.currentCellCursor||!this.shadowTable_)return null;var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a&&a.activeCell};
-cvox.TraverseTable.prototype.getCellAt=function(a){return a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]&&(a=this.shadowTable_[a[0]][a[1]],null!=a)?a.activeCell:null};cvox.TraverseTable.prototype.getCellRowHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.rowHeaderCells};cvox.TraverseTable.prototype.getCellColHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.colHeaderCells};
-cvox.TraverseTable.prototype.isSpanned=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.spanned};cvox.TraverseTable.prototype.isRowHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isRowHeader};cvox.TraverseTable.prototype.isColHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isColHeader};
-cvox.TraverseTable.prototype.getCol=function(){for(var a=[],b=0;b<this.shadowTable_.length;b++)if(this.shadowTable_[b][this.currentCellCursor[1]]){var c=this.shadowTable_[b][this.currentCellCursor[1]];if(c.colSpan&&c.rowSpan){var d=a[a.length-1];d!=c.activeCell&&a.push(c.activeCell)}else!c.colSpan&&c.rowSpan||a.push(c.activeCell)}return a};cvox.TraverseTable.prototype.summaryText=function(){return this.activeTable_.hasAttribute("summary")?this.activeTable_.getAttribute("summary"):null};
-cvox.TraverseTable.prototype.shadowColCount_=function(){for(var a=0,b=0;b<this.shadowTable_.length;b++)this.shadowTable_[b].length>a&&(a=this.shadowTable_[b].length);return a};cvox.TraverseTable.prototype.countRows_=function(){var a=cvox.TableUtil.getChildRows(this.activeTable_);return a.length};cvox.TraverseTable.prototype.nextRow=function(){return this.currentCellCursor?this.goToRow(this.currentCellCursor[0]+1):this.goToRow(0)};
-cvox.TraverseTable.prototype.nextCol=function(){return this.currentCellCursor?this.goToCol(this.currentCellCursor[1]+1):this.goToCol(0)};cvox.TraverseTable.prototype.goToRow=function(a){return null!=this.shadowTable_[a]?(this.currentCellCursor=null==this.currentCellCursor?[a,0]:[a,this.currentCellCursor[1]],!0):!1};cvox.TraverseTable.prototype.goToCol=function(a){if(0>a||a>=this.colCount)return!1;this.currentCellCursor=null==this.currentCellCursor?[0,a]:[this.currentCellCursor[0],a];return!0};
-cvox.TraverseTable.prototype.goToCell=function(a){if(a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]){var b=this.shadowTable_[a[0]][a[1]];if(null!=b)return this.currentCellCursor=a,!0}return!1};cvox.TraverseTable.prototype.goToLastCell=function(){var a=this.shadowTable_.length;if(0==a)return!1;var b=this.shadowTable_[a-1],a=[a-1,b.length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};
-cvox.TraverseTable.prototype.goToRowLastCell=function(){var a=this.currentCellCursor[0],a=[a,this.shadowTable_[a].length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TraverseTable.prototype.goToColLastCell=function(){var a=this.getCol(),a=[a.length-1,this.currentCellCursor[1]],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TableWalker=function(){this.tt=new cvox.TraverseTable(null)};goog.inherits(cvox.TableWalker,cvox.AbstractWalker);cvox.TableWalker.prototype.next=function(a){return this.nextRow(a)};cvox.TableWalker.prototype.sync=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell(a)},this))};
-cvox.TableWalker.prototype.getDescription=function(a,b){var c=this.syncPosition_(b);if(!c)return[];this.tt.goToCell(c);c=cvox.DescriptionUtil.getCollectionDescription(a,b);0==c.length&&c.push(new cvox.NavDescription({annotation:cvox.ChromeVox.msgs.getMsg("empty_cell")}));return c};cvox.TableWalker.prototype.getBraille=function(a,b){new cvox.NavBraille({});var c=this.syncPosition_(b);if(c){var d=cvox.BrailleUtil.getTemplated(a.start.node,b.start.node);d.append(" "+ ++c[0]+"/"+ ++c[1])}return new cvox.NavBraille({text:d})};
-cvox.TableWalker.prototype.goToFirstCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToCell([0,0])},this))};cvox.TableWalker.prototype.goToLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToLastCell()},this))};cvox.TableWalker.prototype.goToRowFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([a[0],0])},this))};
-cvox.TableWalker.prototype.goToRowLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToRowLastCell()},this))};cvox.TableWalker.prototype.goToColFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([0,a[1]])},this))};cvox.TableWalker.prototype.goToColLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToColLastCell()},this))};
-cvox.TableWalker.prototype.nextRow=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0]+(a.isReversed()?-1:1),b[1]])},this))};cvox.TableWalker.prototype.nextCol=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0],b[1]+(a.isReversed()?-1:1)])},this))};cvox.TableWalker.prototype.announceHeaders=function(a){cvox.ChromeVox.tts.speak(this.getHeaderText_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);return a};
-cvox.TableWalker.prototype.speakTableLocation=function(a){cvox.ChromeVox.navigationManager.speakDescriptionArray(this.getLocationDescription_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,null);return a};cvox.TableWalker.prototype.exitShifterContent=function(a){a=this.getTableNode_(a);if(!a)return null;a=cvox.DomUtil.directedNextLeafNode(a,!1);return cvox.CursorSelection.fromNode(a)};
-cvox.TableWalker.prototype.getHeaderText_=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))&&this.tt.goToCell(a)?this.getRowHeaderText_(a)+" "+this.getColHeaderText_(a):cvox.ChromeVox.msgs.getMsg("not_inside_table")};cvox.TableWalker.prototype.getLocationDescription_=function(a){a=this.getLocationInfo(a);return null==a?null:[new cvox.NavDescription({text:cvox.ChromeVox.msgs.getMsg("table_location",a)})]};
-cvox.TableWalker.prototype.getRowHeaderText_=function(a){var b="",c=this.tt.getCellRowHeaders();if(0==c.length)return c=this.tt.getCellAt([a[0],0]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("row_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("row_header")+b};
-cvox.TableWalker.prototype.getColHeaderText_=function(a){var b="",c=this.tt.getCellColHeaders();if(0==c.length)return c=this.tt.getCellAt([0,a[1]]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("column_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("column_header")+
-b};cvox.TableWalker.prototype.getLocationInfo=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))?[a[0]+1,this.tt.rowCount,a[1]+1,this.tt.colCount].map(function(a){return cvox.ChromeVox.msgs.getNumber(a)}):null};
-cvox.TableWalker.prototype.goTo_=function(a,b){this.tt.initialize(this.getTableNode_(a));var c=this.tt.findNearestCursor(a.end.node);if(!c)return null;this.tt.goToCell(c);return b(c)?cvox.CursorSelection.fromNode(this.tt.getCell()).setReversed(a.isReversed()):null};cvox.TableWalker.prototype.getTableNode_=function(a){return cvox.DomUtil.getContainingTable(a.end.node)};cvox.TableWalker.prototype.syncPosition_=function(a){var b=this.getTableNode_(a);this.tt.initialize(b);return this.tt.findNearestCursor(a.end.node)};cvox.ColumnWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.ColumnWalker,cvox.TableWalker);cvox.ColumnWalker.prototype.next=function(a){return this.nextCol(a)};cvox.ColumnWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("column_granularity")};cvox.RowWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.RowWalker,cvox.TableWalker);cvox.RowWalker.prototype.next=function(a){return this.nextRow(a)};cvox.RowWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("row_granularity")};cvox.TableShifter=function(){this.rowWalker_=new cvox.RowWalker;this.columnWalker_=new cvox.ColumnWalker;this.currentWalker_=this.rowWalker_;this.bumpedEdge_=!1;this.begin_=!0;cvox.AbstractShifter.call(this)};goog.inherits(cvox.TableShifter,cvox.AbstractShifter);cvox.TableShifter.prototype.next=function(a){var b=this.currentWalker_.next(a);return b?b:(this.bumpedEdge_=!0,a)};
-cvox.TableShifter.prototype.sync=function(a){return"TABLE"==a.start.node.tagName?a.isReversed()?this.currentWalker_.goToLastCell(a):this.currentWalker_.goToFirstCell(a):this.currentWalker_.sync(a)};cvox.TableShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("table_shifter")};
-cvox.TableShifter.prototype.getDescription=function(a,b){var c=this.currentWalker_.getDescription(a,b);if(0<c.length&&(this.bumpedEdge_&&(c[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE),this.bumpedEdge_=!1),this.begin_)){var d=this.currentWalker_.tt.summaryText(),e=this.currentWalker_.getLocationInfo(b);null!=e&&c.push(new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("table_location",e),text:"",annotation:d?d+" ":""}));this.currentWalker_.tt.isSpanned()&&c.push(new cvox.NavDescription({text:"",
-annotation:cvox.ChromeVox.msgs.getMsg("spanned")}));this.begin_=!1}return c};cvox.TableShifter.prototype.getBraille=function(a,b){return this.currentWalker_.getBraille(a,b)};cvox.TableShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};cvox.TableShifter.prototype.makeLessGranular=function(){cvox.TableShifter.superClass_.makeLessGranular.call(this);this.currentWalker_=this.rowWalker_};
-cvox.TableShifter.prototype.makeMoreGranular=function(){cvox.TableShifter.superClass_.makeMoreGranular.call(this);this.currentWalker_=this.columnWalker_};cvox.TableShifter.create=function(a){a=cvox.DomUtil.getAncestors(a.start.node);return cvox.DomPredicates.tablePredicate(a)&&!cvox.DomPredicates.captionPredicate(a)?new cvox.TableShifter:null};cvox.NavigationHistory=function(){this.reset_()};cvox.NavigationHistory.MAX_HISTORY_LEN_=30;cvox.NavigationHistory.prototype.reset_=function(){var a=document.body;this.history_=[a];this.arrivedValid_=!0};cvox.NavigationHistory.prototype.update=function(a){var b=this.history_[0];a&&a!=b&&this.history_.unshift(a);this.history_.length>cvox.NavigationHistory.MAX_HISTORY_LEN_&&this.history_.pop();this.arrivedValid_=this.isValidNode_(a)};
-cvox.NavigationHistory.prototype.becomeInvalid=function(a){this.clean_();return this.arrivedValid_?!this.isValidNode_(a):(this.arrivedValid_=!0,!1)};cvox.NavigationHistory.prototype.revert=function(a){var b=document.activeElement;b!=document.body&&this.isValidNode_(b)&&this.update(b);if(a)for(;0<this.history_.length;){b=this.history_[0];if(a(b))break;this.history_.shift()}return{current:this.history_[0],previous:this.history_[1]}};
-cvox.NavigationHistory.prototype.clean_=function(){for(var a=!1,b=this.history_.length-1;0<=b;b--){var c=this.isValidNode_(this.history_[b]);c||(this.history_.splice(b,1),a=!0)}return a};cvox.NavigationHistory.prototype.isValidNode_=function(a){return cvox.DomUtil.isAttachedToDocument(a)&&cvox.DomUtil.isVisible(a)?!0:!1};cvox.TraverseContent=function(a){this.currentDomObj=null!=a?a:document.body;var b=document.createRange();try{b.selectNode(this.currentDomObj),this.startCursor_=new cvox.Cursor(b.startContainer,b.startOffset,cvox.TraverseUtil.getNodeText(b.startContainer)),this.endCursor_=new cvox.Cursor(b.endContainer,b.endOffset,cvox.TraverseUtil.getNodeText(b.endContainer))}catch(c){window.console.log("Error: Unselectable node:"),window.console.log(a)}};goog.addSingletonGetter(cvox.TraverseContent);
-cvox.TraverseContent.prototype.lastSelectionWasWhitespace=!1;cvox.TraverseContent.prototype.skipWhitespace=!1;cvox.TraverseContent.prototype.skipInvalidSelections=!0;cvox.TraverseContent.prototype.breakAtLinks=!0;cvox.TraverseContent.kCharacter="character";cvox.TraverseContent.kWord="word";cvox.TraverseContent.kSentence="sentence";cvox.TraverseContent.kLine="line";cvox.TraverseContent.kParagraph="paragraph";
-cvox.TraverseContent.kAllGrains=[cvox.TraverseContent.kParagraph,cvox.TraverseContent.kSentence,cvox.TraverseContent.kLine,cvox.TraverseContent.kWord,cvox.TraverseContent.kCharacter];cvox.TraverseContent.prototype.syncToCursorSelection=function(a){this.startCursor_=a.start.clone();this.endCursor_=a.end.clone()};cvox.TraverseContent.prototype.getCurrentCursorSelection=function(){return new cvox.CursorSelection(this.startCursor_,this.endCursor_)};
-cvox.TraverseContent.prototype.updateSelection=function(){cvox.TraverseUtil.setSelection(this.startCursor_,this.endCursor_);cvox.SelectionUtil.scrollToSelection(window.getSelection())};cvox.TraverseContent.prototype.getCurrentRange=function(){var a=document.createRange();try{a.setStart(this.startCursor_.node,this.startCursor_.index),a.setEnd(this.endCursor_.node,this.endCursor_.index)}catch(b){console.log("Invalid range ")}return a};cvox.TraverseContent.prototype.getCurrentText=function(){return cvox.SelectionUtil.getRangeText(this.getCurrentRange())};
-cvox.TraverseContent.prototype.collapseToEnd=function(){this.startCursor_=this.endCursor_.clone()};cvox.TraverseContent.prototype.collapseToStart=function(){this.endCursor_=this.startCursor_.clone()};
-cvox.TraverseContent.prototype.moveNext=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getNextWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getNextChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getNextParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getNextLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.moveNext(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};
-cvox.TraverseContent.prototype.movePrev=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getPreviousWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getPreviousChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getPreviousParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getPreviousLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.movePrev(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};cvox.TraverseContent.prototype.getBreakTags=function(){return{A:this.breakAtLinks,BR:!0,HR:!0}};
-cvox.TraverseContent.prototype.nextElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.moveNext(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};
-cvox.TraverseContent.prototype.prevElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.movePrev(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};cvox.TraverseContent.prototype.reset=function(){window.getSelection().removeAllRanges()};cvox.AbstractSelectionWalker=function(){this.objWalker_=new cvox.BareObjectWalker;this.tc_=cvox.TraverseContent.getInstance();this.grain=""};goog.inherits(cvox.AbstractSelectionWalker,cvox.AbstractWalker);
-cvox.AbstractSelectionWalker.prototype.next=function(a){var b=a.isReversed();this.tc_.syncToCursorSelection(a.clone().setReversed(!1));var c=b?this.tc_.prevElement(this.grain):this.tc_.nextElement(this.grain);if(null==c)return this.objWalker_.next(a);var c=this.tc_.getCurrentCursorSelection().setReversed(b),d=this.objWalker_.next(a),d=d?d.setReversed(b):null;return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||
-cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.sync=function(a){var b=a.isReversed(),c=null;if(a.start.equals(a.end)&&"Text"!=a.start.node.constructor.name){for(c=a.start.node;c&&cvox.DomUtil.directedFirstChild(c,b)&&!cvox.TraverseUtil.treatAsLeafNode(c);){for(var d=cvox.DomUtil.directedFirstChild(c,b);d;)if(cvox.DomUtil.isVisible(d,{checkAncestors:!1,checkDescendants:!1})){c=d;break}else d=cvox.DomUtil.directedNextSibling(d,b);if(!d)break}c=cvox.CursorSelection.fromNode(c)}else c=a.clone(),b?c.start=c.end:
-c.end=c.start;c=this.next(c.setReversed(!1));d=(d=this.objWalker_.sync(a))?d.setReversed(b):null;if(!c)return d;c.setReversed(b);return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.getDescription=function(a,b){var c=cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getUniqueAncestors(a.end.node,b.start.node),!0,cvox.ChromeVox.verbosity);c.text=b.getText()||c.text;return[c]};cvox.AbstractSelectionWalker.prototype.getBraille=function(a,b){var c=b.absStart().node,d=cvox.TraverseUtil.getNodeText(c),e=new cvox.Spannable(d);e.setSpan(c,0,d.length);return new cvox.NavBraille({text:e,startIndex:b.absStart().index,endIndex:b.absEnd().index})};cvox.CharacterWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kCharacter};goog.inherits(cvox.CharacterWalker,cvox.AbstractSelectionWalker);cvox.CharacterWalker.prototype.getDescription=function(a,b){var c=cvox.CharacterWalker.superClass_.getDescription.call(this,a,b);c.forEach(function(a){a.personality||(a.personality={});a.personality.phoneticCharacters=!0});return c};cvox.CharacterWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("character_granularity")};cvox.GroupUtil={};cvox.GroupUtil.MAX_CHARCOUNT_=1500;cvox.GroupUtil.BREAKOUT_SELECTOR_='blockquote,button,code,form,frame,h1,h2,h3,h4,h5,h6,hr,iframe,input,object,ol,p,pre,select,table,tr,ul,math,span.math,[role~="alert alertdialog button checkbox combobox dialog log marquee menubar progressbar radio radiogroup scrollbar slider spinbutton status tab tabpanel textbox toolbar tooltip treeitem article document group heading img list math region row separator"]';
-cvox.GroupUtil.isLeafNode=function(a){if("LABEL"==a.tagName)return cvox.DomUtil.isLeafNode(a);if(cvox.DomUtil.isLeafNode(a))return!0;if(!cvox.DomUtil.isSemanticElt(a))for(var b=a.querySelectorAll(cvox.GroupUtil.BREAKOUT_SELECTOR_),c=0;c<b.length;++c)if(cvox.DomUtil.hasContent(b[c]))return!1;if(cvox.AriaUtil.isCompositeControl(a)&&!cvox.DomUtil.isFocusable(a))return!1;a=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a));return a.length>cvox.GroupUtil.MAX_CHARCOUNT_||
-""===a.replace(/\s/g,"")?!1:!0};cvox.GroupWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.GroupWalker,cvox.AbstractNodeWalker);cvox.GroupWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getCollectionDescription(a,b)};cvox.GroupWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};cvox.GroupWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("group_strategy")};cvox.GroupWalker.prototype.stopNodeDescent=function(a){return cvox.GroupUtil.isLeafNode(a)};cvox.StructuralLineWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kLine};goog.inherits(cvox.StructuralLineWalker,cvox.AbstractSelectionWalker);cvox.StructuralLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("structural_line")};
-cvox.StructuralLineWalker.prototype.getDescription=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getDescription.call(this,a,b);c[0].text=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index)+c[0].text;return c};
-cvox.StructuralLineWalker.prototype.getBraille=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getBraille.call(this,a,b),d=this.objWalker_.sync(b).absStart().node,e=a.absEnd().node,f=void 0;b.start.equals(b.end)||cvox.DomPredicates.editTextPredicate([d])||(f=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index),f+=b.getText());e=cvox.BrailleUtil.getTemplated(e,d,{name:f});e.setSpan(d,0,e.getLength());c.text=e;c.startIndex=0;c.endIndex=0;return c};cvox.LayoutLineWalker=function(){this.subWalker_=new cvox.StructuralLineWalker};goog.inherits(cvox.LayoutLineWalker,cvox.AbstractWalker);cvox.LayoutLineWalker.prototype.next=function(a){var b=new cvox.CursorSelection(a.end,a.end,a.isReversed()),c=this.subWalker_.sync(b);if(!c)return null;b=this.subWalker_.next(b);if(!b)return null;b.setReversed(a.isReversed());return this.extend_(b).setReversed(!1)};
-cvox.LayoutLineWalker.prototype.sync=function(a){var b=this.subWalker_.sync(a);if(!b)return null;var c=this.extend_(b),b=this.extend_(b.setReversed(!b.isReversed()));return new cvox.CursorSelection(b.end,c.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.getDescription=function(a,b){var c=[],d=a,e=b.clone().setReversed(!1),f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return[];if(e.start.node==e.end.node)return this.subWalker_.getDescription(a,b);for(;f&&!f.end.equals(e.end);)c.push.apply(c,this.subWalker_.getDescription(d,f)),d=f,f=this.subWalker_.next(f);f&&c.push.apply(c,this.subWalker_.getDescription(d,f));return c};
-cvox.LayoutLineWalker.prototype.getBraille=function(a,b){var c=new cvox.NavBraille({}),d=this.subWalker_.sync(b.clone().setReversed(!1)),e=this.sync(b).setReversed(!1);if(!e||!d)return c;var f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return c;for(;f&&!f.end.equals(e.end);)this.appendBraille_(a,d,f,c),a=f,f=this.subWalker_.next(f);f&&this.appendBraille_(a,d,f,c);return c};cvox.LayoutLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("layout_line")};
-cvox.LayoutLineWalker.prototype.isVisualLineBreak_=function(a,b){if(this.wantsOwnLine_(a.end.node)||this.wantsOwnLine_(b.start.node))return!0;var c=a.getRange().getBoundingClientRect(),d=b.getRange().getBoundingClientRect();0==c.width&&0==c.height&&a.end.node.nodeType==Node.ELEMENT_NODE&&(c=a.end.node.getBoundingClientRect());0==d.width&&0==d.height&&b.start.node.nodeType==Node.ELEMENT_NODE&&(d=b.start.node.getBoundingClientRect());return c.bottom!=d.bottom};
-cvox.LayoutLineWalker.prototype.wantsOwnLine_=function(a){return a instanceof HTMLTextAreaElement||a.parentNode instanceof HTMLTextAreaElement};cvox.LayoutLineWalker.prototype.extend_=function(a){var b=a,c=a;do b=c,c=this.subWalker_.next(b);while(c&&!this.isVisualLineBreak_(b,c));return new cvox.CursorSelection(a.start,b.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.appendBraille_=function(a,b,c,d){a=this.subWalker_.getBraille(a,c).text;var e=a.getSpanInstanceOf(cvox.BrailleUtil.ValueSelectionSpan);0<d.text.getLength()&&d.text.append(cvox.BrailleUtil.ITEM_SEPARATOR);for(var f=c.start.node;f.parentNode&&cvox.DomUtil.isLeafNode(f.parentNode);)f=f.parentNode;var g=d.text.getLength(),h=g+a.getLength();d.text.append(a.toString());d.text.setSpan(f,g,h);b&&c.absEquals(b)&&(e?(d.startIndex=g+a.getSpanStart(e),d.endIndex=g+a.getSpanEnd(e)):
-(d.startIndex=g,d.endIndex=g+1))};cvox.ObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.ObjectWalker,cvox.AbstractNodeWalker);cvox.ObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AbstractNodeWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getDescriptionFromNavigation(a.end.node,b.start.node,!0,cvox.ChromeVox.verbosity)};cvox.ObjectWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};
-cvox.ObjectWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("object_strategy")};cvox.SentenceWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kSentence};goog.inherits(cvox.SentenceWalker,cvox.AbstractSelectionWalker);cvox.SentenceWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("sentence_granularity")};cvox.WordWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kWord};goog.inherits(cvox.WordWalker,cvox.AbstractSelectionWalker);cvox.WordWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("word_granularity")};cvox.NavigationShifter=function(){this.reset_();cvox.AbstractShifter.call(this)};goog.inherits(cvox.NavigationShifter,cvox.AbstractShifter);cvox.NavigationShifter.GRANULARITIES={CHARACTER:0,WORD:1,LINE:2,SENTENCE:3,OBJECT:4,GROUP:5};cvox.NavigationShifter.prototype.storeOn=function(a){a.granularity=this.getGranularity()};cvox.NavigationShifter.prototype.readFrom=function(a){this.setGranularity(a.granularity)};
-cvox.NavigationShifter.prototype.next=function(a){a=this.currentWalker_.next(a);this.currentWalkerIndex_<=cvox.NavigationShifter.GRANULARITIES.LINE&&a&&(cvox.TraverseContent.getInstance().syncToCursorSelection(a.clone().setReversed(!1)),cvox.TraverseContent.getInstance().updateSelection());return a};cvox.NavigationShifter.prototype.sync=function(a){return this.currentWalker_.sync(a)};cvox.NavigationShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("navigation_shifter")};
-cvox.NavigationShifter.prototype.getDescription=function(a,b){return this.currentWalker_.getDescription(a,b)};cvox.NavigationShifter.prototype.getBraille=function(a,b){return this.lineWalker_.getBraille(a,b)};cvox.NavigationShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};
-cvox.NavigationShifter.prototype.makeMoreGranular=function(){cvox.NavigationShifter.superClass_.makeMoreGranular.call(this);this.currentWalkerIndex_=Math.max(this.currentWalkerIndex_-1,0);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_--;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.makeLessGranular=function(){cvox.NavigationShifter.superClass_.makeLessGranular.call(this);this.currentWalkerIndex_=Math.min(this.currentWalkerIndex_+1,this.walkers_.length-1);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_++;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.setGranularity=function(a){this.ensureNotSubnavigating();this.currentWalkerIndex_=a;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.prototype.getGranularity=function(){var a=this.isSubnavigating();this.ensureNotSubnavigating();var b=this.currentWalkerIndex_;a&&this.ensureSubnavigating();return b};
-cvox.NavigationShifter.prototype.hasAction=function(a){return"toggleLineType"==a?!0:cvox.NavigationShifter.superClass_.hasAction.call(this,a)};cvox.NavigationShifter.create=function(){return new cvox.NavigationShifter};
-cvox.NavigationShifter.prototype.reset_=function(){this.groupWalker_=new cvox.GroupWalker;this.objectWalker_=new cvox.ObjectWalker;this.sentenceWalker_=new cvox.SentenceWalker;this.lineWalker_=new cvox.LayoutLineWalker;this.wordWalker_=new cvox.WordWalker;this.characterWalker_=new cvox.CharacterWalker;this.walkers_=[this.characterWalker_,this.wordWalker_,this.lineWalker_,this.sentenceWalker_,this.objectWalker_,this.groupWalker_];this.currentWalkerIndex_=this.walkers_.indexOf(this.groupWalker_);this.currentWalker_=
-this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.allowSentence=!1;cvox.NavigationSpeaker=function(){this.stopReading=!1;this.id_=1};
-cvox.NavigationSpeaker.prototype.speakDescriptionArray=function(a,b,c){a=this.reorderAnnotations(a);this.stopReading=!1;this.id_=(this.id_+1)%1E4;var d=this,e=function(b,g,h){var k=a[b];if(k&&!d.stopReading&&d.id_==h){var l=function(){for(var a=0;a<k.earcons.length;a++)cvox.ChromeVox.earcons.playEarcon(k.earcons[a])},m=function(){e(b+1,cvox.AbstractTts.QUEUE_MODE_QUEUE,h)},p=function(){k.personality&&k.personality[cvox.AbstractTts.PAUSE]&&"number"==typeof k.personality[cvox.AbstractTts.PAUSE]?setTimeout(m,
-k.personality[cvox.AbstractTts.PAUSE]):m();b==a.length-1&&c&&c()};k.isEmpty()?(l(),p()):(k.speak(g,l,p),cvox.ChromeVox.host.hasTtsCallback()||(l(),p()))}};e(0,b,this.id_);0==a.length&&c&&c()};cvox.NavigationSpeaker.structuredElement=function(a){switch(a){case "table":case "Math":return!0}return!1};
-cvox.NavigationSpeaker.prototype.reorderAnnotations=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];cvox.NavigationSpeaker.structuredElement(d.annotation)&&(b.push(new cvox.NavDescription({text:"",annotation:d.annotation})),d.annotation="");b.push(d)}return b};cvox.NavigationManager=function(){this.addInterframeListener_();this.reset()};cvox.NavigationManager.prototype.storeOn=function(a){a.reversed=this.isReversed();a.keepReading=this.keepReading_;a.findNext=this.predicate_;this.shifter_.storeOn(a)};cvox.NavigationManager.prototype.readFrom=function(a){this.curSel_.setReversed(a.reversed);this.shifter_.readFrom(a);a.keepReading&&this.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH)};
-cvox.NavigationManager.prototype.reset=function(){this.navSpeaker_=new cvox.NavigationSpeaker;this.shifterTypes_=[cvox.NavigationShifter,cvox.TableShifter,cvox.MathShifter];this.shifterStack_=[];this.shifter_=new cvox.NavigationShifter;this.curSel_=document.activeElement!=document.body?cvox.CursorSelection.fromNode(document.activeElement):this.shifter_.begin(this.curSel_,{reversed:!1});this.prevSel_=this.curSel_.clone();this.ignoreIframesNoMatterWhat_=this.exitedShifter_=this.enteredShifter_=this.pageEndAnnounced_=
-this.pageEnd_=this.keepReading_=this.recovered_=this.skipped_=!1;this.pageSel_=null;this.predicate_="";this.saveSel_=null;this.activeIndicator&&this.activeIndicator.removeFromDom();this.activeIndicator=new cvox.ActiveIndicator;this.navigationHistory_=new cvox.NavigationHistory;this.focusRecovery_="chrome:"!=window.location.protocol;this.iframeIdMap={};this.nextIframeId=1;document.activeElement!=document.body&&this.sync();cvox.TraverseMath.getInstance()};
-cvox.NavigationManager.prototype.resolve=function(a){if(!this.getFocusRecovery())return!0;var b=this.getCurrentNode();if(!this.navigationHistory_.becomeInvalid(b)||this.hasNext_())return!0;b=this.navigationHistory_.revert(a);if(!b.current)return!0;a=cvox.CursorSelection.fromNode(b.current);b=cvox.CursorSelection.fromNode(b.previous);a=a||cvox.CursorSelection.fromBody();b=b||cvox.CursorSelection.fromBody();a.setReversed(this.isReversed());this.updateSel(a,b);this.recovered_=!0;return!1};
-cvox.NavigationManager.prototype.getFocusRecovery=function(){return this.focusRecovery_};cvox.NavigationManager.prototype.setFocusRecovery=function(a){this.focusRecovery_=a};cvox.NavigationManager.prototype.next_=function(a){return this.tryBoundaries_(this.shifter_.next(this.curSel_),a)?(this.pageSel_&&this.pageSel_.extend(this.curSel_),!0):!1};
-cvox.NavigationManager.prototype.hasNext_=function(){if(0<this.shifterStack_.length)return!0;var a=this.curSel_.clone(),b=!1,c=new cvox.NavigationShifter;c.setGranularity(this.shifter_.getGranularity());c.sync(a);c.next(a)&&(b=!0);return b};
-cvox.NavigationManager.prototype.findNext=function(a,b,c){this.predicate_=b||"";this.resolve();this.shifter_=this.shifterStack_[0]||this.shifter_;this.shifterStack_=[];a=cvox.FindUtil.findNext(this.curSel_,a,c);this.ignoreIframesNoMatterWhat_||this.tryIframe_(a&&a.start.node);a&&this.updateSelToArbitraryNode(a.start.node);this.predicate_="";return a};cvox.NavigationManager.prototype.sync=function(){this.resolve();var a=this.shifter_.sync(this.curSel_);a&&(this.curSel_=a)};
-cvox.NavigationManager.prototype.syncAll=function(a){this.sync();this.setFocus(a);this.updateIndicator()};cvox.NavigationManager.prototype.clearPageSel=function(a){var b=!!this.pageSel_;b&&a&&(a=cvox.ChromeVox.msgs.getMsg("clear_page_selection"),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION));this.pageSel_=null;return b};
-cvox.NavigationManager.prototype.togglePageSel=function(){this.pageSel_=this.pageSel_?null:new cvox.PageSelection(this.curSel_.setReversed(!1));return!!this.pageSel_};
-cvox.NavigationManager.prototype.getDescription=function(){if(this.getCurrentNode().hasAttribute&&this.getCurrentNode().hasAttribute("cvoxnodedesc")){for(var a=cvox.ChromeVoxJSON.parse(this.getCurrentNode().getAttribute("cvoxnodedesc")),b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b}var e=this.pageSel_?this.pageSel_.getDescription(this.shifter_,this.prevSel_,this.curSel_):this.shifter_.getDescription(this.prevSel_,
-this.curSel_),a=[];this.skipped_&&(a.push(cvox.AbstractEarcons.PARAGRAPH_BREAK),this.skipped_=!1);this.recovered_&&(a.push(cvox.AbstractEarcons.FONT_CHANGE),this.recovered_=!1);this.pageEnd_&&(a.push(cvox.AbstractEarcons.WRAP),this.pageEnd_=!1);this.enteredShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_ENTER),this.enteredShifter_=!1);this.exitedShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_EXIT),this.exitedShifter_=!1);0<a.length&&0<e.length&&a.forEach(function(a){e[0].pushEarcon(a)});return e};
-cvox.NavigationManager.prototype.getBraille=function(){return cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.ANDROID|cvox.PlatformFilter.CHROMEOS)?this.shifter_.getBraille(this.prevSel_,this.curSel_):new cvox.NavBraille({})};
-cvox.NavigationManager.prototype.performAction=function(a){switch(a){case "enterShifter":case "enterShifterSilently":for(var b=this.shifterTypes_.length-1,c;c=this.shifterTypes_[b];b--)if((c=c.create(this.curSel_))&&c.getName()!=this.shifter_.getName()){this.shifterStack_.push(this.shifter_);this.shifter_=c;this.sync();this.enteredShifter_="enterShifterSilently"!=a;break}else if(c&&this.shifter_.getName()==c.getName())break;break;case "exitShifter":if(0==this.shifterStack_.length)return!1;this.shifter_=
-this.shifterStack_.pop();this.sync();this.exitedShifter_=!0;break;case "exitShifterContent":if(0==this.shifterStack_.length)return!1;this.updateSel(this.shifter_.performAction(a,this.curSel_));this.shifter_=this.shifterStack_.pop()||this.shifter_;this.sync();this.exitedShifter_=!0;break;default:return this.shifter_.hasAction(a)?this.updateSel(this.shifter_.performAction(a,this.curSel_)):!1}return!0};cvox.NavigationManager.prototype.getGranularityMsg=function(){return this.shifter_.getGranularityMsg()};
-cvox.NavigationManager.prototype.makeMoreGranular=function(a){this.shifter_.makeMoreGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.makeLessGranular=function(a){this.shifter_.makeLessGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.setGranularity=function(a,b,c){!b&&0<this.shifterStack_.length||(this.shifter_=this.shifterStack_.shift()||this.shifter_,this.shifter_.setGranularity(a),this.persistGranularity_(c))};
-cvox.NavigationManager.prototype.getGranularity=function(){var a=this.shifterStack_[0]||this.shifter_;return a.getGranularity()};cvox.NavigationManager.prototype.ensureSubnavigating=function(){this.shifter_.isSubnavigating()||(this.shifter_.ensureSubnavigating(),this.sync())};cvox.NavigationManager.prototype.ensureNotSubnavigating=function(){this.shifter_.isSubnavigating()&&(this.shifter_.ensureNotSubnavigating(),this.sync())};
-cvox.NavigationManager.prototype.speakDescriptionArray=function(a,b,c,d){d&&a.every(function(a){a.personality||(a.personality=d)});this.navSpeaker_.speakDescriptionArray(a,b,c)};cvox.NavigationManager.prototype.updatePosition=function(a){var b=cvox.ChromeVox.position;b[document.location.href]=cvox.DomUtil.elementToPoint(a);JSON.stringify(b)};
-cvox.NavigationManager.prototype.finishNavCommand=function(a,b,c,d){if(this.pageEnd_&&!this.pageEndAnnounced_)this.pageEndAnnounced_=!0,cvox.ChromeVox.tts.stop(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),cvox.ChromeVox.verbosity===cvox.VERBOSITY_VERBOSE&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),this.isReversed()&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom")),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION));else{if(this.enteredShifter_||
-this.exitedShifter_)a=cvox.ChromeVox.msgs.getMsg("enter_content_say",[this.shifter_.getName()]);var e=cvox.ChromeVox.navigationManager.getDescription();(b=void 0===b?!0:b)&&this.setFocus();this.updateIndicator();b=c||cvox.AbstractTts.QUEUE_MODE_FLUSH;a&&(cvox.ChromeVox.tts.speak(a,b,cvox.AbstractTts.PERSONALITY_ANNOTATION),b=cvox.AbstractTts.QUEUE_MODE_QUEUE);this.speakDescriptionArray(e,b,d||null);this.getBraille().write();this.updatePosition(this.getCurrentNode())}};
-cvox.NavigationManager.prototype.navigate=function(a,b){this.pageEndAnnounced_=!1;if(this.pageEnd_)return this.pageEnd_=!1,this.syncToBeginning(a),!0;if(!this.resolve())return!1;this.ensureNotSubnavigating();void 0!==b&&(b!==this.getGranularity()||0<this.shifterStack_.length)&&(this.setGranularity(b,!0),this.sync());return this.next_(!a)};cvox.NavigationManager.prototype.subnavigate=function(){this.pageEndAnnounced_=!1;this.resolve()&&(this.ensureSubnavigating(),this.next_(!0))};
-cvox.NavigationManager.prototype.skip=function(){if(!this.keepReading_)return!1;cvox.ChromeVox.host.hasTtsCallback()&&(this.skipped_=!0,this.setReversed(!1),this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_FLUSH));return!0};cvox.NavigationManager.prototype.startReading=function(a){this.keepReading_=!0;cvox.ChromeVox.host.hasTtsCallback()?this.startCallbackReading_(a):this.startNonCallbackReading_(a);this.prevStickyState_=cvox.ChromeVox.isStickyOn};
-cvox.NavigationManager.prototype.stopReading=function(a){this.keepReading_=!1;this.navSpeaker_.stopReading=!0;a&&cvox.ChromeVox.tts.stop();void 0!=this.prevStickyState_&&(this.prevStickyState_=void 0)};cvox.NavigationManager.prototype.isReading=function(){return this.keepReading_};
-cvox.NavigationManager.prototype.startCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.finishNavCommand("",!0,a,goog.bind(function(){this.next_(!0)&&this.keepReading_&&this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_QUEUE)},this))});
-cvox.NavigationManager.prototype.startNonCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.keepReading_&&(cvox.ChromeVox.tts.isSpeaking()||(this.finishNavCommand("",!0,a,null),this.next_(!0)||(this.keepReading_=!1)),window.setTimeout(goog.bind(this.startNonCallbackReading_,this),1E3))});
-cvox.NavigationManager.prototype.getFullDescription=function(){return this.pageSel_?this.pageSel_.getFullDescription():[cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getAncestors(this.curSel_.start.node),!0,cvox.ChromeVox.verbosity)]};cvox.NavigationManager.prototype.setFocus=function(a){this.pageSel_||a&&this.curSel_.start.node.constructor==Text||cvox.Focuser.setFocus(this.curSel_.start.node)};cvox.NavigationManager.prototype.getCurrentNode=function(){return this.curSel_.absStart().node};
-cvox.NavigationManager.prototype.addInterframeListener_=function(){var a=this;cvox.Interframe.addListener(function(b){if("enterIframe"==b.command||"exitIframe"==b.command)cvox.ChromeVox.serializer.readFrom(b),a.keepReading_||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){window.focus();if(b.findNext){var c=b.findNext,d=cvox.DomPredicates[c],c=a.findNext(d,c,!0);if(d&&(!c||"IFRAME"==c.start.node.tagName))return}else if("exitIframe"==b.command)d=b.sourceId,d=a.iframeIdMap[d],c=b.reversed,
-d&&a.updateSel(cvox.CursorSelection.fromNode(d)),a.setReversed(c),a.sync(),a.navigate();else if(a.syncToBeginning(),!cvox.DomUtil.hasContent(document.body)){a.tryIframe_(null);return}a.finishNavCommand("",!0)})()})};cvox.NavigationManager.prototype.updateIndicator=function(){this.activeIndicator.syncToCursorSelection(this.curSel_)};cvox.NavigationManager.prototype.updateIndicatorIfChanged=function(){this.activeIndicator.updateIndicatorIfChanged()};
-cvox.NavigationManager.prototype.showOrHideIndicator=function(a){a||this.activeIndicator.removeFromDom()};cvox.NavigationManager.prototype.collapseSelection=function(){this.curSel_.collapse()};cvox.NavigationManager.prototype.updateSelToArbitraryNode=function(a,b){a?(this.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0),this.updateSel(cvox.CursorSelection.fromNode(a)),b||this.sync()):this.syncToBeginning()};
-cvox.NavigationManager.prototype.updateSel=function(a,b){a&&(this.prevSel_=b||this.curSel_,this.curSel_=a);var c=this.getCurrentNode();this.navigationHistory_.update(c);return!!a};cvox.NavigationManager.prototype.setReversed=function(a){this.curSel_.setReversed(a)};cvox.NavigationManager.prototype.isReversed=function(){return this.curSel_.isReversed()};
-cvox.NavigationManager.prototype.tryBoundaries_=function(a,b){b=!!b&&!this.ignoreIframesNoMatterWhat_||!1;this.pageEnd_=!1;if(b&&this.tryIframe_(a&&a.start.node))return!0;if(a)return this.updateSel(a),!0;if(0<this.shifterStack_.length)return!0;this.syncToBeginning(!b);this.clearPageSel(!0);this.stopReading(!0);this.pageEnd_=!0;return!1};
-cvox.NavigationManager.prototype.tryIframe_=function(a){if(null==a&&cvox.Interframe.isIframe()){var b={command:"exitIframe",reversed:this.isReversed(),granularity:this.getGranularity()};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToParentWindow(b);return!0}if(null==a||"IFRAME"!=a.tagName||!a.src)return!1;var c=void 0;for(b in this.iframeIdMap)if(this.iframeIdMap[b]==a){c=b;break}void 0==c&&(c=this.nextIframeId,this.nextIframeId++,this.iframeIdMap[c]=a,cvox.Interframe.sendIdToIFrame(c,
-a));b={command:"enterIframe",id:c};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToIFrame(b,a);return!0};cvox.NavigationManager.prototype.syncToBeginning=function(a){var b=this.shifter_.begin(this.curSel_,{reversed:this.curSel_.isReversed()});!a&&this.tryIframe_(b&&b.start.node)||this.updateSel(b)};cvox.NavigationManager.prototype.ignoreIframesNoMatterWhat=function(){this.ignoreIframesNoMatterWhat_=!0};cvox.NavigationManager.prototype.saveSel=function(){this.saveSel_=this.curSel_};
-cvox.NavigationManager.prototype.restoreSel=function(){this.curSel_=this.saveSel_||this.curSel_};cvox.NavigationManager.prototype.persistGranularity_=function(a){(a=void 0===a?!1:a)&&this.getGranularity()};cvox.SearchWidget=function(){this.txtNode_=this.containerNode_=null;this.PROMPT_="Search:";this.hasMatch_=this.caseSensitive_=!1;cvox.Widget.call(this)};goog.inherits(cvox.SearchWidget,cvox.Widget);goog.addSingletonGetter(cvox.SearchWidget);
-cvox.SearchWidget.prototype.show=function(){cvox.SearchWidget.superClass_.show.call(this);this.active=!0;this.hasMatch_=!1;cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);cvox.ChromeVox.navigationManager.setReversed(!1);this.focusRecovery_=cvox.ChromeVox.navigationManager.getFocusRecovery();cvox.ChromeVox.navigationManager.setFocusRecovery(!1);var a=this.createContainerNode_();this.containerNode_=a;var b=this.createOverlayNode_();a.appendChild(b);
-var c=document.createElement("span");c.innerHTML=this.PROMPT_;b.appendChild(c);this.txtNode_=this.createTextAreaNode_();b.appendChild(this.txtNode_);document.body.appendChild(a);this.txtNode_.focus();window.setTimeout(function(){a.style.opacity="1.0"},0)};
-cvox.SearchWidget.prototype.hide=function(a){if(this.isActive()){var b=this.containerNode_;b.style.opacity="0.0";window.setTimeout(function(){document.body.removeChild(b)},1E3);this.txtNode_=null;cvox.SearchWidget.containerNode=null;cvox.ChromeVox.navigationManager.setFocusRecovery(this.focusRecovery_);this.active=!1}cvox.$m("choice_widget_exited").andPause().andMessage(this.getNameMsg()).speakFlush();this.hasMatch_&&a||cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode);cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,
-cvox.ChromeVox.navigationManager))(!0);cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),cvox.AbstractTts.QUEUE_MODE_QUEUE,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=this.textFromCurrentDescription_();cvox.ChromeVox.braille.write(new cvox.NavBraille({text:a,startIndex:0,endIndex:0}));cvox.SearchWidget.superClass_.hide.call(this,!0)};cvox.SearchWidget.prototype.getNameMsg=function(){return["search_widget_intro"]};
-cvox.SearchWidget.prototype.getHelpMsg=function(){return"search_widget_intro_help"};
-cvox.SearchWidget.prototype.onKeyDown=function(a){if(!this.isActive())return!1;var b=this.txtNode_.value;if(8==a.keyCode)0<b.length?(b=b.substring(0,b.length-1),this.txtNode_.value=b,this.beginSearch_(b)):(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode),cvox.ChromeVox.navigationManager.syncAll());else if(40==a.keyCode)this.next_(b,!1);else if(38==a.keyCode)this.next_(b,!0);else if(13==a.keyCode)this.hide(!0);else if(27==a.keyCode)this.hide(!1);else if(a.ctrlKey&&67==a.keyCode)this.toggleCaseSensitivity_();
-else return cvox.SearchWidget.superClass_.onKeyDown.call(this,a);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onKeyPress=function(a){if(!this.isActive())return!1;this.txtNode_.value+=String.fromCharCode(a.charCode);var b=this.txtNode_.value;this.beginSearch_(b);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onNavigate=function(){};cvox.SearchWidget.prototype.getPredicate=function(){return null};
-cvox.SearchWidget.prototype.nextResult=function(a){if(!this.isActive())return null;var b=this.txtNode_.value;return this.next_(b,a)};cvox.SearchWidget.prototype.createContainerNode_=function(){var a=document.createElement("div");a.id="cvox-search";a.style.position="fixed";a.style.top="50%";a.style.left="50%";a.style["-webkit-transition"]="all 0.3s ease-in";a.style.opacity="0.0";a.style["z-index"]="2147483647";a.setAttribute("aria-hidden","true");return a};
-cvox.SearchWidget.prototype.createOverlayNode_=function(){var a=document.createElement("div");a.style.position="relative";a.style.left="-50%";a.style.top="-40px";a.style["line-height"]="1.2em";a.style["font-size"]="20px";a.style.padding="30px";a.style["min-width"]="150px";a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["border-radius"]="10px";return a};
-cvox.SearchWidget.prototype.createTextAreaNode_=function(){var a=document.createElement("textarea");a.setAttribute("aria-hidden","true");a.setAttribute("rows","1");a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["vertical-align"]="middle";a.addEventListener("textInput",this.handleSearchChanged_,!1);return a};
-cvox.SearchWidget.prototype.toggleCaseSensitivity_=function(){this.caseSensitive_?(cvox.SearchWidget.caseSensitive_=!1,cvox.ChromeVox.tts.speak("Ignoring case.",0,null)):(this.caseSensitive_=!0,cvox.ChromeVox.tts.speak("Case sensitive.",0,null))};
-cvox.SearchWidget.prototype.getNextResult_=function(a){var b=cvox.ChromeVox.navigationManager.isReversed();this.caseSensitive_||(a=a.toLowerCase());cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);do{if(this.getPredicate()){var c=this.getPredicate()(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()));if(!c)continue}for(var c=cvox.ChromeVox.navigationManager.getDescription(),d=0;d<c.length;d++){var e=this.caseSensitive_?c[d].text:
-c[d].text.toLowerCase(),f=e.indexOf(a);-1!=f&&e.length>a.length&&(c[d].text=cvox.DomUtil.collapseWhitespace(e.substring(0,f))+", "+a+", "+e.substring(f+a.length),c[d].text=cvox.DomUtil.collapseWhitespace(c[d].text));if(-1!=f)return c}cvox.ChromeVox.navigationManager.setReversed(b)}while(cvox.ChromeVox.navigationManager.navigate(!0,cvox.NavigationShifter.GRANULARITIES.OBJECT))};cvox.SearchWidget.prototype.beginSearch_=function(a){var b=this.getNextResult_(a);this.outputSearchResult_(b,a);this.onNavigate()};
-cvox.SearchWidget.prototype.next_=function(a,b){cvox.ChromeVox.navigationManager.setReversed(!!b);var c=!1;this.getPredicate()?(c=cvox.ChromeVox.navigationManager.findNext(this.getPredicate()),cvox.ChromeVox.navigationManager.setReversed(!!b),c||(cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),c=!0)):c=cvox.ChromeVox.navigationManager.navigate(!0);c=c?this.getNextResult_(a):null;this.outputSearchResult_(c,a);this.onNavigate();return c};
-cvox.SearchWidget.prototype.outputSearchResult_=function(a,b){cvox.ChromeVox.tts.stop();a?(this.hasMatch_=!0,cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,cvox.ChromeVox.navigationManager))(!0),cvox.ChromeVox.navigationManager.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("search_help_item"),cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION),
-this.outputSearchResultToBraille_(b)):(cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),this.hasMatch_=!1)};
-cvox.SearchWidget.prototype.outputSearchResultToBraille_=function(a){if(cvox.ChromeVox.braille){var b=this.textFromCurrentDescription_(),c=this.caseSensitive_?b:b.toLowerCase();a=this.caseSensitive_?a:a.toLowerCase();c=c.indexOf(a);if(-1==c)console.log("Search string not in result when preparing for Braille.");else{var d=b.length,b=cvox.ChromeVox.msgs.getMsg("mark_as_search_result_brl",[b]),e=b.length,c=c+(e-d);cvox.ChromeVox.braille.write(new cvox.NavBraille({text:b,startIndex:c+a.length,endIndex:c+
-a.length}))}}};cvox.SearchWidget.prototype.textFromCurrentDescription_=function(){for(var a=cvox.ChromeVox.navigationManager.getDescription(),b="",c=0;c<a.length;c++)b+=a[c].text+" ";return b};cvox.SearchWidget.prototype.handleSearchChanged_=function(a){a=a.target.value+a.data;cvox.SearchWidget.prototype.beginSearch_(a)};cvox.OverlayWidget=function(a){cvox.SearchWidget.call(this);this.snippet_=a};goog.inherits(cvox.OverlayWidget,cvox.SearchWidget);
-cvox.OverlayWidget.prototype.show=function(){cvox.OverlayWidget.superClass_.show.call(this);var a=document.createElement("DIV");a.innerHTML=this.snippet_;var b=cvox.DomUtil.elementToPoint(cvox.ChromeVox.navigationManager.getCurrentNode());a.style.position="absolute";a.style.left=b.x;a.style.top=b.y;document.body.appendChild(a);cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a);this.host_=a};cvox.OverlayWidget.prototype.hide=function(){this.host_.remove();cvox.OverlayWidget.superClass_.hide.call(this)};
-cvox.OverlayWidget.prototype.onKeyDown=function(a){cvox.OverlayWidget.superClass_.onKeyDown.call(this,a);if(13==a.keyCode||27==a.keyCode)return!0;a=cvox.ChromeVox.navigationManager.isReversed();cvox.DomUtil.isDescendantOfNode(cvox.ChromeVox.navigationManager.getCurrentNode(),this.host_)||(a?cvox.ChromeVox.navigationManager.syncToBeginning():cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.host_),this.onNavigate(),cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),
-0,null))};cvox.KeyboardHelpWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");var a=cvox.ChromeVoxKbHandler.handlerKeyMap;a.bindings().forEach(goog.bind(function(a){var c=a.command;a=a.sequence;var d=c;try{var e=cvox.CommandStore.messageForCommand(c);if(!e)return;d=cvox.ChromeVox.msgs.getMsg(e)}catch(f){}e=document.createElement("p");e.id=c;e.setAttribute("role","menuitem");e.textContent=d+" - "+cvox.KeyUtil.keySequenceToString(a,!0);this.container_.appendChild(e)},
-this))};goog.inherits(cvox.KeyboardHelpWidget,cvox.OverlayWidget);goog.addSingletonGetter(cvox.KeyboardHelpWidget);cvox.KeyboardHelpWidget.prototype.show=function(){cvox.KeyboardHelpWidget.superClass_.show.call(this);this.host_.appendChild(this.container_)};cvox.KeyboardHelpWidget.prototype.getNameMsg=function(){return["keyboard_help_intro"]};
-cvox.KeyboardHelpWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;this.hide();cvox.ChromeVoxEventSuspender.withSuspendedEvents(cvox.ChromeVoxUserCommands.commands[b])();a.preventDefault();a.stopPropagation();return!0}return cvox.KeyboardHelpWidget.superClass_.onKeyDown.call(this,a)};goog.object={};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};
-goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};
-goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};
-goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return b in a?a[b]:c};goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};
-goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
-goog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};
-goog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};
-goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};cvox.UserEventDetail=function(a){this.command=this.category="";-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)&&(this.command=a.command,this.category=cvox.UserEventDetail.Category.JUMP);this.customCommand="";a.customCommand&&(this.customCommand=a.customCommand,this.category=cvox.UserEventDetail.Category.CUSTOM);this.status=cvox.UserEventDetail.Status.PENDING;switch(a.status){case cvox.UserEventDetail.Status.SUCCESS:this.status=cvox.UserEventDetail.Status.SUCCESS;break;case cvox.UserEventDetail.Status.FAILURE:this.status=
-cvox.UserEventDetail.Status.FAILURE}this.resultNode=null;a.resultNode&&cvox.DomUtil.isAttachedToDocument(a.resultNode)&&(this.resultNode=a.resultNode)};cvox.UserEventDetail.Category={JUMP:"ATJumpEvent",CUSTOM:"ATCustomEvent"};cvox.UserEventDetail.Status={PENDING:"PENDING",SUCCESS:"SUCCESS",FAILURE:"FAILURE"};cvox.UserEventDetail.JUMP_COMMANDS="nextCheckbox previousCheckbox nextRadio previousRadio nextSlider previousSlider nextGraphic previousGraphic nextButton previousButton nextComboBox previousComboBox nextEditText previousEditText nextHeading previousHeading nextHeading1 previousHeading1 nextHeading2 previousHeading2 nextHeading3 previousHeading3 nextHeading4 previousHeading4 nextHeading5 previousHeading5 nextHeading6 previousHeading6 nextLink previousLink nextMath previousMath nextTable previousTable nextList previousList nextListItem previousListItem nextFormField previousFormField nextLandmark previousLandmark nextSection previousSection nextControl previousControl".split(" ");
-cvox.UserEventDetail.prototype.createEventObject=function(){var a=document.createEvent("CustomEvent");a.initCustomEvent(this.category,!0,!0,this);return a};var extractMenuList_=function(a){for(;a!==document;){var b=a.getAttribute("contextMenuActions");if(b)return JSON.parse(b);a=a.parentNode}return null},getCurrentElement_=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;return a};
-cvox.ContextMenuWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");this.triggerElement_=getCurrentElement_();(this.menuList=extractMenuList_(this.triggerElement_))?this.menuList.forEach(goog.bind(function(a){if(a.desc||a.cmd){var b=a.desc;a=a.cmd;var c=document.createElement("p");c.id=a;c.textContent=b;c.setAttribute("role","menuitem");this.container_.appendChild(c)}},this)):console.log("No context menu found.")};goog.inherits(cvox.ContextMenuWidget,cvox.OverlayWidget);
-cvox.ContextMenuWidget.prototype.show=function(){this.menuList&&(cvox.ContextMenuWidget.superClass_.show.call(this),this.host_.appendChild(this.container_))};cvox.ContextMenuWidget.prototype.getNameMsg=function(){return["context_menu_intro"]};
-cvox.ContextMenuWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode(),b=b.parentNode.id,b=new cvox.UserEventDetail({customCommand:b}),b=b.createEventObject();this.triggerElement_.dispatchEvent(b);this.hide();a.preventDefault();a.stopPropagation();return!0}return cvox.ContextMenuWidget.superClass_.onKeyDown.call(this,a)};cvox.NodeSearchWidget=function(a,b){this.typeMsg_=a;this.predicate_=b;cvox.SearchWidget.call(this)};goog.inherits(cvox.NodeSearchWidget,cvox.SearchWidget);cvox.NodeSearchWidget.prototype.getNameMsg=function(){return["choice_widget_name",[cvox.ChromeVox.msgs.getMsg(this.typeMsg_)]]};cvox.NodeSearchWidget.prototype.getHelpMsg=function(){return"choice_widget_help"};cvox.NodeSearchWidget.prototype.getPredicate=function(){return this.predicate_};
-cvox.NodeSearchWidget.create=function(a,b){return new cvox.NodeSearchWidget(a,b)};cvox.SelectWidget=function(a){cvox.OverlayWidget.call(this,"");this.selectNode_=a};goog.inherits(cvox.SelectWidget,cvox.OverlayWidget);
-cvox.SelectWidget.prototype.show=function(){cvox.SelectWidget.superClass_.show.call(this);var a=document.createElement("div");a.setAttribute("role","menu");for(var b=0,c=null;c=this.selectNode_.options[b];b++){var d=document.createElement("p");d.innerHTML=c.innerHTML;d.id=b;d.setAttribute("role","menuitem");a.appendChild(d)}this.host_.appendChild(a);b=this.selectNode_.selectedIndex;"number"==typeof b&&cvox.ChromeVox.syncToNode(a.children[b],!0)};
-cvox.SelectWidget.prototype.hide=function(){var a=document.createEvent("Event");a.initEvent("change",!1,!1);this.selectNode_.dispatchEvent(a);cvox.SelectWidget.superClass_.hide.call(this,!0)};cvox.SelectWidget.prototype.onNavigate=function(){var a=this;cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;a.selectNode_.selectedIndex=b})()};cvox.SelectWidget.prototype.getNameMsg=function(){return["aria_role_menu"]};cvox.FocusUtil=function(){};cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE={hidden:!1,text:!0,search:!0,tel:!0,url:!0,email:!0,password:!0,datetime:!1,date:!1,month:!1,week:!1,time:!1,"datetime-local":!1,number:!1,range:!1,color:!1,checkbox:!1,radio:!1,file:!1,submit:!1,image:!1,reset:!1,button:!1};
-cvox.FocusUtil.isFocusInTextInputField=function(){var a=document.activeElement;return a?a.isContentEditable||"textbox"==a.getAttribute("role")?!0:"true"==a.getAttribute("readOnly")?!1:"TEXTAREA"===a.tagName||"SELECT"===a.tagName?!0:"INPUT"===a.tagName?a.hasAttribute("type")?(a=a.getAttribute("type").toLowerCase(),cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[a]):!0:!1:!1};cvox.SpokenListBuilder=function(){this.list_=[]};cvox.SpokenListBuilder.prototype.flush=function(a){this.list_.push([a,cvox.AbstractTts.QUEUE_MODE_FLUSH]);return this};cvox.SpokenListBuilder.prototype.build=function(){return this.list_};cvox.RunnerInterface=function(){};cvox.RunnerInterface.prototype.setFocus=function(){};cvox.AbstractTestCase=function(){};cvox.TestTts=function(){cvox.AbstractTts.call(this);this.utterances_=[]};goog.inherits(cvox.TestTts,cvox.AbstractTts);cvox.TestTts.prototype.sentinelText_="@@@STOP@@@";cvox.TestTts.prototype.speak=function(a,b,c){this.utterances_.push({text:a,queueMode:b});c&&void 0!=c.endCallback&&(a=this.utterances_.length,this.utterances_[a-1].text!=this.sentinelText_&&c.endCallback())};cvox.HostFactory.ttsConstructor=cvox.TestTts;cvox.AutoRunner=function(){new cvox.TestTts};cvox.AutoRunner.TestSummary=function(a,b,c,d){this.tag=a;this.status=c;this.scope=d};cvox.AutoRunner.PASS="pass";cvox.AutoRunner.FAIL="fail";cvox.AutoRunner.prototype.setFocus=function(a){document.getElementById(a).focus();return this};cvox.ChromeVoxUserCommands={};cvox.ChromeVoxUserCommands.init_=function(){if(!cvox.ChromeVoxUserCommands.commands){cvox.ChromeVoxUserCommands.commands={};for(var a in cvox.CommandStore.CMD_WHITELIST)cvox.ChromeVoxUserCommands.commands[a]=cvox.ChromeVoxUserCommands.createCommand_(a)}};cvox.ChromeVoxUserCommands.wasMouseClicked=!1;cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage=!0;
-cvox.ChromeVoxUserCommands.handleTabAction_=function(){cvox.ChromeVox.tts.stop();if(!cvox.ChromeVox.navigationManager.resolve(cvox.DomUtil.isFocusable))return cvox.ChromeVox.navigationManager.setFocus(),!1;var a=cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_();if(a)return!0;var b=a=null,b=window.getSelection();cvox.ChromeVoxUserCommands.wasMouseClicked?cvox.ChromeVoxUserCommands.wasMouseClicked=!1:b=null;null==b||null==b.anchorNode||null==b.focusNode?(a=cvox.ChromeVox.navigationManager.getCurrentNode(),
-b=cvox.ChromeVox.navigationManager.getCurrentNode()):(a=b.anchorNode,b=b.focusNode);if(null==a||null==b)return!0;if(cvox.DomUtil.isFocusable(a))return a.focus(),!0;if(cvox.DomUtil.isFocusable(b))return b.focus(),!0;if(cvox.DomUtil.isFocusable(a.parentNode))return a.parentNode.focus(),!0;if(cvox.DomUtil.isFocusable(b.parentNode))return b.parentNode.focus(),!0;b=cvox.ChromeVoxUserCommands.createTabDummySpan_();a.parentNode.insertBefore(b,a);b.focus();return!0};
-cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_=function(){var a="A";return document.activeElement.tagName==a||cvox.DomUtil.isControl(document.activeElement)?!0:!1};cvox.ChromeVoxUserCommands.removeTabDummySpan=function(){var a=document.getElementById("ChromeVoxTabDummySpan");a&&document.activeElement!=a&&a.parentNode.removeChild(a)};cvox.ChromeVoxUserCommands.createTabDummySpan_=function(){var a=document.createElement("span");a.id="ChromeVoxTabDummySpan";a.tabIndex=-1;return a};
-cvox.ChromeVoxUserCommands.createCommand_=function(a){return goog.bind(function(b){b=cvox.ChromeVoxUserCommands.lookupCommand_(a,b);return cvox.ChromeVoxUserCommands.dispatchCommand_(b)},cvox.ChromeVoxUserCommands)};
-cvox.ChromeVoxUserCommands.dispatchCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField())return!0;if(cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage&&-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)){a=new cvox.UserEventDetail({command:a.command});a=a.createEventObject();var b=cvox.ChromeVox.navigationManager.getCurrentNode();b||(b=document.body);b.dispatchEvent(a);return!1}return cvox.ChromeVoxUserCommands.doCommand_(a)};
-cvox.ChromeVoxUserCommands.doCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField()||a.disallowOOBE&&document.URL.match(/^chrome:\/\/oobe/i))return!0;var b=a.command;a.allowEvents||cvox.ChromeVoxEventSuspender.enterSuspendEvents();a.disallowContinuation&&cvox.ChromeVox.navigationManager.stopReading(!0);a.forward?cvox.ChromeVox.navigationManager.setReversed(!1):a.backward&&cvox.ChromeVox.navigationManager.setReversed(!0);
-a.findNext&&(b="find",a.announce=!0);var c="",d="",e=!1;switch(b){case "handleTab":case "handleTabPrev":e=cvox.ChromeVoxUserCommands.handleTabAction_();break;case "forward":case "backward":e=!cvox.ChromeVox.navigationManager.navigate();break;case "right":case "left":cvox.ChromeVox.navigationManager.subnavigate();break;case "find":if(!a.findNext)throw"Invalid find command.";var f=cvox.CommandStore.NODE_INFO_MAP[a.findNext],g=f.predicate,h=cvox.DomPredicates[g],k="",l="";a.forward?(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),
-k=cvox.ChromeVox.msgs.getMsg(f.forwardError)):a.backward&&(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom"),k=cvox.ChromeVox.msgs.getMsg(f.backwardError));var f=null,m=a.status||cvox.UserEventDetail.Status.PENDING,p=a.resultNode||null;switch(m){case cvox.UserEventDetail.Status.SUCCESS:p&&cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(p,!0);break;case cvox.UserEventDetail.Status.FAILURE:d=k;break;default:f=cvox.ChromeVox.navigationManager.findNext(h,g),f||(cvox.ChromeVox.navigationManager.saveSel(),
-d=l,cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),f=cvox.ChromeVox.navigationManager.findNext(h,g,!0),f||(d=k,cvox.ChromeVox.navigationManager.restoreSel()))}f&&"IFRAME"==f.start.node.tagName&&(a.announce=!1);break;case "previousGranularity":cvox.ChromeVox.navigationManager.makeLessGranular(!0);d=cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "nextGranularity":cvox.ChromeVox.navigationManager.makeMoreGranular(!0);d=
-cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "previousCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "nextCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "previousWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);break;case "nextWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);
-break;case "previousSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "nextSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "previousLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "nextLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "previousObject":cvox.ChromeVox.navigationManager.navigate(!1,
-cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "nextObject":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "previousGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "nextGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "previousRow":case "previousCol":b="previousRow"==b?"nextRow":"nextCol";case "nextRow":case "nextCol":cvox.ChromeVox.navigationManager.performAction("enterShifterSilently");
-cvox.ChromeVox.navigationManager.performAction(b);break;case "moveToStartOfLine":case "moveToEndOfLine":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.LINE);cvox.ChromeVox.navigationManager.sync();cvox.ChromeVox.navigationManager.collapseSelection();break;case "readFromHere":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!0);cvox.ChromeVox.navigationManager.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH);break;case "cycleTypingEcho":break;
-case "jumpToTop":case cvox.BrailleKeyCommand.TOP:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "jumpToBottom":case cvox.BrailleKeyCommand.BOTTOM:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "stopSpeech":cvox.ChromeVox.navigationManager.stopReading(!0);break;case "toggleKeyboardHelp":cvox.KeyboardHelpWidget.getInstance().toggle();break;case "help":cvox.ChromeVox.tts.stop();break;case "contextMenu":g=cvox.ChromeVox.navigationManager.getCurrentNode();"SELECT"!=g.tagName||
-g.multiple?(g=new cvox.ContextMenuWidget,g.toggle()):(new cvox.SelectWidget(g)).show();break;case "showBookmarkManager":break;case "showOptionsPage":cvox.ChromeVox.tts.stop();break;case "showKbExplorerPage":cvox.ChromeVox.tts.stop();break;case "readLinkURL":g=document.activeElement;h=window.getSelection().anchorNode;k="";"A"==g.tagName?k=cvox.DomUtil.getLinkURL(g):h&&(k=cvox.DomUtil.getLinkURL(h.parentNode));""!=k?cvox.ChromeVox.tts.speak(k):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_url_found"));
-break;case "readCurrentTitle":cvox.ChromeVox.tts.speak(document.title);break;case "readCurrentURL":cvox.ChromeVox.tts.speak(document.URL);break;case "performDefaultAction":cvox.DomPredicates.linkPredicate([document.activeElement])&&(a.announce=!0,cvox.DomUtil.isInternalLink(document.activeElement)&&(cvox.DomUtil.syncInternalLink(document.activeElement),cvox.ChromeVox.navigationManager.sync()));break;case "forceClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();
-cvox.DomUtil.clickElem(g,!1,!1);break;case "forceDoubleClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_double_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.clickElem(g,!1,!1,!0);break;case "toggleChromeVox":break;case "fullyDescribe":g=cvox.ChromeVox.navigationManager.getFullDescription();cvox.ChromeVox.navigationManager.speakDescriptionArray(g,cvox.AbstractTts.QUEUE_MODE_FLUSH,null);break;case "speakTimeAndDate":g=new Date;cvox.ChromeVox.tts.speak(g.toLocaleTimeString()+
-", "+g.toLocaleDateString());break;case "toggleSelection":d=cvox.ChromeVox.navigationManager.togglePageSel();d=cvox.ChromeVox.msgs.getMsg(d?"begin_selection":"end_selection");break;case "startHistoryRecording":cvox.History.getInstance().startRecording();break;case "stopHistoryRecording":cvox.History.getInstance().stopRecording();break;case "enableConsoleTts":cvox.ConsoleTts.getInstance().setEnabled(!0);break;case "goToFirstCell":case "goToLastCell":case "goToRowFirstCell":case "goToRowLastCell":case "goToColFirstCell":case "goToColLastCell":case "announceHeaders":case "speakTableLocation":case "exitShifterContent":cvox.DomPredicates.tablePredicate(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()))&&
-cvox.ChromeVox.navigationManager.performAction(b)||(c="not_inside_table");break;case "enterShifter":case "exitShifter":cvox.ChromeVox.navigationManager.performAction(b);break;case "decreaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!1);break;case "increaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!0);break;case "decreaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,!1);break;case "increaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,
-!0);break;case "decreaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!1);break;case "increaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!0);break;case "cyclePunctuationEcho":break;case "toggleStickyMode":break;case "toggleKeyPrefix":cvox.ChromeVox.keyPrefixOn=!cvox.ChromeVox.keyPrefixOn;break;case "toggleSearchWidget":cvox.SearchWidget.getInstance().toggle();break;case "toggleEarcons":d=cvox.ChromeVox.earcons.toggle()?cvox.ChromeVox.msgs.getMsg("earcons_on"):
-cvox.ChromeVox.msgs.getMsg("earcons_off");break;case "showHeadingsList":case "showLinksList":case "showFormsList":case "showTablesList":case "showLandmarksList":if(!a.nodeList)break;g=cvox.CommandStore.NODE_INFO_MAP[a.nodeList];cvox.NodeSearchWidget.create(g.typeMsg,cvox.DomPredicates[g.predicate]).show();break;case "openLongDesc":g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.hasLongDesc(g)||cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_long_desc"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION);break;case "pauseAllMedia":k=document.getElementsByTagName("VIDEO");for(g=0;h=k[g];g++)h.pause();k=document.getElementsByTagName("AUDIO");for(g=0;h=k[g];g++)h.pause();break;case "toggleSemantics":cvox.TraverseMath.toggleSemantic()?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_on")):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_off"));break;case cvox.BrailleKeyCommand.ROUTING:g=cvox.ChromeVox.navigationManager.getBraille();
-g=g.text.getSpans(a.displayPosition||0);g=g.filter(function(a){return a instanceof Node})[0];cvox.DomUtil.clickElem(g||cvox.ChromeVox.navigationManager.getCurrentNode(),!1,!0);break;case cvox.BrailleKeyCommand.PAN_LEFT:case cvox.BrailleKeyCommand.LINE_UP:case cvox.BrailleKeyCommand.PAN_RIGHT:case cvox.BrailleKeyCommand.LINE_DOWN:cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "debug":break;case "nop":break;default:throw"Command behavior not defined: "+
-b;}""!=c?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(c),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION):cvox.ChromeVox.navigationManager.isReading()?a.disallowContinuation?cvox.ChromeVox.navigationManager.stopReading(!0):"readFromHere"!=b&&cvox.ChromeVox.navigationManager.skip():a.announce&&cvox.ChromeVox.navigationManager.finishNavCommand(d);a.allowEvents||cvox.ChromeVoxEventSuspender.exitSuspendEvents();return!!a.doDefault||e};
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent=function(a){a=new cvox.UserEventDetail(a.detail);a.command&&cvox.ChromeVoxUserCommands.doCommand_(cvox.ChromeVoxUserCommands.lookupCommand_(a.command,a))};cvox.ChromeVoxUserCommands.lookupCommand_=function(a,b){var c=cvox.CommandStore.CMD_WHITELIST[a];if(!c)throw"Invalid command: "+a;c=goog.object.clone(c);c.command=a;b&&goog.object.extend(c,b);return c};cvox.ChromeVoxUserCommands.init_();cvox.ChromeVoxKbHandler={};cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable=function(a){window.JSON&&(cvox.ChromeVoxKbHandler.handlerKeyMap=cvox.KeyMap.fromJSON(a))};cvox.ChromeVoxKbHandler.sortKeyToFunctionsTable_=function(a){function b(a,b){return a[0].length<b[0].length?-1:b[0].length<a[0].length?1:a[0].localeCompare(b[0])}var c=[],d;for(d in a)c.push([d,a[d]]);c.sort(b);return c};
-cvox.ChromeVoxKbHandler.basicKeyDownActionsListener=function(a){var b=cvox.KeyUtil.keyEventToKeySequence(a);a=void 0!=cvox.ChromeVoxKbHandler.handlerKeyMap?cvox.ChromeVoxKbHandler.handlerKeyMap.commandForKey(b):null;if(!a)return!cvox.KeyUtil.sequencing;if(!cvox.ChromeVox.isActive&&"toggleChromeVox"!=a)return!0;var c=!0,d=cvox.ChromeVoxUserCommands.commands[a];d?(b=cvox.History.getInstance(),b.enterUserCommand(a),c=d(),b.exitUserCommand(a)):b.cvoxModifier&&(c=!1);cvox.ChromeVox.entireDocumentIsHidden&&
-(c=!0);return c};cvox.LiveRegions=function(){};cvox.LiveRegions.pageLoadTime=null;cvox.LiveRegions.INITIAL_SILENCE_MS=2E3;cvox.LiveRegions.lastAnnouncedMap={};cvox.LiveRegions.MAX_DISCARD_DUPS_MS=2E3;cvox.LiveRegions.lastAnnouncedTime=null;cvox.LiveRegions.nodesAlreadyHandled=[];
-cvox.LiveRegions.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.pageLoadTime=a;if(c||!document.hasFocus())return!1;var d=!1;a=cvox.AriaUtil.getLiveRegions(document.body);for(c=0;c<a.length;c++)cvox.LiveRegions.handleOneChangedNode(a[c],a[c],!1,!1,function(a,c){a||b!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);var g=new cvox.NavigationSpeaker;g.speakDescriptionArray(c,b,null);d=!0});cvox.Interframe.addListener(function(a){if("speakLiveRegion"==
-a.command)for(var b=document.getElementsByTagName("iframe"),c=0,d;d=b[c];c++)if(d.src==a.src){if(!cvox.DomUtil.isVisible(d))break;d=JSON.parse(a.content);for(var k=[],l=0,m;m=d[l];l++)k.push(new cvox.NavDescription(m));(new cvox.NavigationSpeaker).speakDescriptionArray(k,a.queueMode,null)}});return d};
-cvox.LiveRegions.processMutations=function(a,b){cvox.LiveRegions.nodesAlreadyHandled=[];a.forEach(function(a){if(!a.target.hasAttribute||!a.target.hasAttribute("cvoxIgnore")){if(a.addedNodes)for(var d=0;d<a.addedNodes.length;d++)a.addedNodes[d].hasAttribute&&a.addedNodes[d].hasAttribute("cvoxIgnore")||cvox.LiveRegions.handleOneChangedNode(a.addedNodes[d],a.target,!1,!0,b);if(a.removedNodes)for(d=0;d<a.removedNodes.length;d++)a.removedNodes[d].hasAttribute&&a.removedNodes[d].hasAttribute("cvoxIgnore")||
-cvox.LiveRegions.handleOneChangedNode(a.removedNodes[d],a.target,!0,!1,b);"characterData"==a.type&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!1,b);if("class"==a.attributeName||"style"==a.attributeName||"hidden"==a.attributeName){var e=a.attributeName,d=a.target,f=!cvox.DomUtil.isVisible(d),g=document.createElement("div");g.setAttribute("cvoxIgnore","1");g.setAttribute("class",d.getAttribute("class"));g.setAttribute("style",d.getAttribute("style"));g.setAttribute("hidden",d.getAttribute("hidden"));
-g.setAttribute(e,a.oldValue);e=!0;d.parentElement?(d.parentElement.appendChild(g),e=!cvox.DomUtil.isVisible(g),d.parentElement.removeChild(g)):e=!cvox.DomUtil.isVisible(g);!0===e&&!1===f?cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!0,b):!1===e&&!0===f&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!0,!1,b)}}});cvox.LiveRegions.nodesAlreadyHandled.length=0};
-cvox.LiveRegions.handleOneChangedNode=function(a,b,c,d,e){var f=c?b:a;f instanceof Element||(f=f.parentElement);for(;f&&!cvox.AriaUtil.getAriaLive(f);)f=f.parentElement;if(!f){if(d&&a!=document.body)for(a=cvox.AriaUtil.getLiveRegions(a),d=0;d<a.length;d++)cvox.LiveRegions.handleOneChangedNode(a[d],b,c,!1,e)}else if(!(0<=cvox.LiveRegions.nodesAlreadyHandled.indexOf(a)||(cvox.LiveRegions.nodesAlreadyHandled.push(a),cvox.AriaUtil.getAriaBusy(f)))){if(c){if(!cvox.AriaUtil.getAriaRelevant(f,"removals"))return}else if(!cvox.AriaUtil.getAriaRelevant(f,
-"additions"))return;cvox.LiveRegions.announceChange(a,f,c,e)}};
-cvox.LiveRegions.announceChange=function(a,b,c,d){var e=new Date-cvox.LiveRegions.pageLoadTime;if(!("alert"!=cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS)&&cvox.DomUtil.isVisible(b)){if(a!=b)for(var f=a.parentElement;f;){(cvox.AriaUtil.getAriaAtomic(f)||cvox.AriaUtil.isLeafElement(f)||cvox.AriaUtil.isControlWidget(f))&&!cvox.AriaUtil.isCompositeControl(f)&&(a=f);if(f==b)break;f=f.parentElement}a=cvox.LiveRegions.getNavDescriptionsRecursive(a);if(0!=a.length){c&&(a=[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),
-text:""})].concat(a));if("alert"==cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS){c="";for(e=0;e<a.length;e++)c+=a[e].text,c+=a[e].userValue;if(""==cvox.DomUtil.collapseWhitespace(c))return}c=new Date;for(var g in cvox.LiveRegions.lastAnnouncedMap)c-cvox.LiveRegions.lastAnnouncedMap[g]>cvox.LiveRegions.MAX_DISCARD_DUPS_MS&&delete cvox.LiveRegions.lastAnnouncedMap[g];g=a.reduce(function(a,b){return a+"|"+b.text},"");cvox.LiveRegions.lastAnnouncedMap[g]||(cvox.LiveRegions.lastAnnouncedMap[g]=
-c,b="assertive"==cvox.AriaUtil.getAriaLive(b),cvox.Interframe.isIframe()&&!document.hasFocus()?cvox.Interframe.sendMessageToParentWindow({command:"speakLiveRegion",content:JSON.stringify(a),queueMode:b?0:1,src:window.location.href}):d(b,a))}}};
-cvox.LiveRegions.getNavDescriptionsRecursive=function(a){return cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)?(a=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity),a.isEmpty()?[]:[a]):cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a)};cvox.LiveRegionsDeprecated=function(){};cvox.LiveRegionsDeprecated.trackedRegions=[];cvox.LiveRegionsDeprecated.previousRegionValue=[];cvox.LiveRegionsDeprecated.pageLoadTime=null;cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS=2E3;
-cvox.LiveRegionsDeprecated.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegionsDeprecated.pageLoadTime=a;a=!1;for(var d=cvox.AriaUtil.getLiveRegions(document.body),e=0;e<d.length;e++)cvox.LiveRegionsDeprecated.updateLiveRegion(d[e],b,c)&&(a=!0,b=cvox.AbstractTts.QUEUE_MODE_QUEUE);return a};
-cvox.LiveRegionsDeprecated.updateLiveRegion=function(a,b,c){if(cvox.AriaUtil.getAriaBusy(a)||!cvox.DomUtil.isVisible(a))return!1;var d=cvox.LiveRegionsDeprecated.trackedRegions.indexOf(a),e;0<=d?e=cvox.LiveRegionsDeprecated.previousRegionValue[d]:(d=cvox.LiveRegionsDeprecated.trackedRegions.length,e=[],cvox.LiveRegionsDeprecated.trackedRegions.push(a),cvox.LiveRegionsDeprecated.previousRegionValue.push([]));var f=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(a),g=new Date-cvox.LiveRegionsDeprecated.pageLoadTime;
-if("alert"!=cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS)return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1;if("alert"==cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS){for(var h="",g=0;g<f.length;g++)h+=f[g].text,h+=f[g].userValue;if(""==cvox.DomUtil.collapseWhitespace(h))return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1}for(var k={},g=0;g<e.length;g++)k[e[g].toString()]=!0;for(var l={},g=0;g<f.length;g++)l[f[g].toString()]=
-!0;h=[];if(cvox.AriaUtil.getAriaRelevant(a,"additions"))for(g=0;g<f.length;g++)k[f[g].toString()]||h.push(f[g]);k=[];if(cvox.AriaUtil.getAriaRelevant(a,"removals"))for(g=0;g<e.length;g++)l[e[g].toString()]||k.push(e[g]);e=[];e=0==h.length&&0<k.length?[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),text:""})].concat(k):h;cvox.LiveRegionsDeprecated.previousRegionValue[d]=f;if(c||0==e.length)return!1;a=cvox.AriaUtil.getAriaLive(a);"polite"==a&&(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);
-for(g=0;g<e.length;g++)e[g].speak(b),b=cvox.AbstractTts.QUEUE_MODE_QUEUE;return!0};
-cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue=function(a){if(cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)){var b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity);return b.isEmpty()?[]:[b]}var c=[],b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!1,cvox.ChromeVox.verbosity);b.isEmpty()||c.push(b);for(b=0;b<a.childNodes.length;b++){var d=a.childNodes[b];cvox.DomUtil.isVisible(d,{checkAncestors:!1})&&!cvox.AriaUtil.isHidden(d)&&(d=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(d),
-c=c.concat(d))}return c};cvox.ChromeVoxEventWatcherUtil={};cvox.ChromeVoxEventWatcher=function(){};cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_=50;cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_=10;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_=1E3;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_=3;cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_=5;cvox.ChromeVoxEventWatcher.shouldEchoKeys=!0;cvox.ChromeVoxEventWatcher.processing_=!1;
-cvox.ChromeVoxEventWatcher.init=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=null;cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=null;cvox.ChromeVoxEventWatcher.eventToEat=null;cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;cvox.ChromeVoxEventWatcher.lastKeypressTime=0;cvox.ChromeVoxEventWatcher.listeners_=
-[];cvox.ChromeVoxEventWatcher.mutationObserver_=null;cvox.ChromeVoxEventWatcher.focusFollowsMouse=!1;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=500;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.lastEventTime=0;cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.readyCallbacks_=[];cvox.ChromeVox.searchKeyHeld=!1;cvox.ChromeVoxEventWatcher.textMutationObserver_=null;cvox.ChromeVoxEventWatcher.addEventListeners_(a);
-cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=0;cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=0};cvox.ChromeVoxEventWatcher.storeOn=function(a){a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld};cvox.ChromeVoxEventWatcher.readFrom=function(a){cvox.ChromeVox.searchKeyHeld=a.searchKeyHeld};
-cvox.ChromeVoxEventWatcher.addEvent=function(a){if(!cvox.ChromeVox.isActive||document.webkitHidden)return!1;cvox.ChromeVoxEventWatcher.events_.push(a);cvox.ChromeVoxEventWatcher.lastEventTime=(new Date).getTime();-1==cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime&&(cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=(new Date).getTime());cvox.ChromeVoxEventWatcher.queueProcessingScheduled_||(cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!0,window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,
-cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_))};cvox.ChromeVoxEventWatcher.addReadyCallback=function(a){cvox.ChromeVoxEventWatcher.readyCallbacks_.push(a);cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()};cvox.ChromeVoxEventWatcher.hasPendingEvents_=function(){return-1!=cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime||cvox.ChromeVoxEventWatcher.queueProcessingScheduled_};cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;
-cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_=function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_||(cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!0,window.setTimeout(function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;!cvox.ChromeVoxEventWatcher.hasPendingEvents_()&&!cvox.ChromeVoxEventWatcher.queueProcessingScheduled_&&0<cvox.ChromeVoxEventWatcher.readyCallbacks_.length&&(cvox.ChromeVoxEventWatcher.readyCallbacks_.shift()(),cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_())},
-5))};
-cvox.ChromeVoxEventWatcher.addEventListeners_=function(a){cvox.ChromeVoxEventWatcher.addEventListener_(a,"keydown",cvox.ChromeVoxEventWatcher.keyDownEventWatcher,!0);if(cvox.ChromeVox.isActive&&!cvox.ChromeVox.entireDocumentIsHidden)if(cvox.ChromeVoxEventWatcher.addEventListener_(a,"keypress",cvox.ChromeVoxEventWatcher.keyPressEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"keyup",cvox.ChromeVoxEventWatcher.keyUpEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,cvox.UserEventDetail.Category.JUMP,
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent,!1),cvox.ChromeVoxEventWatcher.addEventListener_(a,"focus",cvox.ChromeVoxEventWatcher.focusEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"blur",cvox.ChromeVoxEventWatcher.blurEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"change",cvox.ChromeVoxEventWatcher.changeEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"copy",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"cut",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"paste",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"select",cvox.ChromeVoxEventWatcher.selectEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"webkitvisibilitychange",cvox.ChromeVoxEventWatcher.visibilityChangeWatcher,!0),cvox.ChromeVoxEventWatcher.events_=[],cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1,cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"mouseover",cvox.ChromeVoxEventWatcher.mouseOverEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"mouseout",cvox.ChromeVoxEventWatcher.mouseOutEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"click",cvox.ChromeVoxEventWatcher.mouseClickEventWatcher,!0),"undefined"!=typeof WebKitMutationObserver){cvox.ChromeVoxEventWatcher.mutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.mutationHandler);var b=null;a.documentElement?b=a.documentElement:a.document&&
-a.document.documentElement&&(b=a.document.documentElement);b&&cvox.ChromeVoxEventWatcher.mutationObserver_.observe(b,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!0,characterDataOldValue:!0})}else cvox.ChromeVoxEventWatcher.addEventListener_(a,"DOMSubtreeModified",cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher,!0)};
-cvox.ChromeVoxEventWatcher.cleanup=function(a){for(var b=0;b<cvox.ChromeVoxEventWatcher.listeners_.length;b++){var c=cvox.ChromeVoxEventWatcher.listeners_[b];a.removeEventListener(c.type,c.listener,c.useCapture)}cvox.ChromeVoxEventWatcher.listeners_=[];cvox.ChromeVoxEventWatcher.currentDateHandler&&cvox.ChromeVoxEventWatcher.currentDateHandler.shutdown();cvox.ChromeVoxEventWatcher.currentTimeHandler&&cvox.ChromeVoxEventWatcher.currentTimeHandler.shutdown();cvox.ChromeVoxEventWatcher.currentMediaHandler&&
-cvox.ChromeVoxEventWatcher.currentMediaHandler.shutdown();cvox.ChromeVoxEventWatcher.mutationObserver_&&cvox.ChromeVoxEventWatcher.mutationObserver_.disconnect();cvox.ChromeVoxEventWatcher.mutationObserver_=null};cvox.ChromeVoxEventWatcher.addEventListener_=function(a,b,c,d){cvox.ChromeVoxEventWatcher.listeners_.push({type:b,listener:c,useCapture:d});a.addEventListener(b,c,d)};cvox.ChromeVoxEventWatcher.getLastFocusedNode=function(){return cvox.ChromeVoxEventWatcher.lastFocusedNode};
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=a;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=a?cvox.DomUtil.getControlValueAndStateString(a):null};
-cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d);return!0})};
-cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.WML)&&!a.fromCvox&&cvox.ApiImplementation.syncToNode(a.target,!0);return cvox.ChromeVox.host.mustRedispatchClickEvent()&&!a.fromCvox?(cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),cvox.DomUtil.clickElem(a,!1,!0),!1):cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse||cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&
-"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVox.navigationManager.stopReading(!0);var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.ChromeVoxEventWatcher.announcedMouseOverNode=
-b}},cvox.ChromeVoxEventWatcher.mouseoverDelayMs);return!0};cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
-cvox.ChromeVoxEventWatcher.focusEventWatcher=function(a){cvox.ChromeVoxUserCommands.removeTabDummySpan();cvox.ChromeVoxEventSuspender.areEventsSuspended()?a.target&&a.target.nodeType==Node.ELEMENT_NODE&&cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a.target):cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.focusHandler=function(a){if(a.target&&a.target.hasAttribute&&"true"==a.target.getAttribute("aria-hidden")&&"true"!=a.target.getAttribute("chromevoxignoreariahidden"))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.setUpTextHandler();else if(a.target&&a.target!=window){var b=a.target,c=cvox.DomUtil.getSurroundingControl(b);if(c&&c==cvox.ChromeVoxEventWatcher.lastFocusedNode)cvox.ChromeVoxEventWatcher.handleControlChanged(b);else{c?cvox.ChromeVoxEventWatcher.setLastFocusedNode_(c):
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_(b);c=cvox.ChromeVoxEventWatcher.queueMode_();if(cvox.ChromeVoxEventWatcher.getInitialVisibility()||cvox.ChromeVoxEventWatcher.handleDialogFocus(b))c=cvox.AbstractTts.QUEUE_MODE_QUEUE;cvox.ChromeVox.navigationManager.clearPageSel(!0)&&(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ApiImplementation.syncToNode(b,!document.webkitHidden,c);if(a.target.constructor==HTMLVideoElement||a.target.constructor==HTMLAudioElement)cvox.ChromeVoxEventWatcher.setUpMediaHandler_();
-else{if(a.target.hasAttribute)switch(a=a.target.getAttribute("type"),a){case "time":cvox.ChromeVoxEventWatcher.setUpTimeHandler_();return;case "date":case "month":case "week":cvox.ChromeVoxEventWatcher.setUpDateHandler_();return}cvox.ChromeVoxEventWatcher.setUpTextHandler()}}}else cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null)};
-cvox.ChromeVoxEventWatcher.blurEventWatcher=function(a){window.setTimeout(function(){document.activeElement||(cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.addEvent(a))},0);return!0};
-cvox.ChromeVoxEventWatcher.keyDownEventWatcher=function(a){cvox.ChromeVox.isChromeOS&&91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!0);a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld&&cvox.ChromeVox.isActive;a.stickyMode=cvox.ChromeVox.isStickyOn&&cvox.ChromeVox.isActive;a.keyPrefix=cvox.ChromeVox.keyPrefixOn&&cvox.ChromeVox.isActive;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVoxEventWatcher.eventToEat=null;if(!cvox.ChromeVoxKbHandler.basicKeyDownActionsListener(a)||cvox.ChromeVoxEventWatcher.handleControlAction(a))return a.preventDefault(),
-a.stopPropagation(),cvox.ChromeVoxEventWatcher.eventToEat=a,!1;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.keyUpEventWatcher=function(a){91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!1);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.stopPropagation(),a.preventDefault(),!1):!0};
-cvox.ChromeVoxEventWatcher.keyPressEventWatcher=function(a){var b=document.location.href,c=cvox.TypingEcho.shouldSpeakChar(cvox.ChromeVox.typingEcho);"undefined"!==typeof cvox.ChromeVox.keyEcho[b]&&(c=cvox.ChromeVox.keyEcho[b]);cvox.ChromeVoxEditableTextBase.eventTypingEcho&&c&&cvox.DomPredicates.editTextPredicate([document.activeElement])&&"password"!==document.activeElement.type&&(b=(new Date).getTime(),150<b-cvox.ChromeVoxEventWatcher.lastKeypressTime&&cvox.ChromeVox.tts.stop(),cvox.ChromeVoxEventWatcher.lastKeypressTime=
-b,cvox.ChromeVox.tts.speak(String.fromCharCode(a.charCode),1,{relativeRate:2}));cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.preventDefault(),a.stopPropagation(),!1):!0};cvox.ChromeVoxEventWatcher.changeEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.clipboardEventWatcher=function(a){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(a.type).toLowerCase());var b="";switch(a.type){case "paste":b=a.clipboardData.getData("text");break;case "copy":case "cut":b=window.getSelection().toString()}cvox.ChromeVox.tts.speak(b,cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ChromeVox.navigationManager.clearPageSel();return!0};
-cvox.ChromeVoxEventWatcher.changeHandler=function(a){cvox.ChromeVoxEventWatcher.setUpTextHandler()||document.activeElement==a.target&&cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement)};cvox.ChromeVoxEventWatcher.selectEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher=function(a){if(!a||!a.target)return!0;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.visibilityChangeWatcher=function(){cvox.ChromeVoxEventWatcher.initialVisibility=!document.webkitHidden;document.webkitHidden&&cvox.ChromeVox.navigationManager.stopReading(!0)};cvox.ChromeVoxEventWatcher.getInitialVisibility=function(){var a=cvox.ChromeVoxEventWatcher.initialVisibility;cvox.ChromeVoxEventWatcher.initialVisibility=!1;return a};
-cvox.ChromeVoxEventWatcher.speakLiveRegion_=function(a,b){var c=cvox.ChromeVoxEventWatcher.queueMode_();a||c!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);var d=new cvox.NavigationSpeaker;d.speakDescriptionArray(b,c,null)};
-cvox.ChromeVoxEventWatcher.subtreeModifiedHandler=function(a){var b=(new Date).getTime();if(cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_+cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_>b){if(cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_++,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_>cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_)return}else cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=b,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=
-1;if(a&&a.target)for(a=a.target,a=cvox.AriaUtil.getLiveRegions(a),b=0;b<a.length&&b<cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_;b++)cvox.LiveRegionsDeprecated.updateLiveRegion(a[b],cvox.ChromeVoxEventWatcher.queueMode_(),!1)};
-cvox.ChromeVoxEventWatcher.setUpTextHandler=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);if(a!=cvox.ChromeVoxEventWatcher.currentTextControl){cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("click",
-cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.textMutationObserver_&&(cvox.ChromeVoxEventWatcher.textMutationObserver_.disconnect(),cvox.ChromeVoxEventWatcher.textMutationObserver_=null));cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;if(null==a)return!1;if(a.constructor==HTMLInputElement&&cvox.DomUtil.isInputTypeText(a)&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=
-new cvox.ChromeVoxEditableHTMLInput(a,cvox.ChromeVox.tts);else if(a.constructor==HTMLTextAreaElement&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableTextArea(a,cvox.ChromeVox.tts);else if(a.isContentEditable||"textbox"==a.getAttribute("role"))cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableContentEditable(a,cvox.ChromeVox.tts);
-cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("click",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),window.WebKitMutationObserver&&(cvox.ChromeVoxEventWatcher.textMutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.onTextMutation),cvox.ChromeVoxEventWatcher.textMutationObserver_.observe(cvox.ChromeVoxEventWatcher.currentTextControl,
-{childList:!0,attributes:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1})),cvox.ChromeVoxEventSuspender.areEventsSuspended()||cvox.ChromeVox.navigationManager.updateSel(cvox.CursorSelection.fromNode(cvox.ChromeVoxEventWatcher.currentTextControl)));return null!=cvox.ChromeVoxEventWatcher.currentTextHandler}};cvox.ChromeVoxEventWatcher.handleTextChanged=function(a){if(cvox.ChromeVoxEventWatcher.currentTextHandler){var b=cvox.ChromeVoxEventWatcher.currentTextHandler;b.update(a);return!0}return!1};
-cvox.ChromeVoxEventWatcher.onTextMutation=function(){cvox.ChromeVoxEventWatcher.currentTextHandler&&window.setTimeout(function(){cvox.ChromeVoxEventWatcher.handleTextChanged(!1)},cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_)};
-cvox.ChromeVoxEventWatcher.handleControlChanged=function(a){var b=cvox.DomUtil.getControlValueAndStateString(a),c=cvox.DomUtil.getSurroundingControl(a),d=!1;if(a!=cvox.ChromeVoxEventWatcher.lastFocusedNode&&(null==c||c!=cvox.ChromeVoxEventWatcher.lastFocusedNode))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a);else if(b==cvox.ChromeVoxEventWatcher.lastFocusedNodeValue)return;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=b;if(cvox.DomPredicates.checkboxPredicate([a])||cvox.DomPredicates.radioPredicate([a]))d=
-!0,a.checked?cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_ON):cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_OFF);"SELECT"==a.tagName&&(d=!0);if("INPUT"==a.tagName)switch(a.type){case "color":case "datetime":case "datetime-local":case "range":d=!0}a.hasAttribute&&a.hasAttribute("role")&&(d=!0);c&&c!=a&&document.activeElement==a?(cvox.ApiImplementation.syncToNode(a,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH),d=!1):cvox.AriaUtil.getActiveDescendant(a)&&(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(cvox.AriaUtil.getActiveDescendant(a),
-!0),d=!0);d&&!cvox.ChromeVoxEventSuspender.areEventsSuspended()&&(cvox.ChromeVox.tts.speak(b,cvox.ChromeVoxEventWatcher.queueMode_(),null),cvox.NavBraille.fromText(b).write())};
-cvox.ChromeVoxEventWatcher.handleControlAction=function(a){if(!cvox.ChromeVox.isActive)return!1;var b=a.target;if("SELECT"==b.tagName&&1>=b.size&&(13==a.keyCode||32==a.keyCode))return a.preventDefault(),a.stopPropagation(),!0;if("INPUT"==b.tagName&&"range"==b.type){var c=parseFloat(b.value),d;b.step&&0<b.step?d=b.step:b.min&&b.max?(d=b.max-b.min,d=2<d&&31>d?1:(b.max-b.min)/10):d=1;if(37==a.keyCode||38==a.keyCode)c-=d;else if(39==a.keyCode||40==a.keyCode)c+=d;b.max&&c>b.max&&(c=b.max);b.min&&c<b.min&&
-(c=b.min);b.value=c}return!1};
-cvox.ChromeVoxEventWatcher.handleDialogFocus=function(a){for(;a;){if(a.hasAttribute){var b=a.getAttribute("role");if("dialog"==b||"alertdialog"==b)break}a=a.parentElement}if(a==cvox.ChromeVox.navigationManager.currentDialog)return!1;if(cvox.ChromeVox.navigationManager.currentDialog&&!a){if(!cvox.DomUtil.isDescendantOfNode(document.activeElement,cvox.ChromeVox.navigationManager.currentDialog))return cvox.ChromeVox.navigationManager.currentDialog=null,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("exiting_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),!0}else if(a)return cvox.ChromeVox.navigationManager.currentDialog=a,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("entering_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a),b=new cvox.NavigationSpeaker,b.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,null),!0;return!1};
-cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess=function(a,b,c){a=c-a;b=c-b;return a<cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_&&b<cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_};cvox.ChromeVoxEventWatcher.queueMode_=function(){return cvox.ChromeVoxEventWatcher.processing_?cvox.AbstractTts.QUEUE_MODE_QUEUE:cvox.AbstractTts.QUEUE_MODE_FLUSH};
-cvox.ChromeVoxEventWatcher.processQueue_=function(){if(0!=cvox.ChromeVoxEventWatcher.events_.length){var a=cvox.ChromeVoxEventWatcher.events_,b=-1,c=0,d,e;for(e=0;d=a[e];e++)"focus"==d.type&&(b=e,c=d.timeStamp);cvox.ChromeVoxEventWatcher.events_=[];for(e=0;d=a[e];e++){var f=a[e-1]||{};!(e>=b||"LiveRegion"==d.type||"DOMSubtreeModified"==d.type)||"focus"==f.type&&"change"==d.type||cvox.ChromeVoxEventWatcher.events_.push(d)}cvox.ChromeVoxEventWatcher.events_.sort(function(a,b){return"LiveRegion"!=b.type&&
-"LiveRegion"==a.type||"DOMSubtreeModified"!=b.type&&"DOMSubtreeModified"==a.type?1:-1});a=(new Date).getTime();if(0<=b&&cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess(c,cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime,a))window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_);else{for(e=0;d=cvox.ChromeVoxEventWatcher.events_[e];e++)cvox.ChromeVoxEventWatcher.handleEvent_(d),cvox.ChromeVoxEventWatcher.processing_=!0;cvox.ChromeVoxEventWatcher.processing_=
-!1;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()}}};
-cvox.ChromeVoxEventWatcher.handleEvent_=function(a){switch(a.type){case "keydown":cvox.ChromeVoxEventWatcher.setUpTextHandler();if(cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.handleTextChanged(!0),(a=cvox.ChromeVoxEventWatcher.currentTextHandler)&&a.lastChangeDescribed))break;cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement);break;case "keypress":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "focus":cvox.ChromeVoxEventWatcher.focusHandler(a);
-break;case "blur":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "change":cvox.ChromeVoxEventWatcher.changeHandler(a);break;case "select":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "LiveRegion":cvox.ChromeVoxEventWatcher.speakLiveRegion_(a.assertive,a.navDescriptions);break;case "DOMSubtreeModified":cvox.ChromeVoxEventWatcher.subtreeModifiedHandler(a)}};
-cvox.ChromeVoxEventWatcher.setUpTimeHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentTimeHandler=a.constructor==HTMLInputElement&&a.type&&"time"==a.type?new cvox.ChromeVoxHTMLTimeWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentTimeHandler};
-cvox.ChromeVoxEventWatcher.setUpMediaHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentMediaHandler=a.constructor==HTMLVideoElement||a.constructor==HTMLAudioElement?new cvox.ChromeVoxHTMLMediaWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentMediaHandler};
-cvox.ChromeVoxEventWatcher.setUpDateHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentDateHandler=a.constructor!=HTMLInputElement||!a.type||"date"!=a.type&&"month"!=a.type&&"week"!=a.type?null:new cvox.ChromeVoxHTMLDateWidget(a,cvox.ChromeVox.tts);return null!=cvox.ChromeVoxEventWatcher.currentDateHandler};cvox.Serializer=function(){};cvox.Serializer.prototype.storeOn=function(a){cvox.ChromeVox.storeOn(a);cvox.ChromeVoxEventWatcher.storeOn(a)};cvox.Serializer.prototype.readFrom=function(a){cvox.ChromeVox.readFrom(a);cvox.ChromeVoxEventWatcher.readFrom(a)};cvox.InitGlobals=function(){};
-cvox.InitGlobals.initGlobals=function(){cvox.ChromeVox.host||(cvox.ChromeVox.host=cvox.HostFactory.getHost());cvox.ChromeVox.tts=(new cvox.CompositeTts).add(cvox.HostFactory.getTts()).add(cvox.History.getInstance()).add(cvox.ConsoleTts.getInstance());cvox.ChromeVox.braille||(cvox.ChromeVox.braille=cvox.HostFactory.getBraille());cvox.ChromeVox.mathJax=cvox.HostFactory.getMathJax();cvox.ChromeVox.earcons=cvox.HostFactory.getEarcons();cvox.ChromeVox.msgs=cvox.HostFactory.getMsgs();cvox.ChromeVox.isActive=
-!0;cvox.ChromeVox.navigationManager=new cvox.NavigationManager;cvox.ChromeVox.navigationManager.updateIndicator();cvox.ChromeVox.syncToNode=cvox.ApiImplementation.syncToNode;cvox.ChromeVox.speakNode=cvox.ApiImplementation.speakNode;cvox.ChromeVox.serializer=new cvox.Serializer;cvox.ChromeVox.host.init();cvox.ChromeVoxEventWatcher.init(window);cvox.ChromeVox.executeUserCommand=function(a){cvox.ChromeVoxUserCommands.commands[a]()};cvox.ChromeVox.host.onPageLoad()};cvox.ChromeVoxInit={};cvox.ChromeVox.initTimeout_=100;cvox.ChromeVox.recallInit_=function(a){window.console.log(a+" Will try again in "+cvox.ChromeVox.initTimeout_+"ms");window.setTimeout(cvox.ChromeVox.initDocument,cvox.ChromeVox.initTimeout_);cvox.ChromeVox.initTimeout_*=2};
-cvox.ChromeVox.initDocument=function(){document.body?(cvox.ChromeVox.host=cvox.HostFactory.getHost(),cvox.ChromeVox.host.ttsLoaded()?(window.console.log("Starting ChromeVox."),cvox.InitGlobals.initGlobals(),window.disableChromeVox=function(){cvox.ChromeVox.host.killChromeVox()}):cvox.ChromeVox.recallInit_("ChromeVox not starting; waiting for TTS. "+document.location.href+".")):cvox.ChromeVox.recallInit_("ChromeVox not starting on unloaded page: "+document.location.href+".")};
-cvox.ChromeVox.reinit=function(){cvox.ChromeVox.host.reinit();cvox.ChromeVox.initDocument()};cvox.AndroidBraille=function(){};goog.inherits(cvox.AndroidBraille,cvox.AbstractBraille);cvox.AndroidBraille.prototype.write=function(a){accessibility.braille&&accessibility.braille(JSON.stringify(a.toJson()))};cvox.HostFactory.brailleConstructor=cvox.AndroidBraille;cvox.AndroidEarcons=function(){cvox.AbstractEarcons.call(this);this.audioMap={}};goog.inherits(cvox.AndroidEarcons,cvox.AbstractEarcons);cvox.AndroidEarcons.BASE_URL="https://ssl.gstatic.com/accessibility/javascript/android/earcons/";
-cvox.AndroidEarcons.prototype.playEarcon=function(a){if(this.earconsAvailable()){cvox.AndroidEarcons.superClass_.playEarcon.call(this,a);this.currentAudio=this.audioMap[a];this.currentAudio||(this.currentAudio=new Audio(cvox.AndroidEarcons.BASE_URL+this.getEarconFilename(a)),this.audioMap[a]=this.currentAudio);try{this.currentAudio.currentTime=0}catch(b){}this.currentAudio.paused&&this.currentAudio.play()}};
-cvox.AndroidEarcons.prototype.earconsAvailable=function(){return-1==navigator.userAgent.indexOf("Chrome")?!1:!0};cvox.HostFactory.earconsConstructor=cvox.AndroidEarcons;"undefined"!=typeof goog&&goog.provide&&(cvox.Api={},cvox.Api.Math={});
-(function(){function a(){d&&(d.port1.close(),d.port2.close(),d=null);d=new MessageChannel;window.postMessage("cvox.PortSetup",[d.port2],"*");d.port1.onmessage=function(a){"cvox.Disconnect"==a.data&&(d=null);try{var b=JSON.parse(a.data);b.id&&g[b.id]&&(g[b.id](b),delete g[b.id])}catch(c){}}}function b(a,b){var c=f;f++;void 0===a.args&&(a.args=[]);a.args=[c].concat(a.args);g[c]=b;d.port1.postMessage(JSON.stringify(a))}function c(a,c){var d=null;c&&c.endCallback&&(d=c.endCallback);b(a,d)}var d,e=!1,
-f=1,g={};window.cvox||(window.cvox={});var h=window.cvox,k=null;"undefined"!=typeof h.ApiImplementation&&(k=h.ApiImplementation);h.Api=function(){};h.Api.internalEnable=function(){e=!0;k||a();var b=document.createEvent("UIEvents");b.initEvent("chromeVoxLoaded",!0,!1);document.dispatchEvent(b)};h.Api.internalDisable=function(){e=!1;d=null;var a=document.createEvent("UIEvents");a.initEvent("chromeVoxUnloaded",!0,!1);document.dispatchEvent(a)};h.Api.isChromeVoxActive=function(){return k?e:!!d};h.Api.speak=
-function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(a,b,d):(a={cmd:"speak",args:[a,b,d]},c(a,d)))};h.Api.speakNode=function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(h.DomUtil.getName(a),b,d):(a={cmd:"speakNodeRef",args:[h.ApiUtils.makeNodeReference(a),b,d]},c(a,d)))};h.Api.stop=function(){if(h.Api.isChromeVoxActive())if(k)k.stop();else{var a={cmd:"stop"};d.port1.postMessage(JSON.stringify(a))}};h.Api.playEarcon=function(a){h.Api.isChromeVoxActive()&&(k?k.playEarcon(a):(a={cmd:"playEarcon",args:[a]},
-d.port1.postMessage(JSON.stringify(a))))};h.Api.syncToNode=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)k.syncToNode(a,b);else{var c={cmd:"syncToNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getCurrentNode=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.navigationManager.getCurrentNode()):b({cmd:"getCurrentNode"},function(b){a(h.ApiUtils.getNodeFromRef(b.currentNode))}))};h.Api.setSpeechForNode=function(a,b){h.Api.isChromeVoxActive()&&
-a&&b&&a.setAttribute("cvoxnodedesc",JSON.stringify(b))};h.Api.click=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)h.DomUtil.clickElem(a,b,!0);else{var c={cmd:"clickNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getBuild=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.BuildInfo.build):b({cmd:"getBuild"},function(b){a(b.build)}))};h.Api.getVersion=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.version+""):b({cmd:"getVersion"},function(b){a(b.version)}))};
-h.Api.getCvoxModifierKeys=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.KeyUtil.cvoxModKeyCodes()):b({cmd:"getCvoxModKeys"},function(b){a(b.keyCodes)}))};h.Api.isKeyShortcut=function(a,c){if(c)if(h.Api.isChromeVoxActive()){var d=[37,39];if(!d.indexOf(a.keyCode)||a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)if(k){var e=h.KeyUtil.keyEventToKeySequence(a);c(h.ChromeVoxKbHandler.handlerKeyMap.hasKey(e))}else{var d={},f=["target","srcElement","currentTarget","view"];for(e in a)-1===f.indexOf(e)&&(d[e]=
-a[e]);e={cmd:"isKeyShortcut",args:[d]};b(e,function(a){c(a.isHandled)})}else c(!1)}else c(!1)};h.Api.setKeyEcho=function(a){h.Api.isChromeVoxActive()&&(k?k.setKeyEcho(a):(a={cmd:"setKeyEcho",args:[a]},d.port1.postMessage(JSON.stringify(a))))};h.Api.Math=function(){};h.Api.Math.defineRule=function(a,b,c,e,f){if(h.Api.isChromeVoxActive()){var g=Array.prototype.slice.call(arguments,4),g=[a,b,c,e].concat(g);k?k.Math.defineRule.apply(k.Math,g):(g={cmd:"Math.defineRule",args:g},d.port1.postMessage(JSON.stringify(g)))}};
-h.Api.internalEnable();h.NodeDescription=function(a,b,c,d){this.context=a?a:"";this.text=b?b:"";this.userValue=c?c:"";this.annotation=d?d:""}})();cvox.InitialSpeech={};window.INJECTED_AFTER_LOAD||(window.INJECTED_AFTER_LOAD=!1);
-cvox.InitialSpeech.speak=function(){var a=window.INJECTED_AFTER_LOAD;if(!cvox.ChromeVox.isActive||document.webkitHidden)a=!0;window.top==window&&document.title&&!a&&cvox.ChromeVox.tts.speak(document.title,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.init(new Date,cvox.AbstractTts.QUEUE_MODE_QUEUE,a);document.hasFocus()&&document.activeElement==document.body&&cvox.ChromeVox.navigationManager.syncToBeginning();if(cvox.ChromeVox.position[document.location.href]){var b=cvox.ChromeVox.position[document.location.href];
-cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(document.elementFromPoint(b.x,b.y))}document.hasFocus()&&(a||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){cvox.ChromeVox.navigationManager.finishNavCommand("",!0,cvox.AbstractTts.QUEUE_MODE_QUEUE)})())};cvox.AndroidKeyMap=function(){};
-cvox.AndroidKeyMap.getStringifiedKeyMap=function(){return cvox.ChromeVoxJSON.stringify({'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[17]}}':"stopSpeech",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[9]}}':"handleTab",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[9]}}':"handleTabPrev",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[38]}}':"backward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"forward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[37]}}':"previousGranularity",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[39]}}':"nextGranularity",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[13]}}':"forceClickOnCurrentItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"readFromHere",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[85]}}':"readLinkURL",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[75]}}':"fullyDescribe",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[189]}}':"decreaseTtsPitch",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[187]}}':"increaseTtsPitch",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[219]}}':"decreaseTtsRate",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[221]}}':"increaseTtsRate",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[81]}}':"cyclePunctuationLevel",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[49]}}':"nextHeading1",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[49]}}':"previousHeading1",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[50]}}':"nextHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[50]}}':"previousHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[51]}}':"nextHeading3",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[51]}}':"previousHeading3",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[52]}}':"nextHeading4",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[52]}}':"previousHeading4",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[53]}}':"nextHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[53]}}':"previousHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[54]}}':"nextHeading6",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[54]}}':"previousHeading6",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[67]}}':"nextComboBox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[67]}}':"previousComboBox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[69]}}':"nextEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[69]}}':"previousEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[70]}}':"nextFormField",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[70]}}':"previousFormField",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[71]}}':"nextGraphic",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[71]}}':"previousGraphic",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[72]}}':"nextHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[72]}}':"previousHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[73]}}':"nextListItem",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[73]}}':"previousListItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[76]}}':"nextLink",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[76]}}':"previousLink",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[79]}}':"nextList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[79]}}':"previousList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[82]}}':"nextRadio",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[82]}}':"previousRadio",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[84]}}':"nextTable",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[84]}}':"previousTable",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[66]}}':"nextButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[66]}}':"previousButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[88]}}':"nextCheckbox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[88]}}':"previousCheckbox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[186]}}':"nextLandmark",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[186]}}':"previousLandmark"})};cvox.MathSimpleStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathSimpleStore,cvox.MathStore);cvox.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d]){var f=c[d][e],g='self::text() = "'+b+'"';this.defineRule(a,d+"."+e,'[t] "'+f+'"',"self::text()",g)}};cvox.MathCompoundStore=function(){this.subStores_={}};goog.addSingletonGetter(cvox.MathCompoundStore);
-cvox.MathCompoundStore.prototype.defineRules=function(a,b,c){var d=new cvox.MathSimpleStore;d.defineRulesFromMappings(a,b,c);this.subStores_[b]=d};cvox.MathCompoundStore.prototype.addSymbolRules=function(a){var b=cvox.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.mappings)};cvox.MathCompoundStore.prototype.addFunctionRules=function(a){var b=a.names;a=a.mappings;for(var c=0,d;d=b[c];c++)this.defineRules(d,d,a)};
-cvox.MathCompoundStore.prototype.lookupRule=function(a,b){var c=this.subStores_[a.textContent];if(c)return c.lookupRule(a,b)};cvox.MathCompoundStore.prototype.lookupString=function(a,b){var c=document.createTextNode(a);return(c=this.lookupRule(c,b))?c.action.components.map(function(a){return a.content.slice(1,-1)}).join(" "):""};
-cvox.MathCompoundStore.prototype.getDynamicConstraintValues=function(){var a={},b;for(b in this.subStores_){var c=this.subStores_[b].getDynamicConstraintValues(),d;for(d in c){var e=a[d];a[d]=e?cvox.MathUtil.union(e,c[d]):c[d]}}return a};cvox.MathSimpleStore.parseUnicode_=function(a){var b=parseInt(a,16);if(65536>b)return String.fromCharCode(b);b-=65536;a=(b>>10)+55296;b=(b&1023)+56320;return String.fromCharCode(a,b)};cvox.AndroidMathMap=function(){this.store_=cvox.MathCompoundStore.getInstance();cvox.AndroidMathMap.FUNCTION_MAPPINGS_.forEach(goog.bind(this.store_.addFunctionRules,this.store_));cvox.AndroidMathMap.SYMBOL_MAPPINGS_.forEach(goog.bind(this.store_.addSymbolRules,this.store_));this.store_.getDynamicConstraintValues()};
-cvox.AndroidMathMap.prototype.evaluate=function(a,b,c){var d="";b=cvox.MathStore.createDynamicConstraint(b,c);d=this.store_.lookupString(a,b);return new cvox.NavDescription({text:d?d:a})};
-cvox.AndroidMathMap.SYMBOL_MAPPINGS_=[{category:"Po",mappings:{"default":{"default":"exclamation mark"}},key:"0021"},{category:"Po",mappings:{"default":{"default":"quotation mark"}},key:"0022"},{category:"Po",mappings:{"default":{"default":"number sign",alternative:"hash","short":"number"}},key:"0023"},{category:"Sc",mappings:{"default":{"default":"dollar sign","short":"dollar"}},key:"0024"},{category:"Po",mappings:{"default":{"default":"percent sign","short":"percent"}},key:"0025"},{category:"Po",
-mappings:{"default":{"default":"ampersand"}},key:"0026"},{category:"Po",mappings:{"default":{"default":"apostrophe",alternative:"apostrophe quote"}},key:"0027"},{category:"Po",mappings:{"default":{"default":"asterisk"}},key:"002A"},{category:"Sm",mappings:{"default":{"default":"plus sign","short":"plus"}},key:"002B"},{category:"Po",mappings:{"default":{"default":"comma"}},key:"002C"},{category:"Pd",mappings:{"default":{"default":"hyphen minus","short":"minus"}},key:"002D"},{category:"Po",mappings:{"default":{"default":"full stop",
-alternative:"period"}},key:"002E"},{category:"Po",mappings:{"default":{"default":"solidus",alternative:"slash"}},key:"002F"},{category:"Po",mappings:{"default":{"default":"colon"}},key:"003A"},{category:"Po",mappings:{"default":{"default":"semicolon"}},key:"003B"},{category:"Sm",mappings:{"default":{"default":"less than sign","short":"less than"}},key:"003C"},{category:"Sm",mappings:{"default":{"default":"equals sign","short":"equals"}},key:"003D"},{category:"Sm",mappings:{"default":{"default":"greater than sign",
-"short":"greater than"}},key:"003E"},{category:"Po",mappings:{"default":{"default":"question mark"}},key:"003F"},{category:"Po",mappings:{"default":{"default":"commercial at","short":"at"}},key:"0040"},{category:"Po",mappings:{"default":{"default":"reverse solidus",alternative:"backslash"}},key:"005C"},{category:"Sk",mappings:{"default":{"default":"circumflex accent",alternative:"spacing circumflex","short":"hat"}},key:"005E"},{category:"Pc",mappings:{"default":{"default":"low line",alternative:"spacing underscore"}},
-key:"005F"},{category:"Sk",mappings:{"default":{"default":"grave accent",alternative:"spacing grave","short":"grave"}},key:"0060"},{category:"Sm",mappings:{"default":{"default":"vertical line",alternative:"vertical bar"}},key:"007C"},{category:"Sm",mappings:{"default":{"default":"tilde"}},key:"007E"},{category:"Po",mappings:{"default":{"default":"inverted exclamation mark"}},key:"00A1"},{category:"Sc",mappings:{"default":{"default":"cent sign","short":"cent"}},key:"00A2"},{category:"Sc",mappings:{"default":{"default":"pound sign",
-"short":"pound"}},key:"00A3"},{category:"Sc",mappings:{"default":{"default":"currency sign","short":"currency"}},key:"00A4"},{category:"Sc",mappings:{"default":{"default":"yen sign","short":"yen"}},key:"00A5"},{category:"So",mappings:{"default":{"default":"broken bar",alternative:"broken vertical bar"}},key:"00A6"},{category:"Po",mappings:{"default":{"default":"section sign","short":"section"}},key:"00A7"},{category:"Sk",mappings:{"default":{"default":"diaeresis",alternative:"spacing diaeresis","short":"double dot"}},
-key:"00A8"},{category:"So",mappings:{"default":{"default":"copyright sign","short":"copyright"}},key:"00A9"},{category:"Lo",mappings:{"default":{"default":"feminine ordinal indicator"}},key:"00AA"},{category:"Pi",mappings:{"default":{"default":"left pointing double angle quotation mark",alternative:"left pointing guillemet"}},key:"00AB"},{category:"Sm",mappings:{"default":{"default":"not sign","short":"not"}},key:"00AC"},{category:"So",mappings:{"default":{"default":"registered sign",alternative:"registered trade mark sign",
-"short":"registered"}},key:"00AE"},{category:"Sk",mappings:{"default":{"default":"macron",alternative:"spacing macron"}},key:"00AF"},{category:"So",mappings:{"default":{"default":"degree sign","short":"degree"}},key:"00B0"},{category:"Sm",mappings:{"default":{"default":"plus minus sign",alternative:"plus or minus sign","short":"plus minus"}},key:"00B1"},{category:"Sk",mappings:{"default":{"default":"acute accent",alternative:"spacing acute","short":"acute"}},key:"00B4"},{category:"Ll",mappings:{"default":{"default":"micro sign",
-"short":"micro"}},key:"00B5"},{category:"Po",mappings:{"default":{"default":"pilcrow sign",alternative:"paragraph sign","short":"pilcrow"}},key:"00B6"},{category:"Po",mappings:{"default":{"default":"middle dot"}},key:"00B7"},{category:"Sk",mappings:{"default":{"default":"cedilla",alternative:"spacing cedilla"}},key:"00B8"},{category:"Lo",mappings:{"default":{"default":"masculine ordinal indicator"}},key:"00BA"},{category:"Pf",mappings:{"default":{"default":"right pointing double angle quotation mark",
-alternative:"right pointing guillemet"}},key:"00BB"},{category:"Po",mappings:{"default":{"default":"inverted question mark"}},key:"00BF"},{category:"Sm",mappings:{"default":{"default":"multiplication sign","short":"multiplication"}},key:"00D7"},{category:"Sm",mappings:{"default":{"default":"division sign","short":"division"}},key:"00F7"},{category:"Sk",mappings:{"default":{"default":"breve",alternative:"spacing breve"}},key:"02D8"},{category:"Sk",mappings:{"default":{"default":"dot above",alternative:"spacing dot above"}},
-key:"02D9"},{category:"Sk",mappings:{"default":{"default":"ring above",alternative:"spacing ring above"}},key:"02DA"},{category:"Sk",mappings:{"default":{"default":"ogonek",alternative:"spacing ogonek"}},key:"02DB"},{category:"Sk",mappings:{"default":{"default":"small tilde",alternative:"spacing tilde"}},key:"02DC"},{category:"Sk",mappings:{"default":{"default":"double acute accent",alternative:"spacing double acute"}},key:"02DD"},{category:"Pd",mappings:{"default":{"default":"hyphen"}},key:"2010"},
-{category:"Pd",mappings:{"default":{"default":"non breaking hyphen"}},key:"2011"},{category:"Pd",mappings:{"default":{"default":"figure dash"}},key:"2012"},{category:"Pd",mappings:{"default":{"default":"en dash"}},key:"2013"},{category:"Pd",mappings:{"default":{"default":"em dash"}},key:"2014"},{category:"Pd",mappings:{"default":{"default":"horizontal bar",alternative:"quotation dash"}},key:"2015"},{category:"Po",mappings:{"default":{"default":"double vertical line",alternative:"double vertical bar"}},
-key:"2016"},{category:"Po",mappings:{"default":{"default":"double low line",alternative:"spacing double underscore"}},key:"2017"},{category:"Pi",mappings:{"default":{"default":"left single quotation mark",alternative:"single turned comma quotation mark"}},key:"2018"},{category:"Pf",mappings:{"default":{"default":"right single quotation mark",alternative:"single comma quotation mark"}},key:"2019"},{category:"Ps",mappings:{"default":{"default":"single low 9 quotation mark",alternative:"low single comma quotation mark"}},
-key:"201A"},{category:"Pi",mappings:{"default":{"default":"single high reversed 9 quotation mark",alternative:"single reversed comma quotation mark"}},key:"201B"},{category:"Pi",mappings:{"default":{"default":"left double quotation mark",alternative:"double turned comma quotation mark"}},key:"201C"},{category:"Pf",mappings:{"default":{"default":"right double quotation mark",alternative:"double comma quotation mark"}},key:"201D"},{category:"Ps",mappings:{"default":{"default":"double low 9 quotation mark",
-alternative:"low double comma quotation mark"}},key:"201E"},{category:"Pi",mappings:{"default":{"default":"double high reversed 9 quotation mark",alternative:"double reversed comma quotation mark"}},key:"201F"},{category:"Po",mappings:{"default":{"default":"dagger"}},key:"2020"},{category:"Po",mappings:{"default":{"default":"double dagger"}},key:"2021"},{category:"Po",mappings:{"default":{"default":"bullet"}},key:"2022"},{category:"Po",mappings:{"default":{"default":"triangular bullet"}},key:"2023"},
-{category:"Po",mappings:{"default":{"default":"one dot leader"}},key:"2024"},{category:"Po",mappings:{"default":{"default":"two dot leader"}},key:"2025"},{category:"Po",mappings:{"default":{"default":"horizontal ellipsis"}},key:"2026"},{category:"Po",mappings:{"default":{"default":"hyphenation point"}},key:"2027"},{category:"Po",mappings:{"default":{"default":"per mille sign","short":"per mille"}},key:"2030"},{category:"Po",mappings:{"default":{"default":"per ten thousand sign","short":"per ten thousand"}},
-key:"2031"},{category:"Po",mappings:{"default":{"default":"prime"}},key:"2032"},{category:"Po",mappings:{"default":{"default":"double prime"}},key:"2033"},{category:"Po",mappings:{"default":{"default":"triple prime"}},key:"2034"},{category:"Po",mappings:{"default":{"default":"reversed prime"}},key:"2035"},{category:"Po",mappings:{"default":{"default":"reversed double prime"}},key:"2036"},{category:"Po",mappings:{"default":{"default":"reversed triple prime"}},key:"2037"},{category:"Po",mappings:{"default":{"default":"caret"}},
-key:"2038"},{category:"Pi",mappings:{"default":{"default":"single left pointing angle quotation mark",alternative:"left pointing single guillemet"}},key:"2039"},{category:"Pf",mappings:{"default":{"default":"single right pointing angle quotation mark",alternative:"right pointing single guillemet"}},key:"203A"},{category:"Po",mappings:{"default":{"default":"reference mark"}},key:"203B"},{category:"Po",mappings:{"default":{"default":"double exclamation mark"}},key:"203C"},{category:"Po",mappings:{"default":{"default":"interrobang"}},
-key:"203D"},{category:"Po",mappings:{"default":{"default":"overline",alternative:"spacing overscore"}},key:"203E"},{category:"Pc",mappings:{"default":{"default":"undertie"}},key:"203F"},{category:"Pc",mappings:{"default":{"default":"character tie"}},key:"2040"},{category:"Po",mappings:{"default":{"default":"caret insertion point"}},key:"2041"},{category:"Po",mappings:{"default":{"default":"asterism"}},key:"2042"},{category:"Po",mappings:{"default":{"default":"hyphen bullet"}},key:"2043"},{category:"Sm",
-mappings:{"default":{"default":"fraction slash"}},key:"2044"},{category:"Po",mappings:{"default":{"default":"double question mark"}},key:"2047"},{category:"Po",mappings:{"default":{"default":"question exclamation mark"}},key:"2048"},{category:"Po",mappings:{"default":{"default":"exclamation question mark"}},key:"2049"},{category:"Po",mappings:{"default":{"default":"reversed pilcrow sign","short":"reversed pilcrow"}},key:"204B"},{category:"Po",mappings:{"default":{"default":"black leftwards bullet"}},
-key:"204C"},{category:"Po",mappings:{"default":{"default":"black rightwards bullet"}},key:"204D"},{category:"Po",mappings:{"default":{"default":"low asterisk"}},key:"204E"},{category:"Po",mappings:{"default":{"default":"reversed semicolon"}},key:"204F"},{category:"Po",mappings:{"default":{"default":"close up"}},key:"2050"},{category:"Po",mappings:{"default":{"default":"two asterisks aligned vertically"}},key:"2051"},{category:"Sm",mappings:{"default":{"default":"commercial minus sign","short":"commercial minus"}},
-key:"2052"},{category:"Po",mappings:{"default":{"default":"swung dash"}},key:"2053"},{category:"Pc",mappings:{"default":{"default":"inverted undertie"}},key:"2054"},{category:"Po",mappings:{"default":{"default":"flower punctuation mark"}},key:"2055"},{category:"Po",mappings:{"default":{"default":"three dot punctuation"}},key:"2056"},{category:"Po",mappings:{"default":{"default":"quadruple prime"}},key:"2057"},{category:"Po",mappings:{"default":{"default":"four dot punctuation"}},key:"2058"},{category:"Po",
-mappings:{"default":{"default":"five dot punctuation"}},key:"2059"},{category:"Po",mappings:{"default":{"default":"two dot punctuation"}},key:"205A"},{category:"Po",mappings:{"default":{"default":"four dot mark"}},key:"205B"},{category:"Po",mappings:{"default":{"default":"dotted cross"}},key:"205C"},{category:"Po",mappings:{"default":{"default":"tricolon"}},key:"205D"},{category:"Po",mappings:{"default":{"default":"vertical four dots"}},key:"205E"},{category:"Sm",mappings:{"default":{"default":"superscript plus sign",
-"short":"superscript plus"}},key:"207A"},{category:"Sm",mappings:{"default":{"default":"superscript minus",alternative:"superscript hyphen minus"}},key:"207B"},{category:"Sm",mappings:{"default":{"default":"superscript equals sign","short":"superscript equals"}},key:"207C"},{category:"Ps",mappings:{"default":{"default":"superscript left parenthesis",alternative:"superscript opening parenthesis"}},key:"207D"},{category:"Pe",mappings:{"default":{"default":"superscript right parenthesis",alternative:"superscript closing parenthesis"}},
-key:"207E"},{category:"Sm",mappings:{"default":{"default":"subscript plus sign","short":"subscript plus"}},key:"208A"},{category:"Sm",mappings:{"default":{"default":"subscript minus",alternative:"subscript hyphen minus"}},key:"208B"},{category:"Sm",mappings:{"default":{"default":"subscript equals sign","short":"subscript equals"}},key:"208C"},{category:"Ps",mappings:{"default":{"default":"subscript left parenthesis",alternative:"subscript opening parenthesis"}},key:"208D"},{category:"Pe",mappings:{"default":{"default":"subscript right parenthesis",
-alternative:"subscript closing parenthesis"}},key:"208E"},{category:"So",mappings:{"default":{"default":"property line"}},key:"214A"},{category:"Sm",mappings:{"default":{"default":"turned ampersand"}},key:"214B"},{category:"So",mappings:{"default":{"default":"per sign","short":"per"}},key:"214C"},{category:"So",mappings:{"default":{"default":"aktieselskab"}},key:"214D"},{category:"Ll",mappings:{"default":{"default":"turned small f"}},key:"214E"},{category:"Sm",mappings:{"default":{"default":"for all"}},
-key:"2200"},{category:"Sm",mappings:{"default":{"default":"complement"}},key:"2201"},{category:"Sm",mappings:{"default":{"default":"partial differential"}},key:"2202"},{category:"Sm",mappings:{"default":{"default":"there exists"}},key:"2203"},{category:"Sm",mappings:{"default":{"default":"there does not exist"}},key:"2204"},{category:"Sm",mappings:{"default":{"default":"empty set"}},key:"2205"},{category:"Sm",mappings:{"default":{"default":"increment"}},key:"2206"},{category:"Sm",mappings:{"default":{"default":"nabla"}},
-key:"2207"},{category:"Sm",mappings:{"default":{"default":"element of"}},key:"2208"},{category:"Sm",mappings:{"default":{"default":"not an element of"}},key:"2209"},{category:"Sm",mappings:{"default":{"default":"small element of"}},key:"220A"},{category:"Sm",mappings:{"default":{"default":"contains as member"}},key:"220B"},{category:"Sm",mappings:{"default":{"default":"does not contain as member"}},key:"220C"},{category:"Sm",mappings:{"default":{"default":"small contains as member"}},key:"220D"},
-{category:"Sm",mappings:{"default":{"default":"end of proof"}},key:"220E"},{category:"Sm",mappings:{"default":{"default":"n ary product"}},key:"220F"},{category:"Sm",mappings:{"default":{"default":"n ary coproduct"}},key:"2210"},{category:"Sm",mappings:{"default":{"default":"n ary summation"}},key:"2211"},{category:"Sm",mappings:{"default":{"default":"minus sign","short":"minus"}},key:"2212"},{category:"Sm",mappings:{"default":{"default":"minus or plus sign","short":"minus or plus"}},key:"2213"},
-{category:"Sm",mappings:{"default":{"default":"dot plus"}},key:"2214"},{category:"Sm",mappings:{"default":{"default":"division slash"}},key:"2215"},{category:"Sm",mappings:{"default":{"default":"set minus"}},key:"2216"},{category:"Sm",mappings:{"default":{"default":"asterisk operator"}},key:"2217"},{category:"Sm",mappings:{"default":{"default":"ring operator"}},key:"2218"},{category:"Sm",mappings:{"default":{"default":"bullet operator"}},key:"2219"},{category:"Sm",mappings:{"default":{"default":"square root"}},
-key:"221A"},{category:"Sm",mappings:{"default":{"default":"cube root"}},key:"221B"},{category:"Sm",mappings:{"default":{"default":"fourth root"}},key:"221C"},{category:"Sm",mappings:{"default":{"default":"proportional to"}},key:"221D"},{category:"Sm",mappings:{"default":{"default":"infinity"}},key:"221E"},{category:"Sm",mappings:{"default":{"default":"right angle"}},key:"221F"},{category:"Sm",mappings:{"default":{"default":"angle"}},key:"2220"},{category:"Sm",mappings:{"default":{"default":"measured angle"}},
-key:"2221"},{category:"Sm",mappings:{"default":{"default":"spherical angle"}},key:"2222"},{category:"Sm",mappings:{"default":{"default":"divides","short":"bar"}},key:"2223"},{category:"Sm",mappings:{"default":{"default":"does not divide"}},key:"2224"},{category:"Sm",mappings:{"default":{"default":"parallel to"}},key:"2225"},{category:"Sm",mappings:{"default":{"default":"not parallel to"}},key:"2226"},{category:"Sm",mappings:{"default":{"default":"logical and"}},key:"2227"},{category:"Sm",mappings:{"default":{"default":"logical or"}},
-key:"2228"},{category:"Sm",mappings:{"default":{"default":"intersection"}},key:"2229"},{category:"Sm",mappings:{"default":{"default":"union"}},key:"222A"},{category:"Sm",mappings:{"default":{"default":"integral"}},key:"222B"},{category:"Sm",mappings:{"default":{"default":"double integral"}},key:"222C"},{category:"Sm",mappings:{"default":{"default":"triple integral"}},key:"222D"},{category:"Sm",mappings:{"default":{"default":"contour integral"}},key:"222E"},{category:"Sm",mappings:{"default":{"default":"surface integral"}},
-key:"222F"},{category:"Sm",mappings:{"default":{"default":"volume integral"}},key:"2230"},{category:"Sm",mappings:{"default":{"default":"clockwise integral"}},key:"2231"},{category:"Sm",mappings:{"default":{"default":"clockwise contour integral"}},key:"2232"},{category:"Sm",mappings:{"default":{"default":"anticlockwise contour integral"}},key:"2233"},{category:"Sm",mappings:{"default":{"default":"therefore"}},key:"2234"},{category:"Sm",mappings:{"default":{"default":"because"}},key:"2235"},{category:"Sm",
-mappings:{"default":{"default":"ratio"}},key:"2236"},{category:"Sm",mappings:{"default":{"default":"proportion"}},key:"2237"},{category:"Sm",mappings:{"default":{"default":"dot minus"}},key:"2238"},{category:"Sm",mappings:{"default":{"default":"excess"}},key:"2239"},{category:"Sm",mappings:{"default":{"default":"geometric proportion"}},key:"223A"},{category:"Sm",mappings:{"default":{"default":"homothetic"}},key:"223B"},{category:"Sm",mappings:{"default":{"default":"tilde operator"}},key:"223C"},{category:"Sm",
-mappings:{"default":{"default":"reversed tilde"}},key:"223D"},{category:"Sm",mappings:{"default":{"default":"inverted lazy s"}},key:"223E"},{category:"Sm",mappings:{"default":{"default":"sine wave"}},key:"223F"},{category:"Sm",mappings:{"default":{"default":"wreath product"}},key:"2240"},{category:"Sm",mappings:{"default":{"default":"not tilde"}},key:"2241"},{category:"Sm",mappings:{"default":{"default":"minus tilde"}},key:"2242"},{category:"Sm",mappings:{"default":{"default":"asymptotically equal to"}},
-key:"2243"},{category:"Sm",mappings:{"default":{"default":"not asymptotically equal to"}},key:"2244"},{category:"Sm",mappings:{"default":{"default":"approximately equal to"}},key:"2245"},{category:"Sm",mappings:{"default":{"default":"approximately but not actually equal to"}},key:"2246"},{category:"Sm",mappings:{"default":{"default":"neither approximately nor actually equal to"}},key:"2247"},{category:"Sm",mappings:{"default":{"default":"almost equal to"}},key:"2248"},{category:"Sm",mappings:{"default":{"default":"not almost equal to"}},
-key:"2249"},{category:"Sm",mappings:{"default":{"default":"almost equal or equal to"}},key:"224A"},{category:"Sm",mappings:{"default":{"default":"triple tilde"}},key:"224B"},{category:"Sm",mappings:{"default":{"default":"all equal to"}},key:"224C"},{category:"Sm",mappings:{"default":{"default":"equivalent to"}},key:"224D"},{category:"Sm",mappings:{"default":{"default":"geometrically equivalent to"}},key:"224E"},{category:"Sm",mappings:{"default":{"default":"difference between"}},key:"224F"},{category:"Sm",
-mappings:{"default":{"default":"approaches the limit"}},key:"2250"},{category:"Sm",mappings:{"default":{"default":"geometrically equal to"}},key:"2251"},{category:"Sm",mappings:{"default":{"default":"approximately equal to or the image of"}},key:"2252"},{category:"Sm",mappings:{"default":{"default":"image of or approximately equal to"}},key:"2253"},{category:"Sm",mappings:{"default":{"default":"colon equals",alternative:"colon equal"}},key:"2254"},{category:"Sm",mappings:{"default":{"default":"equals colon",
-alternative:"equal colon"}},key:"2255"},{category:"Sm",mappings:{"default":{"default":"ring in equal to"}},key:"2256"},{category:"Sm",mappings:{"default":{"default":"ring equal to"}},key:"2257"},{category:"Sm",mappings:{"default":{"default":"corresponds to"}},key:"2258"},{category:"Sm",mappings:{"default":{"default":"estimates"}},key:"2259"},{category:"Sm",mappings:{"default":{"default":"equiangular to"}},key:"225A"},{category:"Sm",mappings:{"default":{"default":"star equals"}},key:"225B"},{category:"Sm",
-mappings:{"default":{"default":"delta equal to"}},key:"225C"},{category:"Sm",mappings:{"default":{"default":"equal to by definition"}},key:"225D"},{category:"Sm",mappings:{"default":{"default":"measured by"}},key:"225E"},{category:"Sm",mappings:{"default":{"default":"questioned equal to"}},key:"225F"},{category:"Sm",mappings:{"default":{"default":"not equal to"}},key:"2260"},{category:"Sm",mappings:{"default":{"default":"identical to"}},key:"2261"},{category:"Sm",mappings:{"default":{"default":"not identical to"}},
-key:"2262"},{category:"Sm",mappings:{"default":{"default":"strictly equivalent to"}},key:"2263"},{category:"Sm",mappings:{"default":{"default":"less than or equal to",alternative:"less than or equal to"}},key:"2264"},{category:"Sm",mappings:{"default":{"default":"greater than or equal to",alternative:"greater than or equal to"}},key:"2265"},{category:"Sm",mappings:{"default":{"default":"less than over equal to",alternative:"less than over equal to"}},key:"2266"},{category:"Sm",mappings:{"default":{"default":"greater than over equal to",
-alternative:"greater than over equal to"}},key:"2267"},{category:"Sm",mappings:{"default":{"default":"less than but not equal to",alternative:"less than but not equal to"}},key:"2268"},{category:"Sm",mappings:{"default":{"default":"greater than but not equal to",alternative:"greater than but not equal to"}},key:"2269"},{category:"Sm",mappings:{"default":{"default":"much less than",alternative:"much less than"}},key:"226A"},{category:"Sm",mappings:{"default":{"default":"much greater than",alternative:"much greater than"}},
-key:"226B"},{category:"Sm",mappings:{"default":{"default":"between"}},key:"226C"},{category:"Sm",mappings:{"default":{"default":"not equivalent to"}},key:"226D"},{category:"Sm",mappings:{"default":{"default":"not less than",alternative:"not less than"}},key:"226E"},{category:"Sm",mappings:{"default":{"default":"not greater than",alternative:"not greater than"}},key:"226F"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equal to",alternative:"neither less than nor equal to"}},
-key:"2270"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equal to",alternative:"neither greater than nor equal to"}},key:"2271"},{category:"Sm",mappings:{"default":{"default":"less than or equivalent to",alternative:"less than or equivalent to"}},key:"2272"},{category:"Sm",mappings:{"default":{"default":"greater than or equivalent to",alternative:"greater than or equivalent to"}},key:"2273"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equivalent to",
-alternative:"neither less than nor equivalent to"}},key:"2274"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equivalent to",alternative:"neither greater than nor equivalent to"}},key:"2275"},{category:"Sm",mappings:{"default":{"default":"less than or greater than",alternative:"less than or greater than"}},key:"2276"},{category:"Sm",mappings:{"default":{"default":"greater than or less than",alternative:"greater than or less than"}},key:"2277"},{category:"Sm",mappings:{"default":{"default":"neither less than nor greater than",
-alternative:"neither less than nor greater than"}},key:"2278"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor less than",alternative:"neither greater than nor less than"}},key:"2279"},{category:"Sm",mappings:{"default":{"default":"precedes"}},key:"227A"},{category:"Sm",mappings:{"default":{"default":"succeeds"}},key:"227B"},{category:"Sm",mappings:{"default":{"default":"precedes or equal to"}},key:"227C"},{category:"Sm",mappings:{"default":{"default":"succeeds or equal to"}},
-key:"227D"},{category:"Sm",mappings:{"default":{"default":"precedes or equivalent to"}},key:"227E"},{category:"Sm",mappings:{"default":{"default":"succeeds or equivalent to"}},key:"227F"},{category:"Sm",mappings:{"default":{"default":"does not precede"}},key:"2280"},{category:"Sm",mappings:{"default":{"default":"does not succeed"}},key:"2281"},{category:"Sm",mappings:{"default":{"default":"subset of"}},key:"2282"},{category:"Sm",mappings:{"default":{"default":"superset of"}},key:"2283"},{category:"Sm",
-mappings:{"default":{"default":"not a subset of"}},key:"2284"},{category:"Sm",mappings:{"default":{"default":"not a superset of"}},key:"2285"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to"}},key:"2286"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to"}},key:"2287"},{category:"Sm",mappings:{"default":{"default":"neither a subset of nor equal to"}},key:"2288"},{category:"Sm",mappings:{"default":{"default":"neither a superset of nor equal to"}},key:"2289"},
-{category:"Sm",mappings:{"default":{"default":"subset of with not equal to",alternative:"subset of or not equal to","short":"subset of or not equal to"}},key:"228A"},{category:"Sm",mappings:{"default":{"default":"superset of with not equal to",alternative:"superset of or not equal to","short":"superset of or not equal to"}},key:"228B"},{category:"Sm",mappings:{"default":{"default":"multiset"}},key:"228C"},{category:"Sm",mappings:{"default":{"default":"multiset multiplication"}},key:"228D"},{category:"Sm",
-mappings:{"default":{"default":"multiset union"}},key:"228E"},{category:"Sm",mappings:{"default":{"default":"square image of"}},key:"228F"},{category:"Sm",mappings:{"default":{"default":"square original of"}},key:"2290"},{category:"Sm",mappings:{"default":{"default":"square image of or equal to"}},key:"2291"},{category:"Sm",mappings:{"default":{"default":"square original of or equal to"}},key:"2292"},{category:"Sm",mappings:{"default":{"default":"square cap"}},key:"2293"},{category:"Sm",mappings:{"default":{"default":"square cup"}},
-key:"2294"},{category:"Sm",mappings:{"default":{"default":"circled plus"}},key:"2295"},{category:"Sm",mappings:{"default":{"default":"circled minus"}},key:"2296"},{category:"Sm",mappings:{"default":{"default":"circled times"}},key:"2297"},{category:"Sm",mappings:{"default":{"default":"circled division slash"}},key:"2298"},{category:"Sm",mappings:{"default":{"default":"circled dot operator"}},key:"2299"},{category:"Sm",mappings:{"default":{"default":"circled ring operator"}},key:"229A"},{category:"Sm",
-mappings:{"default":{"default":"circled asterisk operator"}},key:"229B"},{category:"Sm",mappings:{"default":{"default":"circled equals"}},key:"229C"},{category:"Sm",mappings:{"default":{"default":"circled dash"}},key:"229D"},{category:"Sm",mappings:{"default":{"default":"squared plus"}},key:"229E"},{category:"Sm",mappings:{"default":{"default":"squared minus"}},key:"229F"},{category:"Sm",mappings:{"default":{"default":"squared times"}},key:"22A0"},{category:"Sm",mappings:{"default":{"default":"squared dot operator"}},
-key:"22A1"},{category:"Sm",mappings:{"default":{"default":"right tack"}},key:"22A2"},{category:"Sm",mappings:{"default":{"default":"left tack"}},key:"22A3"},{category:"Sm",mappings:{"default":{"default":"down tack"}},key:"22A4"},{category:"Sm",mappings:{"default":{"default":"up tack"}},key:"22A5"},{category:"Sm",mappings:{"default":{"default":"assertion"}},key:"22A6"},{category:"Sm",mappings:{"default":{"default":"models"}},key:"22A7"},{category:"Sm",mappings:{"default":{"default":"true"}},key:"22A8"},
-{category:"Sm",mappings:{"default":{"default":"forces"}},key:"22A9"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar right turnstile"}},key:"22AA"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double right turnstile"}},key:"22AB"},{category:"Sm",mappings:{"default":{"default":"does not prove"}},key:"22AC"},{category:"Sm",mappings:{"default":{"default":"not true"}},key:"22AD"},{category:"Sm",mappings:{"default":{"default":"does not force"}},key:"22AE"},{category:"Sm",
-mappings:{"default":{"default":"negated double vertical bar double right turnstile"}},key:"22AF"},{category:"Sm",mappings:{"default":{"default":"precedes under relation"}},key:"22B0"},{category:"Sm",mappings:{"default":{"default":"succeeds under relation"}},key:"22B1"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of"}},key:"22B2"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup"}},key:"22B3"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of or equal to"}},
-key:"22B4"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup or equal to"}},key:"22B5"},{category:"Sm",mappings:{"default":{"default":"original of"}},key:"22B6"},{category:"Sm",mappings:{"default":{"default":"image of"}},key:"22B7"},{category:"Sm",mappings:{"default":{"default":"multimap"}},key:"22B8"},{category:"Sm",mappings:{"default":{"default":"hermitian conjugate matrix"}},key:"22B9"},{category:"Sm",mappings:{"default":{"default":"intercalate"}},key:"22BA"},{category:"Sm",
-mappings:{"default":{"default":"xor"}},key:"22BB"},{category:"Sm",mappings:{"default":{"default":"nand"}},key:"22BC"},{category:"Sm",mappings:{"default":{"default":"nor"}},key:"22BD"},{category:"Sm",mappings:{"default":{"default":"right triangle"}},key:"22BF"},{category:"Sm",mappings:{"default":{"default":"n ary logical and"}},key:"22C0"},{category:"Sm",mappings:{"default":{"default":"n ary logical or"}},key:"22C1"},{category:"Sm",mappings:{"default":{"default":"n ary intersection"}},key:"22C2"},
-{category:"Sm",mappings:{"default":{"default":"n ary union"}},key:"22C3"},{category:"Sm",mappings:{"default":{"default":"diamond operator"}},key:"22C4"},{category:"Sm",mappings:{"default":{"default":"dot operator"}},key:"22C5"},{category:"Sm",mappings:{"default":{"default":"star operator"}},key:"22C6"},{category:"Sm",mappings:{"default":{"default":"division times"}},key:"22C7"},{category:"Sm",mappings:{"default":{"default":"bowtie"}},key:"22C8"},{category:"Sm",mappings:{"default":{"default":"left normal factor semidirect product"}},
-key:"22C9"},{category:"Sm",mappings:{"default":{"default":"right normal factor semidirect product"}},key:"22CA"},{category:"Sm",mappings:{"default":{"default":"left semidirect product"}},key:"22CB"},{category:"Sm",mappings:{"default":{"default":"right semidirect product"}},key:"22CC"},{category:"Sm",mappings:{"default":{"default":"reversed tilde equals"}},key:"22CD"},{category:"Sm",mappings:{"default":{"default":"curly logical or"}},key:"22CE"},{category:"Sm",mappings:{"default":{"default":"curly logical and"}},
-key:"22CF"},{category:"Sm",mappings:{"default":{"default":"double subset"}},key:"22D0"},{category:"Sm",mappings:{"default":{"default":"double superset"}},key:"22D1"},{category:"Sm",mappings:{"default":{"default":"double intersection"}},key:"22D2"},{category:"Sm",mappings:{"default":{"default":"double union"}},key:"22D3"},{category:"Sm",mappings:{"default":{"default":"pitchfork"}},key:"22D4"},{category:"Sm",mappings:{"default":{"default":"equal and parallel to"}},key:"22D5"},{category:"Sm",mappings:{"default":{"default":"less than with dot",
-alternative:"less than with dot","short":"less than dot"}},key:"22D6"},{category:"Sm",mappings:{"default":{"default":"greater than with dot",alternative:"greater than with dot","short":"greater than dot"}},key:"22D7"},{category:"Sm",mappings:{"default":{"default":"very much less than",alternative:"very much less than"}},key:"22D8"},{category:"Sm",mappings:{"default":{"default":"very much greater than",alternative:"very much greater than"}},key:"22D9"},{category:"Sm",mappings:{"default":{"default":"less than equal to or greater than",
-alternative:"less than equal to or greater than"}},key:"22DA"},{category:"Sm",mappings:{"default":{"default":"greater than equal to or less than",alternative:"greater than equal to or less than"}},key:"22DB"},{category:"Sm",mappings:{"default":{"default":"equal to or less than",alternative:"equal to or less than"}},key:"22DC"},{category:"Sm",mappings:{"default":{"default":"equal to or greater than",alternative:"equal to or greater than"}},key:"22DD"},{category:"Sm",mappings:{"default":{"default":"equal to or precedes"}},
-key:"22DE"},{category:"Sm",mappings:{"default":{"default":"equal to or succeeds"}},key:"22DF"},{category:"Sm",mappings:{"default":{"default":"does not precede or equal"}},key:"22E0"},{category:"Sm",mappings:{"default":{"default":"does not succeed or equal"}},key:"22E1"},{category:"Sm",mappings:{"default":{"default":"not square image of or equal to"}},key:"22E2"},{category:"Sm",mappings:{"default":{"default":"not square original of or equal to"}},key:"22E3"},{category:"Sm",mappings:{"default":{"default":"square image of or not equal to"}},
-key:"22E4"},{category:"Sm",mappings:{"default":{"default":"square original of or not equal to"}},key:"22E5"},{category:"Sm",mappings:{"default":{"default":"less than but not equivalent to",alternative:"less than but not equivalent to"}},key:"22E6"},{category:"Sm",mappings:{"default":{"default":"greater than but not equivalent to",alternative:"greater than but not equivalent to"}},key:"22E7"},{category:"Sm",mappings:{"default":{"default":"precedes but not equivalent to"}},key:"22E8"},{category:"Sm",
-mappings:{"default":{"default":"succeeds but not equivalent to"}},key:"22E9"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of"}},key:"22EA"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup"}},key:"22EB"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of or equal to"}},key:"22EC"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup or equal"}},key:"22ED"},{category:"Sm",mappings:{"default":{"default":"vertical ellipsis",
-"short":"dot dot dot"}},key:"22EE"},{category:"Sm",mappings:{"default":{"default":"midline horizontal ellipsis","short":"dot dot dot"}},key:"22EF"},{category:"Sm",mappings:{"default":{"default":"up right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F0"},{category:"Sm",mappings:{"default":{"default":"down right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F1"},{category:"Sm",mappings:{"default":{"default":"element of with long horizontal stroke"}},key:"22F2"},{category:"Sm",
-mappings:{"default":{"default":"element of with vertical bar at end of horizontal stroke"}},key:"22F3"},{category:"Sm",mappings:{"default":{"default":"small element of with vertical bar at end of horizontal stroke"}},key:"22F4"},{category:"Sm",mappings:{"default":{"default":"element of with dot above"}},key:"22F5"},{category:"Sm",mappings:{"default":{"default":"element of with overbar"}},key:"22F6"},{category:"Sm",mappings:{"default":{"default":"small element of with overbar"}},key:"22F7"},{category:"Sm",
-mappings:{"default":{"default":"element of with underbar"}},key:"22F8"},{category:"Sm",mappings:{"default":{"default":"element of with two horizontal strokes"}},key:"22F9"},{category:"Sm",mappings:{"default":{"default":"contains with long horizontal stroke"}},key:"22FA"},{category:"Sm",mappings:{"default":{"default":"contains with vertical bar at end of horizontal stroke"}},key:"22FB"},{category:"Sm",mappings:{"default":{"default":"small contains with vertical bar at end of horizontal stroke"}},key:"22FC"},
-{category:"Sm",mappings:{"default":{"default":"contains with overbar"}},key:"22FD"},{category:"Sm",mappings:{"default":{"default":"small contains with overbar"}},key:"22FE"},{category:"Sm",mappings:{"default":{"default":"z notation bag membership"}},key:"22FF"},{category:"So",mappings:{"default":{"default":"diameter sign","short":"diameter"}},key:"2300"},{category:"So",mappings:{"default":{"default":"house"}},key:"2302"},{category:"So",mappings:{"default":{"default":"projective"}},key:"2305"},{category:"So",
-mappings:{"default":{"default":"perspective"}},key:"2306"},{category:"So",mappings:{"default":{"default":"wavy line"}},key:"2307"},{category:"So",mappings:{"default":{"default":"reversed not sign","short":"reversed not"}},key:"2310"},{category:"So",mappings:{"default":{"default":"square lozenge"}},key:"2311"},{category:"So",mappings:{"default":{"default":"arc"}},key:"2312"},{category:"So",mappings:{"default":{"default":"segment"}},key:"2313"},{category:"So",mappings:{"default":{"default":"sector"}},
-key:"2314"},{category:"So",mappings:{"default":{"default":"heavy plus sign",alternative:"heavy plus","short":"bold plus"}},key:"2795"},{category:"So",mappings:{"default":{"default":"heavy minus sign",alternative:"heavy minus","short":"bold minus"}},key:"2796"},{category:"So",mappings:{"default":{"default":"heavy division sign",alternative:"heavy division","short":"bold division"}},key:"2797"},{category:"So",mappings:{"default":{"default":"curly loop"}},key:"27B0"},{category:"So",mappings:{"default":{"default":"double curly loop"}},
-key:"27BF"},{category:"Sm",mappings:{"default":{"default":"white triangle containing small white triangle"}},key:"27C1"},{category:"Sm",mappings:{"default":{"default":"perpendicular"}},key:"27C2"},{category:"Sm",mappings:{"default":{"default":"open subset"}},key:"27C3"},{category:"Sm",mappings:{"default":{"default":"open superset"}},key:"27C4"},{category:"Sm",mappings:{"default":{"default":"or with dot inside"}},key:"27C7"},{category:"Sm",mappings:{"default":{"default":"reverse solidus preceding subset"}},
-key:"27C8"},{category:"Sm",mappings:{"default":{"default":"superset preceding solidus"}},key:"27C9"},{category:"Sm",mappings:{"default":{"default":"vertical bar with horizontal stroke"}},key:"27CA"},{category:"Sm",mappings:{"default":{"default":"mathematical rising diagonal"}},key:"27CB"},{category:"Sm",mappings:{"default":{"default":"long division"}},key:"27CC"},{category:"Sm",mappings:{"default":{"default":"mathematical falling diagonal"}},key:"27CD"},{category:"Sm",mappings:{"default":{"default":"squared logical and"}},
-key:"27CE"},{category:"Sm",mappings:{"default":{"default":"squared logical or"}},key:"27CF"},{category:"Sm",mappings:{"default":{"default":"white diamond with centered dot"}},key:"27D0"},{category:"Sm",mappings:{"default":{"default":"and with dot"}},key:"27D1"},{category:"Sm",mappings:{"default":{"default":"element of opening upwards"}},key:"27D2"},{category:"Sm",mappings:{"default":{"default":"lower right corner with dot"}},key:"27D3"},{category:"Sm",mappings:{"default":{"default":"upper left corner with dot"}},
-key:"27D4"},{category:"Sm",mappings:{"default":{"default":"left outer join"}},key:"27D5"},{category:"Sm",mappings:{"default":{"default":"right outer join"}},key:"27D6"},{category:"Sm",mappings:{"default":{"default":"full outer join"}},key:"27D7"},{category:"Sm",mappings:{"default":{"default":"large up tack"}},key:"27D8"},{category:"Sm",mappings:{"default":{"default":"large down tack"}},key:"27D9"},{category:"Sm",mappings:{"default":{"default":"left and right double turnstile"}},key:"27DA"},{category:"Sm",
-mappings:{"default":{"default":"left and right tack"}},key:"27DB"},{category:"Sm",mappings:{"default":{"default":"left multimap"}},key:"27DC"},{category:"Sm",mappings:{"default":{"default":"long right tack"}},key:"27DD"},{category:"Sm",mappings:{"default":{"default":"long left tack"}},key:"27DE"},{category:"Sm",mappings:{"default":{"default":"up tack with circle above"}},key:"27DF"},{category:"Sm",mappings:{"default":{"default":"lozenge divided by horizontal rule"}},key:"27E0"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond"}},
-key:"27E1"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with leftwards tick"}},key:"27E2"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with rightwards tick"}},key:"27E3"},{category:"Sm",mappings:{"default":{"default":"white square with leftwards tick"}},key:"27E4"},{category:"Sm",mappings:{"default":{"default":"white square with rightwards tick"}},key:"27E5"},{category:"Sm",mappings:{"default":{"default":"rising diagonal crossing falling diagonal"}},
-key:"292B"},{category:"Sm",mappings:{"default":{"default":"falling diagonal crossing rising diagonal"}},key:"292C"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar delimiter"}},key:"2980"},{category:"Sm",mappings:{"default":{"default":"z notation spot"}},key:"2981"},{category:"Sm",mappings:{"default":{"default":"z notation type colon"}},key:"2982"},{category:"Sm",mappings:{"default":{"default":"dotted fence"}},key:"2999"},{category:"Sm",mappings:{"default":{"default":"vertical zigzag line"}},
-key:"299A"},{category:"Sm",mappings:{"default":{"default":"reversed empty set"}},key:"29B0"},{category:"Sm",mappings:{"default":{"default":"empty set with overbar"}},key:"29B1"},{category:"Sm",mappings:{"default":{"default":"empty set with small circle above"}},key:"29B2"},{category:"Sm",mappings:{"default":{"default":"circle with horizontal bar"}},key:"29B5"},{category:"Sm",mappings:{"default":{"default":"circled vertical bar"}},key:"29B6"},{category:"Sm",mappings:{"default":{"default":"circled parallel"}},
-key:"29B7"},{category:"Sm",mappings:{"default":{"default":"circled reverse solidus"}},key:"29B8"},{category:"Sm",mappings:{"default":{"default":"circled perpendicular"}},key:"29B9"},{category:"Sm",mappings:{"default":{"default":"circle divided by horizontal bar and top half divided by vertical bar"}},key:"29BA"},{category:"Sm",mappings:{"default":{"default":"circle with superimposed x"}},key:"29BB"},{category:"Sm",mappings:{"default":{"default":"circled anticlockwise rotated division sign","short":"circled anticlockwise rotated division"}},
-key:"29BC"},{category:"Sm",mappings:{"default":{"default":"circled white bullet"}},key:"29BE"},{category:"Sm",mappings:{"default":{"default":"circled bullet"}},key:"29BF"},{category:"Sm",mappings:{"default":{"default":"circled less than"}},key:"29C0"},{category:"Sm",mappings:{"default":{"default":"circled greater than"}},key:"29C1"},{category:"Sm",mappings:{"default":{"default":"circle with small circle to the right"}},key:"29C2"},{category:"Sm",mappings:{"default":{"default":"circle with two horizontal strokes to the right"}},
-key:"29C3"},{category:"Sm",mappings:{"default":{"default":"squared rising diagonal slash"}},key:"29C4"},{category:"Sm",mappings:{"default":{"default":"squared falling diagonal slash"}},key:"29C5"},{category:"Sm",mappings:{"default":{"default":"squared asterisk"}},key:"29C6"},{category:"Sm",mappings:{"default":{"default":"squared small circle"}},key:"29C7"},{category:"Sm",mappings:{"default":{"default":"squared square"}},key:"29C8"},{category:"Sm",mappings:{"default":{"default":"two joined squares"}},
-key:"29C9"},{category:"Sm",mappings:{"default":{"default":"triangle with dot above"}},key:"29CA"},{category:"Sm",mappings:{"default":{"default":"triangle with underbar"}},key:"29CB"},{category:"Sm",mappings:{"default":{"default":"s in triangle"}},key:"29CC"},{category:"Sm",mappings:{"default":{"default":"triangle with serifs at bottom"}},key:"29CD"},{category:"Sm",mappings:{"default":{"default":"right triangle above left triangle"}},key:"29CE"},{category:"Sm",mappings:{"default":{"default":"left triangle beside vertical bar"}},
-key:"29CF"},{category:"Sm",mappings:{"default":{"default":"vertical bar beside right triangle"}},key:"29D0"},{category:"Sm",mappings:{"default":{"default":"bowtie with left half black"}},key:"29D1"},{category:"Sm",mappings:{"default":{"default":"bowtie with right half black"}},key:"29D2"},{category:"Sm",mappings:{"default":{"default":"black bowtie"}},key:"29D3"},{category:"Sm",mappings:{"default":{"default":"times with left half black"}},key:"29D4"},{category:"Sm",mappings:{"default":{"default":"times with right half black"}},
-key:"29D5"},{category:"Sm",mappings:{"default":{"default":"white hourglass"}},key:"29D6"},{category:"Sm",mappings:{"default":{"default":"black hourglass"}},key:"29D7"},{category:"Sm",mappings:{"default":{"default":"incomplete infinity"}},key:"29DC"},{category:"Sm",mappings:{"default":{"default":"tie over infinity"}},key:"29DD"},{category:"Sm",mappings:{"default":{"default":"infinity negated with vertical bar"}},key:"29DE"},{category:"Sm",mappings:{"default":{"default":"double ended multimap"}},key:"29DF"},
-{category:"Sm",mappings:{"default":{"default":"square with contoured outline"}},key:"29E0"},{category:"Sm",mappings:{"default":{"default":"increases as"}},key:"29E1"},{category:"Sm",mappings:{"default":{"default":"shuffle product"}},key:"29E2"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel"}},key:"29E3"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel with tilde above"}},key:"29E4"},{category:"Sm",mappings:{"default":{"default":"identical to and slanted parallel"}},
-key:"29E5"},{category:"Sm",mappings:{"default":{"default":"gleich stark"}},key:"29E6"},{category:"Sm",mappings:{"default":{"default":"thermodynamic"}},key:"29E7"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with left half black"}},key:"29E8"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with right half black"}},key:"29E9"},{category:"Sm",mappings:{"default":{"default":"black lozenge"}},key:"29EB"},{category:"Sm",mappings:{"default":{"default":"error barred white square"}},
-key:"29EE"},{category:"Sm",mappings:{"default":{"default":"error barred black square"}},key:"29EF"},{category:"Sm",mappings:{"default":{"default":"error barred white diamond"}},key:"29F0"},{category:"Sm",mappings:{"default":{"default":"error barred black diamond"}},key:"29F1"},{category:"Sm",mappings:{"default":{"default":"error barred white circle"}},key:"29F2"},{category:"Sm",mappings:{"default":{"default":"error barred black circle"}},key:"29F3"},{category:"Sm",mappings:{"default":{"default":"rule delayed"}},
-key:"29F4"},{category:"Sm",mappings:{"default":{"default":"reverse solidus operator"}},key:"29F5"},{category:"Sm",mappings:{"default":{"default":"solidus with overbar"}},key:"29F6"},{category:"Sm",mappings:{"default":{"default":"reverse solidus with horizontal stroke"}},key:"29F7"},{category:"Sm",mappings:{"default":{"default":"big solidus"}},key:"29F8"},{category:"Sm",mappings:{"default":{"default":"big reverse solidus"}},key:"29F9"},{category:"Sm",mappings:{"default":{"default":"double plus"}},
-key:"29FA"},{category:"Sm",mappings:{"default":{"default":"triple plus"}},key:"29FB"},{category:"Sm",mappings:{"default":{"default":"tiny"}},key:"29FE"},{category:"Sm",mappings:{"default":{"default":"miny"}},key:"29FF"},{category:"Sm",mappings:{"default":{"default":"n ary circled dot operator"}},key:"2A00"},{category:"Sm",mappings:{"default":{"default":"n ary circled plus operator"}},key:"2A01"},{category:"Sm",mappings:{"default":{"default":"n ary circled times operator"}},key:"2A02"},{category:"Sm",
-mappings:{"default":{"default":"n ary union operator with dot"}},key:"2A03"},{category:"Sm",mappings:{"default":{"default":"n ary union operator with plus"}},key:"2A04"},{category:"Sm",mappings:{"default":{"default":"n ary square intersection operator"}},key:"2A05"},{category:"Sm",mappings:{"default":{"default":"n ary square union operator"}},key:"2A06"},{category:"Sm",mappings:{"default":{"default":"two logical and operator"}},key:"2A07"},{category:"Sm",mappings:{"default":{"default":"two logical or operator"}},
-key:"2A08"},{category:"Sm",mappings:{"default":{"default":"n ary times operator"}},key:"2A09"},{category:"Sm",mappings:{"default":{"default":"modulo two sum"}},key:"2A0A"},{category:"Sm",mappings:{"default":{"default":"summation with integral"}},key:"2A0B"},{category:"Sm",mappings:{"default":{"default":"quadruple integral operator"}},key:"2A0C"},{category:"Sm",mappings:{"default":{"default":"finite part integral"}},key:"2A0D"},{category:"Sm",mappings:{"default":{"default":"integral with double stroke"}},
-key:"2A0E"},{category:"Sm",mappings:{"default":{"default":"integral average with slash"}},key:"2A0F"},{category:"Sm",mappings:{"default":{"default":"circulation function"}},key:"2A10"},{category:"Sm",mappings:{"default":{"default":"anticlockwise integration"}},key:"2A11"},{category:"Sm",mappings:{"default":{"default":"line integration with rectangular path around pole"}},key:"2A12"},{category:"Sm",mappings:{"default":{"default":"line integration with semicircular path around pole"}},key:"2A13"},{category:"Sm",
-mappings:{"default":{"default":"line integration not including the pole"}},key:"2A14"},{category:"Sm",mappings:{"default":{"default":"integral around a point operator"}},key:"2A15"},{category:"Sm",mappings:{"default":{"default":"quaternion integral operator"}},key:"2A16"},{category:"Sm",mappings:{"default":{"default":"integral with times sign","short":"integral with times"}},key:"2A18"},{category:"Sm",mappings:{"default":{"default":"integral with intersection"}},key:"2A19"},{category:"Sm",mappings:{"default":{"default":"integral with union"}},
-key:"2A1A"},{category:"Sm",mappings:{"default":{"default":"integral with overbar"}},key:"2A1B"},{category:"Sm",mappings:{"default":{"default":"integral with underbar"}},key:"2A1C"},{category:"Sm",mappings:{"default":{"default":"join"}},key:"2A1D"},{category:"Sm",mappings:{"default":{"default":"large left triangle operator"}},key:"2A1E"},{category:"Sm",mappings:{"default":{"default":"z notation schema composition"}},key:"2A1F"},{category:"Sm",mappings:{"default":{"default":"z notation schema piping"}},
-key:"2A20"},{category:"Sm",mappings:{"default":{"default":"z notation schema projection"}},key:"2A21"},{category:"Sm",mappings:{"default":{"default":"plus sign with small circle above","short":"plus with circle above"}},key:"2A22"},{category:"Sm",mappings:{"default":{"default":"plus sign with circumflex accent above","short":"plus hat"}},key:"2A23"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde above","short":"plus tilde"}},key:"2A24"},{category:"Sm",mappings:{"default":{"default":"plus sign with dot below",
-"short":"plus underdot"}},key:"2A25"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde below"}},key:"2A26"},{category:"Sm",mappings:{"default":{"default":"plus sign with subscript two"}},key:"2A27"},{category:"Sm",mappings:{"default":{"default":"plus sign with black triangle"}},key:"2A28"},{category:"Sm",mappings:{"default":{"default":"minus sign with comma above"}},key:"2A29"},{category:"Sm",mappings:{"default":{"default":"minus sign with dot below"}},key:"2A2A"},{category:"Sm",
-mappings:{"default":{"default":"minus sign with falling dots"}},key:"2A2B"},{category:"Sm",mappings:{"default":{"default":"minus sign with rising dots"}},key:"2A2C"},{category:"Sm",mappings:{"default":{"default":"plus sign in left half circle"}},key:"2A2D"},{category:"Sm",mappings:{"default":{"default":"plus sign in right half circle"}},key:"2A2E"},{category:"Sm",mappings:{"default":{"default":"vector or cross product"}},key:"2A2F"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with dot above"}},
-key:"2A30"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with underbar"}},key:"2A31"},{category:"Sm",mappings:{"default":{"default":"semidirect product with bottom closed"}},key:"2A32"},{category:"Sm",mappings:{"default":{"default":"smash product"}},key:"2A33"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in left half circle"}},key:"2A34"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in right half circle"}},key:"2A35"},{category:"Sm",
-mappings:{"default":{"default":"circled multiplication sign with circumflex accent"}},key:"2A36"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in double circle"}},key:"2A37"},{category:"Sm",mappings:{"default":{"default":"circled division sign","short":"circled division"}},key:"2A38"},{category:"Sm",mappings:{"default":{"default":"plus sign in triangle"}},key:"2A39"},{category:"Sm",mappings:{"default":{"default":"minus sign in triangle"}},key:"2A3A"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in triangle"}},
-key:"2A3B"},{category:"Sm",mappings:{"default":{"default":"interior product"}},key:"2A3C"},{category:"Sm",mappings:{"default":{"default":"righthand interior product"}},key:"2A3D"},{category:"Sm",mappings:{"default":{"default":"z notation relational composition"}},key:"2A3E"},{category:"Sm",mappings:{"default":{"default":"amalgamation or coproduct"}},key:"2A3F"},{category:"Sm",mappings:{"default":{"default":"intersection with dot"}},key:"2A40"},{category:"Sm",mappings:{"default":{"default":"union with minus sign",
-"short":"union with minus"}},key:"2A41"},{category:"Sm",mappings:{"default":{"default":"union with overbar"}},key:"2A42"},{category:"Sm",mappings:{"default":{"default":"intersection with overbar"}},key:"2A43"},{category:"Sm",mappings:{"default":{"default":"intersection with logical and"}},key:"2A44"},{category:"Sm",mappings:{"default":{"default":"union with logical or"}},key:"2A45"},{category:"Sm",mappings:{"default":{"default":"union above intersection"}},key:"2A46"},{category:"Sm",mappings:{"default":{"default":"intersection above union"}},
-key:"2A47"},{category:"Sm",mappings:{"default":{"default":"union above bar above intersection"}},key:"2A48"},{category:"Sm",mappings:{"default":{"default":"intersection above bar above union"}},key:"2A49"},{category:"Sm",mappings:{"default":{"default":"union beside and joined with union"}},key:"2A4A"},{category:"Sm",mappings:{"default":{"default":"intersection beside and joined with intersection"}},key:"2A4B"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs"}},key:"2A4C"},
-{category:"Sm",mappings:{"default":{"default":"closed intersection with serifs"}},key:"2A4D"},{category:"Sm",mappings:{"default":{"default":"double square intersection"}},key:"2A4E"},{category:"Sm",mappings:{"default":{"default":"double square union"}},key:"2A4F"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs and smash product"}},key:"2A50"},{category:"Sm",mappings:{"default":{"default":"logical and with dot above"}},key:"2A51"},{category:"Sm",mappings:{"default":{"default":"logical or with dot above"}},
-key:"2A52"},{category:"Sm",mappings:{"default":{"default":"double logical and"}},key:"2A53"},{category:"Sm",mappings:{"default":{"default":"double logical or"}},key:"2A54"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical and"}},key:"2A55"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical or"}},key:"2A56"},{category:"Sm",mappings:{"default":{"default":"sloping large or"}},key:"2A57"},{category:"Sm",mappings:{"default":{"default":"sloping large and"}},
-key:"2A58"},{category:"Sm",mappings:{"default":{"default":"logical or overlapping logical and"}},key:"2A59"},{category:"Sm",mappings:{"default":{"default":"logical and with middle stem"}},key:"2A5A"},{category:"Sm",mappings:{"default":{"default":"logical or with middle stem"}},key:"2A5B"},{category:"Sm",mappings:{"default":{"default":"logical and with horizontal dash"}},key:"2A5C"},{category:"Sm",mappings:{"default":{"default":"logical or with horizontal dash"}},key:"2A5D"},{category:"Sm",mappings:{"default":{"default":"logical and with double overbar"}},
-key:"2A5E"},{category:"Sm",mappings:{"default":{"default":"logical and with underbar"}},key:"2A5F"},{category:"Sm",mappings:{"default":{"default":"logical and with double underbar"}},key:"2A60"},{category:"Sm",mappings:{"default":{"default":"small vee with underbar"}},key:"2A61"},{category:"Sm",mappings:{"default":{"default":"logical or with double overbar"}},key:"2A62"},{category:"Sm",mappings:{"default":{"default":"logical or with double underbar"}},key:"2A63"},{category:"Sm",mappings:{"default":{"default":"z notation domain antirestriction"}},
-key:"2A64"},{category:"Sm",mappings:{"default":{"default":"z notation range antirestriction"}},key:"2A65"},{category:"Sm",mappings:{"default":{"default":"equals sign with dot below"}},key:"2A66"},{category:"Sm",mappings:{"default":{"default":"identical with dot above"}},key:"2A67"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with double vertical stroke"}},key:"2A68"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with triple vertical stroke"}},key:"2A69"},
-{category:"Sm",mappings:{"default":{"default":"tilde operator with dot above"}},key:"2A6A"},{category:"Sm",mappings:{"default":{"default":"tilde operator with rising dots"}},key:"2A6B"},{category:"Sm",mappings:{"default":{"default":"similar minus similar"}},key:"2A6C"},{category:"Sm",mappings:{"default":{"default":"congruent with dot above"}},key:"2A6D"},{category:"Sm",mappings:{"default":{"default":"equals with asterisk"}},key:"2A6E"},{category:"Sm",mappings:{"default":{"default":"almost equal to with circumflex accent",
-"short":"almost equal hat"}},key:"2A6F"},{category:"Sm",mappings:{"default":{"default":"approximately equal or equal to"}},key:"2A70"},{category:"Sm",mappings:{"default":{"default":"equals sign above plus sign","short":"equals above plus"}},key:"2A71"},{category:"Sm",mappings:{"default":{"default":"plus sign above equals sign","short":"plus above equals"}},key:"2A72"},{category:"Sm",mappings:{"default":{"default":"equals sign above tilde operator","short":"equals above tilde operator"}},key:"2A73"},
-{category:"Sm",mappings:{"default":{"default":"double colon equal"}},key:"2A74"},{category:"Sm",mappings:{"default":{"default":"two consecutive equals signs","short":"two consecutive equals"}},key:"2A75"},{category:"Sm",mappings:{"default":{"default":"three consecutive equals signs","short":"three consecutive equals"}},key:"2A76"},{category:"Sm",mappings:{"default":{"default":"equals sign with two dots above and two dots below"}},key:"2A77"},{category:"Sm",mappings:{"default":{"default":"equivalent with four dots above"}},
-key:"2A78"},{category:"Sm",mappings:{"default":{"default":"less than with circle inside"}},key:"2A79"},{category:"Sm",mappings:{"default":{"default":"greater than with circle inside"}},key:"2A7A"},{category:"Sm",mappings:{"default":{"default":"less than with question mark above"}},key:"2A7B"},{category:"Sm",mappings:{"default":{"default":"greater than with question mark above"}},key:"2A7C"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to"}},key:"2A7D"},{category:"Sm",
-mappings:{"default":{"default":"greater than or slanted equal to"}},key:"2A7E"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot inside"}},key:"2A7F"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot inside"}},key:"2A80"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above"}},key:"2A81"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above"}},
-key:"2A82"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above right"}},key:"2A83"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above left"}},key:"2A84"},{category:"Sm",mappings:{"default":{"default":"less than or approximate"}},key:"2A85"},{category:"Sm",mappings:{"default":{"default":"greater than or approximate"}},key:"2A86"},{category:"Sm",mappings:{"default":{"default":"less than and single line not equal to"}},
-key:"2A87"},{category:"Sm",mappings:{"default":{"default":"greater than and single line not equal to"}},key:"2A88"},{category:"Sm",mappings:{"default":{"default":"less than and not approximate"}},key:"2A89"},{category:"Sm",mappings:{"default":{"default":"greater than and not approximate"}},key:"2A8A"},{category:"Sm",mappings:{"default":{"default":"less than above double line equal above greater than"}},key:"2A8B"},{category:"Sm",mappings:{"default":{"default":"greater than above double line equal above less than"}},
-key:"2A8C"},{category:"Sm",mappings:{"default":{"default":"less than above similar or equal"}},key:"2A8D"},{category:"Sm",mappings:{"default":{"default":"greater than above similar or equal"}},key:"2A8E"},{category:"Sm",mappings:{"default":{"default":"less than above similar above greater than"}},key:"2A8F"},{category:"Sm",mappings:{"default":{"default":"greater than above similar above less than"}},key:"2A90"},{category:"Sm",mappings:{"default":{"default":"less than above greater than above double line equal"}},
-key:"2A91"},{category:"Sm",mappings:{"default":{"default":"greater than above less than above double line equal"}},key:"2A92"},{category:"Sm",mappings:{"default":{"default":"less than above slanted equal above greater than above slanted equal"}},key:"2A93"},{category:"Sm",mappings:{"default":{"default":"greater than above slanted equal above less than above slanted equal"}},key:"2A94"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than"}},key:"2A95"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than"}},
-key:"2A96"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than with dot inside"}},key:"2A97"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than with dot inside"}},key:"2A98"},{category:"Sm",mappings:{"default":{"default":"double line equal to or less than"}},key:"2A99"},{category:"Sm",mappings:{"default":{"default":"double line equal to or greater than"}},key:"2A9A"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or less than"}},
-key:"2A9B"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or greater than"}},key:"2A9C"},{category:"Sm",mappings:{"default":{"default":"similar or less than"}},key:"2A9D"},{category:"Sm",mappings:{"default":{"default":"similar or greater than"}},key:"2A9E"},{category:"Sm",mappings:{"default":{"default":"similar above less than above equals sign"}},key:"2A9F"},{category:"Sm",mappings:{"default":{"default":"similar above greater than above equals sign"}},key:"2AA0"},{category:"Sm",
-mappings:{"default":{"default":"double nested less than"}},key:"2AA1"},{category:"Sm",mappings:{"default":{"default":"double nested greater than"}},key:"2AA2"},{category:"Sm",mappings:{"default":{"default":"double nested less than with underbar"}},key:"2AA3"},{category:"Sm",mappings:{"default":{"default":"greater than overlapping less than"}},key:"2AA4"},{category:"Sm",mappings:{"default":{"default":"greater than beside less than"}},key:"2AA5"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve"}},
-key:"2AA6"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve"}},key:"2AA7"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve above slanted equal"}},key:"2AA8"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve above slanted equal"}},key:"2AA9"},{category:"Sm",mappings:{"default":{"default":"smaller than"}},key:"2AAA"},{category:"Sm",mappings:{"default":{"default":"larger than"}},key:"2AAB"},{category:"Sm",mappings:{"default":{"default":"smaller than or equal to"}},
-key:"2AAC"},{category:"Sm",mappings:{"default":{"default":"larger than or equal to"}},key:"2AAD"},{category:"Sm",mappings:{"default":{"default":"equals sign with bumpy above"}},key:"2AAE"},{category:"Sm",mappings:{"default":{"default":"precedes above single line equals sign"}},key:"2AAF"},{category:"Sm",mappings:{"default":{"default":"succeeds above single line equals sign"}},key:"2AB0"},{category:"Sm",mappings:{"default":{"default":"precedes above single line not equal to"}},key:"2AB1"},{category:"Sm",
-mappings:{"default":{"default":"succeeds above single line not equal to"}},key:"2AB2"},{category:"Sm",mappings:{"default":{"default":"precedes above equals sign"}},key:"2AB3"},{category:"Sm",mappings:{"default":{"default":"succeeds above equals sign"}},key:"2AB4"},{category:"Sm",mappings:{"default":{"default":"precedes above not equal to"}},key:"2AB5"},{category:"Sm",mappings:{"default":{"default":"succeeds above not equal to"}},key:"2AB6"},{category:"Sm",mappings:{"default":{"default":"precedes above almost equal to"}},
-key:"2AB7"},{category:"Sm",mappings:{"default":{"default":"succeeds above almost equal to"}},key:"2AB8"},{category:"Sm",mappings:{"default":{"default":"precedes above not almost equal to"}},key:"2AB9"},{category:"Sm",mappings:{"default":{"default":"succeeds above not almost equal to"}},key:"2ABA"},{category:"Sm",mappings:{"default":{"default":"double precedes"}},key:"2ABB"},{category:"Sm",mappings:{"default":{"default":"double succeeds"}},key:"2ABC"},{category:"Sm",mappings:{"default":{"default":"subset with dot"}},
-key:"2ABD"},{category:"Sm",mappings:{"default":{"default":"superset with dot"}},key:"2ABE"},{category:"Sm",mappings:{"default":{"default":"subset with plus sign below"}},key:"2ABF"},{category:"Sm",mappings:{"default":{"default":"superset with plus sign below"}},key:"2AC0"},{category:"Sm",mappings:{"default":{"default":"subset with multiplication sign below"}},key:"2AC1"},{category:"Sm",mappings:{"default":{"default":"superset with multiplication sign below"}},key:"2AC2"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to with dot above"}},
-key:"2AC3"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to with dot above"}},key:"2AC4"},{category:"Sm",mappings:{"default":{"default":"subset of above equals sign"}},key:"2AC5"},{category:"Sm",mappings:{"default":{"default":"superset of above equals sign"}},key:"2AC6"},{category:"Sm",mappings:{"default":{"default":"subset of above tilde operator"}},key:"2AC7"},{category:"Sm",mappings:{"default":{"default":"superset of above tilde operator"}},key:"2AC8"},{category:"Sm",mappings:{"default":{"default":"subset of above almost equal to"}},
-key:"2AC9"},{category:"Sm",mappings:{"default":{"default":"superset of above almost equal to"}},key:"2ACA"},{category:"Sm",mappings:{"default":{"default":"subset of above not equal to"}},key:"2ACB"},{category:"Sm",mappings:{"default":{"default":"superset of above not equal to"}},key:"2ACC"},{category:"Sm",mappings:{"default":{"default":"square left open box operator"}},key:"2ACD"},{category:"Sm",mappings:{"default":{"default":"square right open box operator"}},key:"2ACE"},{category:"Sm",mappings:{"default":{"default":"closed subset"}},
-key:"2ACF"},{category:"Sm",mappings:{"default":{"default":"closed superset"}},key:"2AD0"},{category:"Sm",mappings:{"default":{"default":"closed subset or equal to"}},key:"2AD1"},{category:"Sm",mappings:{"default":{"default":"closed superset or equal to"}},key:"2AD2"},{category:"Sm",mappings:{"default":{"default":"subset above superset"}},key:"2AD3"},{category:"Sm",mappings:{"default":{"default":"superset above subset"}},key:"2AD4"},{category:"Sm",mappings:{"default":{"default":"subset above subset"}},
-key:"2AD5"},{category:"Sm",mappings:{"default":{"default":"superset above superset"}},key:"2AD6"},{category:"Sm",mappings:{"default":{"default":"superset beside subset"}},key:"2AD7"},{category:"Sm",mappings:{"default":{"default":"superset beside and joined by dash with subset"}},key:"2AD8"},{category:"Sm",mappings:{"default":{"default":"element of opening downwards"}},key:"2AD9"},{category:"Sm",mappings:{"default":{"default":"pitchfork with tee top"}},key:"2ADA"},{category:"Sm",mappings:{"default":{"default":"transversal intersection"}},
-key:"2ADB"},{category:"Sm",mappings:{"default":{"default":"forking"}},key:"2ADC"},{category:"Sm",mappings:{"default":{"default":"nonforking"}},key:"2ADD"},{category:"Sm",mappings:{"default":{"default":"short left tack"}},key:"2ADE"},{category:"Sm",mappings:{"default":{"default":"short down tack"}},key:"2ADF"},{category:"Sm",mappings:{"default":{"default":"short up tack"}},key:"2AE0"},{category:"Sm",mappings:{"default":{"default":"perpendicular with s"}},key:"2AE1"},{category:"Sm",mappings:{"default":{"default":"vertical bar triple right turnstile"}},
-key:"2AE2"},{category:"Sm",mappings:{"default":{"default":"double vertical bar left turnstile"}},key:"2AE3"},{category:"Sm",mappings:{"default":{"default":"vertical bar double left turnstile"}},key:"2AE4"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double left turnstile"}},key:"2AE5"},{category:"Sm",mappings:{"default":{"default":"long dash from left member of double vertical"}},key:"2AE6"},{category:"Sm",mappings:{"default":{"default":"short down tack with overbar"}},key:"2AE7"},
-{category:"Sm",mappings:{"default":{"default":"short up tack with underbar"}},key:"2AE8"},{category:"Sm",mappings:{"default":{"default":"short up tack above short down tack"}},key:"2AE9"},{category:"Sm",mappings:{"default":{"default":"double down tack"}},key:"2AEA"},{category:"Sm",mappings:{"default":{"default":"double up tack"}},key:"2AEB"},{category:"Sm",mappings:{"default":{"default":"double stroke not sign"}},key:"2AEC"},{category:"Sm",mappings:{"default":{"default":"reversed double stroke not sign"}},
-key:"2AED"},{category:"Sm",mappings:{"default":{"default":"does not divide with reversed negation slash"}},key:"2AEE"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle above"}},key:"2AEF"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle below"}},key:"2AF0"},{category:"Sm",mappings:{"default":{"default":"down tack with circle below"}},key:"2AF1"},{category:"Sm",mappings:{"default":{"default":"parallel with horizontal stroke"}},key:"2AF2"},{category:"Sm",
-mappings:{"default":{"default":"parallel with tilde operator"}},key:"2AF3"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar binary relation"}},key:"2AF4"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar with horizontal stroke"}},key:"2AF5"},{category:"Sm",mappings:{"default":{"default":"triple colon operator"}},key:"2AF6"},{category:"Sm",mappings:{"default":{"default":"triple nested less than"}},key:"2AF7"},{category:"Sm",mappings:{"default":{"default":"triple nested greater than"}},
-key:"2AF8"},{category:"Sm",mappings:{"default":{"default":"double line slanted less than or equal to"}},key:"2AF9"},{category:"Sm",mappings:{"default":{"default":"double line slanted greater than or equal to"}},key:"2AFA"},{category:"Sm",mappings:{"default":{"default":"triple solidus binary relation"}},key:"2AFB"},{category:"Sm",mappings:{"default":{"default":"large triple vertical bar operator"}},key:"2AFC"},{category:"Sm",mappings:{"default":{"default":"double solidus operator"}},key:"2AFD"},{category:"Sm",
-mappings:{"default":{"default":"white vertical bar"}},key:"2AFE"},{category:"Sm",mappings:{"default":{"default":"n ary white vertical bar"}},key:"2AFF"},{category:"Pd",mappings:{"default":{"default":"wave dash"}},key:"301C"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical comma"}},key:"FE10"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical colon"}},key:"FE13"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical semicolon"}},
-key:"FE14"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical exclamation mark"}},key:"FE15"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical question mark"}},key:"FE16"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical horizontal ellipsis"}},key:"FE19"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical two dot leader",alternative:"glyph for vertical two dot leader"}},key:"FE30"},{category:"Pd",
-mappings:{"default":{"default":"presentation form for vertical em dash",alternative:"glyph for vertical em dash"}},key:"FE31"},{category:"Pd",mappings:{"default":{"default":"presentation form for vertical en dash",alternative:"glyph for vertical en dash"}},key:"FE32"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical low line",alternative:"glyph for vertical spacing underscore"}},key:"FE33"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical wavy low line",
-alternative:"glyph for vertical spacing wavy underscore"}},key:"FE34"},{category:"Po",mappings:{"default":{"default":"sesame dot"}},key:"FE45"},{category:"Po",mappings:{"default":{"default":"white sesame dot"}},key:"FE46"},{category:"Po",mappings:{"default":{"default":"dashed overline",alternative:"spacing dashed overscore"}},key:"FE49"},{category:"Po",mappings:{"default":{"default":"centerline overline",alternative:"spacing centerline overscore"}},key:"FE4A"},{category:"Po",mappings:{"default":{"default":"wavy overline",
-alternative:"spacing wavy overscore"}},key:"FE4B"},{category:"Po",mappings:{"default":{"default":"double wavy overline",alternative:"spacing double wavy overscore"}},key:"FE4C"},{category:"Pc",mappings:{"default":{"default":"dashed low line",alternative:"spacing dashed underscore"}},key:"FE4D"},{category:"Pc",mappings:{"default":{"default":"centerline low line",alternative:"spacing centerline underscore"}},key:"FE4E"},{category:"Pc",mappings:{"default":{"default":"wavy low line",alternative:"spacing wavy underscore"}},
-key:"FE4F"},{category:"Po",mappings:{"default":{"default":"small comma"}},key:"FE50"},{category:"Po",mappings:{"default":{"default":"small full stop",alternative:"small period"}},key:"FE52"},{category:"Po",mappings:{"default":{"default":"small semicolon"}},key:"FE54"},{category:"Po",mappings:{"default":{"default":"small colon"}},key:"FE55"},{category:"Po",mappings:{"default":{"default":"small question mark"}},key:"FE56"},{category:"Po",mappings:{"default":{"default":"small exclamation mark"}},key:"FE57"},
-{category:"Pd",mappings:{"default":{"default":"small em dash"}},key:"FE58"},{category:"Po",mappings:{"default":{"default":"small number sign"}},key:"FE5F"},{category:"Po",mappings:{"default":{"default":"small ampersand"}},key:"FE60"},{category:"Po",mappings:{"default":{"default":"small asterisk"}},key:"FE61"},{category:"Sm",mappings:{"default":{"default":"small plus sign"}},key:"FE62"},{category:"Pd",mappings:{"default":{"default":"small hyphen minus"}},key:"FE63"},{category:"Sm",mappings:{"default":{"default":"small less than sign"}},
-key:"FE64"},{category:"Sm",mappings:{"default":{"default":"small greater than sign"}},key:"FE65"},{category:"Sm",mappings:{"default":{"default":"small equals sign"}},key:"FE66"},{category:"Po",mappings:{"default":{"default":"small reverse solidus",alternative:"small backslash"}},key:"FE68"},{category:"Sc",mappings:{"default":{"default":"small dollar sign"}},key:"FE69"},{category:"Po",mappings:{"default":{"default":"small percent sign"}},key:"FE6A"},{category:"Po",mappings:{"default":{"default":"small commercial at"}},
-key:"FE6B"},{category:"Po",mappings:{"default":{"default":"fullwidth exclamation mark"}},key:"FF01"},{category:"Po",mappings:{"default":{"default":"fullwidth quotation mark"}},key:"FF02"},{category:"Po",mappings:{"default":{"default":"fullwidth number sign"}},key:"FF03"},{category:"Sc",mappings:{"default":{"default":"fullwidth dollar sign"}},key:"FF04"},{category:"Po",mappings:{"default":{"default":"fullwidth percent sign"}},key:"FF05"},{category:"Po",mappings:{"default":{"default":"fullwidth ampersand"}},
-key:"FF06"},{category:"Po",mappings:{"default":{"default":"fullwidth apostrophe"}},key:"FF07"},{category:"Po",mappings:{"default":{"default":"fullwidth asterisk"}},key:"FF0A"},{category:"Sm",mappings:{"default":{"default":"fullwidth plus sign"}},key:"FF0B"},{category:"Po",mappings:{"default":{"default":"fullwidth comma"}},key:"FF0C"},{category:"Pd",mappings:{"default":{"default":"fullwidth hyphen minus"}},key:"FF0D"},{category:"Po",mappings:{"default":{"default":"fullwidth full stop",alternative:"fullwidth period"}},
-key:"FF0E"},{category:"Po",mappings:{"default":{"default":"fullwidth solidus",alternative:"fullwidth slash"}},key:"FF0F"},{category:"Po",mappings:{"default":{"default":"fullwidth colon"}},key:"FF1A"},{category:"Po",mappings:{"default":{"default":"fullwidth semicolon"}},key:"FF1B"},{category:"Sm",mappings:{"default":{"default":"fullwidth less than sign"}},key:"FF1C"},{category:"Sm",mappings:{"default":{"default":"fullwidth equals sign"}},key:"FF1D"},{category:"Sm",mappings:{"default":{"default":"fullwidth greater than sign"}},
-key:"FF1E"},{category:"Po",mappings:{"default":{"default":"fullwidth question mark"}},key:"FF1F"},{category:"Po",mappings:{"default":{"default":"fullwidth commercial at"}},key:"FF20"},{category:"Po",mappings:{"default":{"default":"fullwidth reverse solidus",alternative:"fullwidth backslash"}},key:"FF3C"},{category:"Sk",mappings:{"default":{"default":"fullwidth circumflex accent",alternative:"fullwidth spacing circumflex"}},key:"FF3E"},{category:"Pc",mappings:{"default":{"default":"fullwidth low line",
-alternative:"fullwidth spacing underscore"}},key:"FF3F"},{category:"Sk",mappings:{"default":{"default":"fullwidth grave accent",alternative:"fullwidth spacing grave"}},key:"FF40"},{category:"Sm",mappings:{"default":{"default":"fullwidth vertical line",alternative:"fullwidth vertical bar"}},key:"FF5C"},{category:"Sm",mappings:{"default":{"default":"fullwidth tilde",alternative:"fullwidth spacing tilde"}},key:"FF5E"},{category:"Sc",mappings:{"default":{"default":"fullwidth cent sign"}},key:"FFE0"},
-{category:"Sc",mappings:{"default":{"default":"fullwidth pound sign"}},key:"FFE1"},{category:"Sm",mappings:{"default":{"default":"fullwidth not sign"}},key:"FFE2"},{category:"Sk",mappings:{"default":{"default":"fullwidth macron",alternative:"fullwidth spacing macron"}},key:"FFE3"},{category:"So",mappings:{"default":{"default":"fullwidth broken bar",alternative:"fullwidth broken vertical bar"}},key:"FFE4"},{category:"Sc",mappings:{"default":{"default":"fullwidth yen sign"}},key:"FFE5"},{category:"Sc",
-mappings:{"default":{"default":"fullwidth won sign"}},key:"FFE6"},{category:"So",mappings:{"default":{"default":"halfwidth forms light vertical"}},key:"FFE8"},{category:"So",mappings:{"default":{"default":"halfwidth black square"}},key:"FFED"},{category:"So",mappings:{"default":{"default":"halfwidth white circle"}},key:"FFEE"},{category:"Ll",names:[],key:"03B1",mappings:{"default":{"default":"greek small letter alpha","short":"alpha"}}},{category:"Ll",names:[],key:"03B2",mappings:{"default":{"default":"greek small letter beta",
-"short":"beta"}}},{category:"Ll",names:[],key:"03B3",mappings:{"default":{"default":"greek small letter gamma","short":"gamma"}}},{category:"Ll",names:[],key:"03B4",mappings:{"default":{"default":"greek small letter delta","short":"delta"}}},{category:"Ll",names:[],key:"03B5",mappings:{"default":{"default":"greek small letter epsilon","short":"epsilon"}}},{category:"Ll",names:[],key:"03B6",mappings:{"default":{"default":"greek small letter zeta","short":"zeta"}}},{category:"Ll",names:[],key:"03B7",
-mappings:{"default":{"default":"greek small letter eta","short":"eta"}}},{category:"Ll",names:[],key:"03B8",mappings:{"default":{"default":"greek small letter theta","short":"theta"}}},{category:"Ll",names:[],key:"03B9",mappings:{"default":{"default":"greek small letter iota","short":"iota"}}},{category:"Ll",names:[],key:"03BA",mappings:{"default":{"default":"greek small letter kappa","short":"kappa"}}},{category:"Ll",names:[],key:"03BB",mappings:{"default":{"default":"greek small letter lamda",alternative:"greek small letter lambda",
-"short":"lamda"}}},{category:"Ll",names:[],key:"03BC",mappings:{"default":{"default":"greek small letter mu","short":"mu"}}},{category:"Ll",names:[],key:"03BD",mappings:{"default":{"default":"greek small letter nu","short":"nu"}}},{category:"Ll",names:[],key:"03BE",mappings:{"default":{"default":"greek small letter xi","short":"xi"}}},{category:"Ll",names:[],key:"03BF",mappings:{"default":{"default":"greek small letter omicron","short":"omicron"}}},{category:"Ll",names:[],key:"03C0",mappings:{"default":{"default":"greek small letter pi",
-"short":"pi"}}},{category:"Ll",names:[],key:"03C1",mappings:{"default":{"default":"greek small letter rho","short":"rho"}}},{category:"Ll",names:[],key:"03C2",mappings:{"default":{"default":"greek small letter final sigma","short":"final sigma"}}},{category:"Ll",names:[],key:"03C3",mappings:{"default":{"default":"greek small letter sigma","short":"sigma"}}},{category:"Ll",names:[],key:"03C4",mappings:{"default":{"default":"greek small letter tau","short":"tau"}}},{category:"Ll",names:[],key:"03C5",
-mappings:{"default":{"default":"greek small letter upsilon","short":"upsilon"}}},{category:"Ll",names:[],key:"03C6",mappings:{"default":{"default":"greek small letter phi","short":"phi"}}},{category:"Ll",names:[],key:"03C7",mappings:{"default":{"default":"greek small letter chi","short":"chi"}}},{category:"Ll",names:[],key:"03C8",mappings:{"default":{"default":"greek small letter psi","short":"psi"}}},{category:"Ll",names:[],key:"03C9",mappings:{"default":{"default":"greek small letter omega","short":"omega"}}},
-{category:"Ll",mappings:{"default":{"default":"greek beta symbol",alternative:"greek small letter curled beta","short":"beta"}},key:"03D0"},{category:"Ll",mappings:{"default":{"default":"greek theta symbol",alternative:"greek small letter script theta","short":"theta"}},key:"03D1"},{category:"Ll",mappings:{"default":{"default":"greek phi symbol",alternative:"greek small letter script phi","short":"phi"}},key:"03D5"},{category:"Ll",mappings:{"default":{"default":"greek pi symbol",alternative:"greek small letter omega pi",
-"short":"pi"}},key:"03D6"},{category:"Ll",mappings:{"default":{"default":"greek kai symbol","short":"kai"}},key:"03D7"},{category:"Ll",mappings:{"default":{"default":"greek kappa symbol",alternative:"greek small letter script kappa","short":"kappa"}},key:"03F0"},{category:"Ll",mappings:{"default":{"default":"greek rho symbol",alternative:"greek small letter tailed rho","short":"rho"}},key:"03F1"},{category:"Ll",mappings:{"default":{"default":"greek lunate epsilon symbol","short":"epsilon"}},key:"03F5"},
-{category:"Sm",mappings:{"default":{"default":"greek reversed lunate epsilon symbol","short":"reversed epsilon"}},key:"03F6"},{category:"Lu",names:[],key:"0391",mappings:{"default":{"default":"greek capital letter alpha","short":"cap alpha"}}},{category:"Lu",names:[],key:"0392",mappings:{"default":{"default":"greek capital letter beta","short":"cap beta"}}},{category:"Lu",names:[],key:"0393",mappings:{"default":{"default":"greek capital letter gamma","short":"cap gamma"}}},{category:"Lu",names:[],
-key:"0394",mappings:{"default":{"default":"greek capital letter delta","short":"cap delta"}}},{category:"Lu",names:[],key:"0395",mappings:{"default":{"default":"greek capital letter epsilon","short":"cap epsilon"}}},{category:"Lu",names:[],key:"0396",mappings:{"default":{"default":"greek capital letter zeta","short":"cap zeta"}}},{category:"Lu",names:[],key:"0397",mappings:{"default":{"default":"greek capital letter eta","short":"cap eta"}}},{category:"Lu",names:[],key:"0398",mappings:{"default":{"default":"greek capital letter theta",
-"short":"cap theta"}}},{category:"Lu",names:[],key:"0399",mappings:{"default":{"default":"greek capital letter iota","short":"cap iota"}}},{category:"Lu",names:[],key:"039A",mappings:{"default":{"default":"greek capital letter kappa","short":"cap kappa"}}},{category:"Lu",names:[],key:"039B",mappings:{"default":{"default":"greek capital letter lamda",alternative:"greek capital letter lambda","short":"cap lamda"}}},{category:"Lu",names:[],key:"039C",mappings:{"default":{"default":"greek capital letter mu",
-"short":"cap mu"}}},{category:"Lu",names:[],key:"039D",mappings:{"default":{"default":"greek capital letter nu","short":"cap nu"}}},{category:"Lu",names:[],key:"039E",mappings:{"default":{"default":"greek capital letter xi","short":"cap xi"}}},{category:"Lu",names:[],key:"039F",mappings:{"default":{"default":"greek capital letter omicron","short":"cap omicron"}}},{category:"Lu",names:[],key:"03A0",mappings:{"default":{"default":"greek capital letter pi","short":"cap pi"}}},{category:"Lu",names:[],
-key:"03A1",mappings:{"default":{"default":"greek capital letter rho","short":"cap rho"}}},{category:"Lu",names:[],key:"03A3",mappings:{"default":{"default":"greek capital letter sigma","short":"cap sigma"}}},{category:"Lu",names:[],key:"03A4",mappings:{"default":{"default":"greek capital letter tau","short":"cap tau"}}},{category:"Lu",names:[],key:"03A5",mappings:{"default":{"default":"greek capital letter upsilon","short":"cap upsilon"}}},{category:"Lu",names:[],key:"03A6",mappings:{"default":{"default":"greek capital letter phi",
-"short":"cap phi"}}},{category:"Lu",names:[],key:"03A7",mappings:{"default":{"default":"greek capital letter chi","short":"cap chi"}}},{category:"Lu",names:[],key:"03A8",mappings:{"default":{"default":"greek capital letter psi","short":"cap psi"}}},{category:"Lu",names:[],key:"03A9",mappings:{"default":{"default":"greek capital letter omega","short":"cap omega"}}},{category:"Lu",mappings:{"default":{"default":"greek capital theta symbol","short":"cap theta"}},key:"03F4"},{category:"Ps",mappings:{"default":{"default":"left parenthesis",
-alternative:"opening parenthesis"}},key:"0028"},{category:"Pe",mappings:{"default":{"default":"right parenthesis",alternative:"closing parenthesis"}},key:"0029"},{category:"Ps",mappings:{"default":{"default":"left square bracket",alternative:"opening square bracket"}},key:"005B"},{category:"Pe",mappings:{"default":{"default":"right square bracket",alternative:"closing square bracket"}},key:"005D"},{category:"Ps",mappings:{"default":{"default":"left curly bracket",alternative:"opening curly bracket"}},
-key:"007B"},{category:"Pe",mappings:{"default":{"default":"right curly bracket",alternative:"closing curly bracket"}},key:"007D"},{category:"Ps",mappings:{"default":{"default":"left square bracket with quill"}},key:"2045"},{category:"Pe",mappings:{"default":{"default":"right square bracket with quill"}},key:"2046"},{category:"Sm",mappings:{"default":{"default":"left ceiling"}},key:"2308"},{category:"Sm",mappings:{"default":{"default":"right ceiling"}},key:"2309"},{category:"Sm",mappings:{"default":{"default":"left floor"}},
-key:"230A"},{category:"Sm",mappings:{"default":{"default":"right floor"}},key:"230B"},{category:"So",mappings:{"default":{"default":"bottom right crop"}},key:"230C"},{category:"So",mappings:{"default":{"default":"bottom left crop"}},key:"230D"},{category:"So",mappings:{"default":{"default":"top right crop"}},key:"230E"},{category:"So",mappings:{"default":{"default":"top left crop"}},key:"230F"},{category:"So",mappings:{"default":{"default":"top left corner"}},key:"231C"},{category:"So",mappings:{"default":{"default":"top right corner"}},
-key:"231D"},{category:"So",mappings:{"default":{"default":"bottom left corner"}},key:"231E"},{category:"So",mappings:{"default":{"default":"bottom right corner"}},key:"231F"},{category:"Sm",mappings:{"default":{"default":"top half integral"}},key:"2320"},{category:"Sm",mappings:{"default":{"default":"bottom half integral"}},key:"2321"},{category:"Ps",mappings:{"default":{"default":"left pointing angle bracket",alternative:"bra"}},key:"2329"},{category:"Pe",mappings:{"default":{"default":"right pointing angle bracket",
-alternative:"ket"}},key:"232A"},{category:"Sm",mappings:{"default":{"default":"left parenthesis upper hook"}},key:"239B"},{category:"Sm",mappings:{"default":{"default":"left parenthesis extension"}},key:"239C"},{category:"Sm",mappings:{"default":{"default":"left parenthesis lower hook"}},key:"239D"},{category:"Sm",mappings:{"default":{"default":"right parenthesis upper hook"}},key:"239E"},{category:"Sm",mappings:{"default":{"default":"right parenthesis extension"}},key:"239F"},{category:"Sm",mappings:{"default":{"default":"right parenthesis lower hook"}},
-key:"23A0"},{category:"Sm",mappings:{"default":{"default":"left square bracket upper corner"}},key:"23A1"},{category:"Sm",mappings:{"default":{"default":"left square bracket extension"}},key:"23A2"},{category:"Sm",mappings:{"default":{"default":"left square bracket lower corner"}},key:"23A3"},{category:"Sm",mappings:{"default":{"default":"right square bracket upper corner"}},key:"23A4"},{category:"Sm",mappings:{"default":{"default":"right square bracket extension"}},key:"23A5"},{category:"Sm",mappings:{"default":{"default":"right square bracket lower corner"}},
-key:"23A6"},{category:"Sm",mappings:{"default":{"default":"left curly bracket upper hook"}},key:"23A7"},{category:"Sm",mappings:{"default":{"default":"left curly bracket middle piece"}},key:"23A8"},{category:"Sm",mappings:{"default":{"default":"left curly bracket lower hook"}},key:"23A9"},{category:"Sm",mappings:{"default":{"default":"curly bracket extension"}},key:"23AA"},{category:"Sm",mappings:{"default":{"default":"right curly bracket upper hook"}},key:"23AB"},{category:"Sm",mappings:{"default":{"default":"right curly bracket middle piece"}},
-key:"23AC"},{category:"Sm",mappings:{"default":{"default":"right curly bracket lower hook"}},key:"23AD"},{category:"Sm",mappings:{"default":{"default":"integral extension"}},key:"23AE"},{category:"Sm",mappings:{"default":{"default":"horizontal line extension"}},key:"23AF"},{category:"Sm",mappings:{"default":{"default":"upper left or lower right curly bracket section"}},key:"23B0"},{category:"Sm",mappings:{"default":{"default":"upper right or lower left curly bracket section"}},key:"23B1"},{category:"Sm",
-mappings:{"default":{"default":"summation top"}},key:"23B2"},{category:"Sm",mappings:{"default":{"default":"summation bottom"}},key:"23B3"},{category:"So",mappings:{"default":{"default":"top square bracket"}},key:"23B4"},{category:"So",mappings:{"default":{"default":"bottom square bracket"}},key:"23B5"},{category:"So",mappings:{"default":{"default":"bottom square bracket over top square bracket"}},key:"23B6"},{category:"So",mappings:{"default":{"default":"radical symbol bottom"}},key:"23B7"},{category:"So",
-mappings:{"default":{"default":"left vertical box line"}},key:"23B8"},{category:"So",mappings:{"default":{"default":"right vertical box line"}},key:"23B9"},{category:"Sm",mappings:{"default":{"default":"top parenthesis"}},key:"23DC"},{category:"Sm",mappings:{"default":{"default":"bottom parenthesis"}},key:"23DD"},{category:"Sm",mappings:{"default":{"default":"top curly bracket"}},key:"23DE"},{category:"Sm",mappings:{"default":{"default":"bottom curly bracket"}},key:"23DF"},{category:"Sm",mappings:{"default":{"default":"top tortoise shell bracket"}},
-key:"23E0"},{category:"Sm",mappings:{"default":{"default":"bottom tortoise shell bracket"}},key:"23E1"},{category:"Ps",mappings:{"default":{"default":"medium left parenthesis ornament"}},key:"2768"},{category:"Pe",mappings:{"default":{"default":"medium right parenthesis ornament"}},key:"2769"},{category:"Ps",mappings:{"default":{"default":"medium flattened left parenthesis ornament"}},key:"276A"},{category:"Pe",mappings:{"default":{"default":"medium flattened right parenthesis ornament"}},key:"276B"},
-{category:"Ps",mappings:{"default":{"default":"medium left pointing angle bracket ornament"}},key:"276C"},{category:"Pe",mappings:{"default":{"default":"medium right pointing angle bracket ornament"}},key:"276D"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle quotation mark ornament"}},key:"276E"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle quotation mark ornament"}},key:"276F"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle bracket ornament"}},
-key:"2770"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle bracket ornament"}},key:"2771"},{category:"Ps",mappings:{"default":{"default":"light left tortoise shell bracket ornament"}},key:"2772"},{category:"Pe",mappings:{"default":{"default":"light right tortoise shell bracket ornament"}},key:"2773"},{category:"Ps",mappings:{"default":{"default":"medium left curly bracket ornament"}},key:"2774"},{category:"Pe",mappings:{"default":{"default":"medium right curly bracket ornament"}},
-key:"2775"},{category:"Ps",mappings:{"default":{"default":"left s shaped bag delimiter"}},key:"27C5"},{category:"Pe",mappings:{"default":{"default":"right s shaped bag delimiter"}},key:"27C6"},{category:"Ps",mappings:{"default":{"default":"mathematical left white square bracket"}},key:"27E6"},{category:"Pe",mappings:{"default":{"default":"mathematical right white square bracket"}},key:"27E7"},{category:"Ps",mappings:{"default":{"default":"mathematical left angle bracket"}},key:"27E8"},{category:"Pe",
-mappings:{"default":{"default":"mathematical right angle bracket"}},key:"27E9"},{category:"Ps",mappings:{"default":{"default":"mathematical left double angle bracket"}},key:"27EA"},{category:"Pe",mappings:{"default":{"default":"mathematical right double angle bracket"}},key:"27EB"},{category:"Ps",mappings:{"default":{"default":"mathematical left white tortoise shell bracket"}},key:"27EC"},{category:"Pe",mappings:{"default":{"default":"mathematical right white tortoise shell bracket"}},key:"27ED"},
-{category:"Ps",mappings:{"default":{"default":"mathematical left flattened parenthesis"}},key:"27EE"},{category:"Pe",mappings:{"default":{"default":"mathematical right flattened parenthesis"}},key:"27EF"},{category:"Ps",mappings:{"default":{"default":"left white curly bracket"}},key:"2983"},{category:"Pe",mappings:{"default":{"default":"right white curly bracket"}},key:"2984"},{category:"Ps",mappings:{"default":{"default":"left white parenthesis"}},key:"2985"},{category:"Pe",mappings:{"default":{"default":"right white parenthesis"}},
-key:"2986"},{category:"Ps",mappings:{"default":{"default":"z notation left image bracket"}},key:"2987"},{category:"Pe",mappings:{"default":{"default":"z notation right image bracket"}},key:"2988"},{category:"Ps",mappings:{"default":{"default":"z notation left binding bracket"}},key:"2989"},{category:"Pe",mappings:{"default":{"default":"z notation right binding bracket"}},key:"298A"},{category:"Ps",mappings:{"default":{"default":"left square bracket with underbar"}},key:"298B"},{category:"Pe",mappings:{"default":{"default":"right square bracket with underbar"}},
-key:"298C"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in top corner"}},key:"298D"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in bottom corner"}},key:"298E"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in bottom corner"}},key:"298F"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in top corner"}},key:"2990"},{category:"Ps",mappings:{"default":{"default":"left angle bracket with dot"}},
-key:"2991"},{category:"Pe",mappings:{"default":{"default":"right angle bracket with dot"}},key:"2992"},{category:"Ps",mappings:{"default":{"default":"left arc less than bracket"}},key:"2993"},{category:"Pe",mappings:{"default":{"default":"right arc greater than bracket"}},key:"2994"},{category:"Ps",mappings:{"default":{"default":"double left arc greater than bracket"}},key:"2995"},{category:"Pe",mappings:{"default":{"default":"double right arc less than bracket"}},key:"2996"},{category:"Ps",mappings:{"default":{"default":"left black tortoise shell bracket"}},
-key:"2997"},{category:"Pe",mappings:{"default":{"default":"right black tortoise shell bracket"}},key:"2998"},{category:"Ps",mappings:{"default":{"default":"left wiggly fence"}},key:"29D8"},{category:"Pe",mappings:{"default":{"default":"right wiggly fence"}},key:"29D9"},{category:"Ps",mappings:{"default":{"default":"left double wiggly fence"}},key:"29DA"},{category:"Pe",mappings:{"default":{"default":"right double wiggly fence"}},key:"29DB"},{category:"Ps",mappings:{"default":{"default":"left pointing curved angle bracket"}},
-key:"29FC"},{category:"Pe",mappings:{"default":{"default":"right pointing curved angle bracket"}},key:"29FD"},{category:"Ps",mappings:{"default":{"default":"top left half bracket"}},key:"2E22"},{category:"Pe",mappings:{"default":{"default":"top right half bracket"}},key:"2E23"},{category:"Ps",mappings:{"default":{"default":"bottom left half bracket"}},key:"2E24"},{category:"Pe",mappings:{"default":{"default":"bottom right half bracket"}},key:"2E25"},{category:"Ps",mappings:{"default":{"default":"left sideways u bracket"}},
-key:"2E26"},{category:"Pe",mappings:{"default":{"default":"right sideways u bracket"}},key:"2E27"},{category:"Ps",mappings:{"default":{"default":"left double parenthesis"}},key:"2E28"},{category:"Pe",mappings:{"default":{"default":"right double parenthesis"}},key:"2E29"},{category:"Ps",mappings:{"default":{"default":"left angle bracket",alternative:"opening angle bracket"}},key:"3008"},{category:"Pe",mappings:{"default":{"default":"right angle bracket",alternative:"closing angle bracket"}},key:"3009"},
-{category:"Ps",mappings:{"default":{"default":"left double angle bracket",alternative:"opening double angle bracket"}},key:"300A"},{category:"Pe",mappings:{"default":{"default":"right double angle bracket",alternative:"closing double angle bracket"}},key:"300B"},{category:"Ps",mappings:{"default":{"default":"left corner bracket",alternative:"opening corner bracket"}},key:"300C"},{category:"Pe",mappings:{"default":{"default":"right corner bracket",alternative:"closing corner bracket"}},key:"300D"},
-{category:"Ps",mappings:{"default":{"default":"left white corner bracket",alternative:"opening white corner bracket"}},key:"300E"},{category:"Pe",mappings:{"default":{"default":"right white corner bracket",alternative:"closing white corner bracket"}},key:"300F"},{category:"Ps",mappings:{"default":{"default":"left black lenticular bracket",alternative:"opening black lenticular bracket"}},key:"3010"},{category:"Pe",mappings:{"default":{"default":"right black lenticular bracket",alternative:"closing black lenticular bracket"}},
-key:"3011"},{category:"Ps",mappings:{"default":{"default":"left tortoise shell bracket",alternative:"opening tortoise shell bracket"}},key:"3014"},{category:"Pe",mappings:{"default":{"default":"right tortoise shell bracket",alternative:"closing tortoise shell bracket"}},key:"3015"},{category:"Ps",mappings:{"default":{"default":"left white lenticular bracket",alternative:"opening white lenticular bracket"}},key:"3016"},{category:"Pe",mappings:{"default":{"default":"right white lenticular bracket",
-alternative:"closing white lenticular bracket"}},key:"3017"},{category:"Ps",mappings:{"default":{"default":"left white tortoise shell bracket",alternative:"opening white tortoise shell bracket"}},key:"3018"},{category:"Pe",mappings:{"default":{"default":"right white tortoise shell bracket",alternative:"closing white tortoise shell bracket"}},key:"3019"},{category:"Ps",mappings:{"default":{"default":"left white square bracket",alternative:"opening white square bracket"}},key:"301A"},{category:"Pe",
-mappings:{"default":{"default":"right white square bracket",alternative:"closing white square bracket"}},key:"301B"},{category:"Ps",mappings:{"default":{"default":"reversed double prime quotation mark"}},key:"301D"},{category:"Pe",mappings:{"default":{"default":"double prime quotation mark"}},key:"301E"},{category:"Pe",mappings:{"default":{"default":"low double prime quotation mark"}},key:"301F"},{category:"Ps",mappings:{"default":{"default":"ornate left parenthesis"}},key:"FD3E"},{category:"Pe",
-mappings:{"default":{"default":"ornate right parenthesis"}},key:"FD3F"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white lenticular bracket"}},key:"FE17"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white lenticular bracket"}},key:"FE18"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left parenthesis",alternative:"glyph for vertical opening parenthesis"}},key:"FE35"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right parenthesis",
-alternative:"glyph for vertical closing parenthesis"}},key:"FE36"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left curly bracket",alternative:"glyph for vertical opening curly bracket"}},key:"FE37"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right curly bracket",alternative:"glyph for vertical closing curly bracket"}},key:"FE38"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left tortoise shell bracket",
-alternative:"glyph for vertical opening tortoise shell bracket"}},key:"FE39"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right tortoise shell bracket",alternative:"glyph for vertical closing tortoise shell bracket"}},key:"FE3A"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left black lenticular bracket",alternative:"glyph for vertical opening black lenticular bracket"}},key:"FE3B"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right black lenticular bracket",
-alternative:"glyph for vertical closing black lenticular bracket"}},key:"FE3C"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left double angle bracket",alternative:"glyph for vertical opening double angle bracket"}},key:"FE3D"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right double angle bracket",alternative:"glyph for vertical closing double angle bracket"}},key:"FE3E"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left angle bracket",
-alternative:"glyph for vertical opening angle bracket"}},key:"FE3F"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right angle bracket",alternative:"glyph for vertical closing angle bracket"}},key:"FE40"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left corner bracket",alternative:"glyph for vertical opening corner bracket"}},key:"FE41"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right corner bracket",
-alternative:"glyph for vertical closing corner bracket"}},key:"FE42"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white corner bracket",alternative:"glyph for vertical opening white corner bracket"}},key:"FE43"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white corner bracket",alternative:"glyph for vertical closing white corner bracket"}},key:"FE44"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left square bracket"}},
-key:"FE47"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right square bracket"}},key:"FE48"},{category:"Ps",mappings:{"default":{"default":"small left parenthesis",alternative:"small opening parenthesis"}},key:"FE59"},{category:"Pe",mappings:{"default":{"default":"small right parenthesis",alternative:"small closing parenthesis"}},key:"FE5A"},{category:"Ps",mappings:{"default":{"default":"small left curly bracket",alternative:"small opening curly bracket"}},key:"FE5B"},
-{category:"Pe",mappings:{"default":{"default":"small right curly bracket",alternative:"small closing curly bracket"}},key:"FE5C"},{category:"Ps",mappings:{"default":{"default":"small left tortoise shell bracket",alternative:"small opening tortoise shell bracket"}},key:"FE5D"},{category:"Pe",mappings:{"default":{"default":"small right tortoise shell bracket",alternative:"small closing tortoise shell bracket"}},key:"FE5E"},{category:"Ps",mappings:{"default":{"default":"fullwidth left parenthesis",alternative:"fullwidth opening parenthesis"}},
-key:"FF08"},{category:"Pe",mappings:{"default":{"default":"fullwidth right parenthesis",alternative:"fullwidth closing parenthesis"}},key:"FF09"},{category:"Ps",mappings:{"default":{"default":"fullwidth left square bracket",alternative:"fullwidth opening square bracket"}},key:"FF3B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right square bracket",alternative:"fullwidth closing square bracket"}},key:"FF3D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left curly bracket",
-alternative:"fullwidth opening curly bracket"}},key:"FF5B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right curly bracket",alternative:"fullwidth closing curly bracket"}},key:"FF5D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left white parenthesis"}},key:"FF5F"},{category:"Pe",mappings:{"default":{"default":"fullwidth right white parenthesis"}},key:"FF60"},{category:"Ps",mappings:{"default":{"default":"halfwidth left corner bracket",alternative:"halfwidth opening corner bracket"}},
-key:"FF62"},{category:"Pe",mappings:{"default":{"default":"halfwidth right corner bracket",alternative:"halfwidth closing corner bracket"}},key:"FF63"}];
-cvox.AndroidMathMap.FUNCTION_MAPPINGS_=[{category:"Elementary",mappings:{"default":{"default":"logarithm",alternative:"logarithm function","short":"log"}},key:"log",names:["log"]},{category:"Elementary",mappings:{"default":{"default":"natural logarithm",alternative:"natural logarithm function","short":"natural log"}},key:"ln",names:["ln"]},{category:"Elementary",mappings:{"default":{"default":"logarithm base 10","short":"log base 10"}},key:"lg",names:["lg"]},{category:"Elementary",mappings:{"default":{"default":"exponential",
-alternative:"exponential function","short":"exp"}},key:"exp",names:["exp","expt"]},{category:"Elementary",mappings:{"default":{"default":"greatest common divisor","short":"gcd"}},key:"gcd",names:["gcd"]},{category:"Elementary",mappings:{"default":{"default":"least common multiple","short":"lcm"}},key:"gcd",names:["gcd"]},{category:"Complex",mappings:{"default":{"default":"argument","short":"arg"}},key:"arg",names:["arg"]},{category:"Complex",mappings:{"default":{"default":"imaginary part","short":"imaginary"}},
-key:"im",names:["im"]},{category:"Complex",mappings:{"default":{"default":"real part","short":"real"}},key:"re",names:["re"]},{category:"Limits",mappings:{"default":{"default":"infimum","short":"inf"}},key:"inf",names:["inf"]},{category:"Limits",mappings:{"default":{"default":"limit","short":"lim"}},key:"lim",names:["lim"]},{category:"Limits",mappings:{"default":{"default":"infimum default",alternative:"inferior limit","short":"liminf"}},key:"liminf",names:["lim inf"]},{category:"Limits",mappings:{"default":{"default":"supremum limit",
-alternative:"superior limit","short":"limsup"}},key:"limsup",names:["lim sup"]},{category:"Limits",mappings:{"default":{"default":"maximum","short":"max"}},key:"max",names:["max"]},{category:"Limits",mappings:{"default":{"default":"minimum","short":"min"}},key:"min",names:["min"]},{category:"Limits",mappings:{"default":{"default":"supremum","short":"sup"}},key:"sup",names:["sup"]},{category:"Limits",mappings:{"default":{"default":"injective limit",alternative:"direct limit","short":"colimit"}},key:"injlim",
-names:["injlim","inj lim"]},{category:"Limits",mappings:{"default":{"default":"projective limit",alternative:"inverse limit","short":"limit"}},key:"projlim",names:["projlim","proj lim"]},{category:"Elementary",mappings:{"default":{"default":"modulo","short":"mod"}},key:"mod",names:["mod"]},{category:"Probability",mappings:{"default":{"default":"probability"}},key:"Pr",names:["Pr"]},{category:"Trigonometric",mappings:{"default":{"default":"cosine function","short":"cosine"}},key:"cos",names:["cos",
-"cosine"]},{category:"Trigonometric",mappings:{"default":{"default":"cotangent function","short":"cotangent"}},key:"cot",names:["cot"]},{category:"Trigonometric",mappings:{"default":{"default":"cosecant function","short":"cosecant"}},key:"csc",names:["csc"]},{category:"Trigonometric",mappings:{"default":{"default":"secant function","short":"secant"}},key:"sec",names:["sec"]},{category:"Trigonometric",mappings:{"default":{"default":"sine function",alternative:"sine function","short":"sine"}},key:"sin",
-names:["sin","sine"]},{category:"Trigonometric",mappings:{"default":{"default":"tangent function","short":"tangent"}},key:"tan",names:["tan"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cosine function",alternative:"arc cosine function","short":"arc cosine"}},key:"arccos",names:["arccos"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cotangent function",alternative:"arc cotangent function","short":"arc cotangent"}},key:"arccot",names:["arccot"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse cosecant function",alternative:"arc cosecant function","short":"arc cosecant"}},key:"arccsc",names:["arccsc"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse secant function",alternative:"arc secant function","short":"arc secant"}},key:"arcsec",names:["arcsec"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse sine function",alternative:"arc sine function","short":"arc sine"}},key:"arcsin",names:["arcsin"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse tangent function",alternative:"arc tangent function","short":"arc tangent"}},key:"arctan",names:["arctan"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosine function","short":"hyperbolic cosine"}},key:"cosh",names:["cosh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cotangent function","short":"hyperbolic cotangent"}},key:"coth",names:["coth"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosecant function",
-"short":"hyperbolic cosecant"}},key:"csch",names:["csch"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic secant function","short":"hyperbolic secant"}},key:"sech",names:["sech"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic sine function","short":"hyperbolic sine"}},key:"sinh",names:["sinh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic tangent function","short":"hyperbolic tangent"}},key:"tanh",names:["tanh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosine function",
-alternative:"area hyperbolic cosine function","short":"area hyperbolic cosine"}},key:"arcosh",names:["arcosh","arccosh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cotangent function",alternative:"area hyperbolic cotangent function","short":"area hyperbolic cotangent"}},key:"arcoth",names:["arcoth","arccoth"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosecant function",alternative:"area hyperbolic cosecant function","short":"area hyperbolic cosecant"}},
-key:"arcsch",names:["arcsch","arccsch"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic secant function",alternative:"area hyperbolic secant function","short":"area hyperbolic secant"}},key:"arsech",names:["arsech","arcsech"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic sine function",alternative:"area hyperbolic sine function","short":"area hyperbolic sine"}},key:"arsinh",names:["arsinh","arcsinh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic tangent function",
-alternative:"area hyperbolic tangent function","short":"area hyperbolic tangent"}},key:"artanh",names:["artanh","arctanh"]},{category:"Algebra",mappings:{"default":{"default":"degree"}},key:"deg",names:["deg"]},{category:"Algebra",mappings:{"default":{"default":"determinant","short":"det"}},key:"det",names:["det"]},{category:"Algebra",mappings:{"default":{"default":"dimension"}},key:"dim",names:["dim"]},{category:"Algebra",mappings:{"default":{"default":"homomorphism","short":"hom"}},key:"hom",names:["hom",
-"Hom"]},{category:"Algebra",mappings:{"default":{"default":"kernel"}},key:"ker",names:["ker"]},{category:"Algebra",mappings:{"default":{"default":"trace"}},key:"Tr",names:["Tr","tr"]}];cvox.AndroidVox=function(){cvox.ChromeVox.navigationManager.ignoreIframesNoMatterWhat()};goog.exportSymbol("cvox.AndroidVox",cvox.AndroidVox);
-cvox.AndroidVox.performAction=function(a){var b=JSON.parse(a);a=b.action;var c=b.granularity,b=b.element,d=cvox.SearchWidget.getInstance().isActive();16==c&&512==a&&(cvox.ChromeVox.navigationManager.setReversed(!1),cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.navigationManager.updateIndicator());if(16==c)return cvox.ChromeVoxUserCommands.commands.readFromHere(),!0;cvox.ChromeVoxUserCommands.commands.stopSpeech();if(256==a||512==a)d||cvox.ChromeVoxEventWatcher.setUpTextHandler();
-var e=cvox.ChromeVoxEventWatcher.currentTextHandler;e||document.activeElement==document.body||console.log("no text handler, but there is an active element",document.activeElement);if(e&&1==c){if(256==a)return e.moveCursorToNextCharacter();if(512==a)return e.moveCursorToPreviousCharacter()}else if(e&&2==c){if(256==a)return e.moveCursorToNextWord();if(512==a)return e.moveCursorToPreviousWord()}else if(e&&8==c){if(256==a)return e.moveCursorToNextParagraph();if(512==a)return e.moveCursorToPreviousParagraph()}else if(e&&
-4==c){var f=!1;256==a?f=e.moveCursorToNextLine():512==a&&(f=e.moveCursorToPreviousLine());if(f)return!0}switch(c){case -1:return cvox.ChromeVox.navigationManager.finishNavCommand(""),!0;case -2:return cvox.ChromeVoxUserCommands.commands.readCurrentTitle(),!0;case -3:return!0;case -4:return 512==a?cvox.ChromeVoxUserCommands.commands.exitShifter():cvox.ChromeVoxUserCommands.commands.enterShifter(),!0;case -5:return cvox.SearchWidget.getInstance().toggle(),!0}if(-275999999<=c&&-275E6>=c){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),
-cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);a=cvox.ChromeVox.navigationManager.getBraille();b=-275E6-c;if(c=a.text.getSpan(b))a=b-a.text.getSpanStart(c),cvox.AndroidVox.performClickAction(c,a);return!0}if(0>c)return!1;e=[];e[8]=cvox.NavigationShifter.GRANULARITIES.GROUP;e[4]=cvox.NavigationShifter.GRANULARITIES.LINE;e[2]=cvox.NavigationShifter.GRANULARITIES.WORD;e[1]=cvox.NavigationShifter.GRANULARITIES.CHARACTER;d||(c=c?e[c]:cvox.NavigationShifter.GRANULARITIES.OBJECT,
-cvox.ChromeVox.navigationManager.setGranularity(c));c=!1;switch(a){case 16:if(d)break;cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);(c=cvox.ChromeVox.navigationManager.getCurrentNode())&&cvox.AndroidVox.performClickAction(c);c=!0;break;case 1024:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.nextSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.nextList();break;case "CONTROL":c=
-!cvox.ChromeVoxUserCommands.commands.nextControl()}if(c)break;case 256:d?(cvox.SearchWidget.getInstance().nextResult(!1),c=!0):c=!cvox.ChromeVoxUserCommands.commands.forward();break;case 2048:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.previousSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.previousList();break;case "CONTROL":c=!cvox.ChromeVoxUserCommands.commands.previousControl()}if(c)break;case 512:d?(cvox.SearchWidget.getInstance().nextResult(!0),c=!0):c=
-!cvox.ChromeVoxUserCommands.commands.backward()}return c};goog.exportSymbol("cvox.AndroidVox.performAction",cvox.AndroidVox.performAction);
-cvox.AndroidVox.performClickAction=function(a,b){cvox.ChromeVox.navigationManager.getCurrentNode()!=a&&cvox.ApiImplementation.syncToNode(a,!1);cvox.Focuser.setFocus(a);var c=cvox.DomUtil.isInputTypeText(a)||a instanceof HTMLTextAreaElement;if(goog.isDef(b)&&c){var d=cvox.BrailleUtil.getTemplated(null,a),c=d.getSpanInstanceOf(cvox.BrailleUtil.ValueSpan),e=d.getSpanStart(c),d=d.getSpanEnd(c);e<=b&&b<=d&&(c=b-e+c.offset,a.selectionStart=a.selectionEnd=c,cvox.ChromeVoxEventWatcher.handleTextChanged(!0))}cvox.DomUtil.clickElem(a,
-!1,!0)};cvox.AndroidHost=function(){};goog.inherits(cvox.AndroidHost,cvox.AbstractHost);
-cvox.AndroidHost.prototype.init=function(){cvox.ChromeVox.version="AndroidVox";var a=cvox.AndroidKeyMap.getStringifiedKeyMap();cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable(a);cvox.ApiImplementation.siteSpecificScriptLoader="";cvox.ApiImplementation.siteSpecificScriptBase="";cvox.ApiImplementation.init();cvox.ChromeVox.earcons.earconsAvailable()&&(cvox.ChromeVox.verbosity=cvox.VERBOSITY_BRIEF);new cvox.AndroidMathMap;cvox.InitialSpeech.speak()};cvox.AndroidHost.prototype.reinit=function(){};
-cvox.AndroidHost.prototype.onPageLoad=function(){cvox.ChromeVoxEventWatcher.focusFollowsMouse=!0;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=0};cvox.AndroidHost.prototype.ttsLoaded=function(){return"undefined"!=typeof accessibility};cvox.AndroidHost.prototype.getApiSrc=function(){return""};cvox.AndroidHost.prototype.hasTtsCallback=function(){return!1};cvox.AndroidHost.prototype.mustRedispatchClickEvent=function(){return!0};
-cvox.AndroidHost.prototype.activateOrDeactivateChromeVox=function(a){cvox.ChromeVox.tts.stop();cvox.AndroidHost.superClass_.activateOrDeactivateChromeVox.call(this,a);this.onPageLoad()};goog.exportSymbol("cvox.AndroidHost.prototype.activateOrDeactivateChromeVox",cvox.AndroidHost.prototype.activateOrDeactivateChromeVox);cvox.HostFactory.hostConstructor=cvox.AndroidHost;window.cvox||(window.cvox={});cvox.MathJaxExternalUtil=function(){};cvox.MathJaxExternalUtil.mmlAttr=function(){return""};
-cvox.MathJaxExternalUtil.mfenced=function(a){null==a&&(a="");var b=[a+'<mrow mfenced="true"'+this.toMathMLattributes()+">"],c=a+" ";this.data.open&&b.push(this.data.open.toMathML(c));null!=this.data[0]&&b.push(this.data[0].toMathML(c));for(var d=1,e=this.data.length;d<e;d++)this.data[d]&&(this.data["sep"+d]&&b.push(this.data["sep"+d].toMathML(c)),b.push(this.data[d].toMathML(c)));this.data.close&&b.push(this.data.close.toMathML(c));b.push(a+"</mrow>");return b.join("\n")};
-cvox.MathJaxExternalUtil.getMathml=function(a,b){var c=MathJax.ElementJax.mml.mbase.prototype,d=MathJax.ElementJax.mml.mfenced.prototype;this.mmlAttr=c.toMathMLattributes;var e=d.toMathML;try{c.toMathMLattributes=cvox.MathJaxExternalUtil.mbase;d.toMathML=cvox.MathJaxExternalUtil.mfenced;var f=a.root.toMathML("");c.toMathMLattributes=this.mmlAttr;d.toMathML=e;MathJax.Callback(b)(f)}catch(g){c.toMathMLattributes=this.mmlAttr;d.toMathML=e;if(!g.restart)throw g;return MathJax.Callback.After([cvox.MathJaxExternalUtil.getMathml,
-a,b],g.restart)}};cvox.MathJaxExternalUtil.mbase=function(){var a=cvox.MathJaxExternalUtil.mmlAttr.call(this);if(null!=this.spanID)var b=(this.id||"MathJax-Span-"+this.spanID)+MathJax.OutputJax["HTML-CSS"].idPostfix,a=a+(' spanID="'+b+'"');null!=this.texClass&&(a+=' texClass="'+this.texClass+'"');return a};cvox.MathJaxExternalUtil.isActive=function(){return"undefined"!=typeof MathJax&&"undefined"!=typeof MathJax.Hub&&"undefined"!=typeof MathJax.ElementJax&&"undefined"!=typeof MathJax.InputJax};
-cvox.MathJaxExternalUtil.getMathjaxCallback_=function(a,b){cvox.MathJaxExternalUtil.getMathml(b,function(c){b.root.inputID&&a(c,b.root.inputID)})};cvox.MathJaxExternalUtil.registerSignal=function(a,b){MathJax.Hub.Register.MessageHook(b,function(b){b=MathJax.Hub.getJaxFor(b[1]);cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};cvox.MathJaxExternalUtil.getAllJax=function(a){var b=MathJax.Hub.getAllJax();b&&b.forEach(function(b){b.root.spanID&&cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};
-cvox.MathJaxExternalUtil.injectConfigScript=function(){var a=document.createElement("script");a.setAttribute("type","text/x-mathjax-config");a.textContent='MathJax.Hub.Config({\n jax: ["input/AsciiMath", "input/TeX"],\n extensions: ["toMathML.js"],\n skipStartupTypeset: true,\n messageStyle: "none",\n TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]}\n});\nMathJax.Hub.Queue(\n function() {MathJax.Hub.inputJax["math/asciimath"].Process();\n MathJax.Hub.inputJax["math/tex"].Process()}\n);\n//\n// Prevent these from being loaded\n//\nif (!MathJax.Extension.MathMenu) {MathJax.Extension.MathMenu = {}};\nif (!MathJax.Extension.MathZoom) {MathJax.Extension.MathZoom = {}};';
-document.activeElement.appendChild(a)};cvox.MathJaxExternalUtil.injectLoadScript=function(){var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src","http://cdn.mathjax.org/mathjax/latest/MathJax.js");document.activeElement.appendChild(a)};
-cvox.MathJaxExternalUtil.configMediaWiki=function(){mediaWiki&&MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions,{mathchar0mi:{thetasym:"03B8",koppa:"03DF",stigma:"03DB",varstigma:"03DB",coppa:"03D9",varcoppa:"03D9",sampi:"03E1",C:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],cnums:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Complex:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],H:["210D",{mathvariant:a.VARIANT.DOUBLESTRUCK}],
-N:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],natnums:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Q:["0051",{mathvariant:a.VARIANT.DOUBLESTRUCK}],R:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Z:["005A",{mathvariant:a.VARIANT.DOUBLESTRUCK}],sect:"00A7",P:"00B6",AA:["00C5",{mathvariant:a.VARIANT.NORMAL}],alef:["2135",{mathvariant:a.VARIANT.NORMAL}],alefsym:["2135",{mathvariant:a.VARIANT.NORMAL}],
-weierp:["2118",{mathvariant:a.VARIANT.NORMAL}],real:["211C",{mathvariant:a.VARIANT.NORMAL}],part:["2202",{mathvariant:a.VARIANT.NORMAL}],infin:["221E",{mathvariant:a.VARIANT.NORMAL}],empty:["2205",{mathvariant:a.VARIANT.NORMAL}],O:["2205",{mathvariant:a.VARIANT.NORMAL}],ang:["2220",{mathvariant:a.VARIANT.NORMAL}],exist:["2203",{mathvariant:a.VARIANT.NORMAL}],clubs:["2663",{mathvariant:a.VARIANT.NORMAL}],diamonds:["2662",{mathvariant:a.VARIANT.NORMAL}],hearts:["2661",{mathvariant:a.VARIANT.NORMAL}],
-spades:["2660",{mathvariant:a.VARIANT.NORMAL}],textvisiblespace:"2423",geneuro:"20AC",euro:"20AC"},mathchar0mo:{and:"2227",or:"2228",bull:"2219",plusmn:"00B1",sdot:"22C5",Dagger:"2021",sup:"2283",sub:"2282",supe:"2287",sube:"2286",isin:"2208",hAar:"21D4",hArr:"21D4",Harr:"21D4",Lrarr:"21D4",lrArr:"21D4",lArr:"21D0",Larr:"21D0",rArr:"21D2",Rarr:"21D2",harr:"2194",lrarr:"2194",larr:"2190",gets:"2190",rarr:"2192",oiint:["222F",{texClass:a.TEXCLASS.OP}],oiiint:["2230",{texClass:a.TEXCLASS.OP}]},mathchar7:{Alpha:"0391",
-Beta:"0392",Epsilon:"0395",Zeta:"0396",Eta:"0397",Iota:"0399",Kappa:"039A",Mu:"039C",Nu:"039D",Omicron:"039F",Rho:"03A1",Tau:"03A4",Chi:"03A7",Koppa:"03DE",Stigma:"03DA",Digamma:"03DC",Coppa:"03D8",Sampi:"03E0"},delimiter:{"\\uarr":"2191","\\darr":"2193","\\Uarr":"21D1","\\uArr":"21D1","\\Darr":"21D3","\\dArr":"21D3","\\rang":"27E9","\\lang":"27E8"},macros:{sgn:"NamedFn",arccot:"NamedFn",arcsec:"NamedFn",arccsc:"NamedFn",sen:"NamedFn",image:["Macro","\\Im"],bold:["Macro","\\mathbf{#1}",1],pagecolor:["Macro",
-"",1],emph:["Macro","\\textit{#1}",1],textsf:["Macro","\\mathord{\\sf{\\text{#1}}}",1],texttt:["Macro","\\mathord{\\tt{\\text{#1}}}",1],vline:["Macro","\\smash{\\large\\lvert}",0]}})})};
-cvox.MathJaxExternalUtil.convertToMml=function(a,b,c,d,e,f){var g=MathJax.HTML.Element("script",{type:c},[b]),g={math:b,script:g};MathJax.InputJax[d].prefilterHooks.Execute(g);var h;try{h=f(g.math)}catch(k){if(k[e])h=MathJax.ElementJax.mml.merror(k.message.replace(/\n.*/,""));else{if(k.restart)return MathJax.Callback.After([cvox.MathJaxExternalUtil.convertToMml,a,b,c,d,e,f],k.restart);throw k;}}h=h.inferred?MathJax.ElementJax.mml.apply(MathJax.ElementJax,h.data):MathJax.ElementJax.mml(h);h.root.display=
-"block";g.math=h;g.script.MathJax={};MathJax.InputJax[d].postfilterHooks.Execute(g);return cvox.MathJaxExternalUtil.getMathml(g.math,a)};cvox.MathJaxExternalUtil.texToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/tex;mode=display","TeX","texError",function(a){return MathJax.InputJax.TeX.Parse(a).mml()})};cvox.MathJaxExternalUtil.asciiMathToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/asciimath","AsciiMath","asciimathError",MathJax.InputJax.AsciiMath.AM.parseMath)};cvox.AndroidMathJax=function(){this.altMathNodeId_=0};goog.inherits(cvox.AndroidMathJax,cvox.AbstractMathJax);cvox.AndroidMathJax.prototype.getMathmlToDomCallback_=function(a){return goog.bind(function(b,c){return this.convertMarkupToDom(a,b,c)},this)};cvox.AndroidMathJax.prototype.isMathjaxActive=function(a){var b=0,c=function(){b++;cvox.MathJaxExternalUtil.isActive()?a(!0):5>b&&setTimeout(c,1E3)};c()};cvox.AndroidMathJax.prototype.getAllJax=function(a){cvox.MathJaxExternalUtil.getAllJax(this.getMathmlToDomCallback_(a))};
-cvox.AndroidMathJax.prototype.registerSignal=function(a,b){cvox.MathJaxExternalUtil.registerSignal(this.getMathmlToDomCallback_(a),b)};cvox.AndroidMathJax.prototype.injectScripts=function(){cvox.MathJaxExternalUtil.injectConfigScript();cvox.MathJaxExternalUtil.injectLoadScript()};cvox.AndroidMathJax.prototype.configMediaWiki=function(){cvox.MathJaxExternalUtil.configMediaWiki()};
-cvox.AndroidMathJax.prototype.getTex=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.texToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};cvox.AndroidMathJax.prototype.getAsciiMath=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.asciiMathToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};
-cvox.HostFactory.mathJaxConstructor=cvox.AndroidMathJax;cvox.AndroidTts=function(){cvox.AbstractTts.call(this);this.ttsProperties.rate=0.5;this.ttsProperties.pitch=0.5;this.ttsProperties.volume=1};goog.inherits(cvox.AndroidTts,cvox.AbstractTts);cvox.AndroidTts.prototype.speak=function(a,b,c){cvox.AndroidTts.superClass_.speak.call(this,a,b,c);c=this.mergeProperties(c);accessibility.speak(a,b,c);return this};cvox.AndroidTts.prototype.isSpeaking=function(){cvox.AndroidTts.superClass_.isSpeaking.call(this);return accessibility.isSpeaking()};
-cvox.AndroidTts.prototype.stop=function(){cvox.AndroidTts.superClass_.stop.call(this);accessibility.stop()};cvox.HostFactory.ttsConstructor=cvox.AndroidTts;cvox.TestMessages={locale:{message:"en"},chromevox_name:{message:"ChromeVox"},chromevox_description:{message:"ChromeVox - Giving Voice to Chrome"},chromevox_stop_speech_key:{message:"Stop speech"},chromevox_toggle_sticky_mode:{message:"Enable/Disable sticky mode"},chromevox_prefix_key:{message:"Prefix key"},chromevox_handle_tab_next:{message:"Jump to next focusable item"},chromevox_handle_tab_prev:{message:"Jump to previous focusable item"},chromevox_backward:{message:"Navigate backward"},chromevox_forward:{message:"Navigate forward"},
-chromevox_left:{message:"Move left"},chromevox_right:{message:"Move right"},chromevox_skip_backward:{message:"Skip backward during continuous reading"},chromevox_skip_forward:{message:"Skip forward during continuous reading"},chromevox_previous_granularity:{message:"Decrease navigation granularity"},chromevox_next_granularity:{message:"Increase navigation granularity"},chromevox_act_on_current_item:{message:"Take action on current item"},chromevox_force_click_on_current_item:{message:"Click on current item"},
-chromevox_read_link_url:{message:"Announce the URL behind a link"},chromevox_read_current_title:{message:"Announce the title of the current page"},chromevox_read_current_url:{message:"Announce the URL of the current page"},chromevox_read_from_here:{message:"Start reading from current location"},chromevox_show_power_key:{message:"Open ChromeVox keyboard help"},chromevox_hide_power_key:{message:"Hide ChromeVox help"},chromevox_power_key_help:{message:"Press up or down to review commands, press enter to activate"},
-chromevox_help:{message:"Open ChromeVox tutorial"},chromevox_toggle_search_widget:{message:"Toggle search widget"},chromevox_show_options_page:{message:"Open options page"},chromevox_show_kb_explorer_page:{message:"Open keyboard explorer"},chromevox_decrease_tts_rate:{message:"Decrease rate of speech"},chromevox_increase_tts_rate:{message:"Increase rate of speech"},chromevox_decrease_tts_pitch:{message:"Decrease pitch"},chromevox_increase_tts_pitch:{message:"Increase pitch"},chromevox_decrease_tts_volume:{message:"Decrease speech volume"},
-chromevox_increase_tts_volume:{message:"Increase speech volume"},chromevox_show_forms_list:{message:"Show forms list"},chromevox_show_headings_list:{message:"Show headings list"},chromevox_show_links_list:{message:"Show links list"},chromevox_show_tables_list:{message:"Show tables list"},chromevox_show_landmarks_list:{message:"Show landmarks list"},chromevox_previous_row:{message:"Previous table row"},chromevox_next_row:{message:"Next table row"},chromevox_previous_col:{message:"Previous table column"},
-chromevox_next_col:{message:"Next table column"},chromevox_announce_headers:{message:"Announce the headers of the current cell"},chromevox_speak_table_location:{message:"Announce current cell coordinates"},chromevox_guess_row_header:{message:"Make a guess at the row header of the current cell"},chromevox_guess_col_header:{message:"Make a guess at the column header of the current cell"},chromevox_skip_to_beginning:{message:"Go to beginning of table"},chromevox_skip_to_end:{message:"Go to end of table"},
-chromevox_skip_to_row_beginning:{message:"Go to beginning of the current row"},chromevox_skip_to_row_end:{message:"Go to end of the current row"},chromevox_skip_to_col_beginning:{message:"Go to beginning of the current column"},chromevox_skip_to_col_end:{message:"Go to end of the current column"},chromevox_next_heading1:{message:"Next level 1 heading"},chromevox_previous_heading1:{message:"Previous level 1 heading"},chromevox_next_heading2:{message:"Next level 2 heading"},chromevox_previous_heading2:{message:"Previous level 2 heading"},
-chromevox_next_heading3:{message:"Next level 3 heading"},chromevox_previous_heading3:{message:"Previous level 3 heading"},chromevox_next_heading4:{message:"Next level 4 heading"},chromevox_previous_heading4:{message:"Previous level 4 heading"},chromevox_next_heading5:{message:"Next level 5 heading"},chromevox_previous_heading5:{message:"Previous level 5 heading"},chromevox_next_heading6:{message:"Next level 6 heading"},chromevox_previous_heading6:{message:"Previous level 6 heading"},chromevox_next_combo_box:{message:"Next combo box"},
-chromevox_previous_combo_box:{message:"Previous combo box"},chromevox_next_edit_text:{message:"Next editable text area"},chromevox_previous_edit_text:{message:"Previous editable text area"},chromevox_next_form_field:{message:"Next form field"},chromevox_previous_form_field:{message:"Previous form field"},chromevox_next_graphic:{message:"Next graphic"},chromevox_previous_graphic:{message:"Previous graphic"},chromevox_next_heading:{message:"Next heading"},chromevox_previous_heading:{message:"Previous heading"},
-chromevox_next_list_item:{message:"Next list item"},chromevox_previous_list_item:{message:"Previous list item"},chromevox_next_jump:{message:"Next jump"},chromevox_previous_jump:{message:"Previous jump"},chromevox_next_link:{message:"Next link"},chromevox_previous_link:{message:"Previous link"},chromevox_next_list:{message:"Next list"},chromevox_previous_list:{message:"Previous list"},chromevox_next_math:{message:"Next math"},chromevox_previous_math:{message:"Previous math"},chromevox_next_media:{message:"Next media"},
-chromevox_previous_media:{message:"Previous media"},chromevox_next_blockquote:{message:"Next block quote"},chromevox_previous_blockquote:{message:"Previous block quote"},chromevox_next_radio:{message:"Next radio button"},chromevox_previous_radio:{message:"Previous radio button"},chromevox_next_slider:{message:"Next slider"},chromevox_previous_slider:{message:"Previous slider"},chromevox_next_table:{message:"Next table"},chromevox_next_visited_link:{message:"Next visited link"},chromevox_previous_table:{message:"Previous table"},
-chromevox_previous_visited_link:{message:"Previous visited link"},chromevox_next_button:{message:"Next button"},chromevox_previous_button:{message:"Previous button"},chromevox_next_checkbox:{message:"Next checkbox"},chromevox_previous_checkbox:{message:"Previous checkbox"},chromevox_next_landmark:{message:"Next landmark"},chromevox_previous_landmark:{message:"Previous landmark"},chromevox_benchmark:{message:"Debug benchmark"},chromevox_announce_position:{message:"Announces a brief description of the current position"},
-chromevox_fully_describe:{message:"Announces a complete description of the current position"},chromevox_options_page_title:{message:"ChromeVox Options"},chromevox_options_page_summary:{message:"Use the options below to customize ChromeVox. Changes take effect immediately."},chromevox_options_mouse_focus_follows:{message:"Use the mouse to change focus."},chromevox_options_site_specific_enhancements:{message:"Enhance specific sites (like Google Search)."},chromevox_options_verbosity_verbose:{message:"Enable verbose descriptions."},
-chromevox_options_cursor_between_characters:{message:"Place cursor between characters when editing text (like Mac OS X)."},chromevox_options_magnifier_show_checkbox:{message:"Show a magnified view of the page content."},chromevox_options_voices:{message:"Voices"},chromevox_options_voices_description:{message:"Change the current voice by selecting an option from the list below."},chromevox_options_braille:{message:"Braille"},chromevox_options_braille_table_type_6:{message:"Switch to 8 dot braille"},
-chromevox_options_braille_table_type_8:{message:"Switch to 6 dot braille"},chromevox_options_braille_description_6:{message:"Change the current 6 dot braille table by selecting an option from the list below."},chromevox_options_braille_locale_grade:{message:"$1, Grade $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_options_braille_description_8:{message:"Change the current 8 dot braille table by selecting an option from the list below."},chromevox_options_keyboard_shortcuts:{message:"Keyboard shortcuts"},
-chromevox_options_keymap_description:{message:"Change the current keymap by selecting an option from the list below."},chromevox_options_select_keys:{message:"Reset current keymap"},chromevox_options_shortcuts_description:{message:"Customize keyboard shortcuts for frequently used commands by typing them into the corresponding fields below."},chromevox_options_modifier_keys:{message:"Modifier keys"},chromevox_options_cvox_modifier_key:{message:"ChromeVox modifier key"},chromevox_kbexplorer_title:{message:"ChromeOS Keyboard Explorer"},
-chromevox_kbexplorer_instructions:{message:"Press any key to learn its name. Ctrl+W will close the keyboard explorer."},chromevox_chrome_system_need_restart:{message:"System was updated. Restart is recommended."},chromevox_chrome_brightness_changed:{message:"Brightness $1 percent",placeholders:{1:{content:"$1"}}},chromevox_chrome_tab_created:{message:"tab created"},chromevox_chrome_tab_selected:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_normal_window_selected:{message:"window $1 tab",
-placeholders:{1:{content:"$1"}}},chromevox_chrome_incognito_window_selected:{message:"incognito window $1 tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_menu_opened:{message:"$1 menu opened",placeholders:{1:{content:"$1"}}},chromevox_describe_checkbox_checked:{message:"$1 checkbox checked",placeholders:{1:{content:"$1"}}},chromevox_checkbox_checked_state:{message:"checked"},chromevox_checkbox_checked_state_brl:{message:"x"},chromevox_describe_checkbox_unchecked:{message:"$1, checkbox not checked",
-placeholders:{1:{content:"$1"}}},chromevox_checkbox_unchecked_state:{message:"not checked"},chromevox_checkbox_unchecked_state_brl:{message:" "},chromevox_describe_radio_selected:{message:"$1, radio button selected",placeholders:{1:{content:"$1"}}},chromevox_radio_selected_state:{message:"selected"},chromevox_radio_selected_state_brl:{message:"x"},chromevox_describe_radio_unselected:{message:"$1, radio button unselected",placeholders:{1:{content:"$1"}}},chromevox_radio_unselected_state:{message:"unselected"},
-chromevox_radio_unselected_state_brl:{message:" "},chromevox_describe_menu:{message:"$1, menu",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item:{message:"$1, menu item",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item_with_submenu:{message:"$1, menu item, with submenu",placeholders:{1:{content:"$1"}}},chromevox_describe_window:{message:"$1, window",placeholders:{1:{content:"$1"}}},chromevox_describe_textbox:{message:"$1, $2, text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},
-chromevox_describe_unnamed_textbox:{message:"$1, text box",placeholders:{1:{content:"$1"}}},chromevox_describe_password:{message:"$1, $2, password text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_password:{message:"$1, password text box",placeholders:{1:{content:"$1"}}},chromevox_describe_button:{message:"$1, button",placeholders:{1:{content:"$1"}}},chromevox_describe_combobox:{message:"$1, $2, combo box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_combobox:{message:"$1, combo box",
-placeholders:{1:{content:"$1"}}},chromevox_describe_listbox:{message:"$1, $2, list box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_listbox:{message:"$1, list box",placeholders:{1:{content:"$1"}}},chromevox_describe_link:{message:"$1, link",placeholders:{1:{content:"$1"}}},chromevox_describe_tab:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_describe_slider:{message:"$1, $2, slider",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_selected:{message:", selected"},
-chromevox_describe_unselected:{message:", unselected"},chromevox_describe_index:{message:" $1 of $2 ",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_announce_rate:{message:"Rate $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_pitch:{message:"Pitch $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_volume:{message:"Volume $1 percent",placeholders:{1:{content:"$1"}}},chromevox_exiting_dialog:{message:"Exited dialog."},chromevox_exited_container:{message:"Exited $1.",
-placeholders:{1:{content:"$1"}}},chromevox_entering_dialog:{message:"Entered dialog"},chromevox_live_regions_removed:{message:"removed:"},chromevox_sticky_mode_enabled:{message:"Sticky mode enabled"},chromevox_sticky_mode_disabled:{message:"Sticky mode disabled"},chromevox_keyboard_help_intro:{message:"Keyboard Help"},chromevox_context_menu_intro:{message:"Context Menu"},chromevox_choice_widget_name:{message:"$1 list.",placeholders:{1:{content:"$1"}}},chromevox_choice_widget_help:{message:"Use up and down arrow keys to browse, or type to search."},
-chromevox_choice_widget_exited:{message:"Exited"},chromevox_choice_widget_type_generic:{message:" "},chromevox_end_of_cell:{message:"End of cell."},chromevox_no_url_found:{message:"No URL found"},chromevox_leaving_table:{message:"Leaving table."},chromevox_leaving_grid:{message:"Leaving grid."},chromevox_inside_table:{message:"Inside table"},chromevox_no_tables:{message:"No table found."},chromevox_not_inside_table:{message:"Not inside table."},chromevox_no_cell_below:{message:"No cell below."},chromevox_no_cell_above:{message:"No cell above."},
-chromevox_no_cell_right:{message:"No cell right."},chromevox_no_cell_left:{message:"No cell left."},chromevox_empty_cell:{message:"Empty cell."},chromevox_spanned:{message:"Spanned."},chromevox_row_header:{message:"Row header:"},chromevox_empty_row_header:{message:"Empty row header"},chromevox_column_header:{message:"Column header:"},chromevox_empty_column_header:{message:"Empty column header"},chromevox_no_headers:{message:"No headers"},chromevox_empty_headers:{message:"Empty headers"},chromevox_table_location:{message:"Row $1 of $2, Column $3 of $4",
-placeholders:{1:{content:"$1"},2:{content:"$2"},3:{content:"$3"},4:{content:"$4"}}},chromevox_no_next_checkbox:{message:"No next checkbox."},chromevox_no_previous_checkbox:{message:"No previous checkbox."},chromevox_no_next_edit_text:{message:"No next editable text field."},chromevox_no_previous_edit_text:{message:"No previous editable text field."},chromevox_no_next_heading:{message:"No next heading."},chromevox_no_previous_heading:{message:"No previous heading."},chromevox_no_next_heading_1:{message:"No next level 1 heading."},
-chromevox_no_previous_heading_1:{message:"No previous level 1 heading."},chromevox_no_next_heading_2:{message:"No next level 2 heading."},chromevox_no_previous_heading_2:{message:"No previous level 2 heading."},chromevox_no_next_heading_3:{message:"No next level 3 heading."},chromevox_no_previous_heading_3:{message:"No previous level 3 heading."},chromevox_no_next_heading_4:{message:"No next level 4 heading."},chromevox_no_previous_heading_4:{message:"No previous level 4 heading."},chromevox_no_next_heading_5:{message:"No next level 5 heading."},
-chromevox_no_previous_heading_5:{message:"No previous level 5 heading."},chromevox_no_next_heading_6:{message:"No next level 6 heading."},chromevox_no_previous_heading_6:{message:"No previous level 6 heading."},chromevox_no_next_not_link:{message:"No next item that isn't a link."},chromevox_no_previous_not_link:{message:"No previous item that isn't a link."},chromevox_no_next_anchor:{message:"No next anchor."},chromevox_no_previous_anchor:{message:"No previous anchor."},chromevox_no_next_link:{message:"No next link."},
-chromevox_no_previous_link:{message:"No previous link."},chromevox_no_next_table:{message:"No next table."},chromevox_no_previous_table:{message:"No previous table."},chromevox_no_next_visited_link:{message:"No next visited link."},chromevox_no_previous_visited_link:{message:"No previous visited link."},chromevox_no_next_math:{message:"No next math expression."},chromevox_no_previous_math:{message:"No previous math expression."},chromevox_no_next_media_widget:{message:"No next media widget."},chromevox_no_previous_media_widget:{message:"No previous media widget."},
-chromevox_no_next_list:{message:"No next list."},chromevox_no_previous_list:{message:"No previous list."},chromevox_no_next_list_item:{message:"No next list item."},chromevox_no_previous_list_item:{message:"No previous list item."},chromevox_no_next_blockquote:{message:"No next blockquote."},chromevox_no_previous_blockquote:{message:"No previous blockquote."},chromevox_no_next_form_field:{message:"No next form field."},chromevox_no_previous_form_field:{message:"No previous form field."},chromevox_no_next_jump:{message:"No next jump point."},
-chromevox_no_previous_jump:{message:"No previous jump point."},chromevox_no_next_landmark:{message:"No next ARIA landmark."},chromevox_no_previous_landmark:{message:"No previous ARIA landmark."},chromevox_no_next_combo_box:{message:"No next combo box."},chromevox_no_previous_combo_box:{message:"No previous combo box."},chromevox_no_next_button:{message:"No next button."},chromevox_no_previous_button:{message:"No previous button."},chromevox_no_next_graphic:{message:"No next graphic."},chromevox_no_previous_graphic:{message:"No previous graphic."},
-chromevox_no_next_slider:{message:"No next slider."},chromevox_no_previous_slider:{message:"No previous slider."},chromevox_no_next_radio_button:{message:"No next radio button."},chromevox_no_previous_radio_button:{message:"No previous radio button."},chromevox_no_next_section:{message:"No next section."},chromevox_no_previous_section:{message:"No previous section."},chromevox_no_next_control:{message:"No next control."},chromevox_no_previous_control:{message:"No previous control."},chromevox_element_clicked:{message:"Clicked"},
-chromevox_element_double_clicked:{message:"double clicked"},chromevox_powerkey_no_headings:{message:"No headings."},chromevox_powerkey_no_links:{message:"No links."},chromevox_powerkey_no_forms:{message:"No forms."},chromevox_powerkey_no_tables:{message:"No tables."},chromevox_powerkey_no_landmarks:{message:"No ARIA landmarks."},chromevox_powerkey_no_jumps:{message:"No jumps."},chromevox_list_position:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_list_position_brl:{message:"$1/$2",
-placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_aria_has_submenu:{message:"has submenu"},chromevox_aria_has_submenu_brl:{message:"+submnu"},chromevox_aria_has_popup:{message:"has pop up"},chromevox_aria_has_popup_brl:{message:"+popup"},chromevox_aria_value_min:{message:"Min $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_min_brl:{message:"min:$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max:{message:"Max $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max_brl:{message:"max:$1",
-placeholders:{1:{content:"$1"}}},chromevox_aria_value_now:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_now_brl:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_role_alert:{message:"Alert"},chromevox_aria_role_alert_brl:{message:"alrt"},chromevox_aria_role_alertdialog:{message:"Alert dialog"},chromevox_aria_role_alertdialog_brl:{message:"alrt dlg"},chromevox_aria_role_button:{message:"Button"},chromevox_aria_role_button_brl:{message:"btn"},chromevox_aria_role_checkbox:{message:"Check box"},
-chromevox_aria_role_checkbox_brl:{message:"chx"},chromevox_aria_role_combobox:{message:"Combo box"},chromevox_aria_role_combobox_brl:{message:"cbx"},chromevox_aria_role_dialog:{message:"Dialog"},chromevox_aria_role_dialog_brl:{message:"dlg"},chromevox_aria_role_grid:{message:"Grid"},chromevox_aria_role_grid_brl:{message:"grd"},chromevox_aria_role_gridcell:{message:"Cell"},chromevox_aria_role_gridcell_brl:{message:"cl"},chromevox_aria_role_gridcell_pos:{message:"row $1 column $2",placeholders:{1:{content:"$1"},
-2:{content:"$2"}}},chromevox_aria_role_link:{message:"Link"},chromevox_aria_role_link_brl:{message:"lnk"},chromevox_aria_role_link_singular:{message:"1 link"},chromevox_aria_role_link_plural:{message:"$1 links",placeholders:{1:{content:"$1"}}},chromevox_aria_role_listbox:{message:"List box"},chromevox_aria_role_listbox_brl:{message:"lstbx"},chromevox_aria_role_log:{message:"Log"},chromevox_aria_role_log_brl:{message:"log"},chromevox_aria_role_marquee:{message:"Marquee"},chromevox_aria_role_marquee_brl:{message:"maqe"},
-chromevox_aria_role_menu:{message:"Menu"},chromevox_aria_role_menu_brl:{message:"mnu"},chromevox_aria_role_menubar:{message:"Menu bar"},chromevox_aria_role_menubar_brl:{message:"mnu br"},chromevox_aria_role_menuitem:{message:"Menu item"},chromevox_aria_role_menuitem_brl:{message:"mnu itm"},chromevox_aria_role_menuitemcheckbox:{message:"Menu item check box"},chromevox_aria_role_menuitemcheckbox_brl:{message:"mnu itm chx"},chromevox_aria_role_menuitemradio:{message:"Menu item radio button"},chromevox_aria_role_menuitemradio_brl:{message:"mnu itm rd"},
-chromevox_aria_role_option:{message:" "},chromevox_aria_role_option_brl:{message:" "},chromevox_aria_role_popup_button:{message:"Pop-up button"},chromevox_aria_role_popup_button_brl:{message:"pup btn"},chromevox_aria_role_progressbar:{message:"Progress bar"},chromevox_aria_role_progressbar_brl:{message:"prog br"},chromevox_aria_role_radio:{message:"Radio button"},chromevox_aria_role_radio_brl:{message:"rd"},chromevox_aria_role_radiogroup:{message:"Radio button group"},chromevox_aria_role_radiogroup_brl:{message:"rd grp"},
-chromevox_aria_role_scrollbar:{message:"Scroll bar"},chromevox_aria_role_scrollbar_brl:{message:"scr br"},chromevox_aria_role_slider:{message:"Slider"},chromevox_aria_role_slider_brl:{message:"slr"},chromevox_aria_role_spinbutton:{message:"Spin button"},chromevox_aria_role_spinbutton_brl:{message:"spn btn"},chromevox_aria_role_status:{message:"Status"},chromevox_aria_role_status_brl:{message:"sts"},chromevox_aria_role_tab:{message:"Tab"},chromevox_aria_role_tab_brl:{message:"tab"},chromevox_aria_role_tabpanel:{message:"Tab panel"},
-chromevox_aria_role_tabpanel_brl:{message:"tab pnl"},chromevox_aria_role_textbox:{message:"Text box"},chromevox_aria_role_textbox_brl:{message:"txtbx"},chromevox_aria_role_timer:{message:"Timer"},chromevox_aria_role_timer_brl:{message:"tmr"},chromevox_aria_role_toolbar:{message:"Tool bar"},chromevox_aria_role_toolbar_brl:{message:"tl br"},chromevox_aria_role_tooltip:{message:"Tool tip"},chromevox_aria_role_tooltip_brl:{message:"tl tp"},chromevox_aria_role_treeitem:{message:"Tree item"},chromevox_aria_role_treeitem_brl:{message:"tr itm"},
-chromevox_aria_role_article:{message:"Article"},chromevox_aria_role_article_brl:{message:"acl"},chromevox_aria_role_application:{message:"Application"},chromevox_aria_role_application_brl:{message:"app"},chromevox_aria_role_banner:{message:"Banner"},chromevox_aria_role_banner_brl:{message:"bnr"},chromevox_aria_role_columnheader:{message:"Column header"},chromevox_aria_role_columnheader_brl:{message:"clm hd"},chromevox_aria_role_complementary:{message:"Complementary"},chromevox_aria_role_complementary_brl:{message:"cmpy"},
-chromevox_aria_role_contentinfo:{message:"Content info"},chromevox_aria_role_contentinfo_brl:{message:"cnt in"},chromevox_aria_role_definition:{message:"Definition"},chromevox_aria_role_definition_brl:{message:"def"},chromevox_aria_role_directory:{message:"Directory"},chromevox_aria_role_directory_brl:{message:"dir"},chromevox_aria_role_document:{message:"Document"},chromevox_aria_role_document_brl:{message:"doc"},chromevox_aria_role_form:{message:"Form"},chromevox_aria_role_form_brl:{message:"frm"},
-chromevox_aria_role_form_singular:{message:"1 form"},chromevox_aria_role_form_plural:{message:"$1 forms",placeholders:{1:{content:"$1"}}},chromevox_aria_role_group:{message:"Group"},chromevox_aria_role_group_brl:{message:"grp"},chromevox_aria_role_heading:{message:"Heading"},chromevox_aria_role_heading_brl:{message:"hd"},chromevox_aria_role_img:{message:"Image"},chromevox_aria_role_img_brl:{message:"img"},chromevox_aria_role_list:{message:"List"},chromevox_aria_role_list_brl:{message:"lst"},chromevox_aria_role_listitem:{message:"List item"},
-chromevox_aria_role_listitem_brl:{message:"lstitm"},chromevox_aria_role_main:{message:"Main"},chromevox_aria_role_main_brl:{message:"main"},chromevox_aria_role_math:{message:"Math"},chromevox_aria_role_math_brl:{message:"math"},chromevox_aria_role_navigation:{message:"Navigation"},chromevox_aria_role_navigation_brl:{message:"nav"},chromevox_aria_role_note:{message:"Note"},chromevox_aria_role_note_brl:{message:"note"},chromevox_aria_role_region:{message:"Region"},chromevox_aria_role_region_brl:{message:"rgn"},
-chromevox_aria_role_rowheader:{message:"Row header"},chromevox_aria_role_rowheader_brl:{message:"rw hd"},chromevox_aria_role_search:{message:"Search"},chromevox_aria_role_search_brl:{message:"srch"},chromevox_aria_role_separator:{message:"Separator"},chromevox_aria_role_separator_brl:{message:"sprtr"},chromevox_aria_autocomplete_inline:{message:"Autocompletion inline"},chromevox_aria_autocomplete_inline_brl:{message:"autocomplete"},chromevox_aria_autocomplete_list:{message:"Autocompletion list"},
-chromevox_aria_autocomplete_list_brl:{message:"autocomplete lst"},chromevox_aria_autocomplete_both:{message:"Autocompletion inline and list"},chromevox_aria_autocomplete_both_brl:{message:"autocomplete lst"},chromevox_aria_checked_true:{message:"Checked"},chromevox_aria_checked_true_brl:{message:"x"},chromevox_aria_checked_false:{message:"Not checked"},chromevox_aria_checked_false_brl:{message:" "},chromevox_aria_checked_mixed:{message:"Partially checked"},chromevox_aria_checked_mixed_brl:{message:"/x"},
-chromevox_aria_disabled_true:{message:"Disabled"},chromevox_aria_disabled_true_brl:{message:"="},chromevox_aria_expanded_true:{message:"Expanded"},chromevox_aria_expanded_true_brl:{message:">"},chromevox_aria_expanded_false:{message:"Collapsed"},chromevox_aria_expanded_false_brl:{message:"<"},chromevox_aria_invalid_true:{message:"Invalid input"},chromevox_aria_invalid_true_brl:{message:"!"},chromevox_aria_invalid_grammar:{message:"Grammatical mistake detected"},chromevox_aria_invalid_grammar_brl:{message:"Grammatical mistake detected"},
-chromevox_aria_invalid_spelling:{message:"Spelling mistake detected"},chromevox_aria_invalid_spelling_brl:{message:"misspelled"},chromevox_aria_multiline_true:{message:"Multi line"},chromevox_aria_multiline_true_brl:{message:"mult ln"},chromevox_aria_multiselectable_true:{message:"Multi select"},chromevox_aria_multiselectable_true_brl:{message:"mult sel"},chromevox_aria_pressed_true:{message:"Pressed"},chromevox_aria_pressed_true_brl:{message:"x"},chromevox_aria_pressed_false:{message:"Not pressed"},
-chromevox_aria_pressed_false_brl:{message:" "},chromevox_aria_pressed_mixed:{message:"Partially pressed"},chromevox_aria_pressed_mixed_brl:{message:"/x"},chromevox_aria_readonly_true:{message:"Read only"},chromevox_aria_readonly_true_brl:{message:"rdonly"},chromevox_aria_required_true:{message:"Required"},chromevox_aria_required_true_brl:{message:"req"},chromevox_aria_selected_true:{message:"Selected"},chromevox_aria_selected_true_brl:{message:"x"},chromevox_aria_selected_false:{message:"Not selected"},
-chromevox_aria_selected_false_brl:{message:" "},chromevox_tag_link:{message:"Link"},chromevox_tag_link_brl:{message:"lnk"},chromevox_tag_button:{message:"Button"},chromevox_tag_button_brl:{message:"btn"},chromevox_tag_h1:{message:"Heading 1"},chromevox_tag_h1_brl:{message:"h1"},chromevox_tag_h2:{message:"Heading 2"},chromevox_tag_h2_brl:{message:"h2"},chromevox_tag_h3:{message:"Heading 3"},chromevox_tag_h3_brl:{message:"h3"},chromevox_tag_h4:{message:"Heading 4"},chromevox_tag_h4_brl:{message:"h4"},
-chromevox_tag_h5:{message:"Heading 5"},chromevox_tag_h5_brl:{message:"h5"},chromevox_tag_h6:{message:"Heading 6"},chromevox_tag_h6_brl:{message:"h6"},chromevox_tag_li:{message:"List item"},chromevox_tag_li_brl:{message:"lstitm"},chromevox_tag_ol:{message:"Ordered List"},chromevox_tag_ol_brl:{message:"lst"},chromevox_tag_select:{message:"Combo box"},chromevox_tag_select_brl:{message:"cbx"},chromevox_tag_textarea:{message:"Text area"},chromevox_tag_textarea_brl:{message:"txta"},chromevox_tag_table:{message:"table"},
-chromevox_tag_table_brl:{message:"tbl"},chromevox_tag_ul:{message:"List"},chromevox_tag_ul_brl:{message:"lst"},chromevox_tag_section:{message:"Section"},chromevox_tag_section_brl:{message:"stn"},chromevox_tag_nav:{message:"Navigation"},chromevox_tag_nav_brl:{message:"nav"},chromevox_tag_article:{message:"Article"},chromevox_tag_article_brl:{message:"article"},chromevox_tag_aside:{message:"Aside"},chromevox_tag_aside_brl:{message:"aside"},chromevox_tag_hgroup:{message:"Heading group"},chromevox_tag_hgroup_brl:{message:"hgrp"},
-chromevox_tag_header:{message:"Header"},chromevox_tag_header_brl:{message:"hdr"},chromevox_tag_footer:{message:"Footer"},chromevox_tag_footer_brl:{message:"ftr"},chromevox_tag_time:{message:"Time"},chromevox_tag_time_brl:{message:" "},chromevox_tag_mark:{message:"Mark"},chromevox_tag_mark_brl:{message:"mark"},chromevox_tag_video:{message:"Video"},chromevox_tag_video_brl:{message:"video"},chromevox_tag_audio:{message:"Audio"},chromevox_tag_audio_brl:{message:"audio"},chromevox_input_type_button:{message:"Button"},
-chromevox_input_type_button_brl:{message:"btn"},chromevox_input_type_checkbox:{message:"Check box"},chromevox_input_type_checkbox_brl:{message:"chx"},chromevox_input_type_color:{message:"Color picker"},chromevox_input_type_color_brl:{message:"color picker"},chromevox_input_type_datetime:{message:"Date time control"},chromevox_input_type_datetime_brl:{message:"date time"},chromevox_input_type_datetime_local:{message:"Date time control"},chromevox_input_type_datetime_local_brl:{message:"date time"},
-chromevox_input_type_date:{message:"Date control"},chromevox_input_type_date_brl:{message:"date"},chromevox_input_type_email:{message:"Edit text, email entry"},chromevox_input_type_email_brl:{message:"edtxt email"},chromevox_input_type_file:{message:"File selection"},chromevox_input_type_file_brl:{message:"file"},chromevox_input_type_image:{message:"Button"},chromevox_input_type_image_brl:{message:"btn"},chromevox_input_type_month:{message:"Month control"},chromevox_input_type_month_brl:{message:"month"},
-chromevox_input_type_number:{message:"Edit text numeric only"},chromevox_input_type_number_brl:{message:"edtxt#"},chromevox_input_type_password:{message:"Password edit text"},chromevox_input_type_password_brl:{message:"pwd edtxt"},chromevox_input_type_radio:{message:"Radio button"},chromevox_input_type_radio_brl:{message:"rd btn"},chromevox_input_type_range:{message:"Slider"},chromevox_input_type_range_brl:{message:"slr"},chromevox_input_type_reset:{message:"Reset"},chromevox_input_type_reset_brl:{message:"reset"},
-chromevox_input_type_search:{message:"Edit text, search entry"},chromevox_input_type_search_brl:{message:"search edtxt"},chromevox_input_type_submit:{message:"Button"},chromevox_input_type_submit_brl:{message:"btn"},chromevox_input_type_tel:{message:"Edit text, number entry"},chromevox_input_type_tel_brl:{message:"tele# edtxt"},chromevox_input_type_text:{message:"Edit text"},chromevox_input_type_text_brl:{message:"edtxt"},chromevox_input_type_url:{message:"Edit text, URL entry"},chromevox_input_type_url_brl:{message:"url edtxt"},
-chromevox_input_type_week:{message:"Week of the year control"},chromevox_input_type_week_brl:{message:"week"},chromevox_internal_link:{message:"Internal link"},chromevox_internal_link_brl:{message:"int lnk"},chromevox_text_box_blank:{message:"Blank"},chromevox_list_with_items:{message:"with $1 items",placeholders:{1:{content:"$1"}}},chromevox_list_with_items_brl:{message:"+$1",placeholders:{1:{content:"$1"}}},chromevox_state_percent:{message:"$1%",placeholders:{1:{content:"$1"}}},chromevox_state_percent_brl:{message:"$1%",
-placeholders:{1:{content:"$1"}}},chromevox_has_submenu:{message:"with submenu"},chromevox_has_submenu_brl:{message:"+submnu"},chromevox_has_popup:{message:"has popup"},chromevox_has_popup_brl:{message:"has popup"},chromevox_collection:{message:"$1 collection with $2 items",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_key:{message:"Enter"},chromevox_space_key:{message:"Space"},chromevox_backspace_key:{message:"Backspace"},chromevox_tab_key:{message:"Tab"},chromevox_left_key:{message:"Left"},
-chromevox_up_key:{message:"Up"},chromevox_right_key:{message:"Right"},chromevox_down_key:{message:"Down"},chromevox_unknown_link:{message:"Unknown link"},chromevox_toggle_chromevox_active:{message:"Toggle ChromeVox active or inactive."},chromevox_chromevox_inactive:{message:"ChromeVox is now inactive."},chromevox_pause:{message:", "},chromevox_end:{message:". "},chromevox_previous_different_element:{message:"Previous different element."},chromevox_next_different_element:{message:"Next different element."},
-chromevox_previous_similar_element:{message:"Previous similar element."},chromevox_next_similar_element:{message:"Next similar element."},chromevox_no_more_similar_elements:{message:"No more similar elements."},chromevox_no_more_different_elements:{message:"No more different elements."},chromevox_index_total:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_css_space:{message:"Enter group exploration"},chromevox_enter_group_exploration:{message:"Exploring groups"},
-chromevox_pdf_header:{message:'This page contains the text automatically extracted from the PDF file <b>$1</b>. <a href="$2">Click here for the original.</a>',placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_object_strategy:{message:"Object"},chromevox_group_strategy:{message:"Group"},chromevox_table_strategy:{message:"Table"},chromevox_row_granularity:{message:"Row"},chromevox_column_granularity:{message:"Column"},chromevox_mathml_tree_granularity:{message:"Math ML Tree"},chromevox_mathml_layout_granularity:{message:"Math ML Layout"},
-chromevox_mathml_token_granularity:{message:"Math ML Token"},chromevox_mathml_leaf_granularity:{message:"Math ML Leaf"},chromevox_visual_strategy:{message:"Visual"},chromevox_custom_strategy:{message:"Custom"},chromevox_line_granularity:{message:"Line"},chromevox_sentence_granularity:{message:"Sentence"},chromevox_word_granularity:{message:"Word"},chromevox_character_granularity:{message:"Character"},chromevox_search_widget_intro:{message:"Find in page."},chromevox_search_widget_intro_help:{message:"Enter a search query."},
-chromevox_search_widget_outro:{message:"Exited find in page."},chromevox_search_widget_no_results:{message:"No more results."},chromevox_modifier_keys:{message:"Modifier Keys"},chromevox_navigation:{message:"ChromeVox Navigation"},chromevox_information:{message:"Information"},chromevox_help_commands:{message:"Help Commands"},chromevox_controlling_speech:{message:"Controlling Speech"},chromevox_overview:{message:"Overview"},chromevox_tables:{message:"Tables"},chromevox_jump_commands:{message:"Jump Commands"},
-chromevox_braille:{message:"Braille"},chromevox_developer:{message:"Developer"},chromevox_keymap_classic:{message:"Classic keymap"},chromevox_keymap_flat:{message:"Flat keymap"},chromevox_keymap_experimental:{message:"Experimental keymap"},chromevox_enable_tts_log:{message:"Enable TTS logging"},chromevox_begin_selection:{message:"Start selection"},chromevox_end_selection:{message:"End selection"},chromevox_selection_is:{message:"Selection is "},chromevox_toggle_selection:{message:"Start or end selection."},
-chromevox_copy:{message:"copy."},chromevox_cut:{message:"cut."},chromevox_paste:{message:"paste."},chromevox_selected:{message:"selected"},chromevox_unselected:{message:"unselected"},chromevox_added_to_selection:{message:"added to selection"},chromevox_removed_from_selection:{message:"removed from selection"},chromevox_then:{message:"then"},chromevox_followed_by:{message:"followed by"},chromevox_modifier_key:{message:"ChromeVox modifier"},chromevox_key_conflict:{message:"$1 is already assigned to a command.",
-placeholders:{1:{content:"$1"}}},chromevox_math_expr:{message:"Math"},chromevox_math_expr_brl:{message:"Math"},chromevox_not_inside_math:{message:"Not inside math"},chromevox_timewidget_ampm:{message:"AM PM"},chromevox_timewidget_hours:{message:"hours"},chromevox_timewidget_minutes:{message:"minutes"},chromevox_timewidget_seconds:{message:"seconds"},chromevox_timewidget_milliseconds:{message:"milliseconds"},chromevox_timewidget_am:{message:"AM"},chromevox_timewidget_pm:{message:"PM"},chromevox_datewidget_week:{message:"week"},
-chromevox_datewidget_january:{message:"January"},chromevox_datewidget_february:{message:"February"},chromevox_datewidget_march:{message:"March"},chromevox_datewidget_april:{message:"April"},chromevox_datewidget_may:{message:"May"},chromevox_datewidget_june:{message:"June"},chromevox_datewidget_july:{message:"July"},chromevox_datewidget_august:{message:"August"},chromevox_datewidget_september:{message:"September"},chromevox_datewidget_october:{message:"October"},chromevox_datewidget_november:{message:"November"},
-chromevox_datewidget_december:{message:"December"},chromevox_no_punctuation:{message:"No punctuation"},chromevox_some_punctuation:{message:"Some punctuation"},chromevox_all_punctuation:{message:"All punctuation"},chromevox_search_help_item:{message:"Press enter to accept or escape to cancel, down for next and up for previous."},chromevox_clickable:{message:"clickable"},chromevox_clickable_brl:{message:"clickable"},chromevox_previous_character:{message:"Previous Character"},chromevox_next_character:{message:"Next Character"},
-chromevox_previous_word:{message:"Previous Word"},chromevox_next_word:{message:"Next Word"},chromevox_previous_sentence:{message:"Previous Sentence"},chromevox_next_sentence:{message:"Next Sentence"},chromevox_previous_line:{message:"Previous Line"},chromevox_next_line:{message:"Next Line"},chromevox_previous_object:{message:"Previous Object"},chromevox_next_object:{message:"Next Object"},chromevox_previous_group:{message:"Previous Group"},chromevox_next_group:{message:"Next Group"},chromevox_role_landmark:{message:"Landmark"},
-chromevox_modifier_entry_error:{message:"No modifier pressed; please press and hold one or more modifiers; lift your fingers once done and you will hear the keys set. Tab to exit."},chromevox_modifier_entry_set:{message:"$1 is now the new ChromeVox modifier.",placeholders:{1:{content:"$1"}}},chromevox_keymap_reset:{message:"$1 has been reset.",placeholders:{1:{content:"$1"}}},chromevox_keymap_switch:{message:"Switched to $1.",placeholders:{1:{content:"$1"}}},chromevox_jump_to_top:{message:"Jump to the top of the page"},
-chromevox_jump_to_bottom:{message:"Jump to the bottom of the page"},chromevox_wrapped_to_top:{message:"Wrapped to top"},chromevox_wrapped_to_bottom:{message:"Wrapped to bottom"},chromevox_cycle_punctuation_echo:{message:"Cycle punctuation echo"},chromevox_cycle_typing_echo:{message:"Cycle typing echo"},chromevox_pause_all_media:{message:"Pauses all currently playing media widgets"},chromevox_open_long_desc:{message:"Open long description in a new tab"},chromevox_no_long_desc:{message:"No long description"},
-chromevox_image_with_long_desc:{message:"Image with long description"},chromevox_selected_options_value:{message:"$1 to $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_value_brl:{message:"$1-$2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_state:{message:"selected $1 items",placeholders:{1:{content:"$1"}}},chromevox_selected_options_state_brl:{message:"sld $1",placeholders:{1:{content:"$1"}}},chromevox_clear_page_selection:{message:"cleared selection"},
-chromevox_character_echo:{message:"character echo"},chromevox_word_echo:{message:"word echo"},chromevox_character_and_word_echo:{message:"character and word echo"},chromevox_none_echo:{message:"no typing echo"},chromevox_enter_content:{message:"enter structured content, such as tables"},chromevox_exit_content:{message:"exit structured content, such as tables"},chromevox_enter_content_say:{message:"entered $1",placeholders:{1:{content:"$1"}}},chromevox_structural_line:{message:"structural line"},chromevox_layout_line:{message:"line"},
-chromevox_toggle_line_type:{message:"Toggle line type between structural or layout"},chromevox_table_shifter:{message:"table"},chromevox_navigation_shifter:{message:"default navigation"},chromevox_math_shifter:{message:"math"},chromevox_toggle_semantics:{message:"Toggle interpretation of math expressions between structural and semantic"},chromevox_semantics_on:{message:"Semantics on"},chromevox_semantics_off:{message:"Semantics off"},chromevox_phonetic_map:{message:'{"a": "alpha", "b": "bravo", "c": "charlie", "d": "delta", "e": "echo", "f": "foxtrot", "g": "golf", "h": "hotel", "i": "india", "j": "juliet","k": "kilo", "l": "lima", "m": "mike", "n": "november", "o": "oscar","p": "papa", "q": "quebec", "r": "romeo", "s": "sierra", "t": "tango", "u": "uniform", "v": "victor", "w": "whiskey","x": "xray", "y": "yankee", "z": "zulu"}'},
-chromevox_page_has_one_alert_singular:{message:"This page has 1 alert"},chromevox_page_has_alerts_plural:{message:"This page has $1 alerts",placeholders:{1:{content:"$1"}}},chromevox_review_alerts:{message:"Press Alt+Shift+A to review alerts"},chromevox_no_next_article:{message:"No next article."},chromevox_no_previous_article:{message:"No previous article."},chromevox_chromevox_intro:{message:"ChromeVox spoken feedback is ready"},chromevox_intro_brl:{message:"ChromeVox ready"},chromevox_earcons_on:{message:"Earcons on"},
-chromevox_earcons_off:{message:"Earcons off"},chromevox_toggle_earcons:{message:"Turn sound feedback (earcons) on or off."},chromevox_speak_time_and_date:{message:"Speak the current time and date."},chromevox_mark_as_search_result_brl:{message:"S:$1",placeholders:{1:{content:"$1"}}},chromevox_text_deleted:{message:"Deleted"},chromevox_perform_default_action:{message:"Perform default action"},chromevox_visited_url:{message:"visited"},chromevox_visited_url_brl:{message:"visited"},chromevox_exclamation:{message:"{COUNT, plural, =1 {exclamation point}other {# exclamation points}}"},
-chromevox_space:{message:"{COUNT, plural, =1 {space}other {# spaces}}"},chromevox_backtick:{message:"{COUNT, plural, =1 {backtick}other {# backticks}}"},chromevox_tilde:{message:"{COUNT, plural, =1 {TILDE}other {# tildes}}"},chromevox_at:{message:"{COUNT, plural, =1 {at}other {# at signs}}"},chromevox_pound:{message:"{COUNT, plural, =1 {pound}other {# pound signs}}"},chromevox_dollar:{message:"{COUNT, plural, =1 {dollar}other {# dollar signs}}"},chromevox_percent:{message:"{COUNT, plural, =1 {percent}other {# percent signs}}"},
-chromevox_caret:{message:"{COUNT, plural, =1 {caret}other {# carets}}"},chromevox_ampersand:{message:"{COUNT, plural, =1 {ampersand}other {# ampersands}}"},chromevox_asterisk:{message:"{COUNT, plural, =1 {asterisk}other {# asterisks}}"},chromevox_open_paren:{message:"{COUNT, plural, =1 {open paren}other {# open parens}}"},chromevox_close_paren:{message:"{COUNT, plural, =1 {close paren}other {# close parens}}"},chromevox_dash:{message:"{COUNT, plural, =1 {dash}other {# dashes}}"},chromevox_underscore:{message:"{COUNT, plural, =1 {underscore}other {# underscores}}"},
-chromevox_equals:{message:"{COUNT, plural, =1 {equal}other {# equal signs}}"},chromevox_plus:{message:"{COUNT, plural, =1 {plus}other {# plus signs}}"},chromevox_left_bracket:{message:"{COUNT, plural, =1 {left bracket}other {# left brackets}}"},chromevox_right_bracket:{message:"{COUNT, plural, =1 {right bracket}other {# right brackets}}"},chromevox_left_brace:{message:"{COUNT, plural, =1 {left brace}other {# left braces}}"},chromevox_right_brace:{message:"{COUNT, plural, =1 {right brace}other {# right braces}}"},
-chromevox_pipe:{message:"{COUNT, plural, =1 {pipe}other {# vertical pipes}}"},chromevox_semicolon:{message:"{COUNT, plural, =1 {semicolon}other {# semicolons}}"},chromevox_colon:{message:"{COUNT, plural, =1 {colon}other {# colons}}"},chromevox_comma:{message:"{COUNT, plural, =1 {comma}other {# commas}}"},chromevox_dot:{message:"{COUNT, plural, =1 {dot}=3 {ellipsis}other {# dots}}"},chromevox_less_than:{message:"{COUNT, plural, =1 {less than}other {# less than signs}}"},chromevox_greater_than:{message:"{COUNT, plural, =1 {greater than}other {# greater than signs}}"},
-chromevox_slash:{message:"{COUNT, plural, =1 {slash}other {# slashes}}"},chromevox_question_mark:{message:"{COUNT, plural, =1 {question mark}other {# question marks}}"},chromevox_quote:{message:"{COUNT, plural, =1 {quote}other {# quotes}}"},chromevox_apostrophe:{message:"{COUNT, plural, =1 {apostrophe}other {# apostrophes}}"},chromevox_tab:{message:"{COUNT, plural, =1 {tab}other {# tabs}}"},chromevox_backslash:{message:"{COUNT, plural, =1 {backslash}other {# backslashes}}"},chromevox_braille_routing:{message:"Click the item under a routing key"},
-chromevox_braille_pan_left:{message:"Pan backward"},chromevox_braille_pan_right:{message:"Pan bforward"},chromevox_braille_line_up:{message:"Braille previous Line"},chromevox_braille_line_down:{message:"Braille next Line"},chromevox_braille_top:{message:"Move braille display to top of page"},chromevox_braille_bottom:{message:"Move braille display to bottom of page"},chromevox_access_key:{message:"has access key, $1",placeholders:{1:{content:"$1"}}},chromevox_locale_dict:{message:'{"ar": "Arabic","bg": "Bulgarian","ca": "Catalan","hr": "Croatian","cs": "Czech","da": "Danish","nl": "Dutch","en_CA": "English (Canada)","en_GB": "English (United Kingdom)","en_US": "English (United States)","et": "Estonian","fr": "French","fr_CA": "French (Canada)","fr_FR": "French (France)","fi": "Finnish","de": "German","de_CH": "German (Switzerland)","de_DE": "German (Germany)","el": "Greek","hi": "Hindi","hu": "Hungarian","is": "Icelandic","it": "Italian","lv": "Latvian","lt": "Lithuanian","nb": "Norwegian Bokm\u00e5l","pl": "Polish","pt": "Portuguese","ro": "Romanian","ru": "Russian","sr": "Serbian","sk": "Slovak","sl": "Slovenian","es": "Spanish","sv": "Swedish","tr": "Turkish","vi": "Vietnamese","zh": "Chinese","zh_TW": "Chinese (Traditional Han)"}'}};cvox.TestMsgs=function(){};goog.inherits(cvox.TestMsgs,cvox.AbstractMsgs);cvox.TestMsgs.prototype.getMsg=function(a,b){if(!a){var c=Error();c.message="Message id required";throw c;}c=cvox.TestMessages["chromevox_"+a];if(void 0==c)throw c=Error(),c.message="missing-msg: "+a,c;var d=c.message;if(b)for(var e=0;e<b.length;e++){var f=c.placeholders[e+1];if(!f)throw c=Error(),c.message="Bad placeholder "+e+" for message id "+a,c;f=c.placeholders[e+1].content;d=d.replace(f,b[e])}return d};
-cvox.TestMsgs.prototype.getNumber=function(a){return""+a};cvox.HostFactory.msgsConstructor=cvox.TestMsgs;cvox.ChromeVox.initDocument();
diff --git a/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js b/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js
deleted file mode 100644
index 8229b168..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js
+++ /dev/null
@@ -1,1778 +0,0 @@
-// Copyright 2013 Google 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.
-var goog=goog||{};goog.global=this;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||void 0===b?c=c[d]?c[d]:c[d]={}:c[d]=b};goog.define=function(a,b){var c=b;goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.provide=function(a){goog.exportPath_(a)};
-goog.setTestOnly=function(a){if(!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");};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};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
-goog.addDependency=function(a,b,c){if(goog.DEPENDENCIES_ENABLED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};goog.useStrictRequires=!1;goog.ENABLE_DEBUG_LOADER=!0;goog.require=function(){};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a){return a};
-goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.DEPENDENCIES_ENABLED=!1;
-goog.DEPENDENCIES_ENABLED&&(goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return"undefined"!=typeof a&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document,a=a.getElementsByTagName("script"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?
-c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==b.readyState){if(b=/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}b.write('<script type="text/javascript" src="'+
-a+'">\x3c/script>');return!0}return!1},goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.visited)&&(d.visited[e]=!0,e in d.requires))for(var g in d.requires[e])if(!goog.isProvided_(g))if(g in d.nameToPath)a(d.nameToPath[g]);else throw Error("Undefined nameToPath for "+g);e in c||(c[e]=!0,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("Undefined script input");
-},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));
-goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isDef=function(a){return void 0!==a};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};
-goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
-goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},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.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
-goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
-goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval)if(null==goog.evalWorksForGlobals_&&(goog.global.eval("var _et_ = 1;"),"undefined"!=typeof goog.global._et_?(delete goog.global._et_,goog.evalWorksForGlobals_=!0):goog.evalWorksForGlobals_=!1),goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.body.appendChild(c);
-b.body.removeChild(c)}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a};return b?a+"-"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};
-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.getMsgWithFallback=function(a){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};
-goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.DEBUG&&!d)throw Error("arguments.caller not defined. goog.base() expects not to be running in strict mode. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_)return d.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,1));for(var e=Array.prototype.slice.call(arguments,2),f=!1,g=a.constructor;g;g=g.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.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 method of a different name");};goog.scope=function(a){a.call(goog.global)};goog.MODIFY_FUNCTION_PROTOTYPES=!0;
-goog.MODIFY_FUNCTION_PROTOTYPES&&(Function.prototype.bind=Function.prototype.bind||function(a,b){if(1<arguments.length){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return goog.bind.apply(null,c)}return goog.bind(this,a)},Function.prototype.partial=function(a){var b=Array.prototype.slice.call(arguments);b.unshift(this,null);return goog.bind.apply(null,b)},Function.prototype.inherits=function(a){goog.inherits(this,a)},Function.prototype.mixin=function(a){goog.mixin(this.prototype,
-a)});var cvox={VERBOSITY_VERBOSE:0,VERBOSITY_BRIEF:1,ChromeVox:function(){}};cvox.ChromeVox.host=null;cvox.ChromeVox.msgs=null;cvox.ChromeVox.isActive=!0;cvox.ChromeVox.version=null;cvox.ChromeVox.earcons=null;cvox.ChromeVox.navigationManager=null;cvox.ChromeVox.serializer=null;cvox.ChromeVox.isStickyOn=!1;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVox.verbosity=cvox.VERBOSITY_VERBOSE;cvox.ChromeVox.typingEcho=0;cvox.ChromeVox.keyEcho={};cvox.ChromeVox.position={};cvox.ChromeVox.isChromeOS=-1!=navigator.userAgent.indexOf("CrOS");
-cvox.ChromeVox.isMac=-1!=navigator.platform.indexOf("Mac");cvox.ChromeVox.modKeyStr=cvox.ChromeVox.isChromeOS?"Shift+Search":cvox.ChromeVox.isMac?"Ctrl+Cmd":"Ctrl+Meta";cvox.ChromeVox.sequenceSwitchKeyCodes=[];cvox.ChromeVox.visitedUrls={};cvox.ChromeVox.markInUserCommand=function(){};cvox.ChromeVox.syncToNode=function(){};cvox.ChromeVox.speakNode=function(){};cvox.ChromeVox.executeUserCommand=function(){};cvox.ChromeVox.entireDocumentIsHidden=!1;
-cvox.ChromeVox.storeOn=function(a){a.isStickyOn=cvox.ChromeVox.isStickyOn;cvox.ChromeVox.navigationManager.storeOn(a)};cvox.ChromeVox.readFrom=function(a){cvox.ChromeVox.isStickyOn=a.isStickyOn;cvox.ChromeVox.navigationManager.readFrom(a)};cvox.Cursor=function(a,b,c){this.node=a;this.index=b;this.text=c};cvox.Cursor.prototype.clone=function(){return new cvox.Cursor(this.node,this.index,this.text)};cvox.Cursor.prototype.copyFrom=function(a){this.node=a.node;this.index=a.index;this.text=a.text};cvox.Cursor.prototype.equals=function(a){return this.node==a.node&&this.index==a.index&&this.text==a.text};goog.debug={};goog.debug.Error=function(a){Error.captureStackTrace?Error.captureStackTrace(this,goog.debug.Error):this.stack=Error().stack||"";a&&(this.message=String(a))};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};
-goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptySafe=function(a){return goog.string.isEmpty(goog.string.makeSafe(a))};
-goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};
-goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};
-goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;
-goog.string.numerateCompare=function(a,b){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var c=a.toLowerCase().match(goog.string.numerateCompareRegExp_),d=b.toLowerCase().match(goog.string.numerateCompareRegExp_),e=Math.min(c.length,d.length),f=0;f<e;f++){var g=c[f],h=d[f];if(g!=h)return c=parseInt(g,10),!isNaN(c)&&(d=parseInt(h,10),!isNaN(d)&&c-d)?c-d:g<h?-1:1}return c.length!=d.length?c.length-d.length:a<b?-1:1};goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};
-goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
-goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");if(!goog.string.allRe_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.amperRe_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.ltRe_,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.gtRe_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.quotRe_,"&quot;"));return a};
-goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
-goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'},d;d=b?b.createElement("div"):document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var g=c[a];if(g)return g;if("#"==b.charAt(0)){var h=Number("0"+b.substr(1));isNaN(h)||(g=String.fromCharCode(h))}g||(d.innerHTML=a+" ",g=d.firstChild.nodeValue.slice(0,-1));return c[a]=g})};
-goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==c.charAt(0)){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
-goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
-goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;b-=d;a=a.substring(0,b)+"..."+a.substring(e)}else a.length>b&&(e=Math.floor(b/2),d=a.length-e,e+=b%2,a=a.substring(0,e)+"..."+a.substring(d));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"};
-goog.string.quote=function(a){a=String(a);if(a.quote)return a.quote();for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
-goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.toMap=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=!0;return b};
-goog.string.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};goog.string.removeAll=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};
-goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};
-goog.string.getRandomString=function(){var a=2147483648;return Math.floor(Math.random()*a).toString(36)+Math.abs(Math.floor(Math.random()*a)^goog.now()).toString(36)};
-goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=/(\d*)(\D*)/g,m=/(\d*)(\D*)/g;do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;var c=0==p[1].length?0:parseInt(p[1],10),n=0==q[1].length?0:parseInt(q[1],10),c=goog.string.compareElements_(c,n)||goog.string.compareElements_(0==p[2].length,0==q[2].length)||
-goog.string.compareElements_(p[2],q[2])}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c),b%=goog.string.HASHCODE_MAX_;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
-goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmpty(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};
-goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s",c=c?"|["+c+"]+":"",c=RegExp("(^"+c+")([a-z])","g");return a.replace(c,function(a,b,c){return b+c.toUpperCase()})};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift()};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new goog.asserts.AssertionError(""+e,f||[]);};
-goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.fail=function(a,b){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};
-goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("instanceof check failed.",null,c,Array.prototype.slice.call(arguments,3));return a};
-goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.peek=function(a){return a[a.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype;
-goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
-goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(a,b,c){goog.asserts.assert(null!=a.length);c=null==c?a.length-1:c;return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(a,b,c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
-goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};
-goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};
-goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
-goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduce?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduceRight?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
-goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};
-goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};
-goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};
-goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};
-goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.concat=function(a){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;
-goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c],e;if(goog.isArray(d)||(e=goog.isArrayLike(d))&&Object.prototype.hasOwnProperty.call(d,"callee"))a.push.apply(a,d);else if(e)for(var f=a.length,g=d.length,h=0;h<g;h++)a[f+h]=d[h];else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.splice.apply(a,goog.array.slice(arguments,1))};
-goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?goog.array.ARRAY_PROTOTYPE_.slice.call(a,b):goog.array.ARRAY_PROTOTYPE_.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};
-goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.sort.call(a,b||goog.array.defaultCompare)};
-goog.array.stableSort=function(a,b){function c(a,b){return e(a.value,b.value)||a.index-b.index}for(var d=0;d<a.length;d++)a[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(a,c);for(d=0;d<a.length;d++)a[d]=a[d].value};goog.array.sortObjectsByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(a[b],c[b])})};
-goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare=function(a,b,c){return goog.array.equals(a,b,c)};
-goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};
-goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(g=d[g]||(d[g]=[]),g.push(f))}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};
-goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];goog.isArray(d)?b.push.apply(b,goog.array.flatten.apply(null,d)):b.push(d)}return b};
-goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?goog.array.ARRAY_PROTOTYPE_.unshift.apply(a,a.splice(-b,b)):0>b&&goog.array.ARRAY_PROTOTYPE_.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1);goog.array.ARRAY_PROTOTYPE_.splice.call(a,c,0,b[0])};
-goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=0;;c++){for(var d=[],e=0;e<arguments.length;e++){var f=arguments[e];if(c>=f.length)return b;d.push(f[c])}b.push(d)}};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
-goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};
-goog.math.sign=function(a){return 0==a?0:0>a?-1:1};goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k<f+1;k++)g[0][k]=0;for(h=1;h<=e;h++)for(k=1;k<=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0<h&&0<k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]>g[h][k-1]?h--:k--;return l};
-goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return b=goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};
-goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.floor(a+(b||2E-15))};goog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.ceil(a-(b||2E-15))};goog.i18n={};
-goog.i18n.CompactNumberFormatSymbols_af={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0m"},1E7:{other:"00\u00a0m"},1E8:{other:"000\u00a0m"},1E9:{other:"0\u00a0mjd"},1E10:{other:"00\u00a0mjd"},1E11:{other:"000\u00a0mjd"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duisend"},1E4:{other:"00 duisend"},1E5:{other:"000 duisend"},1E6:{other:"0 miljoen"},1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},
-1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_af_ZA=goog.i18n.CompactNumberFormatSymbols_af;
-goog.i18n.CompactNumberFormatSymbols_am={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u123a"},1E4:{other:"00\u00a0\u123a"},1E5:{other:"000\u00a0\u123a"},1E6:{other:"0\u00a0\u121c\u1275\u122d"},1E7:{other:"00\u00a0\u121c\u1275\u122d"},1E8:{other:"000\u00a0\u121c\u1275\u122d"},1E9:{other:"0\u00a0\u1262"},1E10:{other:"00\u00a0\u1262"},1E11:{other:"000\u00a0\u1262"},1E12:{other:"0\u00a0\u1275"},1E13:{other:"00\u00a0\u1275"},1E14:{other:"000\u00a0\u1275"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u123a"},
-1E4:{other:"00 \u123a"},1E5:{other:"000 \u123a"},1E6:{other:"0 \u121a\u120a\u12ee\u1295"},1E7:{other:"00 \u121a\u120a\u12ee\u1295"},1E8:{other:"000 \u121a\u120a\u12ee\u1295"},1E9:{other:"0 \u1262\u120a\u12ee\u1295"},1E10:{other:"00 \u1262\u120a\u12ee\u1295"},1E11:{other:"000 \u1262\u120a\u12ee\u1295"},1E12:{other:"0 \u1275\u122a\u120a\u12ee\u1295"},1E13:{other:"00 \u1275\u122a\u120a\u12ee\u1295"},1E14:{other:"000 \u1275\u122a\u120a\u12ee\u1295"}}};goog.i18n.CompactNumberFormatSymbols_am_ET=goog.i18n.CompactNumberFormatSymbols_am;
-goog.i18n.CompactNumberFormatSymbols_ar={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0623\u0644\u0641"},1E4:{other:"00\u00a0\u0623\u0644\u0641"},1E5:{other:"000\u00a0\u0623\u0644\u0641"},1E6:{other:"0\u00a0\u0645\u0644\u064a\u0648"},1E7:{other:"00\u00a0\u0645\u0644\u064a\u0648"},1E8:{other:"000\u00a0\u0645\u0644\u064a\u0648"},1E9:{other:"0\u00a0\u0628\u0644\u064a\u0648"},1E10:{other:"00\u00a0\u0628\u0644\u064a\u0648"},1E11:{other:"000\u00a0\u0628\u0644\u064a\u0648"},1E12:{other:"0\u00a0\u062a\u0631\u0644\u064a\u0648"},
-1E13:{other:"00\u00a0\u062a\u0631\u0644\u064a\u0648"},1E14:{other:"000\u00a0\u062a\u0631\u0644\u064a\u0648"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0623\u0644\u0641"},1E4:{other:"00 \u0623\u0644\u0641"},1E5:{other:"000 \u0623\u0644\u0641"},1E6:{other:"0 \u0645\u0644\u064a\u0648\u0646"},1E7:{other:"00 \u0645\u0644\u064a\u0648\u0646"},1E8:{other:"000 \u0645\u0644\u064a\u0648\u0646"},1E9:{other:"0 \u0628\u0644\u064a\u0648\u0646"},1E10:{other:"00 \u0628\u0644\u064a\u0648\u0646"},1E11:{other:"000 \u0628\u0644\u064a\u0648\u0646"},
-1E12:{other:"0 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E13:{other:"00 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E14:{other:"000 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"}}};goog.i18n.CompactNumberFormatSymbols_ar_001=goog.i18n.CompactNumberFormatSymbols_ar;goog.i18n.CompactNumberFormatSymbols_ar_EG=goog.i18n.CompactNumberFormatSymbols_ar;
-goog.i18n.CompactNumberFormatSymbols_bg={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0425"},1E4:{other:"00\u00a0\u0425"},1E5:{other:"000\u00a0\u0425"},1E6:{other:"0\u00a0\u041c"},1E7:{other:"00\u00a0\u041c"},1E8:{other:"000\u00a0\u041c"},1E9:{other:"0\u00a0\u0411"},1E10:{other:"00\u00a0\u0411"},1E11:{other:"000\u00a0\u0411"},1E12:{other:"0\u00a0\u0422"},1E13:{other:"00\u00a0\u0422"},1E14:{other:"000\u00a0\u0422"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u043b\u044f\u0434\u0438"},
-1E4:{other:"00 \u0445\u0438\u043b\u044f\u0434\u0438"},1E5:{other:"000 \u0445\u0438\u043b\u044f\u0434\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},
-1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_bg_BG=goog.i18n.CompactNumberFormatSymbols_bg;
-goog.i18n.CompactNumberFormatSymbols_bn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u09b9\u09be\u099c\u09be\u09b0"},1E4:{other:"00 \u09b9\u09be\u099c\u09be\u09b0"},1E5:{other:"000 \u09b9\u09be\u099c\u09be\u09b0"},1E6:{other:"0 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},
-1E7:{other:"00 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E8:{other:"000 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E9:{other:"0 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E10:{other:"00 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E11:{other:"000 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E12:{other:"0 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E13:{other:"00 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E14:{other:"000 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"}}};
-goog.i18n.CompactNumberFormatSymbols_bn_BD=goog.i18n.CompactNumberFormatSymbols_bn;goog.i18n.CompactNumberFormatSymbols_br={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_br_FR=goog.i18n.CompactNumberFormatSymbols_br;
-goog.i18n.CompactNumberFormatSymbols_ca={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milions"},1E7:{other:"00 milions"},
-1E8:{other:"000 milions"},1E9:{other:"0 miliards"},1E10:{other:"00 miliards"},1E11:{other:"000 miliards"},1E12:{other:"0 bilions"},1E13:{other:"00 bilions"},1E14:{other:"000 bilions"}}};goog.i18n.CompactNumberFormatSymbols_ca_AD=goog.i18n.CompactNumberFormatSymbols_ca;goog.i18n.CompactNumberFormatSymbols_ca_ES=goog.i18n.CompactNumberFormatSymbols_ca;
-goog.i18n.CompactNumberFormatSymbols_chr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_chr_US=goog.i18n.CompactNumberFormatSymbols_chr;
-goog.i18n.CompactNumberFormatSymbols_cs={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 milion\u016f"},1E7:{other:"00 milion\u016f"},1E8:{other:"000 milion\u016f"},1E9:{other:"0 miliard"},1E10:{other:"00 miliard"},1E11:{other:"000 miliard"},1E12:{other:"0 bilion\u016f"},1E13:{other:"00 bilion\u016f"},1E14:{other:"000 bilion\u016f"}}};goog.i18n.CompactNumberFormatSymbols_cs_CZ=goog.i18n.CompactNumberFormatSymbols_cs;
-goog.i18n.CompactNumberFormatSymbols_cy={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 miliwn"},1E7:{other:"00 miliwn"},1E8:{other:"000 miliwn"},1E9:{other:"0 biliwn"},1E10:{other:"00 biliwn"},
-1E11:{other:"000 biliwn"},1E12:{other:"0 triliwn"},1E13:{other:"00 triliwn"},1E14:{other:"000 triliwn"}}};goog.i18n.CompactNumberFormatSymbols_cy_GB=goog.i18n.CompactNumberFormatSymbols_cy;
-goog.i18n.CompactNumberFormatSymbols_da={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mio"},1E7:{other:"00\u00a0mio"},1E8:{other:"000\u00a0mio"},1E9:{other:"0\u00a0mia"},1E10:{other:"00\u00a0mia"},1E11:{other:"000\u00a0mia"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusind"},1E4:{other:"00 tusind"},1E5:{other:"000 tusind"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_da_DK=goog.i18n.CompactNumberFormatSymbols_da;
-goog.i18n.CompactNumberFormatSymbols_de={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};
-goog.i18n.CompactNumberFormatSymbols_de_AT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_BE=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_de_CH={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_DE=goog.i18n.CompactNumberFormatSymbols_de;goog.i18n.CompactNumberFormatSymbols_de_LU=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_el={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u03c7\u03b9\u03bb."},1E4:{other:"00\u00a0\u03c7\u03b9\u03bb."},1E5:{other:"000\u00a0\u03c7\u03b9\u03bb."},1E6:{other:"0\u00a0\u03b5\u03ba."},1E7:{other:"00\u00a0\u03b5\u03ba."},1E8:{other:"000\u00a0\u03b5\u03ba."},1E9:{other:"0\u00a0\u03b4\u03b9\u03c2"},1E10:{other:"00\u00a0\u03b4\u03b9\u03c2"},1E11:{other:"000\u00a0\u03b4\u03b9\u03c2"},1E12:{other:"0\u00a0\u03c4\u03c1\u03b9\u03c2"},1E13:{other:"00\u00a0\u03c4\u03c1\u03b9\u03c2"},
-1E14:{other:"000\u00a0\u03c4\u03c1\u03b9\u03c2"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E4:{other:"00 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E5:{other:"000 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E6:{other:"0 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E7:{other:"00 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E8:{other:"000 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E9:{other:"0 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E10:{other:"00 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E11:{other:"000 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E12:{other:"0 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E13:{other:"00 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E14:{other:"000 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"}}};goog.i18n.CompactNumberFormatSymbols_el_GR=goog.i18n.CompactNumberFormatSymbols_el;
-goog.i18n.CompactNumberFormatSymbols_en={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_AS=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_AU={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_FM=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_GB={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_GU=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_IE={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_en_IN={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_MH=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_MP=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PR=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PW=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_SG={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_TC=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_UM=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_VG=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_VI=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_ZA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_es={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00\u00a0K\u00a0M"},1E11:{other:"000\u00a0K\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},
-1E7:{other:"00 millones"},1E8:{other:"000 millones"},1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};
-goog.i18n.CompactNumberFormatSymbols_es_419={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0k\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},1E7:{other:"00 millones"},1E8:{other:"000 millones"},
-1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};goog.i18n.CompactNumberFormatSymbols_es_EA=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_ES=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_IC=goog.i18n.CompactNumberFormatSymbols_es;
-goog.i18n.CompactNumberFormatSymbols_et={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tuh"},1E4:{other:"00\u00a0tuh"},1E5:{other:"000\u00a0tuh"},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0trl"},1E13:{other:"00\u00a0trl"},1E14:{other:"000\u00a0trl"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhat"},1E4:{other:"00 tuhat"},1E5:{other:"000 tuhat"},1E6:{other:"0 miljonit"},
-1E7:{other:"00 miljonit"},1E8:{other:"000 miljonit"},1E9:{other:"0 miljardit"},1E10:{other:"00 miljardit"},1E11:{other:"000 miljardit"},1E12:{other:"0 triljonit"},1E13:{other:"00 triljonit"},1E14:{other:"000 triljonit"}}};goog.i18n.CompactNumberFormatSymbols_et_EE=goog.i18n.CompactNumberFormatSymbols_et;
-goog.i18n.CompactNumberFormatSymbols_eu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milioi"},1E7:{other:"00 milioi"},1E8:{other:"000 milioi"},1E9:{other:"0000 milioi"},
-1E10:{other:"00000 milioi"},1E11:{other:"000000 milioi"},1E12:{other:"0 bilioi"},1E13:{other:"00 bilioi"},1E14:{other:"000 bilioi"}}};goog.i18n.CompactNumberFormatSymbols_eu_ES=goog.i18n.CompactNumberFormatSymbols_eu;
-goog.i18n.CompactNumberFormatSymbols_fa={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0647\u0632\u0627\u0631"},1E4:{other:"00 \u0647\u0632\u0627\u0631"},1E5:{other:"000 \u0647\u0632\u0627\u0631"},1E6:{other:"0 \u0645\u06cc\u0644\u06cc\u0648\u0646"},
-1E7:{other:"00 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E8:{other:"000 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E9:{other:"0 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E10:{other:"00 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E11:{other:"000 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E12:{other:"0 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E13:{other:"00 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E14:{other:"000 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"}}};
-goog.i18n.CompactNumberFormatSymbols_fa_IR=goog.i18n.CompactNumberFormatSymbols_fa;
-goog.i18n.CompactNumberFormatSymbols_fi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t."},1E4:{other:"00\u00a0t."},1E5:{other:"000\u00a0t."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bilj."},1E13:{other:"00\u00a0bilj."},1E14:{other:"000\u00a0bilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhatta"},1E4:{other:"00 tuhatta"},1E5:{other:"000 tuhatta"},
-1E6:{other:"0 miljoonaa"},1E7:{other:"00 miljoonaa"},1E8:{other:"000 miljoonaa"},1E9:{other:"0 miljardia"},1E10:{other:"00 miljardia"},1E11:{other:"000 miljardia"},1E12:{other:"0 biljoonaa"},1E13:{other:"00 biljoonaa"},1E14:{other:"000 biljoonaa"}}};goog.i18n.CompactNumberFormatSymbols_fi_FI=goog.i18n.CompactNumberFormatSymbols_fi;
-goog.i18n.CompactNumberFormatSymbols_fil={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};goog.i18n.CompactNumberFormatSymbols_fil_PH=goog.i18n.CompactNumberFormatSymbols_fil;
-goog.i18n.CompactNumberFormatSymbols_fr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_BL=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_CA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_FR=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GP=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MC=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_MF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MQ=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_RE=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_YT=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_gl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 mill\u00f3ns"},1E7:{other:"00 mill\u00f3ns"},
-1E8:{other:"000 mill\u00f3ns"},1E9:{other:"0 mil mill\u00f3ns"},1E10:{other:"00 mil mill\u00f3ns"},1E11:{other:"000 mil mill\u00f3ns"},1E12:{other:"0 bill\u00f3ns"},1E13:{other:"00 bill\u00f3ns"},1E14:{other:"000 bill\u00f3ns"}}};goog.i18n.CompactNumberFormatSymbols_gl_ES=goog.i18n.CompactNumberFormatSymbols_gl;
-goog.i18n.CompactNumberFormatSymbols_gsw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tsd"},1E4:{other:"00\u00a0tsd"},1E5:{other:"000\u00a0tsd"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tausend"},1E4:{other:"00 tausend"},1E5:{other:"000 tausend"},1E6:{other:"0 Millionen"},
-1E7:{other:"00 Millionen"},1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_gsw_CH=goog.i18n.CompactNumberFormatSymbols_gsw;
-goog.i18n.CompactNumberFormatSymbols_gu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0ab9\u0a9c\u0abe\u0ab0"},1E4:{other:"00 \u0ab9\u0a9c\u0abe\u0ab0"},1E5:{other:"000 \u0ab9\u0a9c\u0abe\u0ab0"},1E6:{other:"0 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},
-1E7:{other:"00 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E8:{other:"000 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E9:{other:"0 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E10:{other:"00 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E11:{other:"000 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E12:{other:"0 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E13:{other:"00 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E14:{other:"000 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"}}};
-goog.i18n.CompactNumberFormatSymbols_gu_IN=goog.i18n.CompactNumberFormatSymbols_gu;goog.i18n.CompactNumberFormatSymbols_haw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_haw_US=goog.i18n.CompactNumberFormatSymbols_haw;
-goog.i18n.CompactNumberFormatSymbols_he={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};goog.i18n.CompactNumberFormatSymbols_he_IL=goog.i18n.CompactNumberFormatSymbols_he;
-goog.i18n.CompactNumberFormatSymbols_hi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0L"},1E6:{other:"00L"},1E7:{other:"0Cr"},1E8:{other:"00Cr"},1E9:{other:"000Cr"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093c\u093e\u0930"},1E5:{other:"0 \u0932\u093e\u0916"},1E6:{other:"00 \u0932\u093e\u0916"},1E7:{other:"0 \u0915\u0930\u094b\u0921\u093c"},
-1E8:{other:"00 \u0915\u0930\u094b\u0921\u093c"},1E9:{other:"0 \u0905\u0930\u092c"},1E10:{other:"00 \u0905\u0930\u092c"},1E11:{other:"0 \u0916\u0930\u092c"},1E12:{other:"00 \u0916\u0930\u092c"},1E13:{other:"000 \u0916\u0930\u092c"},1E14:{other:"0000 \u0916\u0930\u092c"}}};goog.i18n.CompactNumberFormatSymbols_hi_IN=goog.i18n.CompactNumberFormatSymbols_hi;
-goog.i18n.CompactNumberFormatSymbols_hr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mlr."},1E10:{other:"00\u00a0mlr."},1E11:{other:"000\u00a0mlr."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milijuna"},1E7:{other:"00 milijuna"},1E8:{other:"000 milijuna"},
-1E9:{other:"0 milijarda"},1E10:{other:"00 milijarda"},1E11:{other:"000 milijarda"},1E12:{other:"0 bilijuna"},1E13:{other:"00 bilijuna"},1E14:{other:"000 bilijuna"}}};goog.i18n.CompactNumberFormatSymbols_hr_HR=goog.i18n.CompactNumberFormatSymbols_hr;
-goog.i18n.CompactNumberFormatSymbols_hu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0E"},1E4:{other:"00\u00a0E"},1E5:{other:"000\u00a0E"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ezer"},1E4:{other:"00 ezer"},1E5:{other:"000 ezer"},1E6:{other:"0 milli\u00f3"},1E7:{other:"00 milli\u00f3"},
-1E8:{other:"000 milli\u00f3"},1E9:{other:"0 milli\u00e1rd"},1E10:{other:"00 milli\u00e1rd"},1E11:{other:"000 milli\u00e1rd"},1E12:{other:"0 billi\u00f3"},1E13:{other:"00 billi\u00f3"},1E14:{other:"000 billi\u00f3"}}};goog.i18n.CompactNumberFormatSymbols_hu_HU=goog.i18n.CompactNumberFormatSymbols_hu;
-goog.i18n.CompactNumberFormatSymbols_id={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};goog.i18n.CompactNumberFormatSymbols_id_ID=goog.i18n.CompactNumberFormatSymbols_id;
-goog.i18n.CompactNumberFormatSymbols_in={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};
-goog.i18n.CompactNumberFormatSymbols_is={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u00fe."},1E4:{other:"00\u00a0\u00fe."},1E5:{other:"000\u00a0\u00fe."},1E6:{other:"0\u00a0m."},1E7:{other:"00\u00a0m."},1E8:{other:"000\u00a0m."},1E9:{other:"0\u00a0ma."},1E10:{other:"00\u00a0ma."},1E11:{other:"000\u00a0ma."},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u00fe\u00fasund"},1E4:{other:"00 \u00fe\u00fasund"},1E5:{other:"000 \u00fe\u00fasund"},
-1E6:{other:"0 millj\u00f3nir"},1E7:{other:"00 millj\u00f3nir"},1E8:{other:"000 millj\u00f3nir"},1E9:{other:"0 milljar\u00f0ar"},1E10:{other:"00 milljar\u00f0ar"},1E11:{other:"000 milljar\u00f0ar"},1E12:{other:"0 billj\u00f3nir"},1E13:{other:"00 billj\u00f3nir"},1E14:{other:"000 billj\u00f3nir"}}};goog.i18n.CompactNumberFormatSymbols_is_IS=goog.i18n.CompactNumberFormatSymbols_is;
-goog.i18n.CompactNumberFormatSymbols_it={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mln"},1E7:{other:"00\u00a0Mln"},1E8:{other:"000\u00a0Mln"},1E9:{other:"0\u00a0Mld"},1E10:{other:"00\u00a0Mld"},1E11:{other:"000\u00a0Mld"},1E12:{other:"0\u00a0Bln"},1E13:{other:"00\u00a0Bln"},1E14:{other:"000\u00a0Bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 migliaia"},1E4:{other:"00 migliaia"},1E5:{other:"000 migliaia"},1E6:{other:"0 milioni"},1E7:{other:"00 milioni"},
-1E8:{other:"000 milioni"},1E9:{other:"0 miliardi"},1E10:{other:"00 miliardi"},1E11:{other:"000 miliardi"},1E12:{other:"0 bilioni"},1E13:{other:"00 bilioni"},1E14:{other:"000 bilioni"}}};goog.i18n.CompactNumberFormatSymbols_it_IT=goog.i18n.CompactNumberFormatSymbols_it;goog.i18n.CompactNumberFormatSymbols_it_SM=goog.i18n.CompactNumberFormatSymbols_it;
-goog.i18n.CompactNumberFormatSymbols_iw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};
-goog.i18n.CompactNumberFormatSymbols_ja={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_ja_JP=goog.i18n.CompactNumberFormatSymbols_ja;
-goog.i18n.CompactNumberFormatSymbols_kn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E4:{other:"00 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E5:{other:"000 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E6:{other:"0 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},
-1E7:{other:"00 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E8:{other:"000 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E9:{other:"0 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E10:{other:"00 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E11:{other:"000 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E12:{other:"0 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E13:{other:"00 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E14:{other:"000 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"}}};
-goog.i18n.CompactNumberFormatSymbols_kn_IN=goog.i18n.CompactNumberFormatSymbols_kn;
-goog.i18n.CompactNumberFormatSymbols_ko={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},
-1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}}};goog.i18n.CompactNumberFormatSymbols_ko_KR=goog.i18n.CompactNumberFormatSymbols_ko;
-goog.i18n.CompactNumberFormatSymbols_ln={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_ln_CD=goog.i18n.CompactNumberFormatSymbols_ln;
-goog.i18n.CompactNumberFormatSymbols_lt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0G"},1E10:{other:"00\u00a0G"},1E11:{other:"000\u00a0G"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bkstan\u010di\u0173"},1E4:{other:"00 t\u016bkstan\u010di\u0173"},1E5:{other:"000 t\u016bkstan\u010di\u0173"},
-1E6:{other:"0 milijon\u0173"},1E7:{other:"00 milijon\u0173"},1E8:{other:"000 milijon\u0173"},1E9:{other:"0 milijard\u0173"},1E10:{other:"00 milijard\u0173"},1E11:{other:"000 milijard\u0173"},1E12:{other:"0 trilijon\u0173"},1E13:{other:"00 trilijon\u0173"},1E14:{other:"000 trilijon\u0173"}}};goog.i18n.CompactNumberFormatSymbols_lt_LT=goog.i18n.CompactNumberFormatSymbols_lt;
-goog.i18n.CompactNumberFormatSymbols_lv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t\u016bkst."},1E4:{other:"00\u00a0t\u016bkst."},1E5:{other:"000\u00a0t\u016bkst."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0trilj."},1E13:{other:"00\u00a0trilj."},1E14:{other:"000\u00a0trilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bksto\u0161i"},1E4:{other:"00 t\u016bksto\u0161i"},
-1E5:{other:"000 t\u016bksto\u0161i"},1E6:{other:"0 miljoni"},1E7:{other:"00 miljoni"},1E8:{other:"000 miljoni"},1E9:{other:"0 miljardi"},1E10:{other:"00 miljardi"},1E11:{other:"000 miljardi"},1E12:{other:"0 trilj."},1E13:{other:"00 trilj."},1E14:{other:"000 trilj."}}};goog.i18n.CompactNumberFormatSymbols_lv_LV=goog.i18n.CompactNumberFormatSymbols_lv;
-goog.i18n.CompactNumberFormatSymbols_ml={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E4:{other:"00 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E5:{other:"000 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E6:{other:"0 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},
-1E7:{other:"00 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E8:{other:"000 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E9:{other:"0 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E10:{other:"00 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E11:{other:"000 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E12:{other:"0 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E13:{other:"00 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E14:{other:"000 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"}}};
-goog.i18n.CompactNumberFormatSymbols_ml_IN=goog.i18n.CompactNumberFormatSymbols_ml;
-goog.i18n.CompactNumberFormatSymbols_mr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093e\u0930"},1E5:{other:"000 \u0939\u091c\u093e\u0930"},1E6:{other:"0 \u0926\u0936\u0932\u0915\u094d\u0937"},
-1E7:{other:"00 \u0926\u0936\u0932\u0915\u094d\u0937"},1E8:{other:"000 \u0926\u0936\u0932\u0915\u094d\u0937"},1E9:{other:"0 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E10:{other:"00 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E11:{other:"000 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E12:{other:"0 \u0926\u0939\u093e \u0916\u0930\u092c"},1E13:{other:"00 \u0926\u0939\u093e \u0916\u0930\u092c"},1E14:{other:"000 \u0926\u0939\u093e \u0916\u0930\u092c"}}};
-goog.i18n.CompactNumberFormatSymbols_mr_IN=goog.i18n.CompactNumberFormatSymbols_mr;
-goog.i18n.CompactNumberFormatSymbols_ms={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0J"},1E7:{other:"00J"},1E8:{other:"000J"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},1E8:{other:"000 juta"},1E9:{other:"0 bilion"},1E10:{other:"00 bilion"},
-1E11:{other:"000 bilion"},1E12:{other:"0 trilion"},1E13:{other:"00 trilion"},1E14:{other:"000 trilion"}}};goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY=goog.i18n.CompactNumberFormatSymbols_ms;goog.i18n.CompactNumberFormatSymbols_mt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_mt_MT=goog.i18n.CompactNumberFormatSymbols_mt;
-goog.i18n.CompactNumberFormatSymbols_nb={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_nb_NO=goog.i18n.CompactNumberFormatSymbols_nb;
-goog.i18n.CompactNumberFormatSymbols_nl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0\u00a0mln."},1E7:{other:"00\u00a0mln."},1E8:{other:"000\u00a0mln."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bln."},1E13:{other:"00\u00a0bln."},1E14:{other:"000\u00a0bln."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duizend"},1E4:{other:"00 duizend"},1E5:{other:"000 duizend"},1E6:{other:"0 miljoen"},
-1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_nl_NL=goog.i18n.CompactNumberFormatSymbols_nl;
-goog.i18n.CompactNumberFormatSymbols_no={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_or={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_or_IN=goog.i18n.CompactNumberFormatSymbols_or;
-goog.i18n.CompactNumberFormatSymbols_pl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tys."},1E4:{other:"00\u00a0tys."},1E5:{other:"000\u00a0tys."},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0bln"},1E13:{other:"00\u00a0bln"},1E14:{other:"000\u00a0bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tysi\u0105ca"},1E4:{other:"00 tysi\u0105ca"},1E5:{other:"000 tysi\u0105ca"},
-1E6:{other:"0 miliona"},1E7:{other:"00 miliona"},1E8:{other:"000 miliona"},1E9:{other:"0 miliarda"},1E10:{other:"00 miliarda"},1E11:{other:"000 miliarda"},1E12:{other:"0 biliona"},1E13:{other:"00 biliona"},1E14:{other:"000 biliona"}}};goog.i18n.CompactNumberFormatSymbols_pl_PL=goog.i18n.CompactNumberFormatSymbols_pl;
-goog.i18n.CompactNumberFormatSymbols_pt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0mi"},1E7:{other:"00\u00a0mi"},1E8:{other:"000\u00a0mi"},1E9:{other:"0\u00a0bi"},1E10:{other:"00\u00a0bi"},1E11:{other:"000\u00a0bi"},1E12:{other:"0\u00a0tri"},1E13:{other:"00\u00a0tri"},1E14:{other:"000\u00a0tri"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 bilh\u00f5es"},1E10:{other:"00 bilh\u00f5es"},1E11:{other:"000 bilh\u00f5es"},1E12:{other:"0 trilh\u00f5es"},1E13:{other:"00 trilh\u00f5es"},1E14:{other:"000 trilh\u00f5es"}}};goog.i18n.CompactNumberFormatSymbols_pt_BR=goog.i18n.CompactNumberFormatSymbols_pt;
-goog.i18n.CompactNumberFormatSymbols_pt_PT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0MM"},1E10:{other:"00\u00a0MM"},1E11:{other:"000\u00a0MM"},1E12:{other:"0\u00a0Bi"},1E13:{other:"00\u00a0Bi"},1E14:{other:"000\u00a0Bi"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 mil milh\u00f5es"},1E10:{other:"00 mil milh\u00f5es"},1E11:{other:"000 mil milh\u00f5es"},1E12:{other:"0 bili\u00f5es"},1E13:{other:"00 bili\u00f5es"},1E14:{other:"000 bili\u00f5es"}}};
-goog.i18n.CompactNumberFormatSymbols_ro={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 de mii"},1E4:{other:"00 de mii"},1E5:{other:"000 de mii"},1E6:{other:"0 de milioane"},
-1E7:{other:"00 de milioane"},1E8:{other:"000 de milioane"},1E9:{other:"0 de miliarde"},1E10:{other:"00 de miliarde"},1E11:{other:"000 de miliarde"},1E12:{other:"0 de trilioane"},1E13:{other:"00 de trilioane"},1E14:{other:"000 de trilioane"}}};goog.i18n.CompactNumberFormatSymbols_ro_RO=goog.i18n.CompactNumberFormatSymbols_ro;
-goog.i18n.CompactNumberFormatSymbols_ru={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u044b\u0441."},1E4:{other:"00\u00a0\u0442\u044b\u0441."},1E5:{other:"000\u00a0\u0442\u044b\u0441."},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u044b\u0441\u044f\u0447\u0438"},1E4:{other:"00 \u0442\u044b\u0441\u044f\u0447\u0438"},1E5:{other:"000 \u0442\u044b\u0441\u044f\u0447\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_ru_RU=goog.i18n.CompactNumberFormatSymbols_ru;
-goog.i18n.CompactNumberFormatSymbols_sk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tis\u00edc"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 mili\u00f3nov"},1E7:{other:"00 mili\u00f3nov"},1E8:{other:"000 mili\u00f3nov"},1E9:{other:"0 miliard"},1E10:{other:"00 mili\u00e1rd"},1E11:{other:"000 mili\u00e1rd"},1E12:{other:"0 bili\u00f3nov"},1E13:{other:"00 bili\u00f3nov"},1E14:{other:"000 bili\u00f3nov"}}};goog.i18n.CompactNumberFormatSymbols_sk_SK=goog.i18n.CompactNumberFormatSymbols_sk;
-goog.i18n.CompactNumberFormatSymbols_sl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mio."},1E7:{other:"00\u00a0mio."},1E8:{other:"000\u00a0mio."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tiso\u010d"},1E4:{other:"00 tiso\u010d"},1E5:{other:"000 tiso\u010d"},
-1E6:{other:"0 milijonov"},1E7:{other:"00 milijonov"},1E8:{other:"000 milijonov"},1E9:{other:"0 milijard"},1E10:{other:"00 milijard"},1E11:{other:"000 milijard"},1E12:{other:"0 bilijonov"},1E13:{other:"00 bilijonov"},1E14:{other:"000 bilijonov"}}};goog.i18n.CompactNumberFormatSymbols_sl_SI=goog.i18n.CompactNumberFormatSymbols_sl;
-goog.i18n.CompactNumberFormatSymbols_sq={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_sq_AL=goog.i18n.CompactNumberFormatSymbols_sq;
-goog.i18n.CompactNumberFormatSymbols_sr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0\u0445\u0438\u0459"},1E5:{other:"000\u00a0\u0445\u0438\u0459"},1E6:{other:"0\u00a0\u043c\u0438\u043b"},1E7:{other:"00\u00a0\u043c\u0438\u043b"},1E8:{other:"000\u00a0\u043c\u0438\u043b"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0431\u0438\u043b"},1E13:{other:"00\u00a0\u0431\u0438\u043b"},
-1E14:{other:"000\u00a0\u0431\u0438\u043b"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u0459\u0430\u0434\u0430"},1E4:{other:"00 \u0445\u0438\u0459\u0430\u0434\u0430"},1E5:{other:"000 \u0445\u0438\u0459\u0430\u0434\u0430"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},
-1E11:{other:"000 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS=goog.i18n.CompactNumberFormatSymbols_sr;
-goog.i18n.CompactNumberFormatSymbols_sv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tn"},1E4:{other:"00\u00a0tn"},1E5:{other:"000\u00a0tn"},1E6:{other:"0\u00a0mn"},1E7:{other:"00\u00a0mn"},1E8:{other:"000\u00a0mn"},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 miljoner"},
-1E7:{other:"00 miljoner"},1E8:{other:"000 miljoner"},1E9:{other:"0 miljarder"},1E10:{other:"00 miljarder"},1E11:{other:"000 miljarder"},1E12:{other:"0 biljoner"},1E13:{other:"00 biljoner"},1E14:{other:"000 biljoner"}}};goog.i18n.CompactNumberFormatSymbols_sv_SE=goog.i18n.CompactNumberFormatSymbols_sv;
-goog.i18n.CompactNumberFormatSymbols_sw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"elfu\u00a00"},1E4:{other:"elfu\u00a000"},1E5:{other:"laki0"},1E6:{other:"M0"},1E7:{other:"M00"},1E8:{other:"M000"},1E9:{other:"B0"},1E10:{other:"B00"},1E11:{other:"B000"},1E12:{other:"T0"},1E13:{other:"T00"},1E14:{other:"T000"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"Elfu 0"},1E4:{other:"Elfu 00"},1E5:{other:"Elfu 000"},1E6:{other:"Milioni 0"},1E7:{other:"Milioni 00"},1E8:{other:"Milioni 000"},1E9:{other:"Bilioni 0"},
-1E10:{other:"Bilioni 00"},1E11:{other:"Bilioni 000"},1E12:{other:"Trilioni 0"},1E13:{other:"Trilioni 00"},1E14:{other:"Trilioni 000"}}};goog.i18n.CompactNumberFormatSymbols_sw_TZ=goog.i18n.CompactNumberFormatSymbols_sw;
-goog.i18n.CompactNumberFormatSymbols_ta={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E4:{other:"00 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E5:{other:"000 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E6:{other:"0 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E7:{other:"00 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E8:{other:"000 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E9:{other:"0 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E10:{other:"00 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E11:{other:"000 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E12:{other:"0 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E13:{other:"00 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E14:{other:"000 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"}}};goog.i18n.CompactNumberFormatSymbols_ta_IN=goog.i18n.CompactNumberFormatSymbols_ta;
-goog.i18n.CompactNumberFormatSymbols_te={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0c35\u0c47\u0c32\u0c41"},1E4:{other:"00 \u0c35\u0c47\u0c32\u0c41"},1E5:{other:"000 \u0c35\u0c47\u0c32\u0c41"},1E6:{other:"0 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},
-1E7:{other:"00 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E8:{other:"000 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E9:{other:"0 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E10:{other:"00 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E11:{other:"000 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E12:{other:"0 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E13:{other:"00 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E14:{other:"000 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"}}};
-goog.i18n.CompactNumberFormatSymbols_te_IN=goog.i18n.CompactNumberFormatSymbols_te;
-goog.i18n.CompactNumberFormatSymbols_th={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0e1e."},1E4:{other:"0\u00a0\u0e21."},1E5:{other:"0\u00a0\u0e2a."},1E6:{other:"0\u00a0\u0e25."},1E7:{other:"00\u00a0\u0e25."},1E8:{other:"000\u00a0\u0e25."},1E9:{other:"0\u00a0\u0e1e.\u0e25."},1E10:{other:"0\u00a0\u0e21.\u0e25."},1E11:{other:"0\u00a0\u0e2a.\u0e25."},1E12:{other:"0\u00a0\u0e25.\u0e25."},1E13:{other:"00\u00a0\u0e25.\u0e25."},1E14:{other:"000\u00a0\u0e25.\u0e25."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0e1e\u0e31\u0e19"},
-1E4:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19"},1E5:{other:"0 \u0e41\u0e2a\u0e19"},1E6:{other:"0 \u0e25\u0e49\u0e32\u0e19"},1E7:{other:"00 \u0e25\u0e49\u0e32\u0e19"},1E8:{other:"000 \u0e25\u0e49\u0e32\u0e19"},1E9:{other:"0 \u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19"},1E10:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19\u0e25\u0e49\u0e32\u0e19"},1E11:{other:"0 \u0e41\u0e2a\u0e19\u0e25\u0e49\u0e32\u0e19"},1E12:{other:"0 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},1E13:{other:"00 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},
-1E14:{other:"000 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"}}};goog.i18n.CompactNumberFormatSymbols_th_TH=goog.i18n.CompactNumberFormatSymbols_th;
-goog.i18n.CompactNumberFormatSymbols_tl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};
-goog.i18n.CompactNumberFormatSymbols_tr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0B"},1E5:{other:"000\u00a0B"},1E6:{other:"0\u00a0Mn"},1E7:{other:"00\u00a0Mn"},1E8:{other:"000\u00a0Mn"},1E9:{other:"0\u00a0Mr"},1E10:{other:"00\u00a0Mr"},1E11:{other:"000\u00a0Mr"},1E12:{other:"0\u00a0Tn"},1E13:{other:"00\u00a0Tn"},1E14:{other:"000\u00a0Tn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 bin"},1E4:{other:"00 bin"},1E5:{other:"000 bin"},1E6:{other:"0 milyon"},1E7:{other:"00 milyon"},
-1E8:{other:"000 milyon"},1E9:{other:"0 milyar"},1E10:{other:"00 milyar"},1E11:{other:"000 milyar"},1E12:{other:"0 trilyon"},1E13:{other:"00 trilyon"},1E14:{other:"000 trilyon"}}};goog.i18n.CompactNumberFormatSymbols_tr_TR=goog.i18n.CompactNumberFormatSymbols_tr;
-goog.i18n.CompactNumberFormatSymbols_uk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u0438\u0441"},1E4:{other:"00\u00a0\u0442\u0438\u0441"},1E5:{other:"000\u00a0\u0442\u0438\u0441"},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u0438\u0441\u044f\u0447\u0456"},1E4:{other:"00 \u0442\u0438\u0441\u044f\u0447\u0456"},1E5:{other:"000 \u0442\u0438\u0441\u044f\u0447\u0456"},1E6:{other:"0 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_uk_UA=goog.i18n.CompactNumberFormatSymbols_uk;
-goog.i18n.CompactNumberFormatSymbols_ur={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u06c1\u0632\u0627\u0631"},1E4:{other:"00\u00a0\u06c1\u0632\u0627\u0631"},1E5:{other:"0\u00a0\u0644\u0627\u06a9\u06be"},1E6:{other:"00\u00a0\u0644\u0627\u06a9\u06be"},1E7:{other:"0\u00a0\u06a9\u0631\u0648\u0691"},1E8:{other:"00\u00a0\u06a9\u0631\u0648\u0691"},1E9:{other:"0\u00a0\u0627\u0631\u0628"},1E10:{other:"00\u00a0\u0627\u0631\u0628"},1E11:{other:"0\u00a0\u06a9\u06be\u0631\u0628"},1E12:{other:"00\u00a0\u06a9\u06be\u0631\u0628"},
-1E13:{other:"000\u00a0\u06a9\u06be\u0631\u0628"},1E14:{other:"0000\u00a0\u06a9\u06be\u0631\u0628"}}};goog.i18n.CompactNumberFormatSymbols_ur_PK=goog.i18n.CompactNumberFormatSymbols_ur;
-goog.i18n.CompactNumberFormatSymbols_vi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0N"},1E4:{other:"00\u00a0N"},1E5:{other:"000\u00a0N"},1E6:{other:"0\u00a0Tr"},1E7:{other:"00\u00a0Tr"},1E8:{other:"000\u00a0Tr"},1E9:{other:"0\u00a0T"},1E10:{other:"00\u00a0T"},1E11:{other:"000\u00a0T"},1E12:{other:"0\u00a0NT"},1E13:{other:"00\u00a0NT"},1E14:{other:"000\u00a0NT"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ngh\u00ecn"},1E4:{other:"00 ngh\u00ecn"},1E5:{other:"000 ngh\u00ecn"},1E6:{other:"0 tri\u1ec7u"},
-1E7:{other:"00 tri\u1ec7u"},1E8:{other:"000 tri\u1ec7u"},1E9:{other:"0 t\u1ef7"},1E10:{other:"00 t\u1ef7"},1E11:{other:"000 t\u1ef7"},1E12:{other:"0 ngh\u00ecn t\u1ef7"},1E13:{other:"00 ngh\u00ecn t\u1ef7"},1E14:{other:"000 ngh\u00ecn t\u1ef7"}}};goog.i18n.CompactNumberFormatSymbols_vi_VN=goog.i18n.CompactNumberFormatSymbols_vi;
-goog.i18n.CompactNumberFormatSymbols_zh={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}}};goog.i18n.CompactNumberFormatSymbols_zh_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_HK={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_TW={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};
-goog.i18n.CompactNumberFormatSymbols_zu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 inkulungwane"},1E4:{other:"00 inkulungwane"},1E5:{other:"000 inkulungwane"},1E6:{other:"0 isigidi"},1E7:{other:"00 isigidi"},1E8:{other:"000 isigidi"},1E9:{other:"0 isigidi sezigidi"},
-1E10:{other:"00 isigidi sezigidi"},1E11:{other:"000 isigidi sezigidi"},1E12:{other:"0 isigidintathu"},1E13:{other:"00 isigidintathu"},1E14:{other:"000 isigidintathu"}}};goog.i18n.CompactNumberFormatSymbols_zu_ZA=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;"af"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af);
-if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg;
-"bn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn);if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca);
-if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr;
-"cs"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs;"cy"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da);
-if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el);
-if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_AU;
-if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_GB;if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_SG;if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et;
-"eu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu);if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi);
-if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi;"fil"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr);
-if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr_CA;if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl);if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl;
-"gsw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he;
-"hi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi);if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu);
-if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu;"id"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is);
-if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is;"it"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;
-"iw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja);if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn;
-"ko"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko;"ln"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt);
-if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv);if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml);
-if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr;"ms"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms);
-if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt);
-if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro;
-"ru"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru;"sk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl);
-if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq);if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr);
-if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv;"sw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw);
-if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur);
-if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur;"vi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_HK;if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_TW;
-"zu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.currency={};goog.i18n.currency.PRECISION_MASK_=7;goog.i18n.currency.POSITION_FLAG_=16;goog.i18n.currency.SPACE_FLAG_=32;goog.i18n.currency.tier2Enabled_=!1;goog.i18n.currency.addTier2Support=function(){if(!goog.i18n.currency.tier2Enabled_){for(var a in goog.i18n.currency.CurrencyInfoTier2)goog.i18n.currency.CurrencyInfo[a]=goog.i18n.currency.CurrencyInfoTier2[a];goog.i18n.currency.tier2Enabled_=!0}};
-goog.i18n.currency.getGlobalCurrencyPattern=function(a){var b=goog.i18n.currency.CurrencyInfo[a],c=b[0];return a==b[1]?goog.i18n.currency.getCurrencyPattern_(c,b[1]):a+" "+goog.i18n.currency.getCurrencyPattern_(c,b[1])};goog.i18n.currency.getGlobalCurrencySign=function(a){var b=goog.i18n.currency.CurrencyInfo[a];return a==b[1]?a:a+" "+b[1]};goog.i18n.currency.getLocalCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[1])};
-goog.i18n.currency.getLocalCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][1]};goog.i18n.currency.getPortableCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[2])};goog.i18n.currency.getPortableCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][2]};goog.i18n.currency.isPrefixSignPosition=function(a){return 0==(goog.i18n.currency.CurrencyInfo[a][0]&goog.i18n.currency.POSITION_FLAG_)};
-goog.i18n.currency.getCurrencyPattern_=function(a,b){var c=["#,##0"],d=a&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}0==(a&goog.i18n.currency.POSITION_FLAG_)?(c.unshift(a&goog.i18n.currency.SPACE_FLAG_?"' ":"'"),c.unshift(b),c.unshift("'")):c.push(a&goog.i18n.currency.SPACE_FLAG_?" '":"'",b,"'");return c.join("")};
-goog.i18n.currency.adjustPrecision=function(a,b){var c=["0"],d=goog.i18n.currency.CurrencyInfo[b],d=d[0]&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}return a.replace(/0.00/g,c.join(""))};
-goog.i18n.currency.CurrencyInfo={AED:[2,"dh","\u062f.\u0625.","DH"],ALL:[0,"Lek","Lek"],AUD:[2,"$","AU$"],BDT:[2,"\u09f3","Tk"],BGN:[2,"lev","lev"],BRL:[2,"R$","R$"],CAD:[2,"$","C$"],CDF:[2,"FrCD","CDF"],CHF:[2,"CHF","CHF"],CLP:[0,"$","CL$"],CNY:[2,"\u00a5","RMB\u00a5"],COP:[0,"$","COL$"],CRC:[0,"\u20a1","CR\u20a1"],CZK:[50,"K\u010d","K\u010d"],DKK:[18,"kr","kr"],DOP:[2,"$","RD$"],EGP:[2,"\u00a3","LE"],ETB:[2,"Birr","Birr"],EUR:[2,"\u20ac","\u20ac"],GBP:[2,"\u00a3","GB\u00a3"],HKD:[2,"$","HK$"],HRK:[2,
-"kn","kn"],HUF:[0,"Ft","Ft"],IDR:[0,"Rp","Rp"],ILS:[2,"\u20aa","IL\u20aa"],INR:[2,"\u20b9","Rs"],IRR:[0,"Rial","IRR"],ISK:[0,"kr","kr"],JMD:[2,"$","JA$"],JPY:[0,"\u00a5","JP\u00a5"],KRW:[0,"\u20a9","KR\u20a9"],LKR:[2,"Rs","SLRs"],LTL:[2,"Lt","Lt"],LVL:[2,"Ls","Ls"],MNT:[0,"\u20ae","MN\u20ae"],MXN:[2,"$","Mex$"],MYR:[2,"RM","RM"],NOK:[50,"kr","NOkr"],PAB:[2,"B/.","B/."],PEN:[2,"S/.","S/."],PHP:[2,"\u20b1","Php"],PKR:[0,"Rs","PKRs."],PLN:[50,"z\u0142","z\u0142"],RON:[2,"RON","RON"],RSD:[0,"din","RSD"],
-RUB:[50,"\u0440\u0443\u0431.","\u0440\u0443\u0431."],SAR:[2,"Rial","Rial"],SEK:[2,"kr","kr"],SGD:[2,"$","S$"],THB:[2,"\u0e3f","THB"],TRY:[2,"TL","YTL"],TWD:[2,"NT$","NT$"],TZS:[0,"TSh","TSh"],UAH:[2,"\u20b4","UAH"],USD:[2,"$","US$"],UYU:[2,"$","$U"],VND:[0,"\u20ab","VN\u20ab"],YER:[0,"Rial","Rial"],ZAR:[2,"R","ZAR"]};
-goog.i18n.currency.CurrencyInfoTier2={AFN:[48,"Af.","AFN"],AMD:[0,"Dram","dram"],AOA:[2,"Kz","Kz"],ARS:[2,"$","AR$"],AWG:[2,"Afl.","Afl."],AZN:[2,"man.","man."],BAM:[2,"KM","KM"],BBD:[2,"$","Bds$"],BHD:[3,"din","din"],BIF:[0,"FBu","FBu"],BMD:[2,"$","BD$"],BND:[2,"$","B$"],BOB:[2,"Bs","Bs"],BSD:[2,"$","BS$"],BTN:[2,"Nu.","Nu."],BWP:[2,"P","pula"],BYR:[0,"BYR","BYR"],BZD:[2,"$","BZ$"],CUC:[1,"$","CUC$"],CUP:[2,"$","CU$"],CVE:[2,"CVE","Esc"],DJF:[0,"Fdj","Fdj"],DZD:[2,"din","din"],ERN:[2,"Nfk","Nfk"],
-FJD:[2,"$","FJ$"],FKP:[2,"\u00a3","FK\u00a3"],GEL:[2,"GEL","GEL"],GHS:[2,"GHS","GHS"],GIP:[2,"\u00a3","GI\u00a3"],GMD:[2,"GMD","GMD"],GNF:[0,"FG","FG"],GTQ:[2,"Q","GTQ"],GYD:[0,"$","GY$"],HNL:[2,"L","HNL"],HTG:[2,"HTG","HTG"],IQD:[0,"din","IQD"],JOD:[3,"din","JOD"],KES:[2,"Ksh","Ksh"],KGS:[2,"KGS","KGS"],KHR:[2,"Riel","KHR"],KMF:[0,"CF","KMF"],KPW:[0,"\u20a9KP","KPW"],KWD:[3,"din","KWD"],KYD:[2,"$","KY$"],KZT:[2,"\u20b8","KZT"],LAK:[0,"\u20ad","\u20ad"],LBP:[0,"L\u00a3","LBP"],LRD:[2,"$","L$"],LSL:[2,
-"LSL","LSL"],LYD:[3,"din","LD"],MAD:[2,"dh","MAD"],MDL:[2,"MDL","MDL"],MGA:[0,"Ar","MGA"],MKD:[2,"din","MKD"],MMK:[0,"K","MMK"],MOP:[2,"MOP","MOP$"],MRO:[0,"MRO","MRO"],MUR:[0,"MURs","MURs"],MWK:[2,"MWK","MWK"],MZN:[2,"MTn","MTn"],NAD:[2,"$","N$"],NGN:[2,"\u20a6","NG\u20a6"],NIO:[2,"C$","C$"],NPR:[2,"Rs","NPRs"],NZD:[2,"$","NZ$"],OMR:[3,"Rial","OMR"],PGK:[2,"PGK","PGK"],PYG:[0,"Gs","PYG"],QAR:[2,"Rial","QR"],RWF:[0,"RF","RF"],SBD:[2,"$","SI$"],SCR:[2,"SCR","SCR"],SDG:[2,"SDG","SDG"],SHP:[2,"\u00a3",
-"SH\u00a3"],SLL:[0,"SLL","SLL"],SOS:[0,"SOS","SOS"],SRD:[2,"$","SR$"],STD:[0,"Db","Db"],SYP:[0,"\u00a3","SY\u00a3"],SZL:[2,"SZL","SZL"],TJS:[2,"Som","TJS"],TND:[3,"din","DT"],TOP:[2,"T$","T$"],TTD:[2,"$","TT$"],UGX:[0,"UGX","UGX"],UZS:[0,"so\u02bcm","UZS"],VEF:[2,"Bs","Bs"],VUV:[0,"VUV","VUV"],WST:[2,"WST","WST"],XAF:[0,"FCFA","FCFA"],XCD:[2,"$","EC$"],XOF:[0,"CFA","CFA"],XPF:[0,"FCFP","FCFP"],ZMK:[0,"ZMK","ZMK"]};goog.i18n.NumberFormatSymbols_af={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_af_ZA=goog.i18n.NumberFormatSymbols_af;
-goog.i18n.NumberFormatSymbols_am={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ETB"};goog.i18n.NumberFormatSymbols_am_ET=goog.i18n.NumberFormatSymbols_am;
-goog.i18n.NumberFormatSymbols_ar={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u0660",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0627\u0633",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0644\u064a\u0633\u00a0\u0631\u0642\u0645",DECIMAL_PATTERN:"#0.###;#0.###-",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#0.00;\u00a4\u00a0#0.00-",DEF_CURRENCY_CODE:"EGP"};goog.i18n.NumberFormatSymbols_ar_001=goog.i18n.NumberFormatSymbols_ar;
-goog.i18n.NumberFormatSymbols_ar_EG=goog.i18n.NumberFormatSymbols_ar;goog.i18n.NumberFormatSymbols_bg={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"BGN"};goog.i18n.NumberFormatSymbols_bg_BG=goog.i18n.NumberFormatSymbols_bg;
-goog.i18n.NumberFormatSymbols_bn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u09e6",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u09b8\u0982\u0996\u09cd\u09af\u09be\u00a0\u09a8\u09be",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4;(#,##,##0.00\u00a4)",DEF_CURRENCY_CODE:"BDT"};goog.i18n.NumberFormatSymbols_bn_BD=goog.i18n.NumberFormatSymbols_bn;
-goog.i18n.NumberFormatSymbols_br={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_br_FR=goog.i18n.NumberFormatSymbols_br;
-goog.i18n.NumberFormatSymbols_ca={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_ca_AD=goog.i18n.NumberFormatSymbols_ca;goog.i18n.NumberFormatSymbols_ca_ES=goog.i18n.NumberFormatSymbols_ca;
-goog.i18n.NumberFormatSymbols_chr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_chr_US=goog.i18n.NumberFormatSymbols_chr;
-goog.i18n.NumberFormatSymbols_cs={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CZK"};goog.i18n.NumberFormatSymbols_cs_CZ=goog.i18n.NumberFormatSymbols_cs;
-goog.i18n.NumberFormatSymbols_cy={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_cy_GB=goog.i18n.NumberFormatSymbols_cy;
-goog.i18n.NumberFormatSymbols_da={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"DKK"};goog.i18n.NumberFormatSymbols_da_DK=goog.i18n.NumberFormatSymbols_da;
-goog.i18n.NumberFormatSymbols_de={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_de_AT={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_de_BE=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_de_CH={DECIMAL_SEP:".",GROUP_SEP:"'",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4-#,##0.00",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_de_DE=goog.i18n.NumberFormatSymbols_de;goog.i18n.NumberFormatSymbols_de_LU=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_el={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"[#E0]",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_el_GR=goog.i18n.NumberFormatSymbols_el;
-goog.i18n.NumberFormatSymbols_en={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_en_AS=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_AU={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"AUD"};goog.i18n.NumberFormatSymbols_en_Dsrt_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_FM=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_GB={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_en_GU=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_IE={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_en_IN={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_en_MH=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_MP=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_PR=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_PW=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_SG={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"SGD"};
-goog.i18n.NumberFormatSymbols_en_TC=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_UM=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VG=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VI=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_ZA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};
-goog.i18n.NumberFormatSymbols_es={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_es_419={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"MXN"};goog.i18n.NumberFormatSymbols_es_EA=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_ES=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_IC=goog.i18n.NumberFormatSymbols_es;
-goog.i18n.NumberFormatSymbols_et={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_et_EE=goog.i18n.NumberFormatSymbols_et;
-goog.i18n.NumberFormatSymbols_eu={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%\u00a0#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_eu_ES=goog.i18n.NumberFormatSymbols_eu;
-goog.i18n.NumberFormatSymbols_fa={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u06f0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d7\u06f1\u06f0^",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0646\u0627\u0639\u062f\u062f",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u200e\u00a4#,##0.00;\u200e(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"IRR"};goog.i18n.NumberFormatSymbols_fa_IR=goog.i18n.NumberFormatSymbols_fa;
-goog.i18n.NumberFormatSymbols_fi={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"ep\u00e4luku",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fi_FI=goog.i18n.NumberFormatSymbols_fi;
-goog.i18n.NumberFormatSymbols_fil={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};goog.i18n.NumberFormatSymbols_fil_PH=goog.i18n.NumberFormatSymbols_fil;
-goog.i18n.NumberFormatSymbols_fr={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fr_BL=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_CA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"CAD"};goog.i18n.NumberFormatSymbols_fr_FR=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_GF=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_GP=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MC=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MF=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MQ=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_RE=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_YT=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_gl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_gl_ES=goog.i18n.NumberFormatSymbols_gl;
-goog.i18n.NumberFormatSymbols_gsw={DECIMAL_SEP:".",GROUP_SEP:"\u2019",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_gsw_CH=goog.i18n.NumberFormatSymbols_gsw;
-goog.i18n.NumberFormatSymbols_gu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_gu_IN=goog.i18n.NumberFormatSymbols_gu;
-goog.i18n.NumberFormatSymbols_haw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_haw_US=goog.i18n.NumberFormatSymbols_haw;
-goog.i18n.NumberFormatSymbols_he={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};goog.i18n.NumberFormatSymbols_he_IL=goog.i18n.NumberFormatSymbols_he;
-goog.i18n.NumberFormatSymbols_hi={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_hi_IN=goog.i18n.NumberFormatSymbols_hi;
-goog.i18n.NumberFormatSymbols_hr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HRK"};goog.i18n.NumberFormatSymbols_hr_HR=goog.i18n.NumberFormatSymbols_hr;
-goog.i18n.NumberFormatSymbols_hu={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HUF"};goog.i18n.NumberFormatSymbols_hu_HU=goog.i18n.NumberFormatSymbols_hu;
-goog.i18n.NumberFormatSymbols_id={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};goog.i18n.NumberFormatSymbols_id_ID=goog.i18n.NumberFormatSymbols_id;
-goog.i18n.NumberFormatSymbols_in={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};
-goog.i18n.NumberFormatSymbols_is={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ISK"};goog.i18n.NumberFormatSymbols_is_IS=goog.i18n.NumberFormatSymbols_is;
-goog.i18n.NumberFormatSymbols_it={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_it_IT=goog.i18n.NumberFormatSymbols_it;goog.i18n.NumberFormatSymbols_it_SM=goog.i18n.NumberFormatSymbols_it;
-goog.i18n.NumberFormatSymbols_iw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};
-goog.i18n.NumberFormatSymbols_ja={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"JPY"};goog.i18n.NumberFormatSymbols_ja_JP=goog.i18n.NumberFormatSymbols_ja;
-goog.i18n.NumberFormatSymbols_kn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0c88",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_kn_IN=goog.i18n.NumberFormatSymbols_kn;
-goog.i18n.NumberFormatSymbols_ko={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"KRW"};goog.i18n.NumberFormatSymbols_ko_KR=goog.i18n.NumberFormatSymbols_ko;
-goog.i18n.NumberFormatSymbols_ln={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CDF"};goog.i18n.NumberFormatSymbols_ln_CD=goog.i18n.NumberFormatSymbols_ln;
-goog.i18n.NumberFormatSymbols_lt={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2013",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"LTL"};goog.i18n.NumberFormatSymbols_lt_LT=goog.i18n.NumberFormatSymbols_lt;
-goog.i18n.NumberFormatSymbols_lv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"nav\u00a0skaitlis",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"LVL"};goog.i18n.NumberFormatSymbols_lv_LV=goog.i18n.NumberFormatSymbols_lv;
-goog.i18n.NumberFormatSymbols_ml={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ml_IN=goog.i18n.NumberFormatSymbols_ml;
-goog.i18n.NumberFormatSymbols_mr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u0966",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_mr_IN=goog.i18n.NumberFormatSymbols_mr;
-goog.i18n.NumberFormatSymbols_ms={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"MYR"};goog.i18n.NumberFormatSymbols_ms_Latn_MY=goog.i18n.NumberFormatSymbols_ms;
-goog.i18n.NumberFormatSymbols_mt={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_mt_MT=goog.i18n.NumberFormatSymbols_mt;
-goog.i18n.NumberFormatSymbols_nb={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};goog.i18n.NumberFormatSymbols_nb_NO=goog.i18n.NumberFormatSymbols_nb;
-goog.i18n.NumberFormatSymbols_nl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_nl_NL=goog.i18n.NumberFormatSymbols_nl;
-goog.i18n.NumberFormatSymbols_no={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};
-goog.i18n.NumberFormatSymbols_or={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_or_IN=goog.i18n.NumberFormatSymbols_or;
-goog.i18n.NumberFormatSymbols_pl={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"PLN"};goog.i18n.NumberFormatSymbols_pl_PL=goog.i18n.NumberFormatSymbols_pl;
-goog.i18n.NumberFormatSymbols_pt={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"BRL"};goog.i18n.NumberFormatSymbols_pt_BR=goog.i18n.NumberFormatSymbols_pt;
-goog.i18n.NumberFormatSymbols_pt_PT={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_ro={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RON"};goog.i18n.NumberFormatSymbols_ro_RO=goog.i18n.NumberFormatSymbols_ro;
-goog.i18n.NumberFormatSymbols_ru={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RUB"};goog.i18n.NumberFormatSymbols_ru_RU=goog.i18n.NumberFormatSymbols_ru;
-goog.i18n.NumberFormatSymbols_sk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sk_SK=goog.i18n.NumberFormatSymbols_sk;
-goog.i18n.NumberFormatSymbols_sl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sl_SI=goog.i18n.NumberFormatSymbols_sl;
-goog.i18n.NumberFormatSymbols_sq={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"ALL"};goog.i18n.NumberFormatSymbols_sq_AL=goog.i18n.NumberFormatSymbols_sq;
-goog.i18n.NumberFormatSymbols_sr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RSD"};goog.i18n.NumberFormatSymbols_sr_Cyrl_RS=goog.i18n.NumberFormatSymbols_sr;
-goog.i18n.NumberFormatSymbols_sv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d710^",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u00a4\u00a4\u00a4",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"SEK"};goog.i18n.NumberFormatSymbols_sv_SE=goog.i18n.NumberFormatSymbols_sv;
-goog.i18n.NumberFormatSymbols_sw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"TZS"};goog.i18n.NumberFormatSymbols_sw_TZ=goog.i18n.NumberFormatSymbols_sw;
-goog.i18n.NumberFormatSymbols_ta={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ta_IN=goog.i18n.NumberFormatSymbols_ta;
-goog.i18n.NumberFormatSymbols_te={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_te_IN=goog.i18n.NumberFormatSymbols_te;
-goog.i18n.NumberFormatSymbols_th={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"THB"};goog.i18n.NumberFormatSymbols_th_TH=goog.i18n.NumberFormatSymbols_th;
-goog.i18n.NumberFormatSymbols_tl={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};
-goog.i18n.NumberFormatSymbols_tr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"TRY"};goog.i18n.NumberFormatSymbols_tr_TR=goog.i18n.NumberFormatSymbols_tr;
-goog.i18n.NumberFormatSymbols_uk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0415",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u041d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"UAH"};goog.i18n.NumberFormatSymbols_uk_UA=goog.i18n.NumberFormatSymbols_uk;
-goog.i18n.NumberFormatSymbols_ur={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"PKR"};goog.i18n.NumberFormatSymbols_ur_PK=goog.i18n.NumberFormatSymbols_ur;
-goog.i18n.NumberFormatSymbols_vi={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"VND"};goog.i18n.NumberFormatSymbols_vi_VN=goog.i18n.NumberFormatSymbols_vi;
-goog.i18n.NumberFormatSymbols_zh={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"CNY"};goog.i18n.NumberFormatSymbols_zh_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_HK={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"HKD"};goog.i18n.NumberFormatSymbols_zh_Hans_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_TW={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"TWD"};
-goog.i18n.NumberFormatSymbols_zu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"I-NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_zu_ZA=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-"af"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af);if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg;"bn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn);
-if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca);if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;
-if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr;"cs"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs;
-"cy"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da);if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de);
-if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;
-if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el);if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_AU;if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_GB;
-if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_SG;
-if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et;"eu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu);
-if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi);if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi;
-"fil"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr);if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr_CA;
-if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;
-if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl);
-if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl;"gsw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he;"hi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi);
-if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu);if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu;
-"id"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is);if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is;
-"it"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;"iw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja);
-if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn;"ko"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko;
-"ln"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt);if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv);
-if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml);if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr;
-"ms"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms);if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro;"ru"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru;
-"sk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl);if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq);
-if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr);if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv;
-"sw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw);if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur);if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur;
-"vi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_HK;
-if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormat=function(a,b,c){this.intlCurrencyCode_=b||goog.i18n.NumberFormatSymbols.DEF_CURRENCY_CODE;this.currencyStyle_=c||goog.i18n.NumberFormat.CurrencyStyle.LOCAL;this.maximumIntegerDigits_=40;this.minimumIntegerDigits_=1;this.significantDigits_=0;this.maximumFractionDigits_=3;this.minExponentDigits_=this.minimumFractionDigits_=0;this.showTrailingZeros_=this.useSignForPositiveExponent_=!1;this.positiveSuffix_=this.positivePrefix_="";this.negativePrefix_="-";this.negativeSuffix_="";
-this.multiplier_=1;this.groupingSize_=3;this.useExponentialNotation_=this.decimalSeparatorAlwaysShown_=!1;this.compactStyle_=goog.i18n.NumberFormat.CompactStyle.NONE;this.baseFormattingNumber_=null;"number"==typeof a?this.applyStandardPattern_(a):this.applyPattern_(a)};goog.i18n.NumberFormat.Format={DECIMAL:1,SCIENTIFIC:2,PERCENT:3,CURRENCY:4,COMPACT_SHORT:5,COMPACT_LONG:6};goog.i18n.NumberFormat.CurrencyStyle={LOCAL:0,PORTABLE:1,GLOBAL:2};goog.i18n.NumberFormat.CompactStyle={NONE:0,SHORT:1,LONG:2};
-goog.i18n.NumberFormat.enforceAsciiDigits_=!1;goog.i18n.NumberFormat.setEnforceAsciiDigits=function(a){goog.i18n.NumberFormat.enforceAsciiDigits_=a};goog.i18n.NumberFormat.isEnforceAsciiDigits=function(){return goog.i18n.NumberFormat.enforceAsciiDigits_};goog.i18n.NumberFormat.prototype.setMinimumFractionDigits=function(a){if(0<this.significantDigits_&&0<a)throw Error("Can't combine significant digits and minimum fraction digits");this.minimumFractionDigits_=a};
-goog.i18n.NumberFormat.prototype.setMaximumFractionDigits=function(a){this.maximumFractionDigits_=a};goog.i18n.NumberFormat.prototype.setSignificantDigits=function(a){if(0<this.minimumFractionDigits_&&0<=a)throw Error("Can't combine significant digits and minimum fraction digits");this.significantDigits_=a};
-goog.i18n.NumberFormat.prototype.applyPattern_=function(a){a.replace(/ /g,"\u00a0");var b=[0];this.positivePrefix_=this.parseAffix_(a,b);var c=b[0];this.parseTrunk_(a,b);c=b[0]-c;this.positiveSuffix_=this.parseAffix_(a,b);b[0]<a.length&&a.charAt(b[0])==goog.i18n.NumberFormat.PATTERN_SEPARATOR_?(b[0]++,this.negativePrefix_=this.parseAffix_(a,b),b[0]+=c,this.negativeSuffix_=this.parseAffix_(a,b)):(this.negativePrefix_=this.positivePrefix_+this.negativePrefix_,this.negativeSuffix_+=this.positiveSuffix_)};
-goog.i18n.NumberFormat.prototype.applyStandardPattern_=function(a){switch(a){case goog.i18n.NumberFormat.Format.DECIMAL:this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);break;case goog.i18n.NumberFormat.Format.SCIENTIFIC:this.applyPattern_(goog.i18n.NumberFormatSymbols.SCIENTIFIC_PATTERN);break;case goog.i18n.NumberFormat.Format.PERCENT:this.applyPattern_(goog.i18n.NumberFormatSymbols.PERCENT_PATTERN);break;case goog.i18n.NumberFormat.Format.CURRENCY:this.applyPattern_(goog.i18n.currency.adjustPrecision(goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN,
-this.intlCurrencyCode_));break;case goog.i18n.NumberFormat.Format.COMPACT_SHORT:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.SHORT);break;case goog.i18n.NumberFormat.Format.COMPACT_LONG:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.LONG);break;default:throw Error("Unsupported pattern type.");}};
-goog.i18n.NumberFormat.prototype.applyCompactStyle_=function(a){this.compactStyle_=a;this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);this.setMinimumFractionDigits(0);this.setMaximumFractionDigits(2);this.setSignificantDigits(2)};
-goog.i18n.NumberFormat.prototype.parse=function(a,b){var c=b||[0];if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact numbers is unimplemented");var d=NaN;a=a.replace(/ /g,"\u00a0");var e=a.indexOf(this.positivePrefix_,c[0])==c[0],f=a.indexOf(this.negativePrefix_,c[0])==c[0];e&&f&&(this.positivePrefix_.length>this.negativePrefix_.length?f=!1:this.positivePrefix_.length<this.negativePrefix_.length&&(e=!1));e?c[0]+=this.positivePrefix_.length:f&&(c[0]+=this.negativePrefix_.length);
-a.indexOf(goog.i18n.NumberFormatSymbols.INFINITY,c[0])==c[0]?(c[0]+=goog.i18n.NumberFormatSymbols.INFINITY.length,d=Infinity):d=this.parseNumber_(a,c);if(e){if(a.indexOf(this.positiveSuffix_,c[0])!=c[0])return NaN;c[0]+=this.positiveSuffix_.length}else if(f){if(a.indexOf(this.negativeSuffix_,c[0])!=c[0])return NaN;c[0]+=this.negativeSuffix_.length}return f?-d:d};
-goog.i18n.NumberFormat.prototype.parseNumber_=function(a,b){var c=!1,d=!1,e=!1,f=1,g=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,h=goog.i18n.NumberFormatSymbols.GROUP_SEP,k=goog.i18n.NumberFormatSymbols.EXP_SYMBOL;if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact style numbers is not implemented");for(var l="";b[0]<a.length;b[0]++){var m=a.charAt(b[0]),p=this.getDigit_(m);if(0<=p&&9>=p)l+=p,e=!0;else if(m==g.charAt(0)){if(c||d)break;l+=".";c=!0}else if(m==
-h.charAt(0)&&("\u00a0"!=h.charAt(0)||b[0]+1<a.length&&0<=this.getDigit_(a.charAt(b[0]+1)))){if(c||d)break}else if(m==k.charAt(0)){if(d)break;l+="E";d=!0}else if("+"==m||"-"==m)l+=m;else if(m==goog.i18n.NumberFormatSymbols.PERCENT.charAt(0)){if(1!=f)break;f=100;if(e){b[0]++;break}}else if(m==goog.i18n.NumberFormatSymbols.PERMILL.charAt(0)){if(1!=f)break;f=1E3;if(e){b[0]++;break}}else break}return parseFloat(l)/f};
-goog.i18n.NumberFormat.prototype.format=function(a){if(isNaN(a))return goog.i18n.NumberFormatSymbols.NAN;var b=[],c=goog.isNull(this.baseFormattingNumber_)?a:this.baseFormattingNumber_,c=this.getUnitAfterRounding_(c,a);a/=Math.pow(10,c.divisorBase);b.push(c.prefix);var d=0>a||0==a&&0>1/a;b.push(d?this.negativePrefix_:this.positivePrefix_);isFinite(a)?(a*=d?-1:1,a*=this.multiplier_,this.useExponentialNotation_?this.subformatExponential_(a,b):this.subformatFixed_(a,this.minimumIntegerDigits_,b)):b.push(goog.i18n.NumberFormatSymbols.INFINITY);
-b.push(d?this.negativeSuffix_:this.positiveSuffix_);b.push(c.suffix);return b.join("")};goog.i18n.NumberFormat.prototype.roundNumber_=function(a){var b=Math.pow(10,this.maximumFractionDigits_),c=0>=this.significantDigits_?Math.round(a*b):Math.floor(this.roundToSignificantDigits_(a*b,this.significantDigits_,this.maximumFractionDigits_));isFinite(c)?(a=Math.floor(c/b),b=Math.floor(c-a*b)):b=0;return{intValue:a,fracValue:b}};
-goog.i18n.NumberFormat.prototype.subformatFixed_=function(a,b,c){if(this.minimumFractionDigits_>this.maximumFractionDigits_)throw Error("Min value must be less than max value");a=this.roundNumber_(a);var d=Math.pow(10,this.maximumFractionDigits_),e=a.intValue,f=a.fracValue,g=0==e?0:this.intLog10_(e)+1,h=0<this.minimumFractionDigits_||0<f||this.showTrailingZeros_&&g<this.significantDigits_;a=this.minimumFractionDigits_;h&&(a=this.showTrailingZeros_&&0<this.significantDigits_?this.significantDigits_-
-g:this.minimumFractionDigits_);for(var k="",g=e;1E20<g;)k="0"+k,g=Math.round(g/10);var k=g+k,l=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,m=goog.i18n.NumberFormatSymbols.GROUP_SEP,g=goog.i18n.NumberFormat.enforceAsciiDigits_?48:goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0),p=k.length;if(0<e||0<b){for(e=p;e<b;e++)c.push(String.fromCharCode(g));for(e=0;e<p;e++)c.push(String.fromCharCode(g+1*k.charAt(e))),1<p-e&&0<this.groupingSize_&&1==(p-e)%this.groupingSize_&&c.push(m)}else h||c.push(String.fromCharCode(g));
-(this.decimalSeparatorAlwaysShown_||h)&&c.push(l);b=""+(f+d);for(d=b.length;"0"==b.charAt(d-1)&&d>a+1;)d--;for(e=1;e<d;e++)c.push(String.fromCharCode(g+1*b.charAt(e)))};
-goog.i18n.NumberFormat.prototype.addExponentPart_=function(a,b){b.push(goog.i18n.NumberFormatSymbols.EXP_SYMBOL);0>a?(a=-a,b.push(goog.i18n.NumberFormatSymbols.MINUS_SIGN)):this.useSignForPositiveExponent_&&b.push(goog.i18n.NumberFormatSymbols.PLUS_SIGN);for(var c=""+a,d=goog.i18n.NumberFormat.enforceAsciiDigits_?"0":goog.i18n.NumberFormatSymbols.ZERO_DIGIT,e=c.length;e<this.minExponentDigits_;e++)b.push(d);b.push(c)};
-goog.i18n.NumberFormat.prototype.subformatExponential_=function(a,b){if(0==a)this.subformatFixed_(a,this.minimumIntegerDigits_,b),this.addExponentPart_(0,b);else{var c=goog.math.safeFloor(Math.log(a)/Math.log(10));a/=Math.pow(10,c);var d=this.minimumIntegerDigits_;if(1<this.maximumIntegerDigits_&&this.maximumIntegerDigits_>this.minimumIntegerDigits_){for(;0!=c%this.maximumIntegerDigits_;)a*=10,c--;d=1}else 1>this.minimumIntegerDigits_?(c++,a/=10):(c-=this.minimumIntegerDigits_-1,a*=Math.pow(10,this.minimumIntegerDigits_-
-1));this.subformatFixed_(a,d,b);this.addExponentPart_(c,b)}};goog.i18n.NumberFormat.prototype.getDigit_=function(a){a=a.charCodeAt(0);if(48<=a&&58>a)return a-48;var b=goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0);return b<=a&&a<b+10?a-b:-1};goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_="0";goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_=",";goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_=".";goog.i18n.NumberFormat.PATTERN_PER_MILLE_="\u2030";goog.i18n.NumberFormat.PATTERN_PERCENT_="%";
-goog.i18n.NumberFormat.PATTERN_DIGIT_="#";goog.i18n.NumberFormat.PATTERN_SEPARATOR_=";";goog.i18n.NumberFormat.PATTERN_EXPONENT_="E";goog.i18n.NumberFormat.PATTERN_PLUS_="+";goog.i18n.NumberFormat.PATTERN_MINUS_="-";goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_="\u00a4";goog.i18n.NumberFormat.QUOTE_="'";
-goog.i18n.NumberFormat.prototype.parseAffix_=function(a,b){for(var c="",d=!1,e=a.length;b[0]<e;b[0]++){var f=a.charAt(b[0]);if(f==goog.i18n.NumberFormat.QUOTE_)b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.QUOTE_?(b[0]++,c+="'"):d=!d;else if(d)c+=f;else switch(f){case goog.i18n.NumberFormat.PATTERN_DIGIT_:case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_SEPARATOR_:return c;
-case goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_:if(b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_)b[0]++,c+=this.intlCurrencyCode_;else switch(this.currencyStyle_){case goog.i18n.NumberFormat.CurrencyStyle.LOCAL:c+=goog.i18n.currency.getLocalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.GLOBAL:c+=goog.i18n.currency.getGlobalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.PORTABLE:c+=goog.i18n.currency.getPortableCurrencySign(this.intlCurrencyCode_)}break;
-case goog.i18n.NumberFormat.PATTERN_PERCENT_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=100;c+=goog.i18n.NumberFormatSymbols.PERCENT;break;case goog.i18n.NumberFormat.PATTERN_PER_MILLE_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=1E3;c+=goog.i18n.NumberFormatSymbols.PERMILL;break;default:c+=f}}return c};
-goog.i18n.NumberFormat.prototype.parseTrunk_=function(a,b){for(var c=-1,d=0,e=0,f=0,g=-1,h=a.length,k=!0;b[0]<h&&k;b[0]++){var l=a.charAt(b[0]);switch(l){case goog.i18n.NumberFormat.PATTERN_DIGIT_:0<e?f++:d++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:if(0<f)throw Error('Unexpected "0" in pattern "'+a+'"');e++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:g=0;break;case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:if(0<=c)throw Error('Multiple decimal separators in pattern "'+
-a+'"');c=d+e+f;break;case goog.i18n.NumberFormat.PATTERN_EXPONENT_:if(this.useExponentialNotation_)throw Error('Multiple exponential symbols in pattern "'+a+'"');this.useExponentialNotation_=!0;this.minExponentDigits_=0;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_PLUS_&&(b[0]++,this.useSignForPositiveExponent_=!0);for(;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_;)b[0]++,this.minExponentDigits_++;if(1>d+e||1>this.minExponentDigits_)throw Error('Malformed exponential pattern "'+
-a+'"');k=!1;break;default:b[0]--,k=!1}}0==e&&0<d&&0<=c&&(e=c,0==e&&e++,f=d-e,d=e-1,e=1);if(0>c&&0<f||0<=c&&(c<d||c>d+e)||0==g)throw Error('Malformed pattern "'+a+'"');f=d+e+f;this.maximumFractionDigits_=0<=c?f-c:0;0<=c&&(this.minimumFractionDigits_=d+e-c,0>this.minimumFractionDigits_&&(this.minimumFractionDigits_=0));e=0<=c?c:f;this.minimumIntegerDigits_=e-d;this.useExponentialNotation_&&(this.maximumIntegerDigits_=d+this.minimumIntegerDigits_,0==this.maximumFractionDigits_&&0==this.minimumIntegerDigits_&&
-(this.minimumIntegerDigits_=1));this.groupingSize_=Math.max(0,g);this.decimalSeparatorAlwaysShown_=0==c||c==f};goog.i18n.NumberFormat.NULL_UNIT_={prefix:"",suffix:"",divisorBase:0};
-goog.i18n.NumberFormat.prototype.getUnitFor_=function(a,b){var c=this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.SHORT?goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_SHORT_PATTERN:goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_LONG_PATTERN;if(3>a)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.min(14,a);c=c[Math.pow(10,a)];if(!c)return goog.i18n.NumberFormat.NULL_UNIT_;c=c[b];return c&&"0"!=c?(c=/([^0]*)(0+)(.*)/.exec(c))?{prefix:c[1],suffix:c[3],divisorBase:a-(c[2].length-1)}:
-goog.i18n.NumberFormat.NULL_UNIT_:goog.i18n.NumberFormat.NULL_UNIT_};
-goog.i18n.NumberFormat.prototype.getUnitAfterRounding_=function(a,b){if(this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.NONE)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.abs(a);b=Math.abs(b);var c=this.pluralForm_(a),d=1>=a?0:this.intLog10_(a),c=this.getUnitFor_(d,c).divisorBase,d=b/Math.pow(10,c),d=this.roundNumber_(d),e=a/Math.pow(10,c),e=this.roundNumber_(e),d=this.pluralForm_(d.intValue+d.fracValue);return this.getUnitFor_(c+this.intLog10_(e.intValue),d)};
-goog.i18n.NumberFormat.prototype.intLog10_=function(a){for(var b=0;1<=(a/=10);)b++;return b};goog.i18n.NumberFormat.prototype.roundToSignificantDigits_=function(a,b,c){if(!a)return a;var d=this.intLog10_(a);b=b-d-1;if(b<-c)return c=Math.pow(10,c),Math.round(a/c)*c;c=Math.pow(10,b);a=Math.round(a*c);return a/c};goog.i18n.NumberFormat.prototype.pluralForm_=function(){return"other"};goog.i18n.ordinalRules={};goog.i18n.ordinalRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.ordinalRules.defaultSelect_=function(){return goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.frSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.huSelect_=function(a){return 1==a||5==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.svSelect_=function(a){return 1!=a%10&&2!=a%10||11==a%100||12==a%100?goog.i18n.ordinalRules.Keyword.OTHER:goog.i18n.ordinalRules.Keyword.ONE};goog.i18n.ordinalRules.enSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.ordinalRules.Keyword.ONE:2==a%10&&12!=a%100?goog.i18n.ordinalRules.Keyword.TWO:3==a%10&&13!=a%100?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.itSelect_=function(a){return 11==a||8==a||80==a||800==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.caSelect_=function(a){return 1==a||3==a?goog.i18n.ordinalRules.Keyword.ONE:2==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.mrSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.guSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.bnSelect_=function(a){return 1==a||5==a||7==a||8==a||9==a||10==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.zuSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:a==(a|0)&&2<=a&&9>=a?goog.i18n.ordinalRules.Keyword.FEW:a==(a|0)&&(10<=a&&19>=a||100<=a&&199>=a||1E3<=a&&1999>=a)?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"am"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bg"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.bnSelect_);"br"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ca"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.caSelect_);"chr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"cy"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"da"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"de"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"el"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"en"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"et"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fa"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fil"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"fr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_;"gl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gsw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"haw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"he"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"hr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.huSelect_);"id"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"is"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"it"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.itSelect_);"iw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ja"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ln"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ml"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"mr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.mrSelect_);"ms"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-"mt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nb"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"no"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"or"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"pl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"pt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"ro"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"ru"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"sk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sq"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.svSelect_);"sw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ta"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"te"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"th"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ur"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"vi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"zh"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.zuSelect_);goog.i18n.pluralRules={};goog.i18n.pluralRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.pluralRules.defaultSelect_=function(){return goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.arSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&99>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.heSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:0!=a&&0==a%10?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.enSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.filSelect_=function(a){return 0==a||1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.frSelect_=function(a){return 0<=a&&2>=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.lvSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.iuSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gaSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a&&6>=a?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&7<=a&&10>=a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.roSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||1!=a&&a==(a|0)&&1<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.ltSelect_=function(a){return 1==a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&9>=a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.beSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:0==a%10||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&11<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.csSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&4>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.plSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:1!=a&&(0==a%10||1==a%10)||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&12<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.slSelect_=function(a){return 1==a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%100?goog.i18n.pluralRules.Keyword.TWO:3==a%100||4==a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.mtSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||a==(a|0)&&2<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.mkSelect_=function(a){return 1==a%10&&11!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.cySelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:3==a?goog.i18n.pluralRules.Keyword.FEW:6==a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.lagSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:0<=a&&2>=a&&0!=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.shiSelect_=function(a){return 0<=a&&1>=a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&10>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.brSelect_=function(a){return 1==a%10&&11!=a%100&&71!=a%100&&91!=a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%10&&12!=a%100&&72!=a%100&&92!=a%100?goog.i18n.pluralRules.Keyword.TWO:(3==a%10||4==a%10||9==a%10)&&(10>a%100||19<a%100)&&(70>a%100||79<a%100)&&(90>a%100||99<a%100)?goog.i18n.pluralRules.Keyword.FEW:0!=a&&0==a%1E6?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.kshSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.tzmSelect_=function(a){return 0==a||1==a||a==(a|0)&&11<=a&&99>=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.gvSelect_=function(a){return 1==a%10||2==a%10||0==a%20?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gdSelect_=function(a){return 1==a||11==a?goog.i18n.pluralRules.Keyword.ONE:2==a||12==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&(3<=a&&10>=a||13<=a&&19>=a)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"am"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.arSelect_);"bg"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"bn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"br"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.brSelect_);"ca"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"chr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"cy"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.cySelect_);"da"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"de"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"el"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"en"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"et"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fa"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fil"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"fr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_;
-"gl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gsw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"haw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"he"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"hi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"hr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"hu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"id"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"is"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"it"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"iw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"ja"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ln"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"lt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.ltSelect_);
-"lv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.lvSelect_);"ml"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"mr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ms"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"mt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.mtSelect_);"nb"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"nl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"no"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"or"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"pl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.plSelect_);"pt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"ro"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.roSelect_);"ru"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"sl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.slSelect_);"sq"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"sr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"sw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ta"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"te"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"th"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-"tl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"tr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"ur"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"vi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"zh"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);goog.i18n.MessageFormat=function(a){this.literals_=[];this.parsedPattern_=[];this.numberFormatter_=new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);this.parsePattern_(a)};goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_="\ufddf_";goog.i18n.MessageFormat.Element_={STRING:0,BLOCK:1};goog.i18n.MessageFormat.BlockType_={PLURAL:0,ORDINAL:1,SELECT:2,SIMPLE:3,STRING:4,UNKNOWN:5};goog.i18n.MessageFormat.OTHER_="other";goog.i18n.MessageFormat.REGEX_LITERAL_=/'([{}#].*?)'/g;
-goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_=/''/g;goog.i18n.MessageFormat.prototype.format=function(a){return this.format_(a,!1)};goog.i18n.MessageFormat.prototype.format_=function(a,b){if(0==this.parsedPattern_.length)return"";var c=[];this.formatBlock_(this.parsedPattern_,a,b,c);c=c.join("");for(b||goog.asserts.assert(-1==c.search("#"),"Not all # were replaced.");0<this.literals_.length;)c=c.replace(this.buildPlaceholder_(this.literals_),this.literals_.pop());return c};
-goog.i18n.MessageFormat.prototype.formatBlock_=function(a,b,c,d){for(var e=0;e<a.length;e++)switch(a[e].type){case goog.i18n.MessageFormat.BlockType_.STRING:d.push(a[e].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:var f=a[e].value;this.formatSimplePlaceholder_(f,b,d);break;case goog.i18n.MessageFormat.BlockType_.SELECT:f=a[e].value;this.formatSelectBlock_(f,b,c,d);break;case goog.i18n.MessageFormat.BlockType_.PLURAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.pluralRules.select,
-c,d);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.ordinalRules.select,c,d);break;default:goog.asserts.fail("Unrecognized block type.")}};goog.i18n.MessageFormat.prototype.formatSimplePlaceholder_=function(a,b,c){b=b[a];goog.isDef(b)?(this.literals_.push(b),c.push(this.buildPlaceholder_(this.literals_))):c.push("Undefined parameter - "+a)};
-goog.i18n.MessageFormat.prototype.formatSelectBlock_=function(a,b,c,d){var e=a.argumentIndex;goog.isDef(b[e])?(e=a[b[e]],goog.isDef(e)||(e=a[goog.i18n.MessageFormat.OTHER_],goog.asserts.assertArray(e,"Invalid option or missing other option for select block.")),this.formatBlock_(e,b,c,d)):d.push("Undefined parameter - "+e)};
-goog.i18n.MessageFormat.prototype.formatPluralOrdinalBlock_=function(a,b,c,d,e){var f=a.argumentIndex,g=a.argumentOffset,h=+b[f];isNaN(h)?e.push("Undefined or invalid parameter - "+f):(g=h-g,f=a[b[f]],goog.isDef(f)||(goog.asserts.assert(0<=g,"Argument index smaller than offset."),c=c(g),goog.asserts.assertString(c,"Invalid plural key."),f=a[c],goog.isDef(f)||(f=a[goog.i18n.MessageFormat.OTHER_]),goog.asserts.assertArray(f,"Invalid option or missing other option for plural block.")),a=[],this.formatBlock_(f,
-b,d,a),b=a.join(""),goog.asserts.assertString(b,"Empty block in plural."),d?e.push(b):(d=this.numberFormatter_.format(g),e.push(b.replace(/#/g,d))))};goog.i18n.MessageFormat.prototype.parsePattern_=function(a){a&&(a=this.insertPlaceholders_(a),this.parsedPattern_=this.parseBlock_(a))};
-goog.i18n.MessageFormat.prototype.insertPlaceholders_=function(a){var b=this.literals_,c=goog.bind(this.buildPlaceholder_,this);a=a.replace(goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_,function(){b.push("'");return c(b)});return a=a.replace(goog.i18n.MessageFormat.REGEX_LITERAL_,function(a,e){b.push(e);return c(b)})};
-goog.i18n.MessageFormat.prototype.extractParts_=function(a){var b=0,c=[],d=[],e=/[{}]/g;e.lastIndex=0;for(var f;f=e.exec(a);){var g=f.index;"}"==f[0]?(f=c.pop(),goog.asserts.assert(goog.isDef(f)&&"{"==f,"No matching { for }."),0==c.length&&(f={},f.type=goog.i18n.MessageFormat.Element_.BLOCK,f.value=a.substring(b,g),d.push(f),b=g+1)):(0==c.length&&(b=a.substring(b,g),""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b}),b=g+1),c.push("{"))}goog.asserts.assert(0==c.length,"There are mismatched { or } in the pattern.");
-b=a.substring(b);""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b});return d};goog.i18n.MessageFormat.PLURAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*plural\s*,(?:\s*offset:(\d+))?/;goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*selectordinal\s*,/;goog.i18n.MessageFormat.SELECT_BLOCK_RE_=/^\s*(\w+)\s*,\s*select\s*,/;
-goog.i18n.MessageFormat.prototype.parseBlockType_=function(a){return goog.i18n.MessageFormat.PLURAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.PLURAL:goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.ORDINAL:goog.i18n.MessageFormat.SELECT_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.SELECT:/^\s*\w+\s*/.test(a)?goog.i18n.MessageFormat.BlockType_.SIMPLE:goog.i18n.MessageFormat.BlockType_.UNKNOWN};
-goog.i18n.MessageFormat.prototype.parseBlock_=function(a){var b=[];a=this.extractParts_(a);for(var c=0;c<a.length;c++){var d={};if(goog.i18n.MessageFormat.Element_.STRING==a[c].type)d.type=goog.i18n.MessageFormat.BlockType_.STRING,d.value=a[c].value;else if(goog.i18n.MessageFormat.Element_.BLOCK==a[c].type){var e=this.parseBlockType_(a[c].value);switch(e){case goog.i18n.MessageFormat.BlockType_.SELECT:d.type=goog.i18n.MessageFormat.BlockType_.SELECT;d.value=this.parseSelectBlock_(a[c].value);break;
-case goog.i18n.MessageFormat.BlockType_.PLURAL:d.type=goog.i18n.MessageFormat.BlockType_.PLURAL;d.value=this.parsePluralBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:d.type=goog.i18n.MessageFormat.BlockType_.ORDINAL;d.value=this.parseOrdinalBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:d.type=goog.i18n.MessageFormat.BlockType_.SIMPLE;d.value=a[c].value;break;default:goog.asserts.fail("Unknown block type.")}}else goog.asserts.fail("Unknown part of the pattern.");
-b.push(d)}return b};
-goog.i18n.MessageFormat.prototype.parseSelectBlock_=function(a){var b="",c=goog.i18n.MessageFormat.SELECT_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing select key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid select value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");c[e.replace(/\s/g,
-"")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in select statement.");return c};
-goog.i18n.MessageFormat.prototype.parsePluralBlock_=function(a){var b="",c=0,d=goog.i18n.MessageFormat.PLURAL_BLOCK_RE_;a=a.replace(d,function(a,d,e){b=d;e&&(c=parseInt(e,10));return""});d={};d.argumentIndex=b;d.argumentOffset=c;a=this.extractParts_(a);for(var e=0;e<a.length;){var f=a[e].value;goog.asserts.assertString(f,"Missing plural key element.");e++;goog.asserts.assert(e<a.length,"Missing or invalid plural value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[e].type)var g=this.parseBlock_(a[e].value);
-else goog.asserts.fail("Expected block type.");d[f.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=g;e++}goog.asserts.assertArray(d[goog.i18n.MessageFormat.OTHER_],"Missing other key in plural statement.");return d};
-goog.i18n.MessageFormat.prototype.parseOrdinalBlock_=function(a){var b="",c=goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;c.argumentOffset=0;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing ordinal key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid ordinal value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");
-c[e.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in selectordinal statement.");return c};goog.i18n.MessageFormat.prototype.buildPlaceholder_=function(a){goog.asserts.assert(0<a.length,"Literal array is empty.");a=(a.length-1).toString(10);return goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_+a+"_"};cvox.TtsCapturingEventListener=function(){};cvox.TtsInterface=function(){};cvox.TtsInterface.prototype.speak=function(){};cvox.TtsInterface.prototype.isSpeaking=function(){};cvox.TtsInterface.prototype.stop=function(){};cvox.TtsInterface.prototype.increaseOrDecreaseProperty=function(){};cvox.TtsInterface.prototype.getDefaultProperty=function(){};cvox.AbstractTts=function(){this.ttsProperties={};this.propertyDefault={rate:0.5,pitch:0.5,volume:0.5};this.propertyMin={rate:0,pitch:0,volume:0};this.propertyMax={rate:1,pitch:1,volume:1};this.propertyStep={rate:0.1,pitch:0.1,volume:0.1};if(void 0==cvox.AbstractTts.pronunciationDictionaryRegexp_){var a=[],b;for(b in cvox.AbstractTts.PRONUNCIATION_DICTIONARY)a.push(b);a="\\b("+a.join("|")+")\\b";cvox.AbstractTts.pronunciationDictionaryRegexp_=RegExp(a,"ig")}if(void 0==cvox.AbstractTts.substitutionDictionaryRegexp_){var a=
-[],c;for(c in cvox.AbstractTts.SUBSTITUTION_DICTIONARY)a.push(c);a="("+a.join("|")+")";cvox.AbstractTts.substitutionDictionaryRegexp_=RegExp(a,"ig")}};cvox.AbstractTts.prototype.speak=function(){return this};cvox.AbstractTts.prototype.isSpeaking=function(){return!1};cvox.AbstractTts.prototype.stop=function(){};
-cvox.AbstractTts.prototype.increaseOrDecreaseProperty=function(a,b){var c=this.propertyMin[a],d=this.propertyMax[a],e=this.propertyStep[a],f=this.ttsProperties[a],f=b?f+e:f-e;this.ttsProperties[a]=Math.max(Math.min(f,d),c)};
-cvox.AbstractTts.prototype.mergeProperties=function(a){var b={},c;if(this.ttsProperties)for(c in this.ttsProperties)b[c]=this.ttsProperties[c];if(a){c=cvox.AbstractTts;"number"==typeof a[c.VOLUME]&&(b[c.VOLUME]=a[c.VOLUME]);"number"==typeof a[c.PITCH]&&(b[c.PITCH]=a[c.PITCH]);"number"==typeof a[c.RATE]&&(b[c.RATE]=a[c.RATE]);"string"==typeof a[c.LANG]&&(b[c.LANG]=a[c.LANG]);var d=this,e=function(c,e){if("number"==typeof a[e]&&"number"==typeof b[c]){b[c]+=a[e];var h=d.propertyMin[c],k=d.propertyMax[c];
-b[c]>k?b[c]=k:b[c]<h&&(b[c]=h)}};e(c.VOLUME,c.RELATIVE_VOLUME);e(c.PITCH,c.RELATIVE_PITCH);e(c.RATE,c.RELATIVE_RATE)}return b};cvox.AbstractTts.RATE="rate";cvox.AbstractTts.PITCH="pitch";cvox.AbstractTts.VOLUME="volume";cvox.AbstractTts.LANG="lang";cvox.AbstractTts.RELATIVE_RATE="relativeRate";cvox.AbstractTts.RELATIVE_PITCH="relativePitch";cvox.AbstractTts.RELATIVE_VOLUME="relativeVolume";cvox.AbstractTts.COLOR="color";cvox.AbstractTts.FONT_WEIGHT="fontWeight";cvox.AbstractTts.PUNCTUATION_ECHO="punctuationEcho";
-cvox.AbstractTts.PAUSE="pause";cvox.AbstractTts.PERSONALITY_ANNOTATION={relativePitch:-0.25,color:"yellow",punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT={punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ASIDE={relativePitch:-0.1,color:"#669"};cvox.AbstractTts.PERSONALITY_CAPITAL={relativePitch:0.6};cvox.AbstractTts.PERSONALITY_DELETED={punctuationEcho:"none",relativePitch:-0.6};cvox.AbstractTts.PERSONALITY_QUOTE={relativePitch:0.1,color:"#b6b",fontWeight:"bold"};
-cvox.AbstractTts.PERSONALITY_STRONG={relativePitch:0.1,color:"#b66",fontWeight:"bold"};cvox.AbstractTts.PERSONALITY_EMPHASIS={relativeVolume:0.1,relativeRate:-0.1,color:"#6bb",fontWeight:"bold"};cvox.AbstractTts.DEBUG=!0;cvox.AbstractTts.QUEUE_MODE_FLUSH=0;cvox.AbstractTts.QUEUE_MODE_QUEUE=1;
-cvox.AbstractTts.CHARACTER_DICTIONARY={" ":"space","`":"backtick","~":"tilde","!":"exclamation","@":"at","#":"pound",$:"dollar","%":"percent","^":"caret","&":"ampersand","*":"asterisk","(":"open_paren",")":"close_paren","-":"dash",_:"underscore","=":"equals","+":"plus","[":"left_bracket","]":"right_bracket","{":"left_brace","}":"right_brace","|":"pipe",";":"semicolon",":":"colon",",":"comma",".":"dot","<":"less_than",">":"greater_than","/":"slash","?":"question_mark",'"':"quote","'":"apostrophe",
-"\t":"tab","\r":"return","\n":"new line","\\":"backslash"};cvox.AbstractTts.PRONUNCIATION_DICTIONARY={admob:"ad-mob",adsense:"ad-sense",adwords:"ad-words",angularjs:"angular j s",bcc:"B C C",cc:"C C",chromevox:"chrome vox",cr48:"C R 48",ctrl:"control",doubleclick:"double-click",gmail:"gee mail",gtalk:"gee talk",http:"H T T P",https:"H T T P S",igoogle:"eye google",pagerank:"page-rank",username:"user-name",www:"W W W",youtube:"you tube"};
-cvox.AbstractTts.SUBSTITUTION_DICTIONARY={"://":"colon slash slash","\u00bc":"one fourth","\u00bd":"one half","\u200e":"left to right mark","\u2190":"left arrow","\u2191":"up arrow","\u2192":"right arrow","\u2193":"down arrow","\u21d0":"left double arrow","\u21d1":"up double arrow","\u21d2":"right double arrow","\u21d3":"down double arrow","\u21e6":"left arrow","\u21e7":"up arrow","\u21e8":"right arrow","\u21e9":"down arrow","\u2303":"control","\u2318":"command","\u2325":"option","\u25b2":"up triangle",
-"\u25b3":"up triangle","\u25b4":"up triangle","\u25b5":"up triangle","\u25b6":"right triangle","\u25b7":"right triangle","\u25b8":"right triangle","\u25b9":"right triangle","\u25ba":"right pointer","\u25bb":"right pointer","\u25bc":"down triangle","\u25bd":"down triangle","\u25be":"down triangle","\u25bf":"down triangle","\u25c0":"left triangle","\u25c1":"left triangle","\u25c2":"left triangle","\u25c3":"left triangle","\u25c4":"left pointer","\u25c5":"left pointer","\uf8ff":"apple"};
-cvox.AbstractTts.repetitionRegexp_=/([-\/\\|!@#$%^&*\(\)=_+\[\]\{\}.?;'":<>])\1{2,}/g;cvox.AbstractTts.repetitionReplace_=function(a){var b=a.length;return" "+(new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg(cvox.AbstractTts.CHARACTER_DICTIONARY[a[0]]))).format({COUNT:b})+" "};cvox.AbstractTts.prototype.getDefaultProperty=function(a){return this.propertyDefault[a]};cvox.AbstractEarcons=function(){this.enabled=!0};cvox.AbstractEarcons.prototype.playEarcon=function(){};cvox.AbstractEarcons.prototype.playEarconByName=function(a){this.playEarcon(this.getEarconId(a))};cvox.AbstractEarcons.prototype.earconsAvailable=function(){return!0};
-cvox.AbstractEarcons.prototype.getEarconId=function(a){this.earconNamesToIds||(this.earconNamesToIds={},this.earconNamesToIds.ALERT_MODAL=cvox.AbstractEarcons.ALERT_MODAL,this.earconNamesToIds.ALERT_NONMODAL=cvox.AbstractEarcons.ALERT_NONMODAL,this.earconNamesToIds.BULLET=cvox.AbstractEarcons.BULLET,this.earconNamesToIds.BUSY_PROGRESS_LOOP=cvox.AbstractEarcons.BUSY_PROGRESS_LOOP,this.earconNamesToIds.BUSY_WORKING_LOOP=cvox.AbstractEarcons.BUSY_WORKING_LOOP,this.earconNamesToIds.BUTTON=cvox.AbstractEarcons.BUTTON,
-this.earconNamesToIds.CHECK_OFF=cvox.AbstractEarcons.CHECK_OFF,this.earconNamesToIds.CHECK_ON=cvox.AbstractEarcons.CHECK_ON,this.earconNamesToIds.CHROMEVOX_DISABLED=cvox.AbstractEarcons.CHROMEVOX_DISABLED,this.earconNamesToIds.CHROMEVOX_ENABLED=cvox.AbstractEarcons.CHROMEVOX_ENABLED,this.earconNamesToIds.COLLAPSED=cvox.AbstractEarcons.COLLAPSED,this.earconNamesToIds.EDITABLE_TEXT=cvox.AbstractEarcons.EDITABLE_TEXT,this.earconNamesToIds.ELLIPSIS=cvox.AbstractEarcons.ELLIPSIS,this.earconNamesToIds.EXPANDED=
-cvox.AbstractEarcons.EXPANDED,this.earconNamesToIds.FONT_CHANGE=cvox.AbstractEarcons.FONT_CHANGE,this.earconNamesToIds.INVALID_KEYPRESS=cvox.AbstractEarcons.INVALID_KEYPRESS,this.earconNamesToIds.LINK=cvox.AbstractEarcons.LINK,this.earconNamesToIds.LISTBOX=cvox.AbstractEarcons.LISTBOX,this.earconNamesToIds.LIST_ITEM=cvox.AbstractEarcons.LIST_ITEM,this.earconNamesToIds.LONG_DESC=cvox.AbstractEarcons.LONG_DESC,this.earconNamesToIds.NEW_MAIL=cvox.AbstractEarcons.NEW_MAIL,this.earconNamesToIds.OBJECT_CLOSE=
-cvox.AbstractEarcons.OBJECT_CLOSE,this.earconNamesToIds.OBJECT_DELETE=cvox.AbstractEarcons.OBJECT_DELETE,this.earconNamesToIds.OBJECT_DESELECT=cvox.AbstractEarcons.OBJECT_DESELECT,this.earconNamesToIds.OBJECT_ENTER=cvox.AbstractEarcons.OBJECT_ENTER,this.earconNamesToIds.OBJECT_EXIT=cvox.AbstractEarcons.OBJECT_EXIT,this.earconNamesToIds.OBJECT_OPEN=cvox.AbstractEarcons.OBJECT_OPEN,this.earconNamesToIds.OBJECT_SELECT=cvox.AbstractEarcons.OBJECT_SELECT,this.earconNamesToIds.PARAGRAPH_BREAK=cvox.AbstractEarcons.PARAGRAPH_BREAK,
-this.earconNamesToIds.SEARCH_HIT=cvox.AbstractEarcons.SEARCH_HIT,this.earconNamesToIds.SEARCH_MISS=cvox.AbstractEarcons.SEARCH_MISS,this.earconNamesToIds.SECTION=cvox.AbstractEarcons.SECTION,this.earconNamesToIds.SELECTION=cvox.AbstractEarcons.SELECTION,this.earconNamesToIds.SELECTION_REVERSE=cvox.AbstractEarcons.SELECTION_REVERSE,this.earconNamesToIds.SPECIAL_CONTENT=cvox.AbstractEarcons.SPECIAL_CONTENT,this.earconNamesToIds.TASK_SUCCESS=cvox.AbstractEarcons.TASK_SUCCESS,this.earconNamesToIds.WRAP=
-cvox.AbstractEarcons.WRAP,this.earconNamesToIds.WRAP_EDGE=cvox.AbstractEarcons.WRAP_EDGE);return this.earconNamesToIds[a]};cvox.AbstractEarcons.prototype.getEarconFilename=function(a){return cvox.AbstractEarcons.earconMap[a]};cvox.AbstractEarcons.prototype.toggle=function(){return this.enabled=!this.enabled};cvox.AbstractEarcons.ALERT_MODAL=0;cvox.AbstractEarcons.ALERT_NONMODAL=1;cvox.AbstractEarcons.BULLET=2;cvox.AbstractEarcons.BUSY_PROGRESS_LOOP=3;cvox.AbstractEarcons.BUSY_WORKING_LOOP=4;
-cvox.AbstractEarcons.BUTTON=5;cvox.AbstractEarcons.CHECK_OFF=6;cvox.AbstractEarcons.CHECK_ON=7;cvox.AbstractEarcons.CHROMEVOX_DISABLED=8;cvox.AbstractEarcons.CHROMEVOX_ENABLED=9;cvox.AbstractEarcons.COLLAPSED=10;cvox.AbstractEarcons.EDITABLE_TEXT=11;cvox.AbstractEarcons.ELLIPSIS=12;cvox.AbstractEarcons.EXPANDED=13;cvox.AbstractEarcons.FONT_CHANGE=14;cvox.AbstractEarcons.INVALID_KEYPRESS=15;cvox.AbstractEarcons.LINK=16;cvox.AbstractEarcons.LISTBOX=17;cvox.AbstractEarcons.LIST_ITEM=18;
-cvox.AbstractEarcons.LONG_DESC=19;cvox.AbstractEarcons.NEW_MAIL=20;cvox.AbstractEarcons.OBJECT_CLOSE=21;cvox.AbstractEarcons.OBJECT_DELETE=22;cvox.AbstractEarcons.OBJECT_DESELECT=23;cvox.AbstractEarcons.OBJECT_ENTER=24;cvox.AbstractEarcons.OBJECT_EXIT=25;cvox.AbstractEarcons.OBJECT_OPEN=26;cvox.AbstractEarcons.OBJECT_SELECT=27;cvox.AbstractEarcons.PARAGRAPH_BREAK=28;cvox.AbstractEarcons.SEARCH_HIT=29;cvox.AbstractEarcons.SEARCH_MISS=30;cvox.AbstractEarcons.SECTION=31;
-cvox.AbstractEarcons.SELECTION=32;cvox.AbstractEarcons.SELECTION_REVERSE=33;cvox.AbstractEarcons.SPECIAL_CONTENT=34;cvox.AbstractEarcons.TASK_SUCCESS=35;cvox.AbstractEarcons.WRAP=36;cvox.AbstractEarcons.WRAP_EDGE=37;cvox.AbstractEarcons.earconMap={};cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_MODAL]="alert_modal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_NONMODAL]="alert_nonmodal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BULLET]="bullet.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_PROGRESS_LOOP]="busy_progress_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_WORKING_LOOP]="busy_working_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUTTON]="button.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_OFF]="check_off.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_ON]="check_on.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_DISABLED]="chromevox_disabled.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_ENABLED]="chromevox_enabled.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.COLLAPSED]="collapsed.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EDITABLE_TEXT]="editable_text.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ELLIPSIS]="ellipsis.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EXPANDED]="expanded.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.FONT_CHANGE]="font_change.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.INVALID_KEYPRESS]="invalid_keypress.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LINK]="link.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LISTBOX]="listbox.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LIST_ITEM]="bullet.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LONG_DESC]="long_desc.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.NEW_MAIL]="new_mail.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_CLOSE]="object_close.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DELETE]="object_delete.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DESELECT]="object_deselect.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_ENTER]="object_enter.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_EXIT]="object_exit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_OPEN]="object_open.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_SELECT]="object_select.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.PARAGRAPH_BREAK]="paragraph_break.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_HIT]="search_hit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_MISS]="search_miss.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SECTION]="section.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION]="selection.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION_REVERSE]="selection_reverse.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SPECIAL_CONTENT]="special_content.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.TASK_SUCCESS]="task_success.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP]="wrap.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP_EDGE]="wrap_edge.ogg";cvox.NodeStateUtil={};cvox.NodeStateUtil.expand=function(a){try{return a.map(function(a){if(1>a.length)throw Error("cvox.NodeState must have at least one entry");var b=a.slice(1).map(function(a){return"number"==typeof a?cvox.ChromeVox.msgs.getNumber(a):a});return cvox.ChromeVox.msgs.getMsg(a[0],b)}).join(" ")}catch(b){throw Error("error: "+b+" state: "+a);}};cvox.AriaUtil=function(){};cvox.AriaUtil.NO_ROLE_NAME=" ";
-cvox.AriaUtil.WIDGET_ROLE_TO_NAME={alert:"aria_role_alert",alertdialog:"aria_role_alertdialog",button:"aria_role_button",checkbox:"aria_role_checkbox",columnheader:"aria_role_columnheader",combobox:"aria_role_combobox",dialog:"aria_role_dialog",grid:"aria_role_grid",gridcell:"aria_role_gridcell",link:"aria_role_link",listbox:"aria_role_listbox",log:"aria_role_log",marquee:"aria_role_marquee",menu:"aria_role_menu",menubar:"aria_role_menubar",menuitem:"aria_role_menuitem",menuitemcheckbox:"aria_role_menuitemcheckbox",
-menuitemradio:"aria_role_menuitemradio",option:cvox.AriaUtil.NO_ROLE_NAME,progressbar:"aria_role_progressbar",radio:"aria_role_radio",radiogroup:"aria_role_radiogroup",rowheader:"aria_role_rowheader",scrollbar:"aria_role_scrollbar",slider:"aria_role_slider",spinbutton:"aria_role_spinbutton",status:"aria_role_status",tab:"aria_role_tab",tabpanel:"aria_role_tabpanel",textbox:"aria_role_textbox",timer:"aria_role_timer",toolbar:"aria_role_toolbar",tooltip:"aria_role_tooltip",treeitem:"aria_role_treeitem"};
-cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME={article:"aria_role_article",application:"aria_role_application",banner:"aria_role_banner",columnheader:"aria_role_columnheader",complementary:"aria_role_complementary",contentinfo:"aria_role_contentinfo",definition:"aria_role_definition",directory:"aria_role_directory",document:"aria_role_document",form:"aria_role_form",group:"aria_role_group",heading:"aria_role_heading",img:"aria_role_img",list:"aria_role_list",listitem:"aria_role_listitem",main:"aria_role_main",
-math:"aria_role_math",navigation:"aria_role_navigation",note:"aria_role_note",region:"aria_role_region",rowheader:"aria_role_rowheader",search:"aria_role_search",separator:"aria_role_separator"};
-cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS=[{name:"aria-autocomplete",values:{inline:"aria_autocomplete_inline",list:"aria_autocomplete_list",both:"aria_autocomplete_both"}},{name:"aria-checked",values:{"true":"aria_checked_true","false":"aria_checked_false",mixed:"aria_checked_mixed"}},{name:"aria-disabled",values:{"true":"aria_disabled_true"}},{name:"aria-expanded",values:{"true":"aria_expanded_true","false":"aria_expanded_false"}},{name:"aria-invalid",values:{"true":"aria_invalid_true",grammar:"aria_invalid_grammar",
-spelling:"aria_invalid_spelling"}},{name:"aria-multiline",values:{"true":"aria_multiline_true"}},{name:"aria-multiselectable",values:{"true":"aria_multiselectable_true"}},{name:"aria-pressed",values:{"true":"aria_pressed_true","false":"aria_pressed_false",mixed:"aria_pressed_mixed"}},{name:"aria-readonly",values:{"true":"aria_readonly_true"}},{name:"aria-required",values:{"true":"aria_required_true"}},{name:"aria-selected",values:{"true":"aria_selected_true","false":"aria_selected_false"}}];
-cvox.AriaUtil.isHiddenRecursive=function(a){if(cvox.AriaUtil.isHidden(a))return!0;for(a=a.parentElement;a;){if("true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return!0;a=a.parentElement}return!1};cvox.AriaUtil.isHidden=function(a){return!a||a.getAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")?!0:!1};
-cvox.AriaUtil.isForcedVisibleRecursive=function(a){for(;a;){if(a.getAttribute&&a.hasAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return"false"==a.getAttribute("aria-hidden");a=a.parentElement}return!1};cvox.AriaUtil.isLeafElement=function(a){var b=a.getAttribute("role");a=a.hasAttribute("aria-label")&&0<a.getAttribute("aria-label").length;return"img"==b||"progressbar"==b||a};
-cvox.AriaUtil.isDescendantOfRole=function(a,b){for(;a;){if(b&&a&&a.getAttribute("role")==b)return!0;a=a.parentNode}return!1};cvox.AriaUtil.getRoleNameMsgForRole_=function(a){return(a=cvox.AriaUtil.WIDGET_ROLE_TO_NAME[a])?a==cvox.AriaUtil.NO_ROLE_NAME?" ":a:null};cvox.AriaUtil.isButton=function(a){var b=cvox.AriaUtil.getRoleAttribute(a);return"button"==b||"BUTTON"==a.tagName?!0:"INPUT"==a.tagName?"submit"==a.type||"reset"==a.type||"button"==a.type:!1};
-cvox.AriaUtil.getRoleNameMsg=function(a){var b;if(a&&a.getAttribute){var c=cvox.AriaUtil.getRoleAttribute(a);if("true"==a.getAttribute("aria-haspopup")&&cvox.AriaUtil.isButton(a))return"aria_role_popup_button";c&&((b=cvox.AriaUtil.getRoleNameMsgForRole_(c))||(b=cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME[c]));if("menuitem"==c){for(a=a.parentElement;a&&(!a.getAttribute||"menu"!=cvox.AriaUtil.getRoleAttribute(a)&&"menubar"!=cvox.AriaUtil.getRoleAttribute(a));)a=a.parentElement;a&&"menubar"==cvox.AriaUtil.getRoleAttribute(a)&&
-(b=cvox.AriaUtil.getRoleNameMsgForRole_("menu"))}}b||(b="");return b};cvox.AriaUtil.getRoleName=function(a){var b=cvox.AriaUtil.getRoleNameMsg(a),b=cvox.ChromeVox.msgs.getMsg(b),c=cvox.AriaUtil.getRoleAttribute(a);"heading"==c&&a.hasAttribute("aria-level")&&(b+=" "+a.getAttribute("aria-level"));return b?b:""};
-cvox.AriaUtil.getStateMsgs=function(a,b){var c=[];if(!a||!a.getAttribute)return c;for(var d=0,e;e=cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS[d];d++){var f=a.getAttribute(e.name);(e=e.values[f])&&c.push([e])}if("grid"==a.getAttribute("role"))return cvox.AriaUtil.getGridState_(a,a);e=cvox.AriaUtil.getRoleAttribute(a);"true"==a.getAttribute("aria-haspopup")&&("menuitem"==e?c.push(["has_submenu"]):cvox.AriaUtil.isButton(a)||c.push(["has_popup"]));if(d=a.getAttribute("aria-valuetext"))return c.push([d]),
-c;var d=a.getAttribute("aria-valuenow"),f=a.getAttribute("aria-valuemin"),g=a.getAttribute("aria-valuemax");if(null!=d&&null!=f&&null!=g&&("scrollbar"==e||"progressbar"==e)){var h=Math.round(d/(g-f)*100);c.push(["state_percent",h]);return c}null!=d&&c.push(["aria_value_now",d]);null!=f&&c.push(["aria_value_min",f]);null!=g&&c.push(["aria_value_max",g]);f=a;d=null;if(cvox.AriaUtil.isCompositeControl(f)&&b)d=cvox.AriaUtil.getActiveDescendant(f);else if(e=cvox.AriaUtil.getRoleAttribute(a),"option"==
-e||"menuitem"==e||"menuitemcheckbox"==e||"menuitemradio"==e||"radio"==e||"tab"==e||"treeitem"==e)for(d=a,f=a.parentElement;f&&!cvox.AriaUtil.isCompositeControl(f)&&(!(f=f.parentElement)||"treeitem"!=cvox.AriaUtil.getRoleAttribute(f)););if(f&&(cvox.AriaUtil.isCompositeControl(f)||"treeitem"==cvox.AriaUtil.getRoleAttribute(f))&&d){e=cvox.AriaUtil.getRoleAttribute(f);var k;switch(e){case "combobox":case "listbox":k=["option"];break;case "menu":k=["menuitem","menuitemcheck","menuitemradio"];break;case "radiogroup":k=
-["radio"];break;case "tablist":k=["tab"];break;case "tree":case "treegrid":case "treeitem":k=["treeitem"]}if(k){var l;e=parseInt(d.getAttribute("aria-setsize"),10);isNaN(e)||(h=e);e=parseInt(d.getAttribute("aria-posinset"),10);isNaN(e)||(l=e);if(void 0==h||void 0==l)if(k=cvox.AriaUtil.getNextLevel(f,k),void 0==h&&(h=k.length),void 0==l)for(e=0;e<k.length;e++)k[e]==d&&(l=e+1);l&&h&&c.push(["list_position",l,h])}}return c};
-cvox.AriaUtil.getGridState_=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(b);if(c)for(var d='*[role~="row"]',d=b.querySelectorAll(d),e=0;e<d.length;e++)for(var f=d[e].querySelectorAll('*[role~="gridcell"]'),g=0;g<f.length;g++)if(f[g]==c)return[["aria_role_gridcell_pos",e+1,g+1]];return[]};cvox.AriaUtil.getActiveDescendantId_=function(a){return a.getAttribute?(a=a.getAttribute("aria-activedescendant"))?a:null:null};
-cvox.AriaUtil.getNextLevel=function(a,b){for(var c=[],d=a.childNodes,e=0;e<d.length;e++)if(!cvox.AriaUtil.isHidden(d[e])&&cvox.DomUtil.isVisible(d[e])){var f=cvox.AriaUtil.getNextLevelItems(d[e],b);0<f.length&&(c=c.concat(f))}return c};
-cvox.AriaUtil.getNextLevelItems=function(a,b){if(1!=a.nodeType)return[];if(-1!=b.indexOf(cvox.AriaUtil.getRoleAttribute(a)))return[a];var c=a.childNodes,d=c.length;if(0==d)return[];for(var e=[],f=0;f<d;f++){var g=cvox.AriaUtil.getNextLevelItems(c[f],b);0<g.length&&(e=e.concat(g))}return e};cvox.AriaUtil.getActiveDescendant=function(a){for(var b={},c=a;c;){var d=cvox.AriaUtil.getActiveDescendantId_(c);if(!d)break;if(d in b)return null;b[d]=!0;c=document.getElementById(d)}return c==a?null:c};
-cvox.AriaUtil.isControlWidget=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "button":case "checkbox":case "combobox":case "listbox":case "menu":case "menuitemcheckbox":case "menuitemradio":case "radio":case "slider":case "progressbar":case "scrollbar":case "spinbutton":case "tab":case "tablist":case "textbox":return!0}return!1};cvox.AriaUtil.isCompositeControl=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "combobox":case "grid":case "listbox":case "menu":case "menubar":case "radiogroup":case "tablist":case "tree":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getAriaLive=function(a){if(!a.hasAttribute)return null;var b=a.getAttribute("aria-live");if("off"==b)return null;if(b)return b;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "alert":return"assertive";case "log":case "status":return"polite";default:return null}};cvox.AriaUtil.getAriaAtomic=function(a){if(!a.hasAttribute)return!1;var b=a.getAttribute("aria-atomic");if(b)return"true"===b;a=cvox.AriaUtil.getRoleAttribute(a);return"alert"==a?!0:!1};
-cvox.AriaUtil.getAriaBusy=function(a){return a.hasAttribute?(a=a.getAttribute("aria-busy"))?"true"===a:!1:!1};cvox.AriaUtil.getAriaRelevant=function(a,b){if(!a.hasAttribute)return!1;var c;c=a.hasAttribute("aria-relevant")?a.getAttribute("aria-relevant"):"additions text";"all"==c&&(c="additions removals text");c=c.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").split(" ");return"all"==b?0<=c.indexOf("additions")&&0<=c.indexOf("text")&&0<=c.indexOf("removals"):0<=c.indexOf(b)};
-cvox.AriaUtil.getLiveRegions=function(a){var b=[];if(a.querySelectorAll){var c=a.querySelectorAll('[role="alert"], [role="log"], [role="marquee"], [role="status"], [role="timer"], [aria-live]');if(c)for(var d=0;d<c.length;d++)b.push(c[d])}for(;a;){if(cvox.AriaUtil.getAriaLive(a)){b.push(a);break}a=a.parentElement}return b};cvox.AriaUtil.isLandmark=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "application":case "banner":case "complementary":case "contentinfo":case "form":case "main":case "navigation":case "search":return!0}return!1};
-cvox.AriaUtil.isGrid=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "grid":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getEarcon=function(a){if(!a||!a.getAttribute)return null;var b=cvox.AriaUtil.getRoleAttribute(a);switch(b){case "button":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":case "menuitemcheckbox":case "menuitemradio":return a=a.getAttribute("aria-checked"),"true"==a?cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;case "combobox":case "listbox":return cvox.AbstractEarcons.LISTBOX;case "textbox":return cvox.AbstractEarcons.EDITABLE_TEXT;case "listitem":return cvox.AbstractEarcons.BULLET;
-case "link":return cvox.AbstractEarcons.LINK}return null};cvox.AriaUtil.getRoleAttribute=function(a){if(!a.getAttribute)return"";var b=a.getAttribute("role");a.hasAttribute("chromevoxoriginalrole")&&(b=a.getAttribute("chromevoxoriginalrole"));return b};cvox.AriaUtil.isMath=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);return"math"==a};cvox.DomPredicates={};cvox.DomPredicates.checkboxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"checkbox"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"checkbox"==a[b].type)return a[b];return null};cvox.DomPredicates.radioPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"radio"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"radio"==a[b].type)return a[b];return null};
-cvox.DomPredicates.sliderPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"slider"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"range"==a[b].type)return a[b];return null};cvox.DomPredicates.graphicPredicate=function(a){for(var b=0;b<a.length;b++)if("IMG"==a[b].tagName||"INPUT"==a[b].tagName&&"img"==a[b].type)return a[b];return null};
-cvox.DomPredicates.buttonPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"button"==a[b].getAttribute("role")||"BUTTON"==a[b].tagName||"INPUT"==a[b].tagName&&"submit"==a[b].type||"INPUT"==a[b].tagName&&"button"==a[b].type||"INPUT"==a[b].tagName&&"reset"==a[b].type)return a[b];return null};cvox.DomPredicates.comboBoxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"combobox"==a[b].getAttribute("role")||"SELECT"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.editTextPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"textbox"==a[b].getAttribute("role")||"TEXTAREA"==a[b].tagName||a[b].isContentEditable||"INPUT"==a[b].tagName&&cvox.DomUtil.isInputTypeText(a[b]))return a[b];return null};cvox.DomPredicates.headingPredicate=function(a){for(var b=0;b<a.length;b++){if(a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.heading1Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H1")};cvox.DomPredicates.heading2Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H2")};cvox.DomPredicates.heading3Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H3")};cvox.DomPredicates.heading4Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H4")};cvox.DomPredicates.heading5Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H5")};
-cvox.DomPredicates.heading6Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H6")};cvox.DomPredicates.linkPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.tablePredicate=function(a){return(a=cvox.DomUtil.findTableNodeInList(a,{allowCaptions:!0}))&&!cvox.DomUtil.isLayoutTable(a)?a:null};
-cvox.DomPredicates.cellPredicate=function(a){for(var b=a.length-1;0<=b;--b){var c=a[b];if("TD"==c.tagName||"TH"==c.tagName||c.getAttribute&&"gridcell"==c.getAttribute("role"))return c}return null};cvox.DomPredicates.visitedLinkPredicate=function(a){for(var b=a.length-1;0<=b;--b)if(cvox.DomPredicates.linkPredicate([a[b]])&&cvox.ChromeVox.visitedUrls[a[b].href])return a[b]};
-cvox.DomPredicates.listPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"list"==a[b].getAttribute("role")||"UL"==a[b].tagName||"OL"==a[b].tagName)return a[b];return null};cvox.DomPredicates.listItemPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"listitem"==a[b].getAttribute("role")||"LI"==a[b].tagName)return a[b];return null};cvox.DomPredicates.blockquotePredicate=function(a){return cvox.DomPredicates.containsTagName_(a,"BLOCKQUOTE")};
-cvox.DomPredicates.formFieldPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b]))return a[b];return null};cvox.DomPredicates.landmarkPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.AriaUtil.isLandmark(a[b]))return a[b];return null};cvox.DomPredicates.containsTagName_=function(a,b){for(var c=a.length;c--;)if(a[c].tagName==b)return a[c];return null};cvox.DomPredicates.mathPredicate=function(a){return cvox.DomUtil.findMathNodeInList(a)};
-cvox.DomPredicates.sectionPredicate=function(a){for(var b=0;b<a.length;b++){if(cvox.DomUtil.isSemanticElt(a[b])||cvox.AriaUtil.isLandmark(a[b])||a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.controlPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b])||a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.captionPredicate=function(a){for(var b=0;b<a.length;b++)if("CAPTION"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.articlePredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"article"==a[b].getAttribute("role")||"ARTICLE"==a[b].tagName)return a[b];return null};cvox.DomPredicates.mediaPredicate=function(a){for(var b=0;b<a.length;b++)if("AUDIO"==a[b].tagName||"VIDEO"==a[b].tagName)return a[b];return null};cvox.DomPredicates.orderedListPredicate=function(a){for(var b=0;b<a.length;b++)if("OL"==a[b].tagName)return a[b];return null};cvox.XpathUtil=function(){};cvox.XpathUtil.nameSpaces_={xhtml:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML"};cvox.XpathUtil.resolveNameSpace=function(a){return cvox.XpathUtil.nameSpaces_[a]||null};cvox.XpathUtil.evalXPath=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(d){return[]}for(var e=[],f=c.iterateNext();f;f=c.iterateNext())e.push(f);return e};
-cvox.XpathUtil.getLeafNodes=function(a){try{var b=a.ownerDocument.evaluate(".//*[count(*)=0]",a,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(c){return[]}a=[];for(var d=b.iterateNext();d;d=b.iterateNext())a.push(d);return a};cvox.XpathUtil.xpathSupported=function(){return"undefined"==typeof XPathResult?!1:!0};cvox.XpathUtil.evaluateBoolean=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.BOOLEAN_TYPE,null)}catch(d){return!1}return c.booleanValue};
-cvox.XpathUtil.evaluateString=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.STRING_TYPE,null)}catch(d){return""}return c.stringValue};cvox.DomUtil=function(){};
-cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG={button:"input_type_button",checkbox:"input_type_checkbox",color:"input_type_color",datetime:"input_type_datetime","datetime-local":"input_type_datetime_local",date:"input_type_date",email:"input_type_email",file:"input_type_file",image:"input_type_image",month:"input_type_month",number:"input_type_number",password:"input_type_password",radio:"input_type_radio",range:"input_type_range",reset:"input_type_reset",search:"input_type_search",submit:"input_type_submit",
-tel:"input_type_tel",text:"input_type_text",url:"input_type_url",week:"input_type_week"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG={A:"tag_link",ARTICLE:"tag_article",ASIDE:"tag_aside",AUDIO:"tag_audio",BUTTON:"tag_button",FOOTER:"tag_footer",H1:"tag_h1",H2:"tag_h2",H3:"tag_h3",H4:"tag_h4",H5:"tag_h5",H6:"tag_h6",HEADER:"tag_header",HGROUP:"tag_hgroup",LI:"tag_li",MARK:"tag_mark",NAV:"tag_nav",OL:"tag_ol",SECTION:"tag_section",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",TIME:"tag_time",UL:"tag_ul",VIDEO:"tag_video"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG={AUDIO:"tag_audio",BUTTON:"tag_button",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",VIDEO:"tag_video"};cvox.DomUtil.FORMATTING_TAGS="B BIG CITE CODE DFN EM I KBD SAMP SMALL SPAN STRIKE STRONG SUB SUP U VAR".split(" ");
-cvox.DomUtil.isVisible=function(a,b){b=b||{};"undefined"===typeof b.checkAncestors&&(b.checkAncestors=!0);"undefined"===typeof b.checkDescendants&&(b.checkDescendants=!0);if("IFRAME"==a.tagName&&!a.src)return!1;if(cvox.AriaUtil.isForcedVisibleRecursive(a))return!0;if(b.checkAncestors&&cvox.DomUtil.hasInvisibleAncestor_(a))return!1;var c=b.checkDescendants;return cvox.DomUtil.hasVisibleNodeSubtree_(a,c)?!0:!1};
-cvox.DomUtil.hasInvisibleAncestor_=function(a){for(;a=a.parentElement;){var b=document.defaultView.getComputedStyle(a,null);if(cvox.DomUtil.isInvisibleStyle(b,!0))return!0}return!1};
-cvox.DomUtil.hasVisibleNodeSubtree_=function(a,b){if(!(a instanceof Element)){var c=document.defaultView.getComputedStyle(a.parentElement,null);return c=!cvox.DomUtil.isInvisibleStyle(c)}var c=document.defaultView.getComputedStyle(a,null),d=!cvox.DomUtil.isInvisibleStyle(c);if(d)return!0;c=cvox.DomUtil.isInvisibleStyle(c,!0);if(!b||c)return!1;c=a.childNodes;for(d=0;d<c.length;d++){var e=c[d];if(cvox.DomUtil.hasVisibleNodeSubtree_(e,b))return!0}return!1};
-cvox.DomUtil.isInvisibleStyle=function(a,b){return a?"none"!=a.display&&0!=parseFloat(a.opacity)&&(b||"hidden"!=a.visibility&&"collapse"!=a.visibility)?!1:!0:!1};cvox.DomUtil.isDisabled=function(a){if(a.disabled)return!0;for(;a=a.parentElement;)if("FIELDSET"==a.tagName&&a.disabled)return!0;return!1};cvox.DomUtil.isSemanticElt=function(a){return a.tagName&&(a=a.tagName,"SECTION"==a||"NAV"==a||"ARTICLE"==a||"ASIDE"==a||"HGROUP"==a||"HEADER"==a||"FOOTER"==a||"TIME"==a||"MARK"==a)?!0:!1};
-cvox.DomUtil.isLeafNode=function(a,b){if(!(a instanceof Element))return null==a.firstChild;var c=a;if(!b&&!cvox.DomUtil.isVisible(c,{checkAncestors:!1})||!b&&cvox.AriaUtil.isHidden(c)||cvox.AriaUtil.isLeafElement(c))return!0;switch(c.tagName){case "OBJECT":case "EMBED":case "VIDEO":case "AUDIO":case "IFRAME":case "FRAME":return!0}return cvox.DomPredicates.linkPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.headingPredicate([a])}):cvox.DomUtil.isLeafLevelControl(c)||
-!c.firstChild||cvox.DomUtil.isMath(c)?!0:cvox.DomPredicates.headingPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.controlPredicate([a])}):!1};cvox.DomUtil.isDescendantOf=function(a,b,c){for(;a;){if(b&&c&&a.tagName&&a.tagName==b&&a.className&&a.className==c||b&&!c&&a.tagName&&a.tagName==b||!b&&c&&a.className&&a.className==c)return!0;a=a.parentNode}return!1};cvox.DomUtil.isDescendantOfNode=function(a,b){for(;a&&b;){if(a.isSameNode(b))return!0;a=a.parentNode}return!1};
-cvox.DomUtil.collapseWhitespace=function(a){return a.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")};
-cvox.DomUtil.getBaseLabel_=function(a,b,c){var d="";if(a.hasAttribute){if(a.hasAttribute("aria-labelledby"))for(var e=a.getAttribute("aria-labelledby").split(" "),f,g=0;f=e[g];g++)(f=document.getElementById(f))&&(d+=" "+cvox.DomUtil.getName(f,!0,c,!0));else if(a.hasAttribute("aria-label"))d=a.getAttribute("aria-label");else if(a.constructor==HTMLImageElement)d=cvox.DomUtil.getImageTitle(a);else if("FIELDSET"==a.tagName)for(e=a.getElementsByTagName("LEGEND"),d="",g=0;f=e[g];g++)d+=" "+cvox.DomUtil.getName(f,
-!0,c);0==d.length&&a&&a.id&&(a=document.querySelector('label[for="'+a.id+'"]'))&&(d=cvox.DomUtil.getName(a,b,c))}return cvox.DomUtil.collapseWhitespace(d)};cvox.DomUtil.getNearestAncestorLabel_=function(a){for(var b="";a&&"LABEL"!=a.tagName;)a=a.parentElement;a&&!a.hasAttribute("for")&&(b=cvox.DomUtil.getName(a,!0,!1));return b};
-cvox.DomUtil.getInputName_=function(a){var b="";"image"==a.type?b=cvox.DomUtil.getImageTitle(a):"submit"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Submit":"reset"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Reset":"button"==a.type&&a.hasAttribute("value")&&(b=a.getAttribute("value"));return b};
-cvox.DomUtil.getName=function(a,b,c,d){if(!a||!0==a.cvoxGetNameMarked)return"";a.cvoxGetNameMarked=!0;b=cvox.DomUtil.getName_(a,b,c,d);a.cvoxGetNameMarked=!1;a=cvox.DomUtil.getPrefixText(a);return a+b};cvox.DomUtil.hasChildrenBasedName_=function(a,b){return cvox.DomPredicates.linkPredicate([a])||cvox.DomPredicates.headingPredicate([a])||"BUTTON"==a.tagName||cvox.AriaUtil.isControlWidget(a)||!cvox.DomUtil.isLeafNode(a,b)?!0:!1};
-cvox.DomUtil.getName_=function(a,b,c,d){"undefined"===typeof b&&(b=!0);"undefined"===typeof c&&(c=!0);if(a.constructor==Text)return a.data;var e=cvox.DomUtil.getBaseLabel_(a,b,c);0==e.length&&cvox.DomUtil.isControl(a)&&(e=cvox.DomUtil.getNearestAncestorLabel_(a));0==e.length&&a.constructor==HTMLInputElement&&(e=cvox.DomUtil.getInputName_(a));return cvox.DomUtil.isInputTypeText(a)&&a.hasAttribute("placeholder")?(b=a.getAttribute("placeholder"),0<e.length?0<cvox.DomUtil.getValue(a).length?e:e+" with hint "+
-b:b):0<e.length?e:0==cvox.DomUtil.collapseWhitespace(a.textContent).length&&a.hasAttribute&&a.hasAttribute("title")?a.getAttribute("title"):!b||cvox.AriaUtil.isCompositeControl(a)?"":cvox.DomUtil.hasChildrenBasedName_(a,d)?cvox.DomUtil.getNameFromChildren(a,c,d):""};
-cvox.DomUtil.getNameFromChildren=function(a,b,c){void 0==b&&(b=!0);for(var d="",e="",f=0;f<a.childNodes.length;f++){var g=a.childNodes[f],e=a.childNodes[f-1]||g;if(b||!cvox.DomUtil.isControl(g)){var h=cvox.DomUtil.isVisible(g,{checkAncestors:!1});if(c||h&&!cvox.AriaUtil.isHidden(g))e="SPAN"==e.tagName||"SPAN"==g.tagName||"SPAN"==g.parentNode.tagName?"":" ",d+=e+cvox.DomUtil.getName(g,!0,b)}}return d};
-cvox.DomUtil.getPrefixText=function(a,b){b=b||0;for(var c=cvox.DomUtil.getAncestors(a),d="",e=c=cvox.DomPredicates.listItemPredicate(c);e&&e.firstChild;)e=e.firstChild;c&&c.parentNode&&0==b&&"OL"==c.parentNode.tagName&&a==e&&"none"!=document.defaultView.getComputedStyle(c.parentNode).listStyleType&&(d=cvox.DomUtil.toArray(c.parentNode.children).filter(function(a){return"LI"==a.tagName}),d=d.indexOf(c)+1,-1!=document.defaultView.getComputedStyle(c.parentNode).listStyleType.indexOf("latin")&&(d--,d=
-String.fromCharCode(65+d%26)),d+=". ");return d};
-cvox.DomUtil.getControlLabelHeuristics=function(a){if(a.hasAttribute&&(a.hasAttribute("aria-label")&&""==a.getAttribute("aria-label")||a.hasAttribute("aria-title")&&""==a.getAttribute("aria-title")))return"";for(var b=cvox.DomUtil.previousLeafNode(a),c=0;b&&(!cvox.DomUtil.hasContent(b)||cvox.DomUtil.isControl(b));)b=cvox.DomUtil.previousLeafNode(b),c++;for(var c=cvox.DomUtil.directedNextLeafNode(a),d=0;c&&(!cvox.DomUtil.hasContent(c)||cvox.DomUtil.isControl(c));)c=cvox.DomUtil.directedNextLeafNode(c),
-d++;if(b&&c){for(var d=a,e=0;d&&!cvox.DomUtil.isDescendantOfNode(b,d);)d=d.parentNode,e++;d=a;for(a=0;d&&!cvox.DomUtil.isDescendantOfNode(c,d);)d=d.parentNode,a++;b=a<e?c:b}else b=b||c;return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b)):""};
-cvox.DomUtil.getValue=function(a){var b=cvox.AriaUtil.getActiveDescendant(a);if(b)return cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b));if(a.constructor==HTMLSelectElement){var b="",c=a.selectedOptions?a.selectedOptions[0]:null;a=a.selectedOptions?a.selectedOptions[a.selectedOptions.length-1]:null;c&&a&&c!=a?b=cvox.ChromeVox.msgs.getMsg("selected_options_value",[c.text,a.text]):c&&(b=c.text+"");return b}if(a.constructor==HTMLTextAreaElement)return a.value;if(a.constructor==
-HTMLInputElement)switch(a.type){case "hidden":case "image":case "submit":case "reset":case "button":case "checkbox":case "radio":return"";case "password":return a.value.replace(/./g,"dot ");default:return a.value}return a.isContentEditable?cvox.DomUtil.getNameFromChildren(a,!0):""};
-cvox.DomUtil.getImageTitle=function(a){a.hasAttribute("alt")?a=a.alt:a.hasAttribute("title")?a=a.title:(a=a.src,"data"!=a.substring(0,4)?(a=a.substring(a.lastIndexOf("/")+1,a.lastIndexOf(".")),a=1<=a.length&&16>=a.length?a+" Image":"Image"):a="Image");return a};
-cvox.DomUtil.hasContent=function(a){if(8==a.nodeType||cvox.DomUtil.isDescendantOf(a,"HEAD")||cvox.DomUtil.isDescendantOf(a,"SCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOSCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOEMBED")||cvox.DomUtil.isDescendantOf(a,"STYLE")||!cvox.DomUtil.isVisible(a)||cvox.AriaUtil.isHidden(a))return!1;if(cvox.DomUtil.isControl(a)||cvox.DomUtil.isDescendantOf(a,"VIDEO")||cvox.DomUtil.isDescendantOf(a,"AUDIO")||"IFRAME"==a.tagName&&a.src&&0!=a.src.indexOf("javascript:"))return!0;
-for(var b="button,input,select,textarea",c=a.parentElement;c&&"LABEL"!=c.tagName;)c=c.parentElement;if(c){var d=c.querySelector(b);if(c.hasAttribute("for")){if(c=c.getAttribute("for"),(c=document.getElementById(c))&&cvox.DomUtil.isControl(c)&&!d)return!1}else if(d)return!1}for(d=a.parentElement;d&&"LEGEND"!=d.tagName;)d=d.parentElement;if(d){for(c=d.parentElement;c&&"FIELDSET"!=c.tagName;)c=c.parentElement;d=c&&c.querySelector(b);if(c&&!d)return!1}if(cvox.DomPredicates.linkPredicate([a])||"TABLE"==
-a.tagName||cvox.DomUtil.isMath(a)||cvox.DomPredicates.headingPredicate([a]))return!0;b=cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a);a=cvox.DomUtil.getState(a,!0);return b.match(/^\s+$/)&&""===a?!1:!0};cvox.DomUtil.getAncestors=function(a){for(var b=[];a;)b.push(a),a=a.parentNode;for(b.reverse();b.length&&!b[0].tagName&&!b[0].nodeValue;)b.shift();return b};cvox.DomUtil.compareAncestors=function(a,b){for(var c=0;a[c]&&b[c]&&a[c]==b[c];)c++;a[c]||b[c]||(c=-1);return c};
-cvox.DomUtil.getUniqueAncestors=function(a,b,c){a=cvox.DomUtil.getAncestors(a);b=cvox.DomUtil.getAncestors(b);a=cvox.DomUtil.compareAncestors(a,b);a=b.slice(a);return 0==a.length&&c?b:a};
-cvox.DomUtil.getRoleMsg=function(a,b){var c;c=cvox.AriaUtil.getRoleNameMsg(a);c||("INPUT"==a.tagName?c=cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG[a.type]:"A"==a.tagName&&cvox.DomUtil.isInternalLink(a)?c="internal_link":"A"==a.tagName&&a.getAttribute("name")?c="":a.isContentEditable?c="input_type_text":cvox.DomUtil.isMath(a)?c="math_expr":"TABLE"==a.tagName&&cvox.DomUtil.isLayoutTable(a)?c="":b==cvox.VERBOSITY_BRIEF?c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG[a.tagName]:(c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG[a.tagName],
-cvox.DomUtil.hasLongDesc(a)&&(c="image_with_long_desc"),!c&&a.onclick&&(c="clickable")));return c};cvox.DomUtil.getRole=function(a,b){var c=cvox.DomUtil.getRoleMsg(a,b)||"",d=c&&" "!=c?cvox.ChromeVox.msgs.getMsg(c):"";return d?d:c};cvox.DomUtil.getListLength=function(a){var b=0;for(a=a.firstChild;a;a=a.nextSibling)if("LI"==a.tagName||a.getAttribute&&"listitem"==a.getAttribute("role")){if(a.hasAttribute("aria-setsize")){var c=parseInt(a.getAttribute("aria-setsize"),10);if(!isNaN(c))return c}b++}return b};
-cvox.DomUtil.getStateMsgs=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(a);if(c)return cvox.DomUtil.getStateMsgs(c,b);var c=[],d=a.getAttribute?a.getAttribute("role"):"";(c=cvox.AriaUtil.getStateMsgs(a,b))||(c=[]);"INPUT"==a.tagName?a.hasAttribute("aria-checked")||(d={"checkbox-true":"checkbox_checked_state","checkbox-false":"checkbox_unchecked_state","radio-true":"radio_selected_state","radio-false":"radio_unselected_state"},(d=d[a.type+"-"+!!a.checked])&&c.push([d])):"SELECT"==a.tagName?
-a.selectedOptions&&1>=a.selectedOptions.length?c.push(["list_position",cvox.ChromeVox.msgs.getNumber(a.selectedIndex+1),cvox.ChromeVox.msgs.getNumber(a.options.length)]):c.push(["selected_options_state",cvox.ChromeVox.msgs.getNumber(a.selectedOptions.length)]):"UL"!=a.tagName&&"OL"!=a.tagName&&"list"!=d||c.push(["list_with_items",cvox.ChromeVox.msgs.getNumber(cvox.DomUtil.getListLength(a))]);cvox.DomUtil.isDisabled(a)&&c.push(["aria_disabled_true"]);cvox.DomPredicates.linkPredicate([a])&&cvox.ChromeVox.visitedUrls[a.href]&&
-c.push(["visited_url"]);a.accessKey&&c.push(["access_key",a.accessKey]);return c};cvox.DomUtil.getState=function(a,b){return cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,b))};cvox.DomUtil.isFocusable=function(a){return a&&"number"==typeof a.tabIndex&&("A"!=a.tagName||a.hasAttribute("href")||a.hasAttribute("tabindex"))?0<=a.tabIndex||a.hasAttribute&&a.hasAttribute("tabindex")&&"-1"==a.getAttribute("tabindex")?!0:!1:!1};
-cvox.DomUtil.findFocusableDescendant=function(a){return a&&(a=cvox.DomUtil.findNode(a,cvox.DomUtil.isFocusable))?a:null};cvox.DomUtil.countFocusableDescendants=function(a){return a?cvox.DomUtil.countNodes(a,cvox.DomUtil.isFocusable):0};cvox.DomUtil.isAttachedToDocument=function(a){for(;a;){if(a.tagName&&"HTML"==a.tagName)return!0;a=a.parentNode}return!1};
-cvox.DomUtil.clickElem=function(a,b,c,d){var e=cvox.AriaUtil.getActiveDescendant(a);e&&(a=e);if(c){c=null;a.onclick&&(c=a.onclick);!c&&1!=a.nodeType&&a.parentNode&&a.parentNode.onclick&&(c=a.parentNode.onclick);e=!0;if(c)try{e=c()}catch(f){}if(!e)return}c=document.createEvent("MouseEvents");d=d?"dblclick":"mousedown";c.initMouseEvent(d,!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(g){}c=document.createEvent("MouseEvents");c.initMouseEvent("mouseup",
-!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(h){}c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(k){}cvox.DomUtil.isInternalLink(a)&&cvox.DomUtil.syncInternalLink(a)};
-cvox.DomUtil.syncInternalLink=function(a){var b=a.href.split("#")[1];a=document.getElementById(b);a||(b=document.getElementsByName(b),0<b.length&&(a=b[0]));if(a){var b=a.parentNode,c=document.createElement("div");c.setAttribute("tabindex","-1");b.insertBefore(c,a);c.setAttribute("chromevoxignoreariahidden",1);c.focus();cvox.ChromeVox.syncToNode(a,!0)}};
-cvox.DomUtil.isInputTypeText=function(a){if(!a||a.constructor!=HTMLInputElement)return!1;switch(a.type){case "email":case "number":case "password":case "search":case "text":case "tel":case "url":case "":return!0;default:return!1}};cvox.DomUtil.isControl=function(a){if(cvox.AriaUtil.isControlWidget(a)&&cvox.DomUtil.isFocusable(a))return!0;if(a.tagName)switch(a.tagName){case "BUTTON":case "TEXTAREA":case "SELECT":return!0;case "INPUT":return"hidden"!=a.type}return a.isContentEditable?!0:!1};
-cvox.DomUtil.isLeafLevelControl=function(a){return cvox.DomUtil.isControl(a)?!(cvox.AriaUtil.isCompositeControl(a)&&cvox.DomUtil.findFocusableDescendant(a)):!1};cvox.DomUtil.getSurroundingControl=function(a){var b=null;if(!cvox.DomUtil.isControl(a)&&a.hasAttribute&&a.hasAttribute("role"))for(b=a.parentElement;b&&!cvox.AriaUtil.isCompositeControl(b);)b=b.parentElement;return b};
-cvox.DomUtil.directedNextLeafLikeNode=function(a,b,c){if(a!=document.body){for(;!cvox.DomUtil.directedNextSibling(a,b);){if(!a)return null;a=a.parentNode;if(a==document.body)return null}cvox.DomUtil.directedNextSibling(a,b)&&(a=cvox.DomUtil.directedNextSibling(a,b))}for(;cvox.DomUtil.directedFirstChild(a,b)&&!c(a);)a=cvox.DomUtil.directedFirstChild(a,b);return a==document.body?null:a};cvox.DomUtil.directedNextLeafNode=function(a,b){b=!!b;return cvox.DomUtil.directedNextLeafLikeNode(a,b,cvox.DomUtil.isLeafNode)};
-cvox.DomUtil.previousLeafNode=function(a){return cvox.DomUtil.directedNextLeafNode(a,!0)};cvox.DomUtil.directedFindFirstNode=function(a,b,c){for(a=cvox.DomUtil.directedFirstChild(a,b);a;){if(c(a))return a;var d=cvox.DomUtil.directedFindFirstNode(a,b,c);if(d)return d;a=cvox.DomUtil.directedNextSibling(a,b)}return null};cvox.DomUtil.directedFindDeepestNode=function(a,b,c){var d=cvox.DomUtil.directedFindFirstNode(a,b,c);return d?cvox.DomUtil.directedFindDeepestNode(d,b,c):c(a)?a:null};
-cvox.DomUtil.directedFindNextNode=function(a,b,c,d,e,f){e=!!e;f=!!f;if(!cvox.DomUtil.isDescendantOfNode(a,b)||a==b)return null;for(var g=cvox.DomUtil.directedNextSibling(a,c);g;){if(!f&&d(g))return g;var h=(f?cvox.DomUtil.directedFindDeepestNode:cvox.DomUtil.directedFindFirstNode)(g,c,d);if(h)return h;if(f&&d(g))return g;g=cvox.DomUtil.directedNextSibling(g,c)}a=a.parentNode;return e&&d(a)?a:cvox.DomUtil.directedFindNextNode(a,b,c,d,e,f)};
-cvox.DomUtil.getControlValueAndStateString=function(a){var b=cvox.DomUtil.getSurroundingControl(a);return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a)+" "+cvox.DomUtil.getState(a,!0)):cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getState(a,!0))};cvox.DomUtil.isInternalLink=function(a){return 1==a.nodeType&&(a=a.getAttribute("href"))&&-1!=a.indexOf("#")?(a=a.split("#")[0],""==a||a==window.location.pathname):!1};
-cvox.DomUtil.getLinkURL=function(a){if("A"==a.tagName){if(a.getAttribute("href"))return cvox.DomUtil.isInternalLink(a)?cvox.ChromeVox.msgs.getMsg("internal_link"):a.getAttribute("href")}else if(cvox.AriaUtil.getRoleName(a)==cvox.ChromeVox.msgs.getMsg("aria_role_link"))return cvox.ChromeVox.msgs.getMsg("unknown_link");return""};cvox.DomUtil.getContainingTable=function(a,b){var c=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findTableNodeInList(c,b)};
-cvox.DomUtil.findTableNodeInList=function(a,b){b=b||{allowCaptions:!1};for(var c=a.length-1,d;d=a[c];c--)if(d.constructor!=Text){if(!b.allowCaptions&&"CAPTION"==d.tagName)break;if("TABLE"==d.tagName||cvox.AriaUtil.isGrid(d))return d}return null};
-cvox.DomUtil.isLayoutTable=function(a){if(a.rows&&(1==a.rows.length||1==a.rows[0].childElementCount))return!0;if(cvox.AriaUtil.isGrid(a)||cvox.AriaUtil.isLandmark(a)||a.caption||a.summary||0<cvox.XpathUtil.evalXPath("tbody/tr/th",a).length&&0<cvox.XpathUtil.evalXPath("tbody/tr/td",a).length||0<cvox.XpathUtil.evalXPath("colgroup",a).length||0<cvox.XpathUtil.evalXPath("thead",a).length||0<cvox.XpathUtil.evalXPath("tfoot",a).length)return!1;if(0<cvox.XpathUtil.evalXPath("tbody/tr/td/embed",a).length||
-0<cvox.XpathUtil.evalXPath("tbody/tr/td/object",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/iframe",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/applet",a).length)return!0;var b=0;cvox.DomUtil.hasBorder(a)||b++;6>=a.rows.length&&b++;12>=cvox.DomUtil.countPreviousTags(a)&&b++;0<cvox.XpathUtil.evalXPath("tbody/tr/td/table",a).length&&b++;return 3<=b};cvox.DomUtil.countPreviousTags=function(a){var b=cvox.DomUtil.getAncestors(a);return b.length+cvox.DomUtil.countPreviousSiblings(a)};
-cvox.DomUtil.countPreviousSiblings=function(a){var b=0;for(a=a.previousSibling;null!=a;)a.constructor!=Text&&b++,a=a.previousSibling;return b};cvox.DomUtil.hasBorder=function(a){return a.frame?-1==a.frame.indexOf("void"):a.border?1==a.border.length?"0"!=a.border:0!=a.border.slice(0,-2):a.style.borderStyle&&"none"==a.style.borderStyle?!1:a.style.borderWidth?0!=a.style.borderWidth.slice(0,-2):a.style.borderColor?!0:!1};
-cvox.DomUtil.getFirstLeafNode=function(){for(var a=document.body;a&&a.firstChild;)a=a.firstChild;for(;a&&!cvox.DomUtil.hasContent(a);)a=cvox.DomUtil.directedNextLeafNode(a);return a};cvox.DomUtil.findNode=function(a,b){var c=[],d=cvox.DomUtil.findNodes_(a,b,c,!0,1E4);return d?c[0]:void 0};cvox.DomUtil.countNodes=function(a,b){var c=[];cvox.DomUtil.findNodes_(a,b,c,!1,1E4);return c.length};
-cvox.DomUtil.findNodes_=function(a,b,c,d,e){if(null!=a||0==e)for(a=a.firstChild;a;){if(b(a)&&(c.push(a),d))return!0;e-=1;if(cvox.DomUtil.findNodes_(a,b,c,d,e))return!0;a=a.nextSibling}return!1};cvox.DomUtil.toArray=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c]);return b};
-cvox.DomUtil.shallowChildlessClone=function(a,b){if("#text"==a.nodeName)return document.createTextNode(a.nodeValue);if("#comment"==a.nodeName)return document.createComment(a.nodeValue);for(var c=document.createElement(a.nodeName),d=0;d<a.attributes.length;++d){var e=a.attributes[d];b&&b[e.nodeName]||c.setAttribute(e.nodeName,e.nodeValue)}return c};
-cvox.DomUtil.deepClone=function(a,b){for(var c=cvox.DomUtil.shallowChildlessClone(a,b),d=0;d<a.childNodes.length;++d)c.appendChild(cvox.DomUtil.deepClone(a.childNodes[d],b));return c};cvox.DomUtil.directedFirstChild=function(a,b){return b?a.lastChild:a.firstChild};cvox.DomUtil.directedNextSibling=function(a,b){return a?b?a.previousSibling:a.nextSibling:null};cvox.DomUtil.createSimpleClickFunction=function(a){var b=a.cloneNode(!0);return function(){cvox.DomUtil.clickElem(b,!1,!1)}};
-cvox.DomUtil.addNodeToHead=function(a,b){if(!b||!document.getElementById(b)){var c=document.head||document.body;c.appendChild(a)}};cvox.DomUtil.getContainingMath=function(a){a=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findMathNodeInList(a)};cvox.DomUtil.findMathNodeInList=function(a){for(var b=0,c;c=a[b];b++)if(cvox.DomUtil.isMath(c))return c;return null};cvox.DomUtil.isMath=function(a){return cvox.DomUtil.isMathml(a)||cvox.DomUtil.isMathJax(a)||cvox.DomUtil.isMathImg(a)||cvox.AriaUtil.isMath(a)};
-cvox.DomUtil.ALT_MATH_CLASSES={tex:["tex","latex"],asciimath:["numberedequation","inlineformula","displayformula"]};cvox.DomUtil.altMathQuerySelector=function(a){return(a=cvox.DomUtil.ALT_MATH_CLASSES[a])?a.map(function(a){return"img."+a}).join(", "):""};cvox.DomUtil.isMathImg=function(a){if(!a||!a.tagName||!a.className||"IMG"!=a.tagName)return!1;a=a.className.toLowerCase();return-1!=cvox.DomUtil.ALT_MATH_CLASSES.tex.indexOf(a)||-1!=cvox.DomUtil.ALT_MATH_CLASSES.asciimath.indexOf(a)};
-cvox.DomUtil.isMathml=function(a){return a&&a.tagName?"math"==a.tagName.toLowerCase():!1};cvox.DomUtil.isMathJax=function(a){function b(a,b){return"SPAN"==a.tagName&&a.className.split(" ").some(function(a){return a.toLowerCase()==b})}return a&&a.tagName&&a.className?b(a,"math")?(a=cvox.DomUtil.getAncestors(a),a.some(function(a){return b(a,"mathjax")})):!1:!1};cvox.DomUtil.getMathSpanId=function(a){if(a=document.getElementById(a+"-Frame"))if(a=a.querySelector("span.math"))return a.id};
-cvox.DomUtil.hasLongDesc=function(a){return a&&a.longDesc?!0:!1};cvox.DomUtil.getNodeTagName=function(a){return a.nodeType==Node.ELEMENT_NODE?a.tagName:""};cvox.DomUtil.purgeNodes=function(a){return cvox.DomUtil.toArray(a).filter(function(a){return a.nodeType!=Node.TEXT_NODE||!a.textContent.match(/^\s+$/)})};cvox.DomUtil.elementToPoint=function(a){if(!a)return{x:0,y:0};a.constructor==Text&&(a=a.parentNode);a=a.getBoundingClientRect();return{x:a.left+a.width/2,y:a.top+a.height/2}};cvox.SelectionUtil=function(){};cvox.SelectionUtil.cleanUpParagraphForward=function(a){for(;3==a.focusNode.nodeType;){var b=a.focusNode,c=a.focusOffset;a.modify("extend","forward","sentence");if(b==a.focusNode&&c==a.focusOffset)return!1}return!0};cvox.SelectionUtil.cleanUpParagraphBack=function(a){for(var b,c;3==a.focusNode.nodeType&&(b=a.focusNode,c=a.focusOffset,a.modify("extend","backward","sentence"),b!=a.focusNode||c!=a.focusOffset););return!0};
-cvox.SelectionUtil.cleanUpSentence=function(a){for(var b=!0;b;)if(3==a.focusNode.nodeType){var c=a.focusNode,d=a.focusOffset;if(0<a.rangeCount&&0<a.getRangeAt(0).endOffset)if("."==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else if(" "==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else{if(a.modify("extend","forward","sentence"),c==a.focusNode&&d==a.focusOffset)return!1}else break}else break;return!0};
-cvox.SelectionUtil.findSelPosition=function(a){if(0==a.rangeCount)return[0,0];var b=a.getRangeAt(0).getBoundingClientRect();if(!b)return[0,0];a=window.pageYOffset+b.top;b=window.pageXOffset+b.left;return[a,b]};cvox.SelectionUtil.findTopLeftPosition=function(a){var b=0,c=0;if(a.offsetParent)for(b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;null!==a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return[c,b]};
-cvox.SelectionUtil.isSelectionValid=function(a){var b=RegExp(/^\s+$/);return!(b.test(a.toString())||""==a.toString())};cvox.SelectionUtil.isRangeValid=function(a){a=a.cloneContents().textContent;var b=RegExp(/^\s+$/);return!(b.test(a)||""==a)};cvox.SelectionUtil.findPos_=function(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]};
-cvox.SelectionUtil.scrollElementsToView=function(a){for(;a&&!a.getBoundingClientRect;)a=a.parentElement;if(a){for(var b=a,c=b.parentElement;b!=document.body&&c;)b.scrollTop=b.offsetTop,b.scrollLeft=b.offsetLeft,b=c,c=b.parentElement;a=cvox.SelectionUtil.findPos_(a);window.scrollTo(a[0]-window.innerWidth/2,a[1]-window.innerHeight/2)}};
-cvox.SelectionUtil.scrollToSelection=function(a){if(0!=a.rangeCount){cvox.SelectionUtil.scrollElementsToView(a.focusNode);var b=cvox.SelectionUtil.findSelPosition(a);a=b[0];var b=b[1],c=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,d=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,e=window.innerWidth||document.documentElement.innerWidth||document.body.clientWidth;b<e&&(b=0);c+d<a?(a-=d,window.scroll(b,a+100)):a<c&&window.scroll(b,
-a-100)}};cvox.SelectionUtil.isAllWs=function(a){return!/[^\t\n\r ]/.test(a.data)};cvox.SelectionUtil.isIgnorable=function(a){return 8==a.nodeType||3==a.nodeType&&cvox.SelectionUtil.isAllWs(a)};cvox.SelectionUtil.nodeBefore=function(a){for(;a=a.previousSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};cvox.SelectionUtil.nodeAfter=function(a){for(;a=a.nextSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};
-cvox.SelectionUtil.lastChildNode=function(a){for(a=a.lastChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.previousSibling}return null};cvox.SelectionUtil.firstChildNode=function(a){for(a=a.firstChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.nextSibling}return null};cvox.SelectionUtil.dataOf=function(a){a=a.data;a=a.replace(/[\t\n\r ]+/g," ");" "==a.charAt(0)&&(a=a.substring(1,a.length));" "==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));return a};
-cvox.SelectionUtil.hasContentWithTag=function(a,b){if(!a||!a.anchorNode||!a.focusNode)return!1;if(a.anchorNode.tagName&&a.anchorNode.tagName==b||a.focusNode.tagName&&a.focusNode.tagName==b||a.anchorNode.parentNode.tagName&&a.anchorNode.parentNode.tagName==b||a.focusNode.parentNode.tagName&&a.focusNode.parentNode.tagName==b)return!0;var c=a.getRangeAt(0).cloneContents(),d=document.createElement("span");d.appendChild(c);return 0<d.getElementsByTagName(b).length};
-cvox.SelectionUtil.selectText=function(a,b,c){var d=document.createRange();d.setStart(a,b);d.setEnd(a,c);a=window.getSelection();a.removeAllRanges();a.addRange(d)};cvox.SelectionUtil.selectAllTextInNode=function(a){var b=document.createRange();b.setStart(a,0);b.setEndAfter(a);a=window.getSelection();a.removeAllRanges();a.addRange(b)};
-cvox.SelectionUtil.collapseToStart=function(a){var b=window.getSelection(),c=b.anchorNode,d=b.anchorOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};cvox.SelectionUtil.collapseToEnd=function(a){var b=window.getSelection(),c=b.focusNode,d=b.focusOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};
-cvox.SelectionUtil.getText=function(){var a=window.getSelection();if(cvox.SelectionUtil.hasContentWithTag(a,"IMG")){var b="",a=a.getRangeAt(0).cloneContents(),c=document.createElement("span");c.appendChild(a);for(var a=cvox.XpathUtil.getLeafNodes(c),c=0,d;d=a[c];c++)b=b+" "+cvox.DomUtil.getName(d);return b}return this.getSelectionText_()};cvox.SelectionUtil.getSelectionText_=function(){return""+window.getSelection()};
-cvox.SelectionUtil.getRangeText=function(a){return a?a.cloneContents().textContent.replace(/\s+/g," "):""};cvox.TraverseUtil=function(){};cvox.TraverseUtil.getNodeText=function(a){return a.constructor==Text?a.data:""};cvox.TraverseUtil.treatAsLeafNode=function(a){return 0==a.childNodes.length||"SELECT"==a.nodeName||"listbox"==a.getAttribute("role")||"OBJECT"==a.nodeName};cvox.TraverseUtil.isWhitespace=function(a){return" "==a||"\n"==a||"\r"==a||"\t"==a};
-cvox.TraverseUtil.setSelection=function(a,b){var c=window.getSelection();c.removeAllRanges();var d=document.createRange();d.setStart(a.node,a.index);d.setEnd(b.node,b.index);c.addRange(d);return c};cvox.TraverseUtil.isHidden=function(a){if(a instanceof HTMLElement&&"true"==a.getAttribute("aria-hidden"))return!0;switch(a.tagName){case "SCRIPT":case "NOSCRIPT":return!0}return!1};
-cvox.TraverseUtil.forwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index;e<a.node.childNodes.length;e++){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.index=0,a.text=cvox.TraverseUtil.getNodeText(a.node),a.node instanceof HTMLElement&&b.push(a.node);else{if(a.index<a.text.length)return a.text[a.index++];for(;null!=
-a.node;){d=null;for(f=a.node.nextSibling;null!=f;f=f.nextSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=0;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof HTMLElement&&c.push(a.node),a.node=a.node.parentNode,
-a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.backwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index-1;0<=e;e--){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.text=cvox.TraverseUtil.getNodeText(a.node),a.index=a.text.length?a.text.length:a.node.childNodes.length,a.node instanceof HTMLElement&&b.push(a.node);else{if(0<a.text.length&&0<a.index)return a.text[--a.index];
-for(;;){d=null;for(f=a.node.previousSibling;null!=f;f=f.previousSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=a.text.length?a.text.length:a.node.childNodes.length;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof
-HTMLElement&&c.push(a.node),a.node=a.node.parentNode,a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.getNextChar=function(a,b,c,d,e){a.copyFrom(b);var f=cvox.TraverseUtil.forwardsChar(b,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(b.node);)if(f=cvox.TraverseUtil.forwardsChar(b,c,d),null==f)return null;if(e||!g)return a.copyFrom(b),a.index--,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return b.index--,a.copyFrom(b),a.index--," ";b.index--;return" "};
-cvox.TraverseUtil.getPreviousChar=function(a,b,c,d,e){b.copyFrom(a);var f=cvox.TraverseUtil.backwardsChar(a,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(a.node);)if(f=cvox.TraverseUtil.backwardsChar(a,c,d),null==f)return null;if(e||!g)return b.copyFrom(a),b.index++,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return a.index++,b.copyFrom(a),b.index++," ";a.index++;return" "};
-cvox.TraverseUtil.getNextWord=function(a,b,c,d){var e=b.clone(),f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.forwardsChar(e,c,d),null==f)return null;a.copyFrom(e);a.index--;b.copyFrom(e);a=f;c=[];d=[];f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return a;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d&&(a+=f,b.copyFrom(e),f=cvox.TraverseUtil.forwardsChar(e,c,d),null!=
-f););return a};
-cvox.TraverseUtil.getPreviousWord=function(a,b,c,d){var e=a.clone(),f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.backwardsChar(e,c,d),null==f)return null;b.copyFrom(e);b.index++;a.copyFrom(e);b=f;c=[];d=[];f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return b;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d.length&&(b=f+b,a.copyFrom(e),f=cvox.TraverseUtil.backwardsChar(e,c,
-d),null!=f););return b};cvox.TraverseUtil.includesBreakTagOrSkippedNode=function(a,b,c){for(var d=0;d<a.length;d++){if(cvox.TraverseUtil.isHidden(a[d]))return!0;var e=window.getComputedStyle(a[d],null);if(e&&"inline"!=e.display||c[a[d].tagName])return!0}for(d=0;d<b.length;d++)if((e=window.getComputedStyle(b[d],null))&&"inline"!=e.display||c[b[d].tagName])return!0;return!1};
-cvox.TraverseUtil.getNextSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){return"."==a.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};cvox.TraverseUtil.getPreviousSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){return"."==b.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};
-cvox.TraverseUtil.getNextLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=b.clone();return cvox.TraverseUtil.getNextString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.bottom!=g.bottom&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(b.node)))return b.copyFrom(h),!0;g=c;h.copyFrom(b);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getPreviousLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=a.clone();return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.top!=g.top&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(a.node)))return a.copyFrom(h),!0;g=c;h.copyFrom(a);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getNextParagraph=function(a,b,c,d){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getPreviousParagraph=function(a,b,c,d){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getNextString=function(a,b,c,d,e){c=b.clone();d=b.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getNextWord(c,d,f,g);if(null==k)return null;for(a.copyFrom(c);!(h&&e(h,k,f,g)||(h&&(h+=" "),h+=k,b.copyFrom(d),f=[],g=[],k=cvox.TraverseUtil.getNextWord(c,d,f,g),null==k)););return h};
-cvox.TraverseUtil.getPreviousString=function(a,b,c,d,e){c=a.clone();d=a.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getPreviousWord(c,d,f,g);if(null==k)return null;for(b.copyFrom(d);!(h&&e(h,k,f,g)||(h&&(h=" "+h),h=k+h,a.copyFrom(c),f=[],g=[],k=cvox.TraverseUtil.getPreviousWord(c,d,f,g),null==k)););return h};cvox.CursorSelection=function(a,b,c){this.start=a.clone();this.end=b.clone();void 0==c&&(c=!1);if((this.isReversed_=c)&&this.start.node.compareDocumentPosition(this.end.node)==cvox.CursorSelection.BEFORE||!this.isReversed_&&this.end.node.compareDocumentPosition(this.start.node)==cvox.CursorSelection.BEFORE)a=this.start,this.start=this.end,this.end=a};cvox.CursorSelection.BEFORE=4;
-cvox.CursorSelection.prototype.setReversed=function(a){if(a==this.isReversed_)return this;var b=this.start;this.start=this.end;this.end=b;this.isReversed_=a;return this};cvox.CursorSelection.prototype.isReversed=function(){return this.isReversed_};cvox.CursorSelection.prototype.absStart=function(){return this.isReversed_?this.end:this.start};cvox.CursorSelection.prototype.absEnd=function(){return this.isReversed_?this.start:this.end};
-cvox.CursorSelection.prototype.clone=function(){return new cvox.CursorSelection(this.start,this.end,this.isReversed_)};cvox.CursorSelection.prototype.select=function(){var a=window.getSelection();a.removeAllRanges();this.normalize();a.addRange(this.getRange())};cvox.CursorSelection.fromNode=function(a){if(!a)return null;var b=cvox.TraverseUtil.getNodeText(a);return new cvox.CursorSelection(new cvox.Cursor(a,0,b),new cvox.Cursor(a,0,b))};cvox.CursorSelection.fromBody=function(){return cvox.CursorSelection.fromNode(document.body)};
-cvox.CursorSelection.prototype.getText=function(){return this.start.equals(this.end)?cvox.TraverseUtil.getNodeText(this.start.node):cvox.SelectionUtil.getRangeText(this.getRange())};cvox.CursorSelection.prototype.getRange=function(){var a=document.createRange();this.isReversed_?(a.setStart(this.end.node,this.end.index),a.setEnd(this.start.node,this.start.index)):(a.setStart(this.start.node,this.start.index),a.setEnd(this.end.node,this.end.index));return a};
-cvox.CursorSelection.prototype.equals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)};cvox.CursorSelection.prototype.absEquals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)||this.end.equals(a.start)&&this.start.equals(a.end)};cvox.CursorSelection.prototype.directedBefore=function(a){var b=this.start.node.compareDocumentPosition(a.start.node)==cvox.CursorSelection.BEFORE;return this.start.node==a.start.node||(this.isReversed()?!b:b)};
-cvox.CursorSelection.prototype.normalize=function(){if(0==this.absEnd().index&&this.absEnd().node){var a=this.absEnd().node,b=document.createRange();b.selectNodeContents(a);this.absEnd().index=b.endOffset}return this};cvox.CursorSelection.prototype.collapse=function(){if(this.start.equals(this.end))return this;this.end.copyFrom(this.start);if(0==this.start.text.length)return this;this.isReversed()?0<this.end.index&&this.end.index--:this.end.index<this.end.text.length&&this.end.index++;return this};cvox.PlatformUtil={};cvox.PlatformFilter={NONE:0,WINDOWS:1,MAC:2,LINUX:4,WML:7,CHROMEOS:8,ANDROID:16};cvox.PlatformUtil.matchesPlatform=function(a){var b=navigator.userAgent;return void 0==a?!0:-1!=b.indexOf("Android")?0!=(a&cvox.PlatformFilter.ANDROID):-1!=b.indexOf("Win")?0!=(a&cvox.PlatformFilter.WINDOWS):-1!=b.indexOf("Mac")?0!=(a&cvox.PlatformFilter.MAC):-1!=b.indexOf("Linux")?0!=(a&cvox.PlatformFilter.LINUX):-1!=b.indexOf("CrOS")?0!=(a&cvox.PlatformFilter.CHROMEOS):!1};cvox.Spannable=function(a,b){this.string_=a||"";this.spans_=[];if(goog.isDef(b)){var c=this.string_.length;this.spans_.push({value:b,start:0,end:c})}};cvox.Spannable.prototype.toString=function(){return this.string_};cvox.Spannable.prototype.getLength=function(){return this.string_.length};cvox.Spannable.prototype.setSpan=function(a,b,c){this.removeSpan(a);if(0<=b&&b<=c&&c<=this.string_.length)this.spans_.push({value:a,start:b,end:c});else throw new RangeError("span out of range");};
-cvox.Spannable.prototype.removeSpan=function(a){for(var b=this.spans_.length-1;0<=b;b--)this.spans_[b].value===a&&this.spans_.splice(b,1)};cvox.Spannable.prototype.append=function(a){if(a instanceof cvox.Spannable){var b=a,c=this.getLength();this.string_+=b.string_;a.spans_.forEach(goog.bind(function(a){this.setSpan(a.value,a.start+c,a.end+c)},this))}else"string"===typeof a&&(this.string_+=a)};
-cvox.Spannable.prototype.getSpan=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.start<=a&&a<c.end)return c.value}};cvox.Spannable.prototype.getSpanInstanceOf=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value instanceof a)return c.value}};cvox.Spannable.prototype.getSpans=function(a){for(var b=[],c=0;c<this.spans_.length;c++){var d=this.spans_[c];d.start<=a&&a<d.end&&b.push(d.value)}return b};
-cvox.Spannable.prototype.getSpanStart=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.start}return null};cvox.Spannable.prototype.getSpanEnd=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.end}return null};
-cvox.Spannable.prototype.substring=function(a,b){var c=goog.isDef(b)?b:this.string_.length;if(0>a||c>this.string_.length||a>c)throw new RangeError("substring indices out of range");for(var d=new cvox.Spannable(this.string_.substring(a,c)),e=0;e<this.spans_.length;e++){var f=this.spans_[e];if(f.start<=c&&f.end>=a){var g=Math.max(0,f.start-a),h=Math.min(c-a,f.end-a);d.spans_.push({value:f.value,start:g,end:h})}}return d};
-cvox.Spannable.prototype.trim=function(){if(/^\s*$/.test(this.string_))return this.substring(0,0);var a=this.string_.match(/^\s*/)[0].length,b=this.string_.match(/\s*$/).index;return this.substring(a,b)};cvox.NavBraille=function(a){this.text=a.text instanceof cvox.Spannable?a.text:new cvox.Spannable(a.text);this.startIndex=a.startIndex?a.startIndex:0;this.endIndex=a.endIndex?a.endIndex:0};cvox.NavBraille.fromText=function(a){return new cvox.NavBraille({text:a})};cvox.NavBraille.prototype.isEmpty=function(){return 0==this.text.getLength()};cvox.NavBraille.prototype.toString=function(){return'NavBraille(text="'+this.text.toString()+'" startIndex="'+this.startIndex+'" endIndex="'+this.endIndex+'")'};
-cvox.NavBraille.prototype.toJson=function(){return{text:this.text.toString(),startIndex:this.startIndex,endIndex:this.endIndex}};cvox.NavBraille.prototype.write=function(){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.CHROMEOS|cvox.PlatformFilter.ANDROID)&&cvox.ChromeVox.braille.write(this)};cvox.BrailleKeyCommand={PAN_LEFT:"pan_left",PAN_RIGHT:"pan_right",LINE_UP:"line_up",LINE_DOWN:"line_down",TOP:"top",BOTTOM:"bottom",ROUTING:"routing",SECONDARY_ROUTING:"secondary_routing",DOTS:"dots",STANDARD_KEY:"standard_key"};cvox.BrailleKeyEvent={};cvox.BrailleInterface=function(){};cvox.BrailleInterface.prototype.write=function(){};cvox.AbstractBraille=function(){};cvox.AbstractHost=function(){};cvox.AbstractHost.State={ACTIVE:0,INACTIVE:1,KILLED:2};cvox.AbstractHost.prototype.init=function(){};cvox.AbstractHost.prototype.reinit=function(){};cvox.AbstractHost.prototype.onPageLoad=function(){};cvox.AbstractHost.prototype.getApiSrc=function(){return""};cvox.AbstractHost.prototype.getFileSrc=function(){return""};cvox.AbstractHost.prototype.hasTtsCallback=function(){return!0};cvox.AbstractHost.prototype.ttsLoaded=function(){return!0};
-cvox.AbstractHost.prototype.mustRedispatchClickEvent=function(){return!1};cvox.AbstractHost.prototype.activateOrDeactivateChromeVox=function(a){this.onStateChanged_(a?cvox.AbstractHost.State.ACTIVE:cvox.AbstractHost.State.INACTIVE)};cvox.AbstractHost.prototype.killChromeVox=function(){this.onStateChanged_(cvox.AbstractHost.State.KILLED)};
-cvox.AbstractHost.prototype.onStateChanged_=function(a){var b=a==cvox.AbstractHost.State.ACTIVE;if(b!=cvox.ChromeVox.isActive)switch(cvox.ChromeVoxEventWatcher.cleanup(window),a){case cvox.AbstractHost.State.ACTIVE:cvox.ChromeVox.isActive=!0;cvox.ChromeVox.navigationManager.showOrHideIndicator(!0);cvox.ChromeVoxEventWatcher.init(window);document.activeElement?(a=document.hasFocus()&&!document.webkitHidden,cvox.ApiImplementation.syncToNode(document.activeElement,a)):cvox.ChromeVox.navigationManager.updateIndicator();
-break;case cvox.AbstractHost.State.INACTIVE:cvox.ChromeVox.isActive=!1;cvox.ChromeVox.navigationManager.showOrHideIndicator(!1);cvox.ChromeVoxEventWatcher.init(window);break;case cvox.AbstractHost.State.KILLED:cvox.ChromeVox.isActive=!1,cvox.ChromeVox.navigationManager.showOrHideIndicator(!1)}};cvox.MathJaxInterface=function(){};cvox.MathJaxInterface.prototype.isMathjaxActive=function(){};cvox.MathJaxInterface.prototype.getAllJax=function(){};cvox.MathJaxInterface.prototype.registerSignal=function(){};cvox.MathJaxInterface.prototype.injectScripts=function(){};cvox.MathJaxInterface.prototype.configMediaWiki=function(){};cvox.MathJaxInterface.prototype.getTex=function(){};cvox.MathJaxInterface.prototype.getAsciiMath=function(){};cvox.AbstractMathJax=function(){};cvox.AbstractMathJax.prototype.getAllTexs=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("tex")),c=0,d;d=b[c];c++)this.getTex(a,d)};cvox.AbstractMathJax.prototype.getAllAsciiMaths=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("asciimath")),c=0,d;d=b[c];c++)this.getAsciiMath(a,d)};
-cvox.AbstractMathJax.prototype.convertMarkupToDom=function(a,b,c){if(b){var d=new DOMParser;b=b.replace(/>\s+</g,"><");a(d.parseFromString(b,"text/xml").firstChild,c)}};cvox.AbstractMsgs=function(){};cvox.AbstractMsgs.prototype.getMsg=function(){};cvox.AbstractMsgs.prototype.getNumber=function(){};cvox.HostFactory=function(){};cvox.HostFactory.getHost=function(){return new cvox.HostFactory.hostConstructor};cvox.HostFactory.getTts=function(){return new cvox.HostFactory.ttsConstructor};cvox.HostFactory.getBraille=function(){return new cvox.HostFactory.brailleConstructor};cvox.HostFactory.getMsgs=function(){return new cvox.HostFactory.msgsConstructor};cvox.HostFactory.getEarcons=function(){return new cvox.HostFactory.earconsConstructor};cvox.HostFactory.getMathJax=function(){return new cvox.HostFactory.mathJaxConstructor};cvox.SpokenMessage=function(){this.raw=this.id=this.count=null};cvox.SpokenMessages={};cvox.SpokenMessages.messages=[];cvox.SpokenMessages.speakFlush=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_FLUSH)};cvox.SpokenMessages.speakQueued=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_QUEUE)};
-cvox.SpokenMessages.speak=function(a){for(var b=0;b<cvox.SpokenMessages.messages.length;++b){var c=cvox.SpokenMessages.messages[b];if(!c||!c.id&&!c.raw)throw"Invalid message received.";var d="";if(null!=c.count)if(0>=c.count)try{d+=cvox.ChromeVox.msgs.getMsg(c.id[0]+"_optional_default")}catch(e){continue}else d=1==c.count?d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_singular"):d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_plural",[c.count]);else d=c.raw?d+c.raw:d+cvox.ChromeVox.msgs.getMsg.apply(cvox.ChromeVox.msgs,
-c.id);cvox.ChromeVox.tts.speak(d,a,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=cvox.AbstractTts.QUEUE_MODE_QUEUE}cvox.SpokenMessages.messages=[]};cvox.SpokenMessages.currentMessage=function(){if(0==cvox.SpokenMessages.messages.length)throw"Invalid usage of SpokenMessages; start the chain using $m()";return cvox.SpokenMessages.messages[cvox.SpokenMessages.messages.length-1]};cvox.SpokenMessages.withCount=function(a){cvox.SpokenMessages.currentMessage().count=a;return cvox.SpokenMessages};
-cvox.SpokenMessages.andIndexTotal=function(a,b){var c=new cvox.SpokenMessage;c.raw=cvox.ChromeVox.msgs.getMsg("index_total",[a,b]);cvox.SpokenMessages.messages.push(c);return cvox.SpokenMessages};cvox.SpokenMessages.andEnd=function(){return cvox.SpokenMessages.andMessage("end")};cvox.SpokenMessages.andMessage=function(a){var b=new cvox.SpokenMessage;b.id="string"==typeof a?[a]:a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};
-cvox.SpokenMessages.andRawMessage=function(a){var b=new cvox.SpokenMessage;b.raw=a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};cvox.SpokenMessages.andPause=function(){return cvox.SpokenMessages.andMessage("pause")};cvox.$m=cvox.SpokenMessages.andMessage;cvox.CompositeTts=function(){this.ttsEngines_=[]};cvox.CompositeTts.prototype.add=function(a){this.ttsEngines_.push(a);return this};cvox.CompositeTts.prototype.speak=function(a,b,c){this.ttsEngines_.forEach(function(d){d.speak(a,b,c)})};cvox.CompositeTts.prototype.isSpeaking=function(){return this.ttsEngines_.some(function(a){return a.isSpeaking()})};cvox.CompositeTts.prototype.stop=function(){this.ttsEngines_.forEach(function(a){a.stop()})};
-cvox.CompositeTts.prototype.increaseOrDecreaseProperty=function(a,b){this.ttsEngines_.forEach(function(c){c.increaseOrDecreaseProperty(a,b)})};cvox.CompositeTts.prototype.getDefaultProperty=function(a){for(var b=0,c;c=this.ttsEngines_[b];b++)if(c=c.getDefaultProperty(a))return c};cvox.BuildInfo={};cvox.BuildInfo.build="1384906195.369502";cvox.ChromeVoxJSON||(cvox.ChromeVoxJSON={});
-window.JSON&&"[object JSON]"==window.JSON.toString()?cvox.ChromeVoxJSON=window.JSON:function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,n,s,u=f,t,r=d[a];r&&"object"===typeof r&&"function"===typeof r.toJSON&&(r=r.toJSON(a));"function"===typeof k&&(r=k.call(d,a,r));switch(typeof r){case "string":return b(r);
-case "number":return isFinite(r)?String(r):"null";case "boolean":case "null":return String(r);case "object":if(!r)return"null";f+=g;t=[];if("[object Array]"===Object.prototype.toString.apply(r)){s=r.length;for(e=0;e<s;e+=1)t[e]=c(e,r)||"null";n=0===t.length?"[]":f?"[\n"+f+t.join(",\n"+f)+"\n"+u+"]":"["+t.join(",")+"]";f=u;return n}if(k&&"object"===typeof k)for(s=k.length,e=0;e<s;e+=1)h=k[e],"string"===typeof h&&(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);else for(h in r)Object.hasOwnProperty.call(r,h)&&
-(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);n=0===t.length?"{}":f?"{\n"+f+t.join(",\n"+f)+"\n"+u+"}":"{"+t.join(",")+"}";f=u;return n}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":"null"},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});
-var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof cvox.ChromeVoxJSON.stringify&&(cvox.ChromeVoxJSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&
-(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});"function"!==typeof cvox.ChromeVoxJSON.parse&&(cvox.ChromeVoxJSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=String(a);d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
-if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})}();"undefined"!=typeof goog&&goog.provide&&(cvox.ApiUtil={});window.cvox||(window.cvox={});cvox.ApiUtils=function(){};cvox.ApiUtils.nextCvoxId_=1;
-cvox.ApiUtils.makeNodeReference=function(a){if(a.id&&document.getElementById(a.id)==a)return{id:a.id};if(a instanceof HTMLElement){var b=cvox.ApiUtils.nextCvoxId_;a.setAttribute("cvoxid",b);cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+1)%100;return{cvoxid:b}}if(a.parentElement){for(var c=a.parentElement,d=-1,b=0;b<c.childNodes.length;b++)if(c.childNodes[b]==a){d=b;break}if(0<=d)return b=cvox.ApiUtils.nextCvoxId_,c.setAttribute("cvoxid",b),cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+
-1)%100,{cvoxid:b,childIndex:d}}throw"Cannot reference node: "+a;};cvox.ApiUtils.getNodeFromRef=function(a){if(a.id)return document.getElementById(a.id);if(a.cvoxid){var b='*[cvoxid="'+a.cvoxid+'"]';(b=document.querySelector(b))&&b.removeAttribute&&b.removeAttribute("cvoxid");return null!=a.childIndex?b.childNodes[a.childIndex]:b}throw"Bad node reference: "+cvox.ChromeVoxJSON.stringify(a);};cvox.ScriptInstaller={};
-cvox.ScriptInstaller.installScript=function(a,b,c,d){if(document.querySelector("script["+b+"]")||!a)return!1;for(var e=0,f;f=a[e];e++){var g=new XMLHttpRequest,h=f+"?"+(new Date).getTime();g.onreadystatechange=function(){if(4==g.readyState){var a=g.responseText,a=a+("\n//# sourceURL="+f+"\n"),c=document.createElement("script");c.type="text/javascript";c.setAttribute(b,"1");c.textContent=a;d&&c.setAttribute("chromevoxScriptBase",d);cvox.DomUtil.addNodeToHead(c)}};try{g.open("GET",h,!1),g.send(null)}catch(k){return window.console.log("Warning: ChromeVox external script loading for "+
-document.location+" stopped after failing to install "+f),!1}}c&&c();return!0};cvox.ApiImplementation=function(){};cvox.ApiImplementation.init=function(a){window.addEventListener("message",cvox.ApiImplementation.portSetup,!0);var b=[];b.push(cvox.ChromeVox.host.getFileSrc("chromevox/injected/api_util.js"));b.push(cvox.ChromeVox.host.getApiSrc());b.push(cvox.ApiImplementation.siteSpecificScriptLoader);a=cvox.ScriptInstaller.installScript(b,"cvoxapi",a,cvox.ApiImplementation.siteSpecificScriptBase);a||(window.location.href="javascript:cvox.Api.internalEnable();")};
-cvox.ApiImplementation.portSetup=function(a){return"cvox.PortSetup"==a.data?(cvox.ApiImplementation.port=a.ports[0],cvox.ApiImplementation.port.onmessage=function(a){cvox.ApiImplementation.dispatchApiMessage(cvox.ChromeVoxJSON.parse(a.data))},a.stopPropagation(),!1):!0};
-cvox.ApiImplementation.dispatchApiMessage=function(a){var b;switch(a.cmd){case "speak":b=cvox.ApiImplementation.speak;break;case "speakNodeRef":b=cvox.ApiImplementation.speakNodeRef;break;case "stop":b=cvox.ApiImplementation.stop;break;case "playEarcon":b=cvox.ApiImplementation.playEarcon;break;case "syncToNodeRef":b=cvox.ApiImplementation.syncToNodeRef;break;case "clickNodeRef":b=cvox.ApiImplementation.clickNodeRef;break;case "getBuild":b=cvox.ApiImplementation.getBuild;break;case "getVersion":b=
-cvox.ApiImplementation.getVersion;break;case "getCurrentNode":b=cvox.ApiImplementation.getCurrentNode;break;case "getCvoxModKeys":b=cvox.ApiImplementation.getCvoxModKeys;break;case "isKeyShortcut":b=cvox.ApiImplementation.isKeyShortcut;break;case "setKeyEcho":b=cvox.ApiImplementation.setKeyEcho;break;case "Math.defineRule":b=cvox.ApiImplementation.Math.defineRule}if(!b)throw"Unknown API call: "+a.cmd;b.apply(cvox.ApiImplementation,a.args)};
-function setupEndCallback_(a,b){var c=function(){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:b}))};a&&(a.endCallback=c)}cvox.ApiImplementation.speak=function(a,b,c,d){cvox.ChromeVox.isActive&&(d||(d={}),setupEndCallback_(d,a),cvox.ChromeVox.tts.speak(b,c,d))};cvox.ApiImplementation.speakNode=function(a,b,c){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(a),b,c)};
-cvox.ApiImplementation.speakNodeRef=function(a,b,c,d){b=cvox.ApiUtils.getNodeFromRef(b);d||(d={});setupEndCallback_(d,a);cvox.ApiImplementation.speakNode(b,c,d)};cvox.ApiImplementation.stop=function(){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.stop()};cvox.ApiImplementation.playEarcon=function(a){cvox.ChromeVox.isActive&&cvox.ChromeVox.earcons.playEarconByName(a)};cvox.ApiImplementation.syncToNodeRef=function(a,b){var c=cvox.ApiUtils.getNodeFromRef(a);cvox.ApiImplementation.syncToNode(c,b)};
-cvox.ApiImplementation.syncToNode=function(a,b,c){cvox.ChromeVox.isActive&&(void 0==c&&(c=cvox.AbstractTts.QUEUE_MODE_FLUSH),cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a,!0),cvox.ChromeVox.navigationManager.updateIndicator(),void 0==b&&(b=!1),cvox.AriaUtil.isHiddenRecursive(a)&&(b=!1),b&&cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ApiImplementation.getDesc_(a),c,null),cvox.ChromeVox.navigationManager.getBraille().write(),cvox.ChromeVox.navigationManager.updatePosition(a))};
-cvox.ApiImplementation.getCurrentNode=function(a){var b=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,currentNode:cvox.ApiUtils.makeNodeReference(b)}))};
-cvox.ApiImplementation.getDesc_=function(a){if(!a.hasAttribute("cvoxnodedesc"))return cvox.ChromeVox.navigationManager.getDescription();a=cvox.ChromeVoxJSON.parse(a.getAttribute("cvoxnodedesc"));for(var b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b};cvox.ApiImplementation.clickNodeRef=function(a,b){cvox.DomUtil.clickElem(cvox.ApiUtils.getNodeFromRef(a),b,!1)};
-cvox.ApiImplementation.getBuild=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,build:cvox.BuildInfo.build}))};cvox.ApiImplementation.getVersion=function(a){var b=cvox.ChromeVox.version;null==b?window.setTimeout(function(){cvox.ApiImplementation.getVersion(a)},1E3):cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,version:b}))};
-cvox.ApiImplementation.getCvoxModKeys=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,keyCodes:cvox.KeyUtil.cvoxModKeyCodes()}))};cvox.ApiImplementation.isKeyShortcut=function(a,b){var c=cvox.KeyUtil.keyEventToKeySequence(b);cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,isHandled:cvox.ChromeVoxKbHandler.handlerKeyMap.hasKey(c)}))};
-cvox.ApiImplementation.setKeyEcho=function(a){var b=cvox.ChromeVox.keyEcho;b[document.location.href]=a;JSON.stringify(b)};cvox.ApiImplementation.Math=function(){};cvox.ApiImplementation.Math.defineRule=function(a,b,c,d,e){var f=cvox.MathmlStore.getInstance(),g=Array.prototype.slice.call(arguments,4),g=[a,b,c,d].concat(g);f.defineRule.apply(f,g)};cvox.ConsoleTts=function(){this.enabled_=!1};goog.addSingletonGetter(cvox.ConsoleTts);cvox.ConsoleTts.prototype.speak=function(a,b,c){if(this.enabled_&&window.console){var d="Speak",d=b==cvox.AbstractTts.QUEUE_MODE_FLUSH?d+" (I)":d+" (Q)",d=d+(' "'+a+'"');window.console.log(d);c&&void 0!=c.startCallback&&window.console.log(" using startCallback");c&&void 0!=c.endCallback&&window.console.log(" using endCallback")}return this};cvox.ConsoleTts.prototype.isSpeaking=function(){return!1};
-cvox.ConsoleTts.prototype.stop=function(){this.enabled_&&window.console.log("Stop")};cvox.ConsoleTts.prototype.increaseOrDecreaseProperty=function(){};cvox.ConsoleTts.prototype.setEnabled=function(a){this.enabled_=a};cvox.ConsoleTts.prototype.getDefaultProperty=function(){};cvox.ChromeVoxHTMLDateWidget=function(a,b){var c=this;this.pos_=0;var d=2;if("month"==a.type||"week"==a.type)d=1;this.maxPos_=d;this.dateElem_=a;this.dateTts_=b;this.pDay_=this.pWeek_=this.pMonth_=this.pYear_=-1;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};0==this.dateElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e);
-e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e)}this.dateElem_.addEventListener("keydown",this.keyListener_,!1);this.dateElem_.addEventListener("keyup",this.keyListener_,!1);this.dateElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLDateWidget.prototype.shutdown=function(){this.dateElem_.removeEventListener("blur",this.blurListener_,!1);this.dateElem_.removeEventListener("keydown",this.keyListener_,!1);this.dateElem_.removeEventListener("keyup",this.keyListener_,!1)};
-cvox.ChromeVoxHTMLDateWidget.prototype.forceInitTime_=function(){var a=new Date,b="",b=a.getFullYear()+"",c=a.getMonth()+1+"";2>c.length&&(c="0"+c);var d=a.getDate()+"";switch(this.dateElem_.type){case "month":b=b+"-"+c;break;case "week":a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));c=new Date(a.getFullYear(),0,1);a=Math.ceil(((a-c)/864E5+1)/7)+"";2>a.length&&(a="0"+a);a="W"+a;b=b+"-"+a;break;default:b=b+"-"+c+"-"+d}this.dateElem_.setAttribute("value",b)};
-cvox.ChromeVoxHTMLDateWidget.prototype.handlePosChange_=function(){this.pos_=Math.max(this.pos_,0);this.pos_=Math.min(this.pos_,this.maxPos_);switch(this.pos_){case 0:"week"==this.dateElem_.type?this.pWeek_=-1:this.pMonth_=-1;break;case 1:"date"==this.dateElem_.type?this.pDay_=-1:this.pYear_=-1;break;case 2:this.pYear_=-1}};
-cvox.ChromeVoxHTMLDateWidget.prototype.update_=function(a){var b=this.dateElem_.value.split("-");if(1>b.length)this.forceInitTime_();else{var c=-1,d=-1,e=-1,f=-1,c=parseInt(b[0],10);"week"==this.dateElem_.type?e=parseInt(b[1].replace("W",""),10):"date"==this.dateElem_.type?(d=parseInt(b[1],10),f=parseInt(b[2],10)):d=parseInt(b[1],10);b="";a&&(b=cvox.DomUtil.getName(this.dateElem_,!0,!0)+"\n");e!=this.pWeek_&&(b=b+cvox.ChromeVox.msgs.getMsg("datewidget_week")+e+"\n",this.pWeek_=e);if(d!=this.pMonth_){a=
-"";switch(d){case 1:a=cvox.ChromeVox.msgs.getMsg("datewidget_january");break;case 2:a=cvox.ChromeVox.msgs.getMsg("datewidget_february");break;case 3:a=cvox.ChromeVox.msgs.getMsg("datewidget_march");break;case 4:a=cvox.ChromeVox.msgs.getMsg("datewidget_april");break;case 5:a=cvox.ChromeVox.msgs.getMsg("datewidget_may");break;case 6:a=cvox.ChromeVox.msgs.getMsg("datewidget_june");break;case 7:a=cvox.ChromeVox.msgs.getMsg("datewidget_july");break;case 8:a=cvox.ChromeVox.msgs.getMsg("datewidget_august");
-break;case 9:a=cvox.ChromeVox.msgs.getMsg("datewidget_september");break;case 10:a=cvox.ChromeVox.msgs.getMsg("datewidget_october");break;case 11:a=cvox.ChromeVox.msgs.getMsg("datewidget_november");break;case 12:a=cvox.ChromeVox.msgs.getMsg("datewidget_december")}b=b+a+"\n";this.pMonth_=d}f!=this.pDay_&&(b=b+f+"\n",this.pDay_=f);c!=this.pYear_&&(b=b+c+"\n",this.pYear_=c);0<b.length&&this.dateTts_.speak(b,0,null)}};
-cvox.ChromeVoxHTMLDateWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.BrailleTextHandler=function(a){this.braille_=a};cvox.BrailleTextHandler.prototype.changed=function(a,b,c,d){var e;d?(e=cvox.NavBraille.fromText(a),e.startIndex=b,e.endIndex=c):cvox.ChromeVox.navigationManager&&(e=cvox.ChromeVox.navigationManager.getBraille());e&&this.braille_.write(e)};cvox.ContentEditableExtractor=function(){this.text_="";this.end_=this.start_=0;this.lines_={};this.characterToLineMap_=[]};
-cvox.ContentEditableExtractor.prototype.update=function(a){for(var b={0:{startIndex:0,endIndex:0}},c=new cvox.Cursor(a,0,""),d=c.clone(),e=document.createRange(),f,g=0,h=null,k="",l=0,m=-1,p=-1,q=window.getSelection(),n=new cvox.Cursor(q.baseNode,q.baseOffset,""),q=new cvox.Cursor(q.extentNode,q.extentOffset,""),s=!1,u=!1;;){f=[];var t=[],r=cvox.TraverseUtil.forwardsChar(d,f,t),v=!1;r||(v=!0);for(f=0;f<t.length&&!v;f++)t[f]==a&&(v=!0);if(v)break;e.setStart(c.node,c.index);e.setEnd(d.node,d.index);
-if((f=e.getBoundingClientRect())&&0!=f.width&&0!=f.height){null!==h&&f.bottom!=h&&0<l&&k.substr(-1).match(/\S/)&&r.match(/\S/)&&(k+="\n",l++);if(c.node!=d.node&&0<d.index&&(e.setStart(d.node,d.index-1),f=e.getBoundingClientRect(),!f||0==f.width||0==f.height))continue;!s&&-1==m&&d.node==n.node&&d.index>=n.index&&(d.index>n.index?m=l:s=!0);!u&&-1==p&&d.node==q.node&&d.index>=q.index&&(d.index>q.index?p=l:u=!0);null===h?h=f.bottom:f.bottom!=h&&(b[g].endIndex=l,g++,b[g]={startIndex:l,endIndex:l},h=f.bottom);
-k+=r;l++;c=d.clone();s&&(m=l,s=!1);u&&(p=l,u=!1)}}b[g].endIndex=l;a=[];for(f=0;f<=g;f++)for(c=b[f].startIndex;c<=b[f].endIndex;c++)a[c]=f;this.text_=k;this.characterToLineMap_=a;this.lines_=b;this.start_=0<=m?m:k.length;this.end_=0<=p?p:k.length};cvox.ContentEditableExtractor.prototype.getText=function(){return this.text_};cvox.ContentEditableExtractor.prototype.getStartIndex=function(){return this.start_};cvox.ContentEditableExtractor.prototype.getEndIndex=function(){return this.end_};
-cvox.ContentEditableExtractor.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.ContentEditableExtractor.prototype.getLineStart=function(a){return this.lines_[a].startIndex};cvox.ContentEditableExtractor.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.EditableTextAreaShadow=function(){this.shadowElement_=document.createElement("div");this.lines_={};this.characterToLineMap_=[]};
-cvox.EditableTextAreaShadow.prototype.update=function(a){for(document.body.appendChild(this.shadowElement_);this.shadowElement_.childNodes.length;)this.shadowElement_.removeChild(this.shadowElement_.childNodes[0]);this.shadowElement_.style.cssText=window.getComputedStyle(a,null).cssText;this.shadowElement_.style.position="absolute";this.shadowElement_.style.top=-9999;this.shadowElement_.style.left=-9999;this.shadowElement_.setAttribute("aria-hidden","true");var b=a.value,c=document.createTextNode(b+
-".");this.shadowElement_.appendChild(c);a={0:{startIndex:0,endIndex:0}};for(var d=document.createRange(),e=0,f=0,g=0,h=null,k=!1,l;e<=b.length;){d.setStart(c,e);if(e+8>b.length||0<=b.substr(e,8).indexOf("\n"))k=!0;k?(e++,d.setEnd(c,e),l=d.getBoundingClientRect()):(d.setEnd(c,e+8),l=d.getBoundingClientRect(),l.bottom==h?e+=8:(l&&null!==h&&(k=!0),e++,d.setEnd(c,e),l=d.getBoundingClientRect()));0<e&&"\n"==b[e-1]?(a[g].endIndex=e-1,g++,a[g]={startIndex:e,endIndex:e},h=null,k=!1,f=e):l&&null===h?h=l.bottom:
-l&&l.bottom!=h&&(a[g].endIndex=f,g++,a[g]={startIndex:f,endIndex:f},h=l?l.bottom:null,k=!1);l&&(f=e)}a[g].endIndex=b.length;b=[];for(c=0;c<=g;c++)for(d=a[c].startIndex;d<=a[c].endIndex;d++)b[d]=c;this.characterToLineMap_=b;this.lines_=a;document.body.removeChild(this.shadowElement_)};cvox.EditableTextAreaShadow.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.EditableTextAreaShadow.prototype.getLineStart=function(a){return this.lines_[a].startIndex};
-cvox.EditableTextAreaShadow.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.TextChangeEvent=function(a,b,c,d){this.value=a;this.start=b;this.end=c;this.triggeredByUser=d;this.start>this.end&&(a=this.end,this.end=this.start,this.start=a)};cvox.TypingEcho={CHARACTER:0,WORD:1,CHARACTER_AND_WORD:2,NONE:3,COUNT:4};cvox.TypingEcho.cycle=function(a){return(a+1)%cvox.TypingEcho.COUNT};cvox.TypingEcho.shouldSpeakChar=function(a){return a==cvox.TypingEcho.CHARACTER_AND_WORD||a==cvox.TypingEcho.CHARACTER};cvox.TextHandlerInterface=function(){};
-cvox.TextHandlerInterface.prototype.changed=function(){};cvox.ChromeVoxEditableTextBase=function(a,b,c,d,e){this.value=a;this.start=b;this.end=c;this.isPassword=d;this.tts=e;this.multiline=!1;this.brailleHandler_=cvox.ChromeVox.braille?new cvox.BrailleTextHandler(cvox.ChromeVox.braille):void 0};cvox.ChromeVoxEditableTextBase.useIBeamCursor=cvox.ChromeVox.isMac;cvox.ChromeVoxEditableTextBase.eventTypingEcho=!1;cvox.ChromeVoxEditableTextBase.prototype.maxShortPhraseLen=60;
-cvox.ChromeVoxEditableTextBase.prototype.isPassword=!1;cvox.ChromeVoxEditableTextBase.prototype.lastChangeDescribed=!1;cvox.ChromeVoxEditableTextBase.prototype.getValue=function(){var a="";if(this.multiline){if(a+="multiline editable text. ",this.start==this.end)var b=this.getLine(this.getLineIndex(this.start)),a=b?a+b:a+"blank"}else a=this.node?a+cvox.DomUtil.getValue(this.node):a+this.value,a=a<=this.maxShortPhraseLen?a+", editable text":a.substring(0,this.maxShortPhraseLen)+", editable text";return a};
-cvox.ChromeVoxEditableTextBase.prototype.getLineIndex=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineStart=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineEnd=function(){return this.value.length};cvox.ChromeVoxEditableTextBase.prototype.getLine=function(a){var b=this.getLineStart(a);a=this.getLineEnd(a);b=this.value.substr(b,a-b);return b.replace(/^\s+|\s+$/g,"")};cvox.ChromeVoxEditableTextBase.prototype.isWordBreakChar=function(a){return!!a.match(/^\W$/)};
-cvox.ChromeVoxEditableTextBase.prototype.isLastChar=function(a){return void 0==this.getLineIndex(a.start+1)};cvox.ChromeVoxEditableTextBase.prototype.speak=function(a,b,c){if(!this.node||document.activeElement==this.node){var d=cvox.AbstractTts.QUEUE_MODE_QUEUE;!0===b&&(d=cvox.AbstractTts.QUEUE_MODE_FLUSH);this.tts.speak(a,d,c||{})}};
-cvox.ChromeVoxEditableTextBase.prototype.changed=function(a){if(a.value!=this.value||a.start!=this.start||a.end!=this.end||this.isLastChar(a)){if(a.value==this.value?this.describeSelectionChanged(a):this.describeTextChanged(a),this.lastChangeDescribed=!0,this.value=a.value,this.start=a.start,this.end=a.end,this.brailleHandler_){var b=this.getLine(this.getLineIndex(a.start)),c=this.getLineStart(this.getLineIndex(a.start)),d=a.start-c;a=a.end-c;this.brailleHandler_.changed(b,d,a,this.multiline)}}else this.lastChangeDescribed=
-!1};
-cvox.ChromeVoxEditableTextBase.prototype.describeSelectionChanged=function(a){if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser);else if(a.start==a.end)if(this.start!=this.end)this.speak(cvox.ChromeVox.msgs.getMsg("Unselected"),a.triggeredByUser);else if(this.getLineIndex(this.start)!=this.getLineIndex(a.start)){var b=this.getLine(this.getLineIndex(a.start));""==b&&(b=cvox.ChromeVox.msgs.getMsg("text_box_blank"));this.speak(b,
-a.triggeredByUser)}else this.start==a.start+1||this.start==a.start-1?cvox.ChromeVoxEditableTextBase.useIBeamCursor?this.speak(this.value.substr(Math.min(this.start,a.start),1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):a.start==this.value.length?this.speak(cvox.ChromeVox.msgs.getMsg("end"),a.triggeredByUser):this.speak(this.value.substr(a.start,1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):this.speak(this.value.substr(Math.min(this.start,a.start),Math.abs(this.start-
-a.start)),a.triggeredByUser);else this.start+1==a.start&&this.end==this.value.length&&a.end==this.value.length?(this.speak(this.value.substr(this.start,1),a.triggeredByUser),this.speak(this.value.substr(a.start))):this.start==this.end?(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected"))):this.start==a.start&&this.end<a.end?(this.speak(this.value.substr(this.end,a.end-this.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):
-this.start==a.start&&this.end>a.end?(this.speak(this.value.substr(a.end,this.end-a.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):this.end==a.end&&this.start>a.start?(this.speak(this.value.substr(a.start,this.start-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):this.end==a.end&&this.start<a.start?(this.speak(this.value.substr(this.start,a.start-this.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):
-(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected")))};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChanged=function(a){var b={};a.value.length<this.value.length&&(b=cvox.AbstractTts.PERSONALITY_DELETED);if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser,b);else{var c=this.value,d=c.length,e=a.value.length,f="",g=a.value,h=a.end;a.start<h&&h==e&&(f=g.substr(a.start),g=g.substr(0,a.start),h=a.start);var k=this.start,l=d-this.end;if(e>=k+l+(h-a.start)&&g.substr(0,k)==
-c.substr(0,k)&&g.substr(e-l)==c.substr(this.end))this instanceof cvox.ChromeVoxEditableContentEditable&&!(e<d||this.isWordBreakChar(a.value[e-1]||""))||this.describeTextChangedHelper(a,k,l,f,b);else if(k=a.start,l=e-h,this.start==this.end&&a.start==h&&g.substr(0,k)==c.substr(0,k)&&g.substr(e-l)==c.substr(d-l))this.describeTextChangedHelper(a,k,l,f,b);else{g+=f;if(g.length==c.length+1||g.length+1==c.length){if(g.length>c.length){if(0==g.indexOf(c)){this.speak(g[g.length-1],a.triggeredByUser,b);return}if(1==
-g.indexOf(c)){this.speak(g[0],a.triggeredByUser,b);return}}if(g.length<c.length){if(0==c.indexOf(g)){this.speak(c[c.length-1],a.triggeredByUser,b);return}if(1==c.indexOf(g)){this.speak(c[0],a.triggeredByUser,b);return}}}if(this.multiline)a.value.length<this.value.length&&this.speak(cvox.ChromeVox.msgs.getMsg("text_deleted"),a.triggeredByUser,b);else if(e<=this.maxShortPhraseLen)this.describeTextChangedHelper(a,0,0,"",b);else{for(k=0;k<d&&k<e&&c[k]==g[k];)k++;for(;0<k&&!this.isWordBreakChar(c[k-1]);)k--;
-for(l=0;l<d-k&&l<e-k&&c[d-l-1]==g[e-l-1];)l++;for(;0<l&&!this.isWordBreakChar(c[d-l]);)l--;this.describeTextChangedHelper(a,k,l,"",b)}}}};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChangedHelper=function(a,b,c,d,e){var f=this.value.length,g=a.value.length,f=f-b-c,h=this.value.substr(b,f),k=g-b-c;c=a.value.substr(b,k);var l="",g=a.triggeredByUser;if(1<k)l=c;else if(1==k)if((cvox.ChromeVox.typingEcho==cvox.TypingEcho.WORD||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)&&this.isWordBreakChar(c)&&0<b&&!this.isWordBreakChar(a.value.substr(b-1,1))){for(f=b;0<f&&!this.isWordBreakChar(a.value[f-1]);)f--;f<b?l=a.value.substr(f,
-b+1-f):(l=c,g=!1)}else{if(cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)l=cvox.ChromeVoxEditableTextBase.eventTypingEcho?"":c}else 1<f&&!d?l=h+", deleted":1==f&&(l=h);d&&l?l+=", "+d:d&&(l=d);l&&this.speak(l,g,e)};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextCharacter=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousCharacter=function(){return!1};
-cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextParagraph=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousParagraph=function(){return!1};
-cvox.ChromeVoxEditableElement=function(a,b,c,d,e,f){cvox.ChromeVoxEditableTextBase.call(this,b,c,d,e,f);this.node=a;this.justSpokeDescription_=!1};goog.inherits(cvox.ChromeVoxEditableElement,cvox.ChromeVoxEditableTextBase);cvox.ChromeVoxEditableElement.prototype.changed=function(a){this.justSpokeDescription_&&this.value==a.value&&(this.value=a.value,this.start=a.start,this.end=a.end,this.justSpokeDescription_=!1);cvox.ChromeVoxEditableElement.superClass_.changed.call(this,a)};
-cvox.ChromeVoxEditableElement.prototype.getValue=function(){this.justSpokeDescription_=!0;return cvox.ChromeVoxEditableElement.superClass_.getValue.call(this)};cvox.ChromeVoxEditableElement.prototype.moveCursorToNextCharacter=function(){var a=this.node;a.selectionEnd++;a.selectionStart=a.selectionEnd;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousCharacter=function(){var a=this.node;a.selectionStart--;a.selectionEnd=a.selectionStart;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextWord=function(){var a=this.node,b=a.value.length,c=/\W+/gm,d=a.value.substring(a.selectionEnd),e=c.exec(d);null!==e&&0==e.index&&(e=c.exec(d));b=null===e?b:e.index+a.selectionEnd;a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousWord=function(){for(var a=this.node,b=/\W+/gm,c=a.value.substring(0,a.selectionStart),d=0;null!==b.exec(c);)b.lastIndex<a.selectionStart&&(d=b.lastIndex);a.selectionStart=a.selectionEnd=d;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextParagraph=function(){var a=this.node,b=a.value.length,c=a.selectionEnd>=b?b:a.value.indexOf("\n",a.selectionEnd);0>c&&(c=b);a.selectionStart=a.selectionEnd=c+1;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousParagraph=function(){var a=this.node,b=0>=a.selectionStart?0:a.value.lastIndexOf("\n",a.selectionStart-2)+1;0>b&&(b=0);a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableHTMLInput=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,"password"===a.type,b)};goog.inherits(cvox.ChromeVoxEditableHTMLInput,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableHTMLInput.prototype.update=function(a){var b=this.node.value;a=new cvox.TextChangeEvent(b,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,!1,b);this.multiline=!0;this.shadowIsCurrent_=!1};goog.inherits(cvox.ChromeVoxEditableTextArea,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableTextArea.prototype.update=function(a){this.node.value!=this.value&&(this.shadowIsCurrent_=!1);a=new cvox.TextChangeEvent(this.node.value,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineIndex=function(a){return this.getShadow().getLineIndex(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineStart=function(a){return this.getShadow().getLineStart(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineEnd=function(a){return this.getShadow().getLineEnd(a)};
-cvox.ChromeVoxEditableTextArea.prototype.getShadow=function(){var a=cvox.ChromeVoxEditableTextArea.shadow_;a||(a=cvox.ChromeVoxEditableTextArea.shadow_=new cvox.EditableTextAreaShadow);this.shadowIsCurrent_||(a.update(this.node),this.shadowIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToNextLine=function(){var a=this.node,b=a.value.length;if(a.selectionEnd>=b)return!1;var c=this.getShadow(),d=c.getLineIndex(a.selectionEnd),e=c.getLineStart(d),e=a.selectionEnd-e,f=0==b?0:c.getLineIndex(b-1),b=d>=f?b:Math.min(c.getLineStart(d+1)+e,c.getLineEnd(d+1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToPreviousLine=function(){var a=this.node;if(0>=a.selectionStart)return!1;var b=this.getShadow(),c=b.getLineIndex(a.selectionStart),d=b.getLineStart(c),d=a.selectionStart-d,b=0>=c?0:Math.min(b.getLineStart(c-1)+d,b.getLineEnd(c-1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,"",0,0,!1,b);this.extractorIsCurrent_=!1;var c=this.getExtractor();this.value=c.getText();this.start=c.getStartIndex();this.end=c.getEndIndex();this.multiline=!0};goog.inherits(cvox.ChromeVoxEditableContentEditable,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableContentEditable.prototype.update=function(a){this.extractorIsCurrent_=!1;a=new cvox.TextChangeEvent(this.getExtractor().getText(),this.getExtractor().getStartIndex(),this.getExtractor().getEndIndex(),a);this.changed(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineIndex=function(a){return this.getExtractor().getLineIndex(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineStart=function(a){return this.getExtractor().getLineStart(a)};
-cvox.ChromeVoxEditableContentEditable.prototype.getLineEnd=function(a){return this.getExtractor().getLineEnd(a)};cvox.ChromeVoxEditableContentEditable.prototype.getExtractor=function(){var a=cvox.ChromeVoxEditableContentEditable.extractor_;a||(a=cvox.ChromeVoxEditableContentEditable.extractor_=new cvox.ContentEditableExtractor);this.extractorIsCurrent_||(a.update(this.node),this.extractorIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableContentEditable.prototype.describeSelectionChanged=function(a){a.triggeredByUser&&(this.start==this.end&&a.start==a.end&&1!=Math.abs(this.start-a.start)&&this.isLastChar(a)?this.speak(cvox.ChromeVox.msgs.getMsg("text_box_blank"),!0):cvox.ChromeVoxEditableContentEditable.superClass_.describeSelectionChanged.call(this,a))};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextCharacter=function(){window.getSelection().modify("move","forward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousCharacter=function(){window.getSelection().modify("move","backward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextParagraph=function(){window.getSelection().modify("move","forward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousParagraph=function(){window.getSelection().modify("move","backward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEventSuspender=function(){};cvox.ChromeVoxEventSuspender.suspendLevel_=0;cvox.ChromeVoxEventSuspender.enterSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_+=1};cvox.ChromeVoxEventSuspender.exitSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_-=1};cvox.ChromeVoxEventSuspender.areEventsSuspended=function(){return 0<cvox.ChromeVoxEventSuspender.suspendLevel_};
-cvox.ChromeVoxEventSuspender.withSuspendedEvents=function(a){return function(){cvox.ChromeVoxEventSuspender.enterSuspendEvents();var b=a.apply(this,arguments);cvox.ChromeVoxEventSuspender.exitSuspendEvents();return b}};cvox.ChromeVoxEventSuspender.makeSuspendableHandler=function(a,b){return function(){return cvox.ChromeVoxEventSuspender.areEventsSuspended()?b:a()}};cvox.Focuser={};
-cvox.Focuser.setFocus=function(a,b){var c=window.getSelection(),d;0<c.rangeCount&&(d=c.getRangeAt(0));document.activeElement&&!cvox.DomUtil.isDescendantOfNode(a,document.activeElement)&&document.activeElement.blur();a&&a.constructor==HTMLVideoElement&&(cvox.DomUtil.isFocusable(a)||a.setAttribute("tabIndex",0));if(b&&!cvox.DomUtil.isFocusable(a)){var e=cvox.DomUtil.findFocusableDescendant(a);e&&(a=e)}else for(;a&&!cvox.DomUtil.isFocusable(a);)a=a.parentNode;cvox.DomUtil.isFocusable(a)?"IFRAME"!=a.tagName&&
-(cvox.ChromeVoxEventSuspender.areEventsSuspended()?(cvox.Focuser.shouldEnterSuspendEvents_(a)&&cvox.ChromeVoxEventSuspender.enterSuspendEvents(),window.setTimeout(function(){a.focus();cvox.ChromeVoxEventSuspender.exitSuspendEvents()},0)):window.setTimeout(function(){a.focus()},0)):document.activeElement&&"BODY"!=document.activeElement.tagName&&document.activeElement.blur();cvox.DomUtil.isInputTypeText(a)?a.select():d&&(c.removeAllRanges(),c.addRange(d))};
-cvox.Focuser.shouldEnterSuspendEvents_=function(a){if(a.constructor&&a.constructor==HTMLVideoElement)return!1;if(a.hasAttribute)switch(a.getAttribute("type")){case "time":case "date":case "week":case "month":return!1}return!0};cvox.ChromeVoxHTMLMediaWidget=function(a){var b=this;this.mediaElem_=a;this.keyListener_=function(a){b.eventHandler_(a)};this.blurListener_=function(){b.shutdown()};this.mediaElem_.addEventListener("keydown",this.keyListener_,!1);this.mediaElem_.addEventListener("keyup",this.keyListener_,!1);this.mediaElem_.addEventListener("blur",this.blurListener_,!1)};
-cvox.ChromeVoxHTMLMediaWidget.prototype.shutdown=function(){this.mediaElem_.removeEventListener("blur",this.blurListener_,!1);this.mediaElem_.removeEventListener("keydown",this.keyListener_,!1);this.mediaElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLMediaWidget.prototype.jumpToTime_=function(a){0>a&&(a=0);a>this.mediaElem_.duration&&(a=this.mediaElem_.duration);this.mediaElem_.currentTime=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.setVolume_=function(a){0>a&&(a=0);1<a&&(a=1);this.mediaElem_.volume=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.eventHandler_=function(a){"keydown"==a.type&&(13==a.keyCode||32==a.keyCode?this.mediaElem_.paused?this.mediaElem_.play():this.mediaElem_.pause():39==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime+this.mediaElem_.duration/10):37==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime-this.mediaElem_.duration/10):38==a.keyCode?this.setVolume_(this.mediaElem_.volume+0.1):40==a.keyCode&&this.setVolume_(this.mediaElem_.volume-0.1))};cvox.ChromeVoxHTMLTimeWidget=function(a,b){var c=this;this.timeElem_=a;this.timeTts_=b;this.pMinutes_=this.pHours_=-1;this.pMilliseconds_=this.pSeconds_=0;this.pAmpm_="";this.pos_=0;this.maxPos_=2;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};if(this.timeElem_.hasAttribute("step")){var d=this.timeElem_.getAttribute("step");0<d&&(this.maxPos_=1<=d?3:4)}0==this.timeElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");
-e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e);e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e)}this.timeElem_.addEventListener("keydown",this.keyListener_,!1);this.timeElem_.addEventListener("keyup",this.keyListener_,!1);this.timeElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLTimeWidget.prototype.shutdown=function(){this.timeElem_.removeEventListener("blur",this.blurListener_,!1);this.timeElem_.removeEventListener("keydown",this.keyListener_,!1);this.timeElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLTimeWidget.prototype.forceInitTime_=function(){this.timeElem_.setAttribute("value","12:00")};
-cvox.ChromeVoxHTMLTimeWidget.prototype.handlePosChange_=function(){0>this.pos_&&(this.pos_=0);this.pos_>this.maxPos_&&(this.pos_=this.maxPos_);if(this.pos_==this.maxPos_)this.pAmpm_="";else switch(this.pos_){case 0:this.pHours_=-1;break;case 1:this.pMinutes_=-1;break;case 2:this.pSeconds_=-1;break;case 3:this.pMilliseconds_=-1}};
-cvox.ChromeVoxHTMLTimeWidget.prototype.update_=function(a){var b=this.timeElem_.value.split(":");if(1>b.length)this.forceInitTime_();else{var c=b[0],d=-1,e=0,f=0,g=cvox.ChromeVox.msgs.getMsg("timewidget_am");1<b.length&&(d=b[1]);2<b.length&&(b=b[2].split("."),e=b[0],1<b.length&&(f=b[1]));12<c&&(c-=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));12==c&&(g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));0==c&&(c=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_am"));b="";a&&(b=cvox.DomUtil.getName(this.timeElem_,
-!0,!0)+"\n");c!=this.pHours_&&(b=b+c+" "+cvox.ChromeVox.msgs.getMsg("timewidget_hours")+"\n",this.pHours_=c);d!=this.pMinutes_&&(b=b+d+" "+cvox.ChromeVox.msgs.getMsg("timewidget_minutes")+"\n",this.pMinutes_=d);e!=this.pSeconds_&&(b=b+e+" "+cvox.ChromeVox.msgs.getMsg("timewidget_seconds")+"\n",this.pSeconds_=e);f!=this.pMilliseconds_&&(b=b+f+" "+cvox.ChromeVox.msgs.getMsg("timewidget_milliseconds")+"\n",this.pMilliseconds_=f);g!=this.pAmpm_&&(b+=g,this.pAmpm_=g);0<b.length&&this.timeTts_.speak(b,
-0,null)}};cvox.ChromeVoxHTMLTimeWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.ActiveIndicator=function(){this.lastMoveTime_=0;this.zoom_=1;this.updateIndicatorTimeoutId_=this.lastClientRects_=this.lastSyncTarget_=this.container_=null;this.blurred_=!1;window.addEventListener("focus",goog.bind(function(){this.blurred_=!1;this.container_&&this.container_.classList.remove("cvox_indicator_window_not_focused")},this),!1);window.addEventListener("blur",goog.bind(function(){this.blurred_=!0;this.container_&&this.container_.classList.add("cvox_indicator_window_not_focused")},this),
-!1)};cvox.ActiveIndicator.STYLE=".cvox_indicator_container { position: absolute !important; left: 0 !important; top: 0 !important; z-index: 2147483647 !important; pointer-events: none !important;}.cvox_indicator_window_not_focused { visibility: hidden !important;}.cvox_indicator_pulsing { -webkit-animation: cvox_indicator_pulsing_animation 0s 2 alternate !important; -webkit-animation-timing-function: ease-in-out !important;}.cvox_indicator_region { opacity: 0 !important; -webkit-transition: opacity 1s !important;}.cvox_indicator_visible { opacity: 1 !important;}.cvox_indicator_container .cvox_indicator_region * { position:absolute !important; box-shadow: 0 0 4px 4px #f7983a !important; border-radius: 6px !important; -webkit-transition: none !important;}.cvox_indicator_animate_normal .cvox_indicator_region * { -webkit-transition: all 0.3s !important;}.cvox_indicator_animate_quick .cvox_indicator_region * { -webkit-transition: all 0.1s !important;}.cvox_indicator_top { border-radius: inherit inherit 0 0 !important;}.cvox_indicator_middle_nw { border-radius: inherit 0 0 0 !important;}.cvox_indicator_middle_ne { border-radius: 0 inherit 0 0 !important;}.cvox_indicator_middle_se { border-radius: 0 0 inherit 0 !important;}.cvox_indicator_middle_sw { border-radius: 0 0 0 inherit !important;}.cvox_indicator_bottom { border-radius: 0 0 inherit inherit !important;}@-webkit-keyframes cvox_indicator_pulsing_animation { 0% {opacity: 1.0} 50% {opacity: 0.5} 100% {opacity: 1.0}}";
-cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS=100;cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS=300;cvox.ActiveIndicator.MARGIN=8;cvox.ActiveIndicator.prototype.removeFromDom=function(){this.container_&&this.container_.parentElement&&this.container_.parentElement.removeChild(this.container_)};cvox.ActiveIndicator.prototype.syncToNode=function(a){a&&(a==document.body?this.removeFromDom():this.syncToNodes([a]))};
-cvox.ActiveIndicator.prototype.syncToNodes=function(a){var b=this.clientRectsFromNodes_(a);this.moveIndicator_(b,cvox.ActiveIndicator.MARGIN);this.lastSyncTarget_=a;this.lastClientRects_=b;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToRange=function(a){var b=cvox.ActiveIndicator.MARGIN;a.startContainer==a.endContainer&&a.startOffset+1==a.endOffset&&(b=1);var c=a.getClientRects();this.moveIndicator_(c,b);this.lastSyncTarget_=a;this.lastClientRects_=c;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToCursorSelection=function(a){if(a.start.node==a.end.node&&a.start.index==a.end.index)this.syncToNode(a.start.node);else{var b=document.createRange();b.setStart(a.start.node,a.start.index);b.setEnd(a.end.node,a.end.index);this.syncToRange(b)}};cvox.ActiveIndicator.prototype.updateIndicatorIfChanged=function(){this.updateIndicatorTimeoutId_||(this.updateIndicatorTimeoutId_=window.setTimeout(goog.bind(function(){this.handleUpdateIndicatorIfChanged_()},this),100))};
-cvox.ActiveIndicator.prototype.handleUpdateIndicatorIfChanged_=function(){this.updateIndicatorTimeoutId_=null;if(this.lastSyncTarget_){var a;if((a=this.lastSyncTarget_ instanceof Array?this.clientRectsFromNodes_(this.lastSyncTarget_):this.lastSyncTarget_.getClientRects())&&0!=a.length){var b=!1;if(a.length!=this.lastClientRects_.length)b=!0;else for(var c=0;c<this.lastClientRects_.length;++c){var d=this.lastClientRects_[c],e=a[c];if(d.top!=e.top||d.right!=e.right||d.bottom!=e.bottom||d.left!=d.left){b=
-!0;break}}b&&(this.moveIndicator_(a,cvox.ActiveIndicator.MARGIN),this.lastClientRects_=a)}else this.syncToNode(document.body)}};cvox.ActiveIndicator.prototype.clientRectsFromNodes_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(d.constructor==Text){var e=document.createRange();e.selectNode(d);e=e.getClientRects()}else{for(;!d.getClientRects;)d=d.parentElement;e=d.getClientRects()}for(d=0;d<e.length;++d)b.push(e[d])}return b};
-cvox.ActiveIndicator.prototype.moveIndicator_=function(a,b){if(document.body.isContentEditable)this.removeFromDom();else{var c=a.length;if(0!=c){var d,e;"static"!=window.getComputedStyle(document.body,null).position?(d=-document.body.getBoundingClientRect().left,e=-document.body.getBoundingClientRect().top):"static"!=window.getComputedStyle(document.documentElement,null).position?(d=-document.documentElement.getBoundingClientRect().left,e=-document.documentElement.getBoundingClientRect().top):(d=
-window.pageXOffset,e=window.pageYOffset);for(var f=[],g=0;g<c;g++)f.push(this.inset_(a[g],d,e,-d,-e));if(!this.container_||!this.container_.parentElement){g=document.getElementsByClassName("cvox_indicator_container");for(c=0;d=g[c];c++)d.parentNode&&d.parentNode.removeChild(d);this.container_=this.createDiv_(document.body,"cvox_indicator_container",document.body.firstChild)}g=document.createElement("style");g.id="cvox_indicator_style";g.innerHTML=cvox.ActiveIndicator.STYLE;cvox.DomUtil.addNodeToHead(g,
-g.id);g=(new Date).getTime();c=g-this.lastMoveTime_;this.container_.className="cvox_indicator_container";document.hasFocus()&&!this.blurred_||this.container_.classList.add("cvox_indicator_window_not_focused");c>cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS?this.container_.classList.add("cvox_indicator_animate_normal"):c>cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS&&this.container_.classList.add("cvox_indicator_animate_quick");this.lastMoveTime_=g;this.computeZoomLevel_();for(window.setTimeout(goog.bind(function(){this.container_.classList.add("cvox_indicator_pulsing")},
-this),0);1<this.container_.childElementCount;)this.container_.removeChild(this.container_.lastElementChild);d=[[f[0]]];e=[f[0]];for(g=1;g<f.length;g++){for(var h=!1,c=0;c<d.length&&!h;c++)this.intersects_(f[g],e[c])&&(d[c].push(f[g]),e[c]=this.union_(e[c],f[g]),h=!0);h||(d.push([f[g]]),e.push(f[g]))}do for(f=!1,g=0;g<d.length-1&&!f;g++)for(c=g+1;c<d.length&&!f;c++)this.intersects_(e[g],e[c])&&(d[g]=d[g].concat(d[c]),e[g]=this.union_(e[g],e[c]),d.splice(c,1),e.splice(c,1),f=!0);while(f);for(g=0;g<
-d.length;g++)d[g].sort(function(a,b){return a.top!=b.top?a.top-b.top:a.left-b.left});for(g=0;g<d.length;g++)f=null,0==g&&1==this.container_.childElementCount&&6==this.container_.children[0].childElementCount&&(f=this.container_.children[0]),this.updateIndicatorRegion_(d[g],f,b)}}};
-cvox.ActiveIndicator.prototype.updateIndicatorRegion_=function(a,b,c){if(b)var d=b.children[0],e=b.children[1],f=b.children[2],g=b.children[3],h=b.children[4],k=b.children[5];else b=this.createDiv_(this.container_,"cvox_indicator_region"),window.setTimeout(function(){b.classList.add("cvox_indicator_visible")},0),d=this.createDiv_(b,"cvox_indicator_top"),e=this.createDiv_(b,"cvox_indicator_middle_nw"),f=this.createDiv_(b,"cvox_indicator_middle_ne"),g=this.createDiv_(b,"cvox_indicator_middle_sw"),h=
-this.createDiv_(b,"cvox_indicator_middle_se"),k=this.createDiv_(b,"cvox_indicator_bottom");for(var l=a[0],m=Math.floor((l.top+l.bottom)/2),p=1,q=a.length;p<q&&a[p].top<m;)l=this.union_(l,a[p]),m=Math.floor((l.top+l.bottom)/2),p++;if(p==q)l=this.inset_(l,-c,-c,-c,-c),a=Math.floor((3*l.top+1*l.bottom)/4),c=Math.floor((2*l.top+2*l.bottom)/4),m=Math.floor((1*l.top+3*l.bottom)/4),this.setElementCoords_(d,l.left,l.top,l.right,a,!0,!0,!0,!1),this.setElementCoords_(e,l.left,a,l.left,c,!0,!0,!1,!1),this.setElementCoords_(g,
-l.left,c,l.left,m,!0,!1,!1,!0),this.setElementCoords_(f,l.right,a,l.right,c,!1,!0,!0,!1),this.setElementCoords_(h,l.right,c,l.right,m,!1,!1,!0,!0),this.setElementCoords_(k,l.left,m,l.right,l.bottom,!0,!1,!0,!0);else{for(var m=a[q-1],n=Math.floor((m.top+m.bottom)/2),q=q-2;0<=q&&a[q].bottom>n;)m=this.union_(m,a[q]),n=Math.floor((m.top+m.bottom)/2),q--;l=this.inset_(l,-c,-c,-c,c);m=this.inset_(m,-c,c,-c,-c);if(p>q)n=this.union_(l,m),n.top=l.bottom,n.bottom=m.top,n.height=Math.floor((n.top+n.bottom)/
-2);else{n=a[p];for(p+=1;p<=q;)n=this.union_(n,a[p]),p++;n=this.inset_(n,-c,-c,-c,-c);n.left=Math.min(n.left,l.left,m.left);n.right=Math.max(n.right,l.right,m.right);n.width=n.right-n.left}l.right>n.right-40&&(l.right=n.right,l.width=l.right-l.left);l.left<n.left+40&&(l.left=n.left,l.width=l.right-l.left);m.right>n.right-40&&(m.right=n.right,m.width=m.right-m.left);m.left<n.left+40&&(m.left=n.left,m.width=m.right-m.left);a=Math.floor((n.top+n.bottom)/2);this.setElementRect_(d,l,!0,!0,!0,!1);this.setElementRect_(k,
-m,!0,!1,!0,!0);this.setElementCoords_(e,n.left,l.bottom,l.left,a,!0,!0,!1,!1);this.setElementCoords_(f,l.right,l.bottom,n.right,a,!1,!0,!0,!1);this.setElementCoords_(g,n.left,a,m.left,m.top,!0,!1,!1,!0);this.setElementCoords_(h,m.right,a,n.right,m.top,!1,!1,!0,!0)}};cvox.ActiveIndicator.prototype.intersects_=function(a,b){var c=2*cvox.ActiveIndicator.MARGIN;return b.left<=a.right+c&&b.right>=a.left-c&&b.top<=a.bottom+c&&b.bottom>=a.top-c};
-cvox.ActiveIndicator.prototype.union_=function(a,b){var c={left:Math.min(a.left,b.left),top:Math.min(a.top,b.top),right:Math.max(a.right,b.right),bottom:Math.max(a.bottom,b.bottom)};c.width=c.right-c.left;c.height=c.bottom-c.top;return c};cvox.ActiveIndicator.prototype.inset_=function(a,b,c,d,e){a={left:a.left+b,top:a.top+c,right:a.right-d,bottom:a.bottom-e};a.width=a.right-a.left;a.height=a.bottom-a.top;return a};
-cvox.ActiveIndicator.prototype.createDiv_=function(a,b,c){var d=document.createElement("div");d.className=b;c?a.insertBefore(d,c):a.appendChild(d);return d};cvox.ActiveIndicator.prototype.fixZoom_=function(a){return(Math.round(a*this.zoom_)+0.1)/this.zoom_};cvox.ActiveIndicator.prototype.fixZoomSum_=function(a,b){var c=Math.round(a*this.zoom_),d=Math.round((a+b)*this.zoom_),c=d-c;return(c+0.1)/this.zoom_};
-cvox.ActiveIndicator.prototype.setElementCoords_=function(a,b,c,d,e,f,g,h,k){var l=d-b,m=e-c;d-=b;e-=c;var p=f?-20:0,q=g?-20:0,n=h?20:0,s=k?20:0;0==d&&(h?(b-=5,d+=5):f&&(d+=10),s=q=10,c-=10,e+=20);k||(e+=5);g||(c-=5,e+=5,q+=5,s+=5);n=0==n&&0==l?1:this.fixZoomSum_(b,n+l);s=this.fixZoomSum_(c,s+m);a.style.left=this.fixZoom_(b)+"px";a.style.top=this.fixZoom_(c)+"px";a.style.width=this.fixZoomSum_(b,d)+"px";a.style.height=this.fixZoomSum_(c,e)+"px";a.style.clip="rect("+[q,n,s,p].join("px ")+"px)"};
-cvox.ActiveIndicator.prototype.setElementRect_=function(a,b,c,d,e,f){this.setElementCoords_(a,b.left,b.top,b.right,b.bottom,c,d,e,f)};
-cvox.ActiveIndicator.prototype.computeZoomLevel_=function(){if(window.innerHeight!==this.innerHeight_||window.innerWidth!==this.innerWidth_){this.innerHeight_=window.innerHeight;this.innerWidth_=window.innerWidth;var a=document.createElement("div");a.innerHTML="X";a.setAttribute("style","font: 5000px/1em sans-serif !important; -webkit-text-size-adjust:none !important; visibility:hidden !important; left: -10000px !important; top: -10000px !important; position:absolute !important;");document.body.appendChild(a);
-var b=5E3/a.clientHeight,b=Math.round(500*b)/500;0.1<b&&10>b&&(this.zoom_=b);a.parentNode.removeChild(a)}};cvox.NodeBreadcrumb=function(){this.cvTagCounter_=0};goog.addSingletonGetter(cvox.NodeBreadcrumb);cvox.NodeBreadcrumb.TOUCHED_TAG="chromevoxtag";cvox.NodeBreadcrumb.NEEDED_TAG_="chromevoxneeded";
-cvox.NodeBreadcrumb.prototype.tagCurrentNode=function(){for(var a,b=cvox.ChromeVox.navigationManager.getCurrentNode();b&&!b.hasAttribute;)b=b.parentNode;b?b.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a=b.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):(a=this.cvTagCounter_,b.setAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG,a),this.cvTagCounter_++):a=-1;return a};
-cvox.NodeBreadcrumb.prototype.smartStart_=function(a){for(var b=0;b<a.children.length;++b){var c=a.children[b];this.smartStart_(c);c.getAttribute&&!goog.isNull(c.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))&&this.setNeeded_(c)}};cvox.NodeBreadcrumb.prototype.setNeeded_=function(a){a&&a.getAttribute&&goog.isNull(a.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&(a.setAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_,!0),"body"!==a.nodeName&&this.setNeeded_(a.parentElement))};
-cvox.NodeBreadcrumb.prototype.smartClone_=function(a){var b={};b[cvox.NodeBreadcrumb.TOUCHED_TAG]=!0;b[cvox.NodeBreadcrumb.NEEDED_TAG_]=!0;if(a.getAttribute&&a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))return cvox.DomUtil.deepClone(a,b);for(var b=cvox.DomUtil.shallowChildlessClone(a,b),c=0;c<a.childNodes.length;++c){var d=a.childNodes[c];d.getAttribute&&!goog.isNull(d.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&b.appendChild(this.smartClone_(d))}return b};
-cvox.NodeBreadcrumb.prototype.dumpWalkedDom=function(){this.smartStart_(document.body);return this.smartClone_(document.body)};cvox.NodeBreadcrumb.getCurrentNodeTag=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a&&!a.hasAttribute;)a=a.parentNode;return a&&a.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):-1};cvox.HistoryEvent=function(a){this.spoken_=[];a?this.userCommand_=a.cmd:this.startTime_=(new Date).getTime()};cvox.HistoryEvent.prototype.withUserCommand=function(a){if(this.userCommand_)return window.console.error("Two user commands on "+a,this),this;this.userCommand_=a;return this};cvox.HistoryEvent.prototype.speak=function(a){this.spoken_.push(a);return this};
-cvox.HistoryEvent.prototype.done=function(){this.endTime_=(new Date).getTime();cvox.NodeBreadcrumb.getInstance().tagCurrentNode();window.console.log("User command done.",this);return this};cvox.HistoryEvent.prototype.outputObject=function(){return{start:this.startTime_,end:this.endTime_,cmd:this.userCommand_,spoken:this.spoken_}};
-cvox.HistoryEvent.prototype.outputHTML=function(){var a=document.createElement("div");a.className="cvoxHistoryEvent";var b=this.endTime_-this.startTime_;a.innerHTML=this.userCommand_+" ("+b+"ms)";for(b=0;b<this.spoken_.length;b++){var c=document.createElement("div");c.className="cvoxHistoryEventSpoken";c.innerHTML=this.spoken_[b].substr(0,20);20<this.spoken_[b].length&&(c.innerHTML+="...");a.appendChild(c)}return a};
-cvox.HistoryEvent.prototype.outputJs=function(){var a="this.waitForCalm(this.userCommand, '"+this.userCommand_+"')";return a=0<this.spoken_.length?a+("\n .waitForCalm(this.assertSpoken, '"+cvox.DomUtil.collapseWhitespace(this.spoken_.join(" "))+"');\n"):a+";\n"};cvox.History=function(){this.recording_=!1;this.events_=[];this.styleDiv_=this.listDiv_=this.mainDiv_=this.currentEvent_=null;this.nodeBreadcrumb_=cvox.NodeBreadcrumb.getInstance()};goog.addSingletonGetter(cvox.History);
-cvox.History.prototype.addListDiv_=function(){this.mainDiv_=document.createElement("div");this.mainDiv_.style.position="fixed";this.mainDiv_.style.bottom="0";this.mainDiv_.style.right="0";this.mainDiv_.style.zIndex="999";this.listDiv_=document.createElement("div");this.listDiv_.id="cvoxEventList";this.mainDiv_.appendChild(this.listDiv_);var a=document.createElement("div"),b=document.createElement("button");b.onclick=cvox.History.sendToFeedback;b.innerHTML="Create bug";a.appendChild(b);this.mainDiv_.appendChild(a);
-a=document.createElement("div");b=document.createElement("button");b.onclick=cvox.History.dumpJs;b.innerHTML="Dump test case";a.appendChild(b);this.mainDiv_.appendChild(a);document.body.appendChild(this.mainDiv_);this.styleDiv_=document.createElement("style");this.styleDiv_.innerHTML=".cvoxHistoryEventSpoken { color: gray; font-size: 75% }";document.body.appendChild(this.styleDiv_)};
-cvox.History.prototype.removeListDiv_=function(){document.body.removeChild(this.mainDiv_);document.body.removeChild(this.styleDiv_);this.styleDiv_=this.listDiv_=this.mainDiv_=null};
-cvox.History.prototype.addBigTextBox_=function(){function a(a,b){var c=document.createElement("button");c.onclick=b;c.innerHTML=a;d.appendChild(c)}var b=document.createElement("div");b.style.position="fixed";b.style.top="0";b.style.left="0";b.style.zIndex="999";var c=document.createElement("textarea");c.style.width="500px";c.style.height="500px";c.innerHTML=this.dumpJsOutput_();b.appendChild(c);var d=document.createElement("div");b.appendChild(d);a("Close dialog",function(){document.body.removeChild(b)});
-a("Remove fluff",goog.bind(function(){c.innerHTML=this.dumpJsOutput_(["stopSpeech","toggleKeyPrefix"])},this));document.body.appendChild(b)};cvox.History.prototype.startRecording=function(){this.recording_=!0;this.addListDiv_()};cvox.History.prototype.stopRecording=function(){this.recording_=!1;this.removeListDiv_();this.events_=[];this.currentEvent_=null};
-cvox.History.prototype.enterUserCommand=function(a){this.recording_&&(this.currentEvent_&&window.console.error("User command "+a+" overlaps current event",this.currentEvent_),this.currentEvent_=(new cvox.HistoryEvent).withUserCommand(a),this.events_.push(this.currentEvent_))};cvox.History.prototype.exitUserCommand=function(){this.recording_&&this.currentEvent_&&(this.currentEvent_.done(),this.listDiv_.appendChild(this.currentEvent_.outputHTML()),this.currentEvent_=null)};
-cvox.History.prototype.speak=function(a){if(!this.recording_)return this;if(!this.currentEvent_)return window.console.error("Speak called outside of a user command."),this;this.currentEvent_.speak(a);return this};cvox.History.prototype.isSpeaking=function(){return!1};cvox.History.prototype.stop=function(){};cvox.History.prototype.increaseOrDecreaseProperty=function(){};cvox.History.prototype.getDefaultProperty=function(){};
-cvox.History.dumpJs=function(){var a=cvox.History.getInstance();a.addBigTextBox_();window.console.log(a.dumpJsOutput_())};cvox.History.prototype.dumpJsOutput_=function(a){var b={};a&&a.forEach(function(a){b[a]=1});return["/*DOC: += ",this.nodeBreadcrumb_.dumpWalkedDom().innerHTML,"*/\n"].concat(this.events_.filter(function(a){return!(a.userCommand_ in b)}).map(function(a){return a.outputJs()})).join("")};
-cvox.History.sendToFeedback=function(){var a=cvox.History.getInstance(),a=a.events_.map(function(a){return a.outputObject()}),b=document.createElement("script");b.type="text/javascript";b.src="https://www.gstatic.com/feedback/api.js";var c=document.createElement("script");c.type="text/javascript";c.innerHTML="userfeedback.api.startFeedback({ productId: '76092' }, { cvoxHistory: "+cvox.ChromeVoxJSON.stringify(cvox.ChromeVoxJSON.stringify(a))+" });";b.onload=function(){document.body.appendChild(c)};
-document.body.appendChild(b)};cvox.KeySequence=function(a,b,c,d){this.doubleTap=!!d;this.cvoxModifier=void 0==b?this.isCVoxModifierActive(a):b;this.stickyMode=!!a.stickyMode;this.prefixKey=!!a.keyPrefix;this.skipStripping=!!c;if(this.stickyMode&&this.prefixKey)throw"Prefix key and sticky mode cannot both be enabled: "+a;a=this.resolveChromeOSSpecialKeys_(a);this.keys={ctrlKey:[],searchKeyHeld:[],altKey:[],altGraphKey:[],shiftKey:[],metaKey:[],keyCode:[]};this.extractKey_(a)};
-cvox.KeySequence.KEY_PRESS_CODE={39:222,44:188,45:189,46:190,47:191,59:186,91:219,92:220,93:221};cvox.KeySequence.doubleTapCache=[];cvox.KeySequence.prototype.addKeyEvent=function(a){if(1<this.keys.keyCode.length)return!1;this.extractKey_(a);return!0};cvox.KeySequence.prototype.equals=function(a){if(!this.checkKeyEquality_(a)||this.doubleTap!=a.doubleTap)return!1;if(this.cvoxModifier===a.cvoxModifier)return!0;a=this.cvoxModifier?a:this;return a.stickyMode||a.prefixKey};
-cvox.KeySequence.prototype.extractKey_=function(a){for(var b in this.keys)if("keyCode"==b){var c;"keypress"==a.type&&97<=a[b]&&122>=a[b]?c=a[b]-32:"keypress"==a.type&&(c=cvox.KeySequence.KEY_PRESS_CODE[a[b]]);this.keys[b].push(c||a[b])}else this.isKeyModifierActive(a,b)?this.keys[b].push(!0):this.keys[b].push(!1);this.cvoxModifier&&this.rationalizeKeys_()};
-cvox.KeySequence.prototype.rationalizeKeys_=function(){if(!this.skipStripping){var a=cvox.ChromeVox.modKeyStr.split(/\+/g),b=this.keys.keyCode.length-1;-1!=a.indexOf("Ctrl")&&(this.keys.ctrlKey[b]=!1);-1!=a.indexOf("Alt")&&(this.keys.altKey[b]=!1);-1!=a.indexOf("Shift")&&(this.keys.shiftKey[b]=!1);var c=this.getMetaKeyName_();if(-1!=a.indexOf(c))if("Search"==c)this.keys.searchKeyHeld[b]=!1;else if("Cmd"==c||"Win"==c)this.keys.metaKey[b]=!1}};
-cvox.KeySequence.prototype.getMetaKeyName_=function(){return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win"};cvox.KeySequence.prototype.checkKeyEquality_=function(a){for(var b in this.keys)for(var c=this.keys[b].length;c--;)if(this.keys[b][c]!==a.keys[b][c])return!1;return!0};cvox.KeySequence.prototype.length=function(){return this.keys.keyCode.length};cvox.KeySequence.prototype.isModifierKey=function(a){return 16==a||17==a||18==a||91==a||93==a};
-cvox.KeySequence.prototype.isCVoxModifierActive=function(a){var b=cvox.ChromeVox.modKeyStr.split(/\+/g);this.isKeyModifierActive(a,"ctrlKey")&&(b=b.filter(function(a){return"Ctrl"!=a}));this.isKeyModifierActive(a,"altKey")&&(b=b.filter(function(a){return"Alt"!=a}));this.isKeyModifierActive(a,"shiftKey")&&(b=b.filter(function(a){return"Shift"!=a}));if(this.isKeyModifierActive(a,"metaKey")||this.isKeyModifierActive(a,"searchKeyHeld"))var c=this.getMetaKeyName_(),b=b.filter(function(a){return a!=c});
-return 0==b.length};cvox.KeySequence.prototype.isKeyModifierActive=function(a,b){switch(b){case "ctrlKey":return a.ctrlKey||17==a.keyCode;case "altKey":return a.altKey||18==a.keyCode;case "shiftKey":return a.shiftKey||16==a.keyCode;case "metaKey":return a.metaKey||!cvox.ChromeVox.isChromeOS&&91==a.keyCode;case "searchKeyHeld":return cvox.ChromeVox.isChromeOS&&91==a.keyCode||a.searchKeyHeld}return!1};
-cvox.KeySequence.deserialize=function(a){var b={};b.stickyMode=void 0==a.stickyMode?!1:a.stickyMode;b.prefixKey=void 0==a.prefixKey?!1:a.prefixKey;var c=1<a.keys.keyCode.length,d={},e;for(e in a.keys)b[e]=a.keys[e][0],c&&(d[e]=a.keys[e][1]);e=new cvox.KeySequence(b,a.cvoxModifier,!0,a.doubleTap);c&&(cvox.ChromeVox.sequenceSwitchKeyCodes.push(new cvox.KeySequence(b,a.cvoxModifier)),e.addKeyEvent(d));a.doubleTap&&cvox.KeySequence.doubleTapCache.push(e);return e};
-cvox.KeySequence.fromStr=function(a){var b={},c={},d;d=-1==a.indexOf(">")?!1:!0;var e=!1;b.stickyMode=!1;b.prefixKey=!1;a=a.split("+");for(var f=0;f<a.length;f++)for(var g=a[f].split(">"),h=0;h<g.length;h++){if("#"==g[h].charAt(0)){var k=parseInt(g[h].substr(1),10);0<h?c.keyCode=k:b.keyCode=k}k=g[h];1==g[h].length?0<h?c.keyCode=g[h].charCodeAt(0):b.keyCode=g[h].charCodeAt(0):(0<h?cvox.KeySequence.setModifiersOnEvent_(k,c):cvox.KeySequence.setModifiersOnEvent_(k,b),"Cvox"==k&&(e=!0))}b=new cvox.KeySequence(b,
-e);d&&b.addKeyEvent(c);return b};cvox.KeySequence.setModifiersOnEvent_=function(a,b){"Ctrl"==a?(b.ctrlKey=!0,b.keyCode=17):"Alt"==a?(b.altKey=!0,b.keyCode=18):"Shift"==a?(b.shiftKey=!0,b.keyCode=16):"Search"==a?(b.searchKeyHeld=!0,b.keyCode=91):"Cmd"==a?(b.metaKey=!0,b.keyCode=91):"Win"==a?(b.metaKey=!0,b.keyCode=91):"Insert"==a&&(b.keyCode=45)};
-cvox.KeySequence.prototype.resolveChromeOSSpecialKeys_=function(a){if(!this.cvoxModifier||this.stickyMode||this.prefixKey||!cvox.ChromeVox.isChromeOS)return a;var b={},c;for(c in a)b[c]=a[c];switch(b.keyCode){case 33:b.keyCode=38;break;case 34:b.keyCode=40;break;case 35:b.keyCode=39;break;case 36:b.keyCode=37;break;case 45:b.keyCode=190;break;case 46:b.keyCode=8;break;case 112:b.keyCode=49;break;case 113:b.keyCode=50;break;case 114:b.keyCode=51;break;case 115:b.keyCode=52;break;case 116:b.keyCode=
-53;break;case 117:b.keyCode=54;break;case 118:b.keyCode=55;break;case 119:b.keyCode=56;break;case 120:b.keyCode=57;break;case 121:b.keyCode=48;break;case 122:b.keyCode=189;break;case 123:b.keyCode=187}return b};cvox.KeyUtil=function(){};cvox.KeyUtil.modeKeyPressTime=0;cvox.KeyUtil.sequencing=!1;cvox.KeyUtil.prevKeySequence=null;cvox.KeyUtil.stickyKeySequence=null;cvox.KeyUtil.maxSeqLength=2;
-cvox.KeyUtil.keyEventToKeySequence=function(a){var b=cvox.KeyUtil;b.prevKeySequence&&b.maxSeqLength==b.prevKeySequence.length()&&(b.sequencing=!1,b.prevKeySequence=null);var c=b.sequencing||a.keyPrefix||a.stickyMode,d=new cvox.KeySequence(a),e=d.cvoxModifier;if(c||e){if(!b.sequencing&&b.isSequenceSwitchKeyCode(d))return b.sequencing=!0,b.prevKeySequence=d;if(b.sequencing){if(b.prevKeySequence.addKeyEvent(a))return d=b.prevKeySequence,b.prevKeySequence=null,b.sequencing=!1,d;throw"Think sequencing is enabled, yet util.prevKeySequence alreadyhas two key codes"+
-b.prevKeySequence;}}else b.sequencing=!1;c=(new Date).getTime();if(cvox.KeyUtil.isDoubleTapKey(d)&&b.prevKeySequence&&d.equals(b.prevKeySequence)&&(e=b.modeKeyPressTime,0<e&&300>c-e))return d=b.prevKeySequence,d.doubleTap=!0,b.prevKeySequence=null,b.sequencing=!1,cvox.ChromeVox.isChromeOS&&a.keyCode==cvox.KeyUtil.getStickyKeyCode()&&(cvox.ChromeVox.searchKeyHeld=!1),d;b.prevKeySequence=d;b.modeKeyPressTime=c;return d};
-cvox.KeyUtil.keyCodeToString=function(a){return 17==a?"Ctrl":18==a?"Alt":16==a?"Shift":91==a||93==a?cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win":45==a?"Insert":65<=a&&90>=a?String.fromCharCode(a):48<=a&&57>=a?String.fromCharCode(a):"#"+a};cvox.KeyUtil.modStringToKeyCode=function(a){switch(a){case "Ctrl":return 17;case "Alt":return 18;case "Shift":return 16;case "Cmd":case "Win":return 91}return-1};
-cvox.KeyUtil.cvoxModKeyCodes=function(){var a=cvox.ChromeVox.modKeyStr.split(/\+/g);return a=a.map(function(a){return cvox.KeyUtil.modStringToKeyCode(a)})};cvox.KeyUtil.isSequenceSwitchKeyCode=function(a){for(var b=0;b<cvox.ChromeVox.sequenceSwitchKeyCodes.length;b++){var c=cvox.ChromeVox.sequenceSwitchKeyCodes[b];if(c.equals(a))return!0}return!1};
-cvox.KeyUtil.getReadableNameForKeyCode=function(a){if(0==a)return"Power button";if(17==a)return"Control";if(18==a)return"Alt";if(16==a)return"Shift";if(9==a)return"Tab";if(91==a||93==a)return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win";if(8==a)return"Backspace";if(32==a)return"Space";if(35==a)return"end";if(36==a)return"home";if(37==a)return"Left arrow";if(38==a)return"Up arrow";if(39==a)return"Right arrow";if(40==a)return"Down arrow";if(45==a)return"Insert";if(13==a)return"Enter";
-if(27==a)return"Escape";if(112==a)return cvox.ChromeVox.isChromeOS?"Back":"F1";if(113==a)return cvox.ChromeVox.isChromeOS?"Forward":"F2";if(114==a)return cvox.ChromeVox.isChromeOS?"Refresh":"F3";if(115==a)return cvox.ChromeVox.isChromeOS?"Toggle full screen":"F4";if(116==a)return"F5";if(117==a)return"F6";if(118==a)return"F7";if(119==a)return"F8";if(120==a)return"F9";if(121==a)return"F10";if(122==a)return"F11";if(123==a)return"F12";if(186==a)return"Semicolon";if(187==a)return"Equal sign";if(188==a)return"Comma";
-if(189==a)return"Dash";if(190==a)return"Period";if(191==a)return"Forward slash";if(192==a)return"Grave accent";if(219==a)return"Open bracket";if(220==a)return"Back slash";if(221==a)return"Close bracket";if(222==a)return"Single quote";if(115==a)return"Toggle full screen";if(48<=a&&90>=a)return String.fromCharCode(a)};cvox.KeyUtil.getStickyKeyCode=function(){var a=45;if(cvox.ChromeVox.isChromeOS||cvox.ChromeVox.isMac)a=91;return a};
-cvox.KeyUtil.getStickyKeySequence=function(){if(null==cvox.KeyUtil.stickyKeySequence){var a=cvox.KeyUtil.getStickyKeyCode(),a={keyCode:a,stickyMode:!0},b=new cvox.KeySequence(a);b.addKeyEvent(a);cvox.KeyUtil.stickyKeySequence=b}return cvox.KeyUtil.stickyKeySequence};cvox.KeyUtil.getReadableNameForStr=function(){return null};
-cvox.KeyUtil.keySequenceToString=function(a,b,c){for(var d="",e=a.length(),f=0;f<e;f++){""==d||c?""!=d&&(d+="+"):d+=">";var g="",h;for(h in a.keys)if(a.keys[h][f]){var k="";switch(h){case "ctrlKey":k="Ctrl";break;case "searchKeyHeld":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "altKey":k="Alt";break;case "altGraphKey":k="AltGraph";break;case "shiftKey":k="Shift";break;case "metaKey":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "keyCode":var l=a.keys[h][f];a.isModifierKey(l)||
-c||(g=b?g+cvox.KeyUtil.getReadableNameForKeyCode(l):g+cvox.KeyUtil.keyCodeToString(l))}-1==d.indexOf(k)&&(g+=k+"+")}d+=g;"+"==d[d.length-1]&&(d=d.slice(0,-1))}a.cvoxModifier||a.prefixKey?d=""!=d?"Cvox+"+d:"Cvox":a.stickyMode&&(">"==d[d.length-1]&&(d=d.slice(0,-1)),d=d+"+"+d);return d};cvox.KeyUtil.isDoubleTapKey=function(a){var b=!1,c=a.doubleTap;a.doubleTap=!0;for(var d=0,e;e=cvox.KeySequence.doubleTapCache[d];d++)if(e.equals(a)){b=!0;break}a.doubleTap=c;return b};cvox.KeyMap=function(a){this.bindings_=a;this.commandToKey_={};this.buildCommandToKey_()};cvox.KeyMap.KEYMAP_PATH="chromevox/background/keymaps/";cvox.KeyMap.AVAILABLE_MAP_INFO={keymap_classic:{file:"classic_keymap.json"},keymap_flat:{file:"flat_keymap.json"},keymap_experimental:{file:"experimental.json"}};cvox.KeyMap.DEFAULT_KEYMAP=0;cvox.KeyMap.prototype.length=function(){return this.bindings_.length};cvox.KeyMap.prototype.keys=function(){return this.bindings_.map(function(a){return a.sequence})};
-cvox.KeyMap.prototype.bindings=function(){return this.bindings_};cvox.KeyMap.prototype.toJSON=function(){return JSON.stringify({bindings:this.bindings_})};cvox.KeyMap.prototype.hasKey=function(a){for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return!0}return!1};cvox.KeyMap.prototype.commandForKey=function(a){if(null!=a)for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return c.command}return null};
-cvox.KeyMap.fromDefaults=function(){return cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO.keymap_classic.file)};cvox.KeyMap.fromJSON=function(a){try{var b=JSON.parse(a).bindings,b=b.filter(function(a){return void 0===a.sequence.platformFilter||cvox.PlatformUtil.matchesPlatform(a.sequence.platformFilter)})}catch(c){return null}if("object"!=typeof b)return null;for(a=0;a<b.length;a++){if(void 0==b[a].command||void 0==b[a].sequence)return null;b[a].sequence=cvox.KeySequence.deserialize(b[a].sequence)}return new cvox.KeyMap(b)};
-cvox.KeyMap.fromLocalStorage=function(){return localStorage.keyBindings?cvox.KeyMap.fromJSON(localStorage.keyBindings):null};cvox.KeyMap.fromPath=function(a){return cvox.KeyMap.fromJSON(cvox.KeyMap.readJSON_(a))};cvox.KeyMap.fromCurrentKeyMap=function(){var a=localStorage.currentKeyMap;return a&&cvox.KeyMap.AVAILABLE_MAP_INFO[a]?cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO[a].file):cvox.KeyMap.fromDefaults()};
-cvox.KeyMap.readJSON_=function(a){var b=chrome.extension.getURL(a);if(!b)throw"Invalid path: "+a;a=new XMLHttpRequest;a.open("GET",b,!1);a.send();return a.responseText};cvox.KeyMap.prototype.buildCommandToKey_=function(){for(var a=0;a<this.bindings_.length;a++){var b=this.bindings_[a];void 0==this.commandToKey_[b.command]&&(this.commandToKey_[b.command]=b.sequence)}};cvox.CommandStore={};cvox.CommandStore.categories=function(){var a={},b;for(b in cvox.CommandStore.CMD_WHITELIST){var c=cvox.CommandStore.CMD_WHITELIST[b];c.category&&(a[c.category]=!0)}b=[];for(var d in a)b.push(d);return b};cvox.CommandStore.messageForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).msgId};cvox.CommandStore.categoryForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).category};
-cvox.CommandStore.commandsForCategory=function(a){var b=[],c;for(c in cvox.CommandStore.CMD_WHITELIST){var d=cvox.CommandStore.CMD_WHITELIST[c];a==d.category&&b.push(c)}return b};
-cvox.CommandStore.CMD_WHITELIST={toggleStickyMode:{announce:!1,msgId:"toggle_sticky_mode",disallowOOBE:!0,category:"modifier_keys"},toggleKeyPrefix:{announce:!1,skipInput:!0,msgId:"prefix_key",disallowOOBE:!0,category:"modifier_keys"},stopSpeech:{announce:!1,disallowContinuation:!0,doDefault:!0,msgId:"stop_speech_key",category:"controlling_speech"},toggleChromeVox:{announce:!1,platformFilter:cvox.PlatformFilter.WML,msgId:"toggle_chromevox_active",category:"controlling_speech"},decreaseTtsRate:{announce:!1,
-msgId:"decrease_tts_rate",category:"controlling_speech"},increaseTtsRate:{announce:!1,msgId:"increase_tts_rate",category:"controlling_speech"},decreaseTtsPitch:{announce:!1,msgId:"decrease_tts_pitch",category:"controlling_speech"},increaseTtsPitch:{announce:!1,msgId:"increase_tts_pitch",category:"controlling_speech"},decreaseTtsVolume:{announce:!1,msgId:"decrease_tts_volume",category:"controlling_speech"},increaseTtsVolume:{announce:!1,msgId:"increase_tts_volume",category:"controlling_speech"},cyclePunctuationEcho:{announce:!1,
-msgId:"cycle_punctuation_echo",category:"controlling_speech"},cycleTypingEcho:{announce:!1,msgId:"cycle_typing_echo",category:"controlling_speech"},toggleEarcons:{announce:!0,msgId:"toggle_earcons",category:"controlling_speech"},handleTab:{allowEvents:!0,msgId:"handle_tab_next",disallowContinuation:!0,category:"navigation"},handleTabPrev:{allowEvents:!0,msgId:"handle_tab_prev",disallowContinuation:!0,category:"navigation"},forward:{forward:!0,announce:!0,msgId:"forward",category:"navigation"},backward:{backward:!0,
-announce:!0,msgId:"backward",category:"navigation"},right:{forward:!0,announce:!0,msgId:"right",category:"navigation"},left:{backward:!0,announce:!0,msgId:"left",category:"navigation"},previousGranularity:{announce:!0,msgId:"previous_granularity",category:"navigation"},nextGranularity:{announce:!0,msgId:"next_granularity",category:"navigation"},previousCharacter:{backward:!0,announce:!0,msgId:"previous_character",skipInput:!0,category:"navigation"},nextCharacter:{forward:!0,announce:!0,msgId:"next_character",
-skipInput:!0,category:"navigation"},previousWord:{backward:!0,announce:!0,msgId:"previous_word",skipInput:!0,category:"navigation"},nextWord:{forward:!0,announce:!0,msgId:"next_word",skipInput:!0,category:"navigation"},previousLine:{backward:!0,announce:!0,msgId:"previous_line",category:"navigation"},nextLine:{forward:!0,announce:!0,msgId:"next_line",category:"navigation"},previousSentence:{backward:!0,announce:!0,msgId:"previous_sentence",skipInput:!0,category:"navigation"},nextSentence:{forward:!0,
-announce:!0,msgId:"next_sentence",skipInput:!0,category:"navigation"},previousObject:{backward:!0,announce:!0,msgId:"previous_object",skipInput:!0,category:"navigation"},nextObject:{forward:!0,announce:!0,msgId:"next_object",skipInput:!0,category:"navigation"},previousGroup:{backward:!0,announce:!0,msgId:"previous_group",skipInput:!0,category:"navigation"},nextGroup:{forward:!0,announce:!0,msgId:"next_group",skipInput:!0,category:"navigation"},jumpToTop:{forward:!0,announce:!0,msgId:"jump_to_top",
-category:"navigation"},jumpToBottom:{backward:!0,announce:!0,msgId:"jump_to_bottom",category:"navigation"},moveToStartOfLine:{forward:!0,announce:!0},moveToEndOfLine:{backward:!0,announce:!0},readFromHere:{forward:!0,announce:!1,msgId:"read_from_here",category:"navigation"},performDefaultAction:{disallowContinuation:!0,msgId:"perform_default_action",doDefault:!0,skipInput:!0,category:"navigation"},forceClickOnCurrentItem:{announce:!0,disallowContinuation:!0,allowEvents:!0,msgId:"force_click_on_current_item",
-category:"navigation"},forceDoubleClickOnCurrentItem:{announce:!0,allowEvents:!0,disallowContinuation:!0},readLinkURL:{announce:!1,msgId:"read_link_url",category:"information"},readCurrentTitle:{announce:!1,msgId:"read_current_title",category:"information"},readCurrentURL:{announce:!1,msgId:"read_current_url",category:"information"},fullyDescribe:{announce:!1,msgId:"fully_describe",category:"information"},speakTimeAndDate:{announce:!1,msgId:"speak_time_and_date",category:"information"},toggleSelection:{announce:!0,
-msgId:"toggle_selection",category:"information"},toggleSearchWidget:{announce:!1,disallowContinuation:!0,msgId:"toggle_search_widget",category:"information"},toggleKeyboardHelp:{announce:!1,disallowContinuation:!0,msgId:"show_power_key",category:"help_commands"},help:{announce:!1,msgId:"help",disallowOOBE:!0,disallowContinuation:!0,category:"help_commands"},contextMenu:{announce:!1,disallowContinuation:!0},showOptionsPage:{announce:!1,disallowContinuation:!0,msgId:"show_options_page",disallowOOBE:!0,
-category:"help_commands"},showKbExplorerPage:{announce:!1,disallowContinuation:!0,msgId:"show_kb_explorer_page",disallowOOBE:!0,category:"help_commands"},showFormsList:{announce:!1,disallowContinuation:!0,nodeList:"formField",msgId:"show_forms_list",category:"overview"},showHeadingsList:{announce:!1,nodeList:"heading",disallowContinuation:!0,msgId:"show_headings_list",category:"overview"},showLandmarksList:{announce:!1,nodeList:"landmark",disallowContinuation:!0,msgId:"show_landmarks_list",category:"overview"},
-showLinksList:{announce:!1,nodeList:"link",disallowContinuation:!0,msgId:"show_links_list",category:"overview"},showTablesList:{announce:!1,nodeList:"table",disallowContinuation:!0,msgId:"show_tables_list",category:"overview"},startHistoryRecording:{announce:!1},stopHistoryRecording:{announce:!1},enableConsoleTts:{announce:!1},autorunner:{announce:!1},nextArticle:{forward:!0,findNext:"article"},nextButton:{forward:!0,findNext:"button",msgId:"next_button",category:"jump_commands"},nextCheckbox:{forward:!0,
-findNext:"checkbox",msgId:"next_checkbox",category:"jump_commands"},nextComboBox:{forward:!0,findNext:"combobox",msgId:"next_combo_box",category:"jump_commands"},nextControl:{forward:!0,findNext:"control"},nextEditText:{forward:!0,findNext:"editText",msgId:"next_edit_text",category:"jump_commands"},nextFormField:{forward:!0,findNext:"formField",msgId:"next_form_field",category:"jump_commands"},nextGraphic:{forward:!0,findNext:"graphic",msgId:"next_graphic",category:"jump_commands"},nextHeading:{forward:!0,
-findNext:"heading",msgId:"next_heading",category:"jump_commands"},nextHeading1:{forward:!0,findNext:"heading1",msgId:"next_heading1",category:"jump_commands"},nextHeading2:{forward:!0,findNext:"heading2",msgId:"next_heading2",category:"jump_commands"},nextHeading3:{forward:!0,findNext:"heading3",msgId:"next_heading3",category:"jump_commands"},nextHeading4:{forward:!0,findNext:"heading4",msgId:"next_heading4",category:"jump_commands"},nextHeading5:{forward:!0,findNext:"heading5",msgId:"next_heading5",
-category:"jump_commands"},nextHeading6:{forward:!0,findNext:"heading6",msgId:"next_heading6",category:"jump_commands"},nextLandmark:{forward:!0,findNext:"landmark",msgId:"next_landmark",category:"jump_commands"},nextLink:{forward:!0,findNext:"link",msgId:"next_link",category:"jump_commands"},nextList:{forward:!0,findNext:"list",msgId:"next_list",category:"jump_commands"},nextListItem:{forward:!0,findNext:"listItem",msgId:"next_list_item",category:"jump_commands"},nextMath:{forward:!0,findNext:"math",
-msgId:"next_math",category:"jump_commands"},nextMedia:{forward:!0,findNext:"media",msgId:"next_media",category:"jump_commands"},nextRadio:{forward:!0,findNext:"radio",msgId:"next_radio",category:"jump_commands"},nextSection:{forward:!0,findNext:"section"},nextSlider:{forward:!0,findNext:"slider"},nextTable:{forward:!0,findNext:"table",msgId:"next_table",category:"jump_commands"},nextVisitedLink:{forward:!0,findNext:"visitedLink",msgId:"next_visited_link",category:"jump_commands"},previousArticle:{backward:!0,
-findNext:"article"},previousButton:{backward:!0,findNext:"button",msgId:"previous_button",category:"jump_commands"},previousCheckbox:{backward:!0,findNext:"checkbox",msgId:"previous_checkbox",category:"jump_commands"},previousComboBox:{backward:!0,findNext:"combobox",msgId:"previous_combo_box",category:"jump_commands"},previousControl:{backward:!0,findNext:"control"},previousEditText:{backward:!0,findNext:"editText",msgId:"previous_edit_text",category:"jump_commands"},previousFormField:{backward:!0,
-findNext:"formField",msgId:"previous_form_field",category:"jump_commands"},previousGraphic:{backward:!0,findNext:"graphic",msgId:"previous_graphic",category:"jump_commands"},previousHeading:{backward:!0,findNext:"heading",msgId:"previous_heading",category:"jump_commands"},previousHeading1:{backward:!0,findNext:"heading1",msgId:"previous_heading1",category:"jump_commands"},previousHeading2:{backward:!0,findNext:"heading2",msgId:"previous_heading2",category:"jump_commands"},previousHeading3:{backward:!0,
-findNext:"heading3",msgId:"previous_heading3",category:"jump_commands"},previousHeading4:{backward:!0,findNext:"heading4",msgId:"previous_heading4",category:"jump_commands"},previousHeading5:{backward:!0,findNext:"heading5",msgId:"previous_heading5",category:"jump_commands"},previousHeading6:{backward:!0,findNext:"heading6",msgId:"previous_heading6",category:"jump_commands"},previousLandmark:{backward:!0,findNext:"landmark",msgId:"previous_landmark",category:"jump_commands"},previousLink:{backward:!0,
-findNext:"link",msgId:"previous_link",category:"jump_commands"},previousList:{backward:!0,findNext:"list",msgId:"previous_list",category:"jump_commands"},previousListItem:{backward:!0,findNext:"listItem",msgId:"previous_list_item",category:"jump_commands"},previousMath:{backward:!0,findNext:"math",msgId:"previous_math",category:"jump_commands"},previousMedia:{backward:!0,findNext:"media",msgId:"previous_media",category:"jump_commands"},previousRadio:{backward:!0,findNext:"radio",msgId:"previous_radio",
-category:"jump_commands"},previousSection:{backward:!0,findNext:"section"},previousSlider:{backward:!0,findNext:"slider"},previousTable:{backward:!0,findNext:"table",msgId:"previous_table",category:"jump_commands"},previousVisitedLink:{backward:!0,findNext:"visitedLink",msgId:"previous_visited_link",category:"jump_commands"},announceHeaders:{announce:!1,msgId:"announce_headers",category:"tables"},speakTableLocation:{announce:!1,msgId:"speak_table_location",category:"tables"},goToFirstCell:{announce:!0,
-msgId:"skip_to_beginning",category:"tables"},goToLastCell:{announce:!0,msgId:"skip_to_end",category:"tables"},goToRowFirstCell:{announce:!0,msgId:"skip_to_row_beginning",category:"tables"},goToRowLastCell:{announce:!0,msgId:"skip_to_row_end",category:"tables"},goToColFirstCell:{announce:!0,msgId:"skip_to_col_beginning",category:"tables"},goToColLastCell:{announce:!0,msgId:"skip_to_col_end",category:"tables"},previousRow:{backward:!0,announce:!0,skipInput:!0},previousCol:{backward:!0,announce:!0,skipInput:!0},
-nextRow:{forward:!0,announce:!0,skipInput:!0},nextCol:{forward:!0,announce:!0,skipInput:!0},enterShifter:{announce:!0,msgId:"enter_content",category:"navigation"},exitShifter:{announce:!0,msgId:"exit_content",category:"navigation"},exitShifterContent:{announce:!0},openLongDesc:{announce:!1,msgId:"open_long_desc",category:"information"},pauseAllMedia:{announce:!1,msgId:"pause_all_media",category:"information"},toggleSemantics:{announce:!1,msgId:"toggle_semantics",category:"information"},routing:{announce:!0,
-msgId:"braille_routing",category:"braille"},pan_left:{backward:!0,announce:!0,msgId:"braille_pan_left",category:"braille"},pan_right:{forward:!0,announce:!0,msgId:"braille_pan_right",category:"braille"},line_up:{backward:!0,announce:!0,msgId:"braille_line_up",category:"braille"},line_down:{forward:!0,announce:!0,msgId:"braille_line_down",category:"braille"},top:{forward:!0,announce:!0,msgId:"braille_top",category:"braille"},bottom:{backward:!0,announce:!0,msgId:"braille_bottom",category:"braille"},
-debug:{announce:!1},nop:{announce:!1}};
-cvox.CommandStore.NODE_INFO_MAP={checkbox:{predicate:"checkboxPredicate",forwardError:"no_next_checkbox",backwardError:"no_previous_checkbox",typeMsg:"aria_role_checkbox"},radio:{predicate:"radioPredicate",forwardError:"no_next_radio_button",backwardError:"no_previous_radio_button",typeMsg:"aria_role_radio"},slider:{predicate:"sliderPredicate",forwardError:"no_next_slider",backwardError:"no_previous_slider",typeMsg:"aria_role_slider"},graphic:{predicate:"graphicPredicate",forwardError:"no_next_graphic",
-backwardError:"no_previous_graphic",typeMsg:"UNUSED"},article:{predicate:"articlePredicate",forwardError:"no_next_ARTICLE",backwardError:"no_previous_ARTICLE",typeMsg:"TAG_ARTICLE"},button:{predicate:"buttonPredicate",forwardError:"no_next_button",backwardError:"no_previous_button",typeMsg:"aria_role_button"},combobox:{predicate:"comboBoxPredicate",forwardError:"no_next_combo_box",backwardError:"no_previous_combo_box",typeMsg:"aria_role_combobox"},editText:{predicate:"editTextPredicate",forwardError:"no_next_edit_text",
-backwardError:"no_previous_edit_text",typeMsg:"input_type_text"},heading:{predicate:"headingPredicate",forwardError:"no_next_heading",backwardError:"no_previous_heading",typeMsg:"aria_role_heading"},heading1:{predicate:"heading1Predicate",forwardError:"no_next_heading_1",backwardError:"no_previous_heading_1"},heading2:{predicate:"heading2Predicate",forwardError:"no_next_heading_2",backwardError:"no_previous_heading_2"},heading3:{predicate:"heading3Predicate",forwardError:"no_next_heading_3",backwardError:"no_previous_heading_3"},
-heading4:{predicate:"heading4Predicate",forwardError:"no_next_heading_4",backwardError:"no_previous_heading_4"},heading5:{predicate:"heading5Predicate",forwardError:"no_next_heading_5",backwardError:"no_previous_heading_5"},heading6:{predicate:"heading6Predicate",forwardError:"no_next_heading_6",backwardError:"no_previous_heading_6"},link:{predicate:"linkPredicate",forwardError:"no_next_link",backwardError:"no_previous_link",typeMsg:"aria_role_link"},table:{predicate:"tablePredicate",forwardError:"no_next_table",
-backwardError:"no_previous_table",typeMsg:"table_strategy"},visitedLink:{predicate:"visitedLinkPredicate",forwardError:"no_next_visited_link",backwardError:"no_previous_visited_link",typeMsg:"tag_link"},list:{predicate:"listPredicate",forwardError:"no_next_list",backwardError:"no_previous_list",typeMsg:"aria_role_list"},listItem:{predicate:"listItemPredicate",forwardError:"no_next_list_item",backwardError:"no_previous_list_item",typeMsg:"aria_role_listitem"},formField:{predicate:"formFieldPredicate",
-forwardError:"no_next_form_field",backwardError:"no_previous_form_field",typeMsg:"aria_role_form"},landmark:{predicate:"landmarkPredicate",forwardError:"no_next_landmark",backwardError:"no_previous_landmark",typeMsg:"role_landmark"},math:{predicate:"mathPredicate",forwardError:"no_next_math",backwardError:"no_previous_math",typeMsg:"math_expr"},media:{predicate:"mediaPredicate",forwardError:"no_next_media_widget",backwardError:"no_previous_media_widget"},section:{predicate:"sectionPredicate",forwardError:"no_next_section",
-backwardError:"no_previous_section"},control:{predicate:"controlPredicate",forwardError:"no_next_control",backwardError:"no_previous_control"}};cvox.Widget=function(){this.active=!1;this.initialNode=null;cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||(cvox.Widget.ref_=this)};cvox.Widget.prototype.isActive=function(){return this.active};
-cvox.Widget.prototype.show=function(){this.isActive()&&this.hide(!0);this.onKeyDown=goog.bind(this.onKeyDown,this);this.onKeyPress=goog.bind(this.onKeyPress,this);window.addEventListener("keydown",this.onKeyDown,!0);window.addEventListener("keypress",this.onKeyPress,!0);this.initialNode=cvox.ChromeVox.navigationManager.getCurrentNode();this.isStickyOn=cvox.ChromeVox.isStickyOn;this.getNameMsg()&&this.getHelpMsg()&&cvox.$m(this.getNameMsg()).andPause().andMessage(this.getHelpMsg()).speakFlush();cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_OPEN);
-this.active=!0};cvox.Widget.prototype.hide=function(a){window.removeEventListener("keypress",this.onKeyPress,!0);window.removeEventListener("keydown",this.onKeyDown,!0);cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_CLOSE);a||(this.initialNode=1==this.initialNode.nodeType?this.initialNode:this.initialNode.parentNode,cvox.ApiImplementation.syncToNode(this.initialNode,!0,cvox.AbstractTts.QUEUE_MODE_QUEUE));this.active=!1};
-cvox.Widget.prototype.toggle=function(){this.isActive()?this.hide():this.show()};cvox.Widget.prototype.onKeyDown=function(a){if(27==a.keyCode)return this.hide(),a.preventDefault(),!0;if(9==a.keyCode)return this.hide(),!0;17==a.keyCode&&cvox.ChromeVox.tts.stop();a.stopPropagation();return!0};cvox.Widget.prototype.onKeyPress=function(){return!1};cvox.Widget.isActive=function(){return cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||!1};cvox.NavDescription=function(a){this.context=a.context?a.context:"";this.text=a.text?a.text:"";this.userValue=a.userValue?a.userValue:"";this.annotation=a.annotation?a.annotation:"";this.earcons=a.earcons?a.earcons:[];this.personality=a.personality};cvox.NavDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.earcons.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};
-cvox.NavDescription.prototype.toString=function(){return'NavDescription(context="'+this.context+'" text="'+this.text+'" userValue="'+this.userValue+'" annotation="'+this.annotation+'")'};cvox.NavDescription.prototype.pushEarcon=function(a){this.earcons.push(a)};
-cvox.NavDescription.prototype.speak=function(a,b,c){function d(){var a={},b=cvox.AbstractTts.PERSONALITY_ANNOTATION,c;for(c in b)a[c]=b[c];return a}var e=[];this.context&&(e.push([this.context,a,d()]),a=1);e.push([this.text,a,this.personality?this.personality:{}]);a=1;this.userValue&&e.push([this.userValue,a,{}]);this.annotation&&e.push([this.annotation,a,d()]);a=e.length;for(var f=0;f<a;f++)0==f&&b&&(e[f][2].startCallback=b),f==a-1&&c&&(e[f][2].endCallback=c),cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts,
-e[f])};cvox.NavDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};cvox.NavMathDescription=function(a){cvox.NavDescription.call(this,a);var b=this.personality?this.personality:{},c={};c.domain=a.domain?a.domain:"";c.style=a.style?a.style:"";b.math=c;this.personality=b};goog.inherits(cvox.NavMathDescription,cvox.NavDescription);cvox.SemanticUtil=function(){};cvox.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};cvox.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[],c=function(a){for(var c in a)b.push(a[c])};a.forEach(c);return b};
-cvox.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};cvox.SemanticUtil.numberToUnicode=function(a){if(65536<=a){var b=(a-65536)/1024+55296;a=(a-65536)%1024+56320;return String.fromCharCode(b,a)}return String.fromCharCode(a)};cvox.SemanticUtil.tagName=function(a){return a.tagName.toUpperCase()};cvox.SemanticUtil.IGNORETAGS="MERROR MPHANTOM MSPACE MACTION MALIGNGROUP MALIGNMARK MACTION".split(" ");
-cvox.SemanticUtil.EMPTYTAGS=["MATH","MROW","MPADDED","MSTYLE"];cvox.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=cvox.SemanticUtil.tagName(d);-1==cvox.SemanticUtil.IGNORETAGS.indexOf(e)&&(-1!=cvox.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d))}return b};cvox.SemanticAttr=function(){this.generalPunctuations="!\"#%&'*,:;?@\\\u00a1\u00a7\u00b6\u00b7\u00bf\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2027\u2030\u2031\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\ufe10\ufe13\ufe14\ufe15\ufe16\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0f\uff1a\uff1b\uff1f\uff20\uff3c".split("");
-this.invisibleComma_=cvox.SemanticUtil.numberToUnicode(8291);this.generalPunctuations.push(this.invisibleComma_);this.ellipses="\u2026\u22ee\u22ef\u22f0\u22f1\ufe19".split("");this.fullStops=[".","\ufe52","\uff0e"];this.dashes="\u2012\u2013\u2014\u2015\u301c\ufe31\ufe32\ufe58".split("");this.primes="\u2032\u2033\u2034\u2035\u2036\u2037\u2057".split("");this.openClosePairs={"(":")","[":"]","{":"}","\u2045":"\u2046","\u2329":"\u232a","\u2768":"\u2769","\u276a":"\u276b","\u276c":"\u276d","\u276e":"\u276f",
-"\u2770":"\u2771","\u2772":"\u2773","\u2774":"\u2775","\u27c5":"\u27c6","\u27e6":"\u27e7","\u27e8":"\u27e9","\u27ea":"\u27eb","\u27ec":"\u27ed","\u27ee":"\u27ef","\u2983":"\u2984","\u2985":"\u2986","\u2987":"\u2988","\u2989":"\u298a","\u298b":"\u298c","\u298d":"\u298e","\u298f":"\u2990","\u2991":"\u2992","\u2993":"\u2994","\u2995":"\u2996","\u2997":"\u2998","\u29d8":"\u29d9","\u29da":"\u29db","\u29fc":"\u29fd","\u2e22":"\u2e23","\u2e24":"\u2e25","\u2e26":"\u2e27","\u2e28":"\u2e29","\u3008":"\u3009",
-"\u300a":"\u300b","\u300c":"\u300d","\u300e":"\u300f","\u3010":"\u3011","\u3014":"\u3015","\u3016":"\u3017","\u3018":"\u3019","\u301a":"\u301b","\u301d":"\u301e","\ufd3e":"\ufd3f","\ufe17":"\ufe18","\ufe59":"\ufe5a","\ufe5b":"\ufe5c","\ufe5d":"\ufe5e","\uff08":"\uff09","\uff3b":"\uff3d","\uff5b":"\uff5d","\uff5f":"\uff60","\uff62":"\uff63","\u2308":"\u2309","\u230a":"\u230b","\u230c":"\u230d","\u230e":"\u230f","\u231c":"\u231d","\u231e":"\u231f","\u239b":"\u239e","\u239c":"\u239f","\u239d":"\u23a0",
-"\u23a1":"\u23a4","\u23a2":"\u23a5","\u23a3":"\u23a6","\u23a7":"\u23ab","\u23a8":"\u23ac","\u23a9":"\u23ad","\u23b0":"\u23b1","\u23b8":"\u23b9"};this.topBottomPairs={"\u23b4":"\u23b5","\u23dc":"\u23dd","\u23de":"\u23df","\u23e0":"\u23e1","\ufe35":"\ufe36","\ufe37":"\ufe38","\ufe39":"\ufe3a","\ufe3b":"\ufe3c","\ufe3d":"\ufe3e","\ufe3f":"\ufe40","\ufe41":"\ufe42","\ufe43":"\ufe44","\ufe47":"\ufe48"};this.leftFences=cvox.SemanticUtil.objectsToKeys(this.openClosePairs);this.rightFences=cvox.SemanticUtil.objectsToValues(this.openClosePairs);
-this.rightFences.push("\u301f");this.topFences=cvox.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=cvox.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences="|\u00a6\u2016\u2758\u2980\u2af4\uffe4\uff5c".split("");this.capitalLatin="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");this.smallLatin="abcdefghijklmnopqrstuvwxyz\u0131\u0237".split("");this.capitalLatinFullWidth="\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a".split("");
-this.smallLatinFullWidth="\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a".split("");this.capitalLatinBold="\ud835\udc00 \ud835\udc01 \ud835\udc02 \ud835\udc03 \ud835\udc04 \ud835\udc05 \ud835\udc06 \ud835\udc07 \ud835\udc08 \ud835\udc09 \ud835\udc0a \ud835\udc0b \ud835\udc0c \ud835\udc0d \ud835\udc0e \ud835\udc0f \ud835\udc10 \ud835\udc11 \ud835\udc12 \ud835\udc13 \ud835\udc14 \ud835\udc15 \ud835\udc16 \ud835\udc17 \ud835\udc18 \ud835\udc19".split(" ");
-this.smallLatinBold="\ud835\udc1a \ud835\udc1b \ud835\udc1c \ud835\udc1d \ud835\udc1e \ud835\udc1f \ud835\udc20 \ud835\udc21 \ud835\udc22 \ud835\udc23 \ud835\udc24 \ud835\udc25 \ud835\udc26 \ud835\udc27 \ud835\udc28 \ud835\udc29 \ud835\udc2a \ud835\udc2b \ud835\udc2c \ud835\udc2d \ud835\udc2e \ud835\udc2f \ud835\udc30 \ud835\udc31 \ud835\udc32 \ud835\udc33".split(" ");this.capitalLatinItalic="\ud835\udc34 \ud835\udc35 \ud835\udc36 \ud835\udc37 \ud835\udc38 \ud835\udc39 \ud835\udc3a \ud835\udc3b \ud835\udc3c \ud835\udc3d \ud835\udc3e \ud835\udc3f \ud835\udc40 \ud835\udc41 \ud835\udc42 \ud835\udc43 \ud835\udc44 \ud835\udc45 \ud835\udc46 \ud835\udc47 \ud835\udc48 \ud835\udc49 \ud835\udc4a \ud835\udc4b \ud835\udc4c \ud835\udc4d".split(" ");
-this.smallLatinItalic="\ud835\udc4e \ud835\udc4f \ud835\udc50 \ud835\udc51 \ud835\udc52 \ud835\udc53 \ud835\udc54 \u210e \ud835\udc56 \ud835\udc57 \ud835\udc58 \ud835\udc59 \ud835\udc5a \ud835\udc5b \ud835\udc5c \ud835\udc5d \ud835\udc5e \ud835\udc5f \ud835\udc60 \ud835\udc61 \ud835\udc62 \ud835\udc63 \ud835\udc64 \ud835\udc65 \ud835\udc66 \ud835\udc67 \ud835\udea4 \ud835\udea5".split(" ");this.capitalLatinScript="\ud835\udc9c \u212c \ud835\udc9e \ud835\udc9f \u2130 \u2131 \ud835\udca2 \u210b \u2110 \ud835\udca5 \ud835\udca6 \u2112 \u2133 \ud835\udca9 \ud835\udcaa \ud835\udcab \ud835\udcac \u211b \ud835\udcae \ud835\udcaf \ud835\udcb0 \ud835\udcb1 \ud835\udcb2 \ud835\udcb3 \ud835\udcb4 \ud835\udcb5 \u2118".split(" ");
-this.smallLatinScript="\ud835\udcb6 \ud835\udcb7 \ud835\udcb8 \ud835\udcb9 \u212f \ud835\udcbb \u210a \ud835\udcbd \ud835\udcbe \ud835\udcbf \ud835\udcc0 \ud835\udcc1 \ud835\udcc2 \ud835\udcc3 \u2134 \ud835\udcc5 \ud835\udcc6 \ud835\udcc7 \ud835\udcc8 \ud835\udcc9 \ud835\udcca \ud835\udccb \ud835\udccc \ud835\udccd \ud835\udcce \ud835\udccf \u2113".split(" ");this.capitalLatinBoldScript="\ud835\udcd0 \ud835\udcd1 \ud835\udcd2 \ud835\udcd3 \ud835\udcd4 \ud835\udcd5 \ud835\udcd6 \ud835\udcd7 \ud835\udcd8 \ud835\udcd9 \ud835\udcda \ud835\udcdb \ud835\udcdc \ud835\udcdd \ud835\udcde \ud835\udcdf \ud835\udce0 \ud835\udce1 \ud835\udce2 \ud835\udce3 \ud835\udce4 \ud835\udce5 \ud835\udce6 \ud835\udce7 \ud835\udce8 \ud835\udce9".split(" ");
-this.smallLatinBoldScript="\ud835\udcea \ud835\udceb \ud835\udcec \ud835\udced \ud835\udcee \ud835\udcef \ud835\udcf0 \ud835\udcf1 \ud835\udcf2 \ud835\udcf3 \ud835\udcf4 \ud835\udcf5 \ud835\udcf6 \ud835\udcf7 \ud835\udcf8 \ud835\udcf9 \ud835\udcfa \ud835\udcfb \ud835\udcfc \ud835\udcfd \ud835\udcfe \ud835\udcff \ud835\udd00 \ud835\udd01 \ud835\udd02 \ud835\udd03".split(" ");this.capitalLatinFraktur="\ud835\udd04 \ud835\udd05 \u212d \ud835\udd07 \ud835\udd08 \ud835\udd09 \ud835\udd0a \u210c \u2111 \ud835\udd0d \ud835\udd0e \ud835\udd0f \ud835\udd10 \ud835\udd11 \ud835\udd12 \ud835\udd13 \ud835\udd14 \u211c \ud835\udd16 \ud835\udd17 \ud835\udd18 \ud835\udd19 \ud835\udd1a \ud835\udd1b \ud835\udd1c \u2128".split(" ");
-this.smallLatinFraktur="\ud835\udd1e \ud835\udd1f \ud835\udd20 \ud835\udd21 \ud835\udd22 \ud835\udd23 \ud835\udd24 \ud835\udd25 \ud835\udd26 \ud835\udd27 \ud835\udd28 \ud835\udd29 \ud835\udd2a \ud835\udd2b \ud835\udd2c \ud835\udd2d \ud835\udd2e \ud835\udd2f \ud835\udd30 \ud835\udd31 \ud835\udd32 \ud835\udd33 \ud835\udd34 \ud835\udd35 \ud835\udd36 \ud835\udd37".split(" ");this.capitalLatinDoubleStruck="\ud835\udd38 \ud835\udd39 \u2102 \ud835\udd3b \ud835\udd3c \ud835\udd3d \ud835\udd3e \u210d \ud835\udd40 \ud835\udd41 \ud835\udd42 \ud835\udd43 \ud835\udd44 \u2115 \ud835\udd46 \u2119 \u211a \u211d \ud835\udd4a \ud835\udd4b \ud835\udd4c \ud835\udd4d \ud835\udd4e \ud835\udd4f \ud835\udd50 \u2124".split(" ");
-this.smallLatinDoubleStruck="\ud835\udd52 \ud835\udd53 \ud835\udd54 \ud835\udd55 \ud835\udd56 \ud835\udd57 \ud835\udd58 \ud835\udd59 \ud835\udd5a \ud835\udd5b \ud835\udd5c \ud835\udd5d \ud835\udd5e \ud835\udd5f \ud835\udd60 \ud835\udd61 \ud835\udd62 \ud835\udd63 \ud835\udd64 \ud835\udd65 \ud835\udd66 \ud835\udd67 \ud835\udd68 \ud835\udd69 \ud835\udd6a \ud835\udd6b".split(" ");this.capitalLatinBoldFraktur="\ud835\udd6c \ud835\udd6d \ud835\udd6e \ud835\udd6f \ud835\udd70 \ud835\udd71 \ud835\udd72 \ud835\udd73 \ud835\udd74 \ud835\udd75 \ud835\udd76 \ud835\udd77 \ud835\udd78 \ud835\udd79 \ud835\udd7a \ud835\udd7b \ud835\udd7c \ud835\udd7d \ud835\udd7e \ud835\udd7f \ud835\udd80 \ud835\udd81 \ud835\udd82 \ud835\udd83 \ud835\udd84 \ud835\udd85".split(" ");
-this.smallLatinBoldFraktur="\ud835\udd86 \ud835\udd87 \ud835\udd88 \ud835\udd89 \ud835\udd8a \ud835\udd8b \ud835\udd8c \ud835\udd8d \ud835\udd8e \ud835\udd8f \ud835\udd90 \ud835\udd91 \ud835\udd92 \ud835\udd93 \ud835\udd94 \ud835\udd95 \ud835\udd96 \ud835\udd97 \ud835\udd98 \ud835\udd99 \ud835\udd9a \ud835\udd9b \ud835\udd9c \ud835\udd9d \ud835\udd9e \ud835\udd9f".split(" ");this.capitalLatinSansSerif="\ud835\udda0 \ud835\udda1 \ud835\udda2 \ud835\udda3 \ud835\udda4 \ud835\udda5 \ud835\udda6 \ud835\udda7 \ud835\udda8 \ud835\udda9 \ud835\uddaa \ud835\uddab \ud835\uddac \ud835\uddad \ud835\uddae \ud835\uddaf \ud835\uddb0 \ud835\uddb1 \ud835\uddb2 \ud835\uddb3 \ud835\uddb4 \ud835\uddb5 \ud835\uddb6 \ud835\uddb7 \ud835\uddb8 \ud835\uddb9".split(" ");
-this.smallLatinSansSerif="\ud835\uddba \ud835\uddbb \ud835\uddbc \ud835\uddbd \ud835\uddbe \ud835\uddbf \ud835\uddc0 \ud835\uddc1 \ud835\uddc2 \ud835\uddc3 \ud835\uddc4 \ud835\uddc5 \ud835\uddc6 \ud835\uddc7 \ud835\uddc8 \ud835\uddc9 \ud835\uddca \ud835\uddcb \ud835\uddcc \ud835\uddcd \ud835\uddce \ud835\uddcf \ud835\uddd0 \ud835\uddd1 \ud835\uddd2 \ud835\uddd3".split(" ");this.capitalLatinSansSerifBold="\ud835\uddd4 \ud835\uddd5 \ud835\uddd6 \ud835\uddd7 \ud835\uddd8 \ud835\uddd9 \ud835\uddda \ud835\udddb \ud835\udddc \ud835\udddd \ud835\uddde \ud835\udddf \ud835\udde0 \ud835\udde1 \ud835\udde2 \ud835\udde3 \ud835\udde4 \ud835\udde5 \ud835\udde6 \ud835\udde7 \ud835\udde8 \ud835\udde9 \ud835\uddea \ud835\uddeb \ud835\uddec \ud835\udded".split(" ");
-this.smallLatinSansSerifBold="\ud835\uddee \ud835\uddef \ud835\uddf0 \ud835\uddf1 \ud835\uddf2 \ud835\uddf3 \ud835\uddf4 \ud835\uddf5 \ud835\uddf6 \ud835\uddf7 \ud835\uddf8 \ud835\uddf9 \ud835\uddfa \ud835\uddfb \ud835\uddfc \ud835\uddfd \ud835\uddfe \ud835\uddff \ud835\ude00 \ud835\ude01 \ud835\ude02 \ud835\ude03 \ud835\ude04 \ud835\ude05 \ud835\ude06 \ud835\ude07".split(" ");this.capitalLatinSansSerifItalic="\ud835\ude08 \ud835\ude09 \ud835\ude0a \ud835\ude0b \ud835\ude0c \ud835\ude0d \ud835\ude0e \ud835\ude0f \ud835\ude10 \ud835\ude11 \ud835\ude12 \ud835\ude13 \ud835\ude14 \ud835\ude15 \ud835\ude16 \ud835\ude17 \ud835\ude18 \ud835\ude19 \ud835\ude1a \ud835\ude1b \ud835\ude1c \ud835\ude1d \ud835\ude1e \ud835\ude1f \ud835\ude20 \ud835\ude21".split(" ");
-this.smallLatinSansSerifItalic="\ud835\ude22 \ud835\ude23 \ud835\ude24 \ud835\ude25 \ud835\ude26 \ud835\ude27 \ud835\ude28 \ud835\ude29 \ud835\ude2a \ud835\ude2b \ud835\ude2c \ud835\ude2d \ud835\ude2e \ud835\ude2f \ud835\ude30 \ud835\ude31 \ud835\ude32 \ud835\ude33 \ud835\ude34 \ud835\ude35 \ud835\ude36 \ud835\ude37 \ud835\ude38 \ud835\ude39 \ud835\ude3a \ud835\ude3b".split(" ");this.capitalLatinMonospace="\ud835\ude70 \ud835\ude71 \ud835\ude72 \ud835\ude73 \ud835\ude74 \ud835\ude75 \ud835\ude76 \ud835\ude77 \ud835\ude78 \ud835\ude79 \ud835\ude7a \ud835\ude7b \ud835\ude7c \ud835\ude7d \ud835\ude7e \ud835\ude7f \ud835\ude80 \ud835\ude81 \ud835\ude82 \ud835\ude83 \ud835\ude84 \ud835\ude85 \ud835\ude86 \ud835\ude87 \ud835\ude88 \ud835\ude89".split(" ");
-this.smallLatinMonospace="\ud835\ude8a \ud835\ude8b \ud835\ude8c \ud835\ude8d \ud835\ude8e \ud835\ude8f \ud835\ude90 \ud835\ude91 \ud835\ude92 \ud835\ude93 \ud835\ude94 \ud835\ude95 \ud835\ude96 \ud835\ude97 \ud835\ude98 \ud835\ude99 \ud835\ude9a \ud835\ude9b \ud835\ude9c \ud835\ude9d \ud835\ude9e \ud835\ude9f \ud835\udea0 \ud835\udea1 \ud835\udea2 \ud835\udea3".split(" ");this.latinDoubleStruckItalic=["\u2145","\u2146","\u2147","\u2148","\u2149"];this.capitalGreek="\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9".split("");
-this.smallGreek="\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9".split("");this.capitalGreekBold="\ud835\udea8 \ud835\udea9 \ud835\udeaa \ud835\udeab \ud835\udeac \ud835\udead \ud835\udeae \ud835\udeaf \ud835\udeb0 \ud835\udeb1 \ud835\udeb2 \ud835\udeb3 \ud835\udeb4 \ud835\udeb5 \ud835\udeb6 \ud835\udeb7 \ud835\udeb8 \ud835\udeba \ud835\udebb \ud835\udebc \ud835\udebd \ud835\udebe \ud835\udebf \ud835\udec0".split(" ");
-this.smallGreekBold="\ud835\udec2 \ud835\udec3 \ud835\udec4 \ud835\udec5 \ud835\udec6 \ud835\udec7 \ud835\udec8 \ud835\udec9 \ud835\udeca \ud835\udecb \ud835\udecc \ud835\udecd \ud835\udece \ud835\udecf \ud835\uded0 \ud835\uded1 \ud835\uded2 \ud835\uded3 \ud835\uded4 \ud835\uded5 \ud835\uded6 \ud835\uded7 \ud835\uded8 \ud835\uded9 \ud835\udeda".split(" ");this.capitalGreekItalic="\ud835\udee2 \ud835\udee3 \ud835\udee4 \ud835\udee5 \ud835\udee6 \ud835\udee7 \ud835\udee8 \ud835\udee9 \ud835\udeea \ud835\udeeb \ud835\udeec \ud835\udeed \ud835\udeee \ud835\udeef \ud835\udef0 \ud835\udef1 \ud835\udef2 \ud835\udef4 \ud835\udef5 \ud835\udef6 \ud835\udef7 \ud835\udef8 \ud835\udef9 \ud835\udefa".split(" ");
-this.smallGreekItalic="\ud835\udefc \ud835\udefd \ud835\udefe \ud835\udeff \ud835\udf00 \ud835\udf01 \ud835\udf02 \ud835\udf03 \ud835\udf04 \ud835\udf05 \ud835\udf06 \ud835\udf07 \ud835\udf08 \ud835\udf09 \ud835\udf0a \ud835\udf0b \ud835\udf0c \ud835\udf0d \ud835\udf0e \ud835\udf0f \ud835\udf10 \ud835\udf11 \ud835\udf12 \ud835\udf13 \ud835\udf14".split(" ");this.capitalGreekSansSerifBold="\ud835\udf56 \ud835\udf57 \ud835\udf58 \ud835\udf59 \ud835\udf5a \ud835\udf5b \ud835\udf5c \ud835\udf5d \ud835\udf5e \ud835\udf5f \ud835\udf60 \ud835\udf61 \ud835\udf62 \ud835\udf63 \ud835\udf64 \ud835\udf65 \ud835\udf66 \ud835\udf68 \ud835\udf69 \ud835\udf6a \ud835\udf6b \ud835\udf6c \ud835\udf6d \ud835\udf6e".split(" ");
-this.smallGreekSansSerifBold="\ud835\udf70 \ud835\udf71 \ud835\udf72 \ud835\udf73 \ud835\udf74 \ud835\udf75 \ud835\udf76 \ud835\udf77 \ud835\udf78 \ud835\udf79 \ud835\udf7a \ud835\udf7b \ud835\udf7c \ud835\udf7d \ud835\udf7e \ud835\udf7f \ud835\udf80 \ud835\udf81 \ud835\udf82 \ud835\udf83 \ud835\udf84 \ud835\udf85 \ud835\udf86 \ud835\udf87 \ud835\udf88".split(" ");this.greekDoubleStruck=["\u213c","\u213d","\u213e","\u213f"];this.hebrewLetters=["\u2135","\u2136","\u2137","\u2138"];this.additions="+\u00b1\u2213\u2214\u2227\u2228\u2229\u222a\u228c\u2293\u2294\u229d\u229e\u22a4\u22a5\u22ba\u22bb\u22bc\u22c4\u22ce\u22cf\u22d2\u22d3\u25b3\u25b7\u25bd\u25c1\u2a5e\u2295".split("");
-this.invisiblePlus_=cvox.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications="\u2020\u2021\u2210\u2217\u2218\u2219\u2240\u229a\u229b\u22a0\u22a1\u22c5\u22c6\u22c7\u22c9\u22ca\u22cb\u22cc\u25cb".split("");this.invisibleTimes_=cvox.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions="-\u2052\u207b\u208b\u2212\u2216\u2238\u2242\u2296\u229f\u2796\u2a29\u2a2a\u2a2b\u2a2c\u2a3a\u2a41\u2a6c\ufe63\uff0d\u2010\u2011".split("");
-this.divisions="/\u00f7\u2044\u2215\u2298\u27cc\u29bc\u2a38".split("");this.functionApplication_=cvox.SemanticUtil.numberToUnicode(8289);this.equalities="=~\u207c\u208c\u223c\u223d\u2243\u2245\u2248\u224a\u224b\u224c\u224d\u224e\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2263\u29e4\u2a66\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u22d5\u2a6d\u2a6a\u2a6b\u2a6c\ufe66\uff1d".split("");this.inequalities="<>\u2241\u2242\u2244\u2246\u2247\u2249\u224f\u2250\u2260\u2262\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2af7\u2af8\u2af9\u2afa\u29c0\u29c1\ufe64\ufe65\uff1c\uff1e".split("");
-this.relations=[];this.arrows="\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219a\u219b\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21ae\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cd\u21ce\u21cf\u21d0\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2301\u2303\u2304\u2324\u238b\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u29b3\u29b4\u29bd\u29ea\u29ec\u29ed\u2a17\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\uffe9\uffea\uffeb\uffec\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21cb\u21cc\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u297c\u297d\u297e\u297f".split("");
-this.sumOps="\u2140\u220f\u2210\u2211\u22c0\u22c1\u22c2\u22c3\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2afc\u2aff".split("");this.intOps="\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c".split("");this.prefixOps=["\u2200","\u2203"];this.digitsNormal="0123456789".split("");this.digitsFullWidth="\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19".split("");
-this.digitsBold="\ud835\udfce \ud835\udfcf \ud835\udfd0 \ud835\udfd1 \ud835\udfd2 \ud835\udfd3 \ud835\udfd4 \ud835\udfd5 \ud835\udfd6 \ud835\udfd7".split(" ");this.digitsDoubleStruck="\ud835\udfd8 \ud835\udfd9 \ud835\udfda \ud835\udfdb \ud835\udfdc \ud835\udfdd \ud835\udfde \ud835\udfdf \ud835\udfe0 \ud835\udfe1".split(" ");this.digitsSansSerif="\ud835\udfe2 \ud835\udfe3 \ud835\udfe4 \ud835\udfe5 \ud835\udfe6 \ud835\udfe7 \ud835\udfe8 \ud835\udfe9 \ud835\udfea \ud835\udfeb".split(" ");this.digitsSansSerifBold=
-"\ud835\udfec \ud835\udfed \ud835\udfee \ud835\udfef \ud835\udff0 \ud835\udff1 \ud835\udff2 \ud835\udff3 \ud835\udff4 \ud835\udff5".split(" ");this.digitsMonospace="\ud835\udff6 \ud835\udff7 \ud835\udff8 \ud835\udff9 \ud835\udffa \ud835\udffb \ud835\udffc \ud835\udffd \ud835\udffe \ud835\udfff".split(" ");this.digitsSuperscript="\u00b2\u00b3\u00b9\u2070\u2074\u2075\u2076\u2077\u2078\u2079".split("");this.digitsSubscript="\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089".split("");this.fractions=
-"\u00bc\u00bd\u00be\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2189".split("");this.enclosedNumbers="\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf".split("");
-this.fencedNumbers="\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487".split("");this.punctuatedNumbers="\u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496 \u2497 \u2498 \u2499 \u249a \u249b \ud83c\udd00 \ud83c\udd01 \ud83c\udd02 \ud83c\udd03 \ud83c\udd04 \ud83c\udd05 \ud83c\udd06 \ud83c\udd07 \ud83c\udd08 \ud83c\udd09 \ud83c\udd0a".split(" ");this.numbers=this.fractions.concat(this.digitsSuperscript,
-this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.trigonometricFunctions="cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan".split(" ");this.hyperbolicFunctions="cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh".split(" ");this.algebraicFunctions="deg det dim hom ker Tr tr".split(" ");this.elementaryFunctions="log ln lg exp expt gcd gcd arg im re Pr".split(" ");this.prefixFunctions=
-this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions="inf lim liminf limsup max min sup injlim projlim".split(" ");this.infixFunctions=["mod","rem"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.ellipses,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:cvox.SemanticAttr.Type.PUNCTUATION,
-role:cvox.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.DASH},{set:this.primes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.PRIME},{set:this.leftFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.OPEN},{set:this.rightFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.CLOSE},{set:this.topFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.TOP},{set:this.bottomFences,
-type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},
-{set:this.smallLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.smallLatinFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.capitalLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCKITALIC},
-{set:this.smallGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,
-font:cvox.SemanticAttr.Font.BOLD},{set:this.smallGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallGreekSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.greekDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.hebrewLetters,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.OTHERLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsNormal,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.digitsSansSerif,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER},{set:this.additions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.ADDITION},
-{set:this.multiplications,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:cvox.SemanticAttr.Type.PREFIXOP,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.equalities,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.EQUALITY},{set:this.inequalities,
-type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.ARROW},{set:this.sumOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.SUM},{set:this.intOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.LIMFUNC},
-{set:this.prefixFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION}]};goog.addSingletonGetter(cvox.SemanticAttr);
-cvox.SemanticAttr.Type={PUNCTUATION:"punctuation",FENCE:"fence",NUMBER:"number",IDENTIFIER:"identifier",TEXT:"text",OPERATOR:"operator",RELATION:"relation",LARGEOP:"largeop",FUNCTION:"function",ACCENT:"accent",FENCED:"fenced",FRACTION:"fraction",PUNCTUATED:"punctuated",RELSEQ:"relseq",MULTIREL:"multirel",INFIXOP:"infixop",PREFIXOP:"prefixop",POSTFIXOP:"postfixop",APPL:"appl",INTEGRAL:"integral",BIGOP:"bigop",SQRT:"sqrt",ROOT:"root",LIMUPPER:"limupper",LIMLOWER:"limlower",LIMBOTH:"limboth",SUBSCRIPT:"subscript",
-SUPERSCRIPT:"superscript",UNDERSCORE:"underscore",OVERSCORE:"overscore",TABLE:"table",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",ROW:"row",LINE:"line",CELL:"cell",UNKNOWN:"unknown",EMPTY:"empty"};
-cvox.SemanticAttr.Role={ELLIPSIS:"ellipsis",FULLSTOP:"fullstop",DASH:"dash",PRIME:"prime",VBAR:"vbar",OPENFENCE:"openfence",CLOSEFENCE:"closefence",APPLICATION:"application",OPEN:"open",CLOSE:"close",TOP:"top",BOTTOM:"bottom",NEUTRAL:"neutral",LATINLETTER:"latinletter",GREEKLETTER:"greekletter",OTHERLETTER:"otherletter",INTEGER:"integer",FLOAT:"float",OTHERNUMBER:"othernumber",MULTIACCENT:"multiaccent",OVERACCENT:"overaccent",UNDERACCENT:"underaccent",LEFTRIGHT:"leftright",ABOVEBELOW:"abovebelow",
-SEQUENCE:"sequence",ENDPUNCT:"endpunct",STARTPUNCT:"startpunct",NEGATIVE:"negative",NEGATION:"negation",MULTIOP:"multiop",LIMFUNC:"limit function",INFIXFUNC:"infix function",PREFIXFUNC:"prefix function",POSTFIXFUNC:"postfix function",SUM:"sum",INTEGRAL:"integral",ADDITION:"addition",MULTIPLICATION:"multiplication",DIVISION:"division",SUBTRACTION:"subtraction",IMPLICIT:"implicit",EQUALITY:"equality",INEQUALITY:"inequality",ELEMENT:"element",BINREL:"binrel",ARROW:"arrow",MULTILINE:"multiline",MATRIX:"matrix",
-VECTOR:"vector",CASES:"cases",TABLE:"table",UNKNOWN:"unknown"};cvox.SemanticAttr.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",DOUBLESTRUCK:"double-struck",DOUBLESTRUCKITALIC:"double-struck-italic",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",UNKNOWN:"unknown"};
-cvox.SemanticAttr.lookupMeaning=function(a){return cvox.SemanticAttr.getInstance().lookupMeaning_(a)};cvox.SemanticAttr.invisibleTimes=function(){return cvox.SemanticAttr.getInstance().invisibleTimes_};cvox.SemanticAttr.invisibleComma=function(){return cvox.SemanticAttr.getInstance().invisibleComma_};cvox.SemanticAttr.functionApplication=function(){return cvox.SemanticAttr.getInstance().functionApplication_};
-cvox.SemanticAttr.isMatchingFenceRole=function(a,b){return a==cvox.SemanticAttr.Role.OPEN&&b==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL&&b==cvox.SemanticAttr.Role.NEUTRAL||a==cvox.SemanticAttr.Role.TOP&&b==cvox.SemanticAttr.Role.BOTTOM};cvox.SemanticAttr.isMatchingFence=function(a,b){return cvox.SemanticAttr.getInstance().isMatchingFence_(a,b)};cvox.SemanticAttr.isOpeningFence=function(a){return a==cvox.SemanticAttr.Role.OPEN||a==cvox.SemanticAttr.Role.NEUTRAL};
-cvox.SemanticAttr.isClosingFence=function(a){return a==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL};cvox.SemanticAttr.isCharacterD=function(a){var b="d \u2146 \uff44 \ud835\udc1d \ud835\udc51 \ud835\udcb9 \ud835\udced \ud835\udd21 \ud835\udd55 \ud835\udd89 \ud835\uddbd \ud835\uddf1 \ud835\ude25 \ud835\ude8d".split(" ");return-1!=b.indexOf(a)};
-cvox.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};
-cvox.SemanticAttr.prototype.lookupMeaning_=function(a){for(var b=0,c;c=this.symbolSetToSemantic_[b];b++)if(-1!=c.set.indexOf(a))return{role:c.role||cvox.SemanticAttr.Role.UNKNOWN,type:c.type||cvox.SemanticAttr.Type.UNKNOWN,font:c.font||cvox.SemanticAttr.Font.UNKNOWN};return{role:cvox.SemanticAttr.Role.UNKNOWN,type:cvox.SemanticAttr.Type.UNKNOWN,font:cvox.SemanticAttr.Font.UNKNOWN}};cvox.SemanticTree=function(a){this.idCounter_=0;this.mathml=a;this.root=this.parseMathml_(a)};cvox.SemanticTree.Node=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=cvox.SemanticAttr.Type.UNKNOWN;this.role=cvox.SemanticAttr.Role.UNKNOWN;this.font=cvox.SemanticAttr.Font.UNKNOWN;this.childNodes=[];this.textContent="";this.contentNodes=[]};
-cvox.SemanticTree.Node.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};cvox.SemanticTree.prototype.xml=function(a){var b=new DOMParser,b=b.parseFromString("<stree></stree>","text/xml");a=this.root.xml(b,a);b.childNodes[0].appendChild(a);return b.childNodes[0]};
-cvox.SemanticTree.Node.prototype.xml=function(a,b){var c=function(c,d){for(var g=d.map(function(c){return c.xml(a,b)}),h=a.createElement(c),k=0,l;l=g[k];k++)h.appendChild(l);return h},d=a.createElement(this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c("content",this.contentNodes));0<this.childNodes.length&&d.appendChild(c("children",this.childNodes));return d};cvox.SemanticTree.prototype.toString=function(a){var b=new XMLSerializer;return b.serializeToString(this.xml(a))};
-cvox.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return cvox.SemanticTree.formatXml(a)};cvox.SemanticTree.formatXml=function(a){var b=/(>)(<)(\/*)/g;a=a.replace(b,"$1\r\n$2$3");b=/(>)(.+)(<c)/g;a=a.replace(b,"$1\r\n$2\r\n$3");var c="",d="";a.split("\r\n").forEach(function(a){a.match(/.+<\/\w[^>]*>$/)?c+=d+a+"\r\n":a.match(/^<\/\w/)?d&&(d=d.slice(2),c+=d+a+"\r\n"):a.match(/^<\w[^>]*[^\/]>.*$/)?(c+=d+a+"\r\n",d+=" "):c+=d+a+"\r\n"});return c};
-cvox.SemanticTree.Node.prototype.toString=function(a){var b=new XMLSerializer,c=new DOMParser,c=c.parseFromString("","text/xml");return b.serializeToString(this.xml(c,a))};cvox.SemanticTree.Node.prototype.xmlAttributes_=function(a){a.setAttribute("role",this.role);this.font!=cvox.SemanticAttr.Font.UNKNOWN&&a.setAttribute("font",this.font);a.setAttribute("id",this.id)};cvox.SemanticTree.prototype.createNode_=function(){return new cvox.SemanticTree.Node(this.idCounter_++)};
-cvox.SemanticTree.Node.prototype.updateContent_=function(a){a=a.trim();if(this.textContent!=a){var b=cvox.SemanticAttr.lookupMeaning(a);this.textContent=a;this.role=b.role;this.type=b.type;this.font=b.font}};cvox.SemanticTree.Node.prototype.addMathmlNodes_=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};cvox.SemanticTree.Node.prototype.appendChild_=function(a){this.childNodes.push(a);this.addMathmlNodes_(a.mathml);a.parent=this};
-cvox.SemanticTree.Node.prototype.appendContentNode_=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes_(a.mathml),a.parent=this)};
-cvox.SemanticTree.prototype.parseMathml_=function(a){var b=cvox.DomUtil.toArray(a.children);switch(cvox.SemanticUtil.tagName(a)){case "MATH":case "MROW":case "MPADDED":case "MSTYLE":return b=cvox.SemanticUtil.purgeNodes(b),1==b.length?this.parseMathml_(b[0]):this.processRow_(this.parseMathmlChildren_(b));case "MFRAC":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.FRACTION,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]),a.role=cvox.SemanticAttr.Role.DIVISION,a;case "MSUB":case "MSUP":case "MSUBSUP":case "MOVER":case "MUNDER":case "MUNDEROVER":return this.makeLimitNode_(cvox.SemanticUtil.tagName(a),
-this.parseMathmlChildren_(b));case "MROOT":return this.makeBranchNode_(cvox.SemanticAttr.Type.ROOT,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]);case "MSQRT":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),this.makeBranchNode_(cvox.SemanticAttr.Type.SQRT,[this.processRow_(b)],[]);case "MTABLE":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.TABLE,this.parseMathmlChildren_(b),[]),cvox.SemanticTree.tableIsMultiline_(a)&&this.tableToMultiline_(a),a;case "MTR":return a=
-this.makeBranchNode_(cvox.SemanticAttr.Type.ROW,this.parseMathmlChildren_(b),[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTD":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),a=this.makeBranchNode_(cvox.SemanticAttr.Type.CELL,[this.processRow_(b)],[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTEXT":return a=this.makeLeafNode_(a),a.type=cvox.SemanticAttr.Type.TEXT,a;case "MI":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.IDENTIFIER),
-a;case "MN":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.NUMBER),a;case "MO":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.OPERATOR),a;default:return this.makeUnprocessed_(a)}};cvox.SemanticTree.prototype.parseMathmlChildren_=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parseMathml_(d));return b};
-cvox.SemanticTree.prototype.makeUnprocessed_=function(a){var b=this.createNode_();b.mathml=[a];return b};cvox.SemanticTree.prototype.makeEmptyNode_=function(){var a=this.createNode_();a.type=cvox.SemanticAttr.Type.EMPTY;return a};cvox.SemanticTree.prototype.makeLeafNode_=function(a){var b=this.createNode_();b.mathml=[a];b.updateContent_(a.textContent);b.font=a.getAttribute("mathvariant")||b.font;return b};
-cvox.SemanticTree.prototype.makeBranchNode_=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent_(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(a){a.parent=e;e.addMathmlNodes_(a.mathml)});return e};cvox.SemanticTree.prototype.makeImplicitNode_=function(a){if(1==a.length)return a[0];var b=this.createNode_();b.updateContent_(cvox.SemanticAttr.invisibleTimes());a=this.makeInfixNode_(a,b);a.role=cvox.SemanticAttr.Role.IMPLICIT;return a};
-cvox.SemanticTree.prototype.makeInfixNode_=function(a,b){return this.makeBranchNode_(cvox.SemanticAttr.Type.INFIXOP,a,[b],b.textContent)};cvox.SemanticTree.prototype.makeConcatNode_=function(a,b,c){if(0==b.length)return a;var d=b.map(function(a){return a.textContent}).join(" ");a=this.makeBranchNode_(c,[a],b,d);0<b.length&&(a.role=cvox.SemanticAttr.Role.MULTIOP);return a};
-cvox.SemanticTree.prototype.makePrefixNode_=function(a,b){for(var c=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.attrPred_("role","SUBTRACTION")),d=this.makeConcatNode_(a,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);0<c.rel.length;)d=this.makeConcatNode_(d,[c.rel.pop()],cvox.SemanticAttr.Type.PREFIXOP),d.role=cvox.SemanticAttr.Role.NEGATIVE,d=this.makeConcatNode_(d,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);return d};
-cvox.SemanticTree.prototype.makePostfixNode_=function(a,b){return this.makeConcatNode_(a,b,cvox.SemanticAttr.Type.POSTFIXOP)};cvox.SemanticTree.prototype.processRow_=function(a){if(0==a.length)return this.makeEmptyNode_();a=this.getFencesInRow_(a);a=this.processTablesInRow_(a);a=this.getPunctuationInRow_(a);a=this.getFunctionsInRow_(a);return this.processRelationsInRow_(a)};
-cvox.SemanticTree.prototype.processRelationsInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","RELATION")),c=b.rel[0];if(!c)return this.processOperationsInRow_(a);if(1==a.length)return a[0];a=b.comp.map(goog.bind(this.processOperationsInRow_,this));return b.rel.every(function(a){return a.textContent==c.textContent})?this.makeBranchNode_(cvox.SemanticAttr.Type.RELSEQ,a,b.rel,c.textContent):this.makeBranchNode_(cvox.SemanticAttr.Type.MULTIREL,a,b.rel)};
-cvox.SemanticTree.prototype.processOperationsInRow_=function(a){if(0==a.length)return this.makeEmptyNode_();if(1==a.length)return a[0];for(var b=[];0<a.length&&a[0].type==cvox.SemanticAttr.Type.OPERATOR;)b.push(a.shift());if(0==a.length)return this.makePrefixNode_(b.pop(),b);if(1==a.length)return this.makePrefixNode_(a[0],b);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));b=this.makePrefixNode_(this.makeImplicitNode_(a.head),b);return a.div?this.makeOperationsTree_(a.tail,
-b,a.div):b};
-cvox.SemanticTree.prototype.makeOperationsTree_=function(a,b,c,d){d=d||[];if(0==a.length)return d.unshift(c),b.type==cvox.SemanticAttr.Type.INFIXOP?(d=this.makePostfixNode_(b.childNodes.pop(),d),b.appendChild_(d),b):this.makePostfixNode_(b,d);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));if(0==a.head.length)return d.push(a.div),this.makeOperationsTree_(a.tail,b,c,d);d=this.makePrefixNode_(this.makeImplicitNode_(a.head),d);b=this.appendOperand_(b,c,d);return a.div?
-this.makeOperationsTree_(a.tail,b,a.div,[]):b};cvox.SemanticTree.prototype.appendOperand_=function(a,b,c){return a.type!=cvox.SemanticAttr.Type.INFIXOP?this.makeInfixNode_([a,c],b):this.appendExistingOperator_(a,b,c)?a:b.role==cvox.SemanticAttr.Role.MULTIPLICATION?this.appendMultiplicativeOp_(a,b,c):this.appendAdditiveOp_(a,b,c)};
-cvox.SemanticTree.prototype.appendMultiplicativeOp_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type==cvox.SemanticAttr.Type.INFIXOP;)d=e,e=d.childNodes[a.childNodes.length-1];b=this.makeInfixNode_([d.childNodes.pop(),c],b);d.appendChild_(b);return a};cvox.SemanticTree.prototype.appendAdditiveOp_=function(a,b,c){return this.makeInfixNode_([a,c],b)};
-cvox.SemanticTree.prototype.appendExistingOperator_=function(a,b,c){if(!a||a.type!=cvox.SemanticAttr.Type.INFIXOP)return!1;if(a.textContent==b.textContent)return a.appendContentNode_(b),a.appendChild_(c),!0;this.appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};cvox.SemanticTree.prototype.getFencesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","FENCE"));var b=a.comp.shift();return this.processFences_(a.rel,a.comp,[],[b])};
-cvox.SemanticTree.prototype.processFences_=function(a,b,c,d){if(0==a.length&&0==c.length)return d[0];var e=cvox.SemanticTree.attrPred_("role","OPEN");if(0==a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),cvox.SemanticTree.fenceToPunct_(b),a.push(b);else{c=cvox.SemanticTree.sliceNodes_(c,e);var f=c.head.length-1,g=this.processNeutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=c[c.length-1];g=a[0].role;
-if(g==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!=f.textContent))return c.push(a.shift()),d.push(b.shift()),this.processFences_(a,b,c,d);if(f&&(g==cvox.SemanticAttr.Role.CLOSE&&f.role==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&a[0].textContent==f.textContent))return e=this.makeHorizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c,d);if(f&&g==cvox.SemanticAttr.Role.CLOSE&&f.role==
-cvox.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=cvox.SemanticTree.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=this.processNeutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=this.makeHorizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c.head,d);e=a.shift();cvox.SemanticTree.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return this.processFences_(a,b,c,d)};
-cvox.SemanticTree.prototype.processNeutralFences_=function(a,b){if(0==a.length)return a;if(1==a.length)return cvox.SemanticTree.fenceToPunct_(a[0]),a;var c=a.shift(),d=cvox.SemanticTree.sliceNodes_(a,function(a){return a.textContent==c.textContent});if(!d.div){cvox.SemanticTree.fenceToPunct_(c);var e=b.shift();e.unshift(c);return e.concat(this.processNeutralFences_(a,b))}var f=this.combineFencedContent_(c,d.div,d.head,b);return 0<d.tail.length?(e=f.shift(),d=this.processNeutralFences_(d.tail,f),e.concat(d)):
-f[0]};cvox.SemanticTree.prototype.combineFencedContent_=function(a,b,c,d){if(0==c.length)return a=this.makeHorizontalFencedNode_(a,b,d.shift()),d.unshift(a),d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=this.processNeutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=this.makeHorizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};
-cvox.SemanticTree.fenceToPunct_=function(a){a.type=cvox.SemanticAttr.Type.PUNCTUATION;switch(a.role){case cvox.SemanticAttr.Role.NEUTRAL:a.role=cvox.SemanticAttr.Role.VBAR;break;case cvox.SemanticAttr.Role.OPEN:a.role=cvox.SemanticAttr.Role.OPENFENCE;break;case cvox.SemanticAttr.Role.CLOSE:a.role=cvox.SemanticAttr.Role.CLOSEFENCE}};
-cvox.SemanticTree.prototype.makeHorizontalFencedNode_=function(a,b,c){c=this.processRow_(c);b=this.makeBranchNode_(cvox.SemanticAttr.Type.FENCED,[c],[a,b]);b.role=a.role==cvox.SemanticAttr.Role.OPEN?cvox.SemanticAttr.Role.LEFTRIGHT:a.role;return b};
-cvox.SemanticTree.prototype.getPunctuationInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,function(a){return cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)&&!cvox.SemanticTree.attrPred_("role","ELLIPSIS")(a)});if(0==b.rel.length)return a;a=[];var c=b.comp.shift();0<c.length&&a.push(this.processRow_(c));for(var d=0;0<b.comp.length;)a.push(b.rel[d++]),c=b.comp.shift(),0<c.length&&a.push(this.processRow_(c));return[this.makePunctuatedNode_(a,b.rel)]};
-cvox.SemanticTree.prototype.makePunctuatedNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.PUNCTUATED,a,b);c.role=1==b.length&&a[0].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.STARTPUNCT:1==b.length&&a[a.length-1].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.ENDPUNCT:cvox.SemanticAttr.Role.SEQUENCE;return c};
-cvox.SemanticTree.prototype.makeLimitNode_=function(a,b){var c=b[0],d=cvox.SemanticTree.attrPred_("type","FUNCTION")(c),d=cvox.SemanticTree.attrPred_("type","LARGEOP")(c)||cvox.SemanticTree.attrPred_("type","LIMBOTH")(c)||cvox.SemanticTree.attrPred_("type","LIMLOWER")(c)||cvox.SemanticTree.attrPred_("type","LIMUPPER")(c)||d&&cvox.SemanticTree.attrPred_("role","LIMFUNC")(c),e=cvox.SemanticAttr.Type.UNKNOWN;if(d)switch(a){case "MSUB":case "MUNDER":e=cvox.SemanticAttr.Type.LIMLOWER;break;case "MSUP":case "MOVER":e=
-cvox.SemanticAttr.Type.LIMUPPER;break;case "MSUBSUP":case "MUNDEROVER":e=cvox.SemanticAttr.Type.LIMBOTH}else switch(a){case "MSUB":e=cvox.SemanticAttr.Type.SUBSCRIPT;break;case "MSUP":e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MSUBSUP":d=this.makeBranchNode_(cvox.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=c.role;b=[d,b[2]];e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MOVER":e=cvox.SemanticAttr.Type.OVERSCORE;break;case "MUNDER":e=cvox.SemanticAttr.Type.UNDERSCORE;break;default:d=this.makeBranchNode_(cvox.SemanticAttr.Type.UNDERSCORE,
-[c,b[1]],[]),d.role=c.role,b=[d,b[2]],e=cvox.SemanticAttr.Type.OVERSCORE}d=this.makeBranchNode_(e,b,[]);d.role=c.role;return d};cvox.SemanticTree.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0==a.length)return b;var c=a.shift(),d=cvox.SemanticTree.classifyFunction_(c,a);if(!d)return b.push(c),this.getFunctionsInRow_(a,b);var e=this.getFunctionsInRow_(a,[]),c=this.getFunctionArgs_(c,e,d);return b.concat(c)};
-cvox.SemanticTree.classifyFunction_=function(a,b){if(a.type==cvox.SemanticAttr.Type.APPL||a.type==cvox.SemanticAttr.Type.BIGOP||a.type==cvox.SemanticAttr.Type.INTEGRAL)return"";if(b[0]&&b[0].textContent==cvox.SemanticAttr.functionApplication())return b.shift(),cvox.SemanticTree.propagatePrefixFunc_(a),"prefix";switch(a.role){case cvox.SemanticAttr.Role.INTEGRAL:return"integral";case cvox.SemanticAttr.Role.SUM:return"bigop";case cvox.SemanticAttr.Role.PREFIXFUNC:case cvox.SemanticAttr.Role.LIMFUNC:return"prefix";
-default:if(a.type==cvox.SemanticAttr.Type.IDENTIFIER)return"simple"}return""};cvox.SemanticTree.propagatePrefixFunc_=function(a){a&&(a.role=cvox.SemanticAttr.Role.PREFIXFUNC,cvox.SemanticTree.propagatePrefixFunc_(a.childNodes[0]))};
-cvox.SemanticTree.prototype.getFunctionArgs_=function(a,b,c){switch(c){case "integral":return b=this.getIntegralArgs_(b),c=this.processRow_(b.integrand),a=this.makeIntegralNode_(a,c,b.intvar),b.rest.unshift(a),b.rest;case "prefix":if(b[0]&&b[0].type==cvox.SemanticAttr.Type.FENCED)return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;case "bigop":b=cvox.SemanticTree.sliceNodes_(b,cvox.SemanticTree.prefixFunctionBoundary_);var d=this.processRow_(b.head);a="prefix"==c?this.makeFunctionNode_(a,
-d):this.makeBigOpNode_(a,d);b.div&&b.tail.unshift(b.div);b.tail.unshift(a);return b.tail;case "simple":if(0==b.length)return[a];c=b[0];if(c.type==cvox.SemanticAttr.Type.FENCED&&c.role!=cvox.SemanticAttr.Role.NEUTRAL&&this.simpleFunctionHeuristic_(c))return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;b.unshift(a);return b}};
-cvox.SemanticTree.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0==a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(cvox.SemanticTree.generalFunctionBoundary_(c))return{integrand:b,intvar:null,rest:a};if(cvox.SemanticTree.integralDxBoundarySingle_(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&cvox.SemanticTree.integralDxBoundary_(c,a[1])){var d=this.createNode_();d.updateContent_(cvox.SemanticAttr.invisibleComma());c=this.makePunctuatedNode_([c,d,a[1]],[d]);c.role=cvox.SemanticAttr.Role.INTEGRAL;
-return{integrand:b,intvar:c,rest:a.slice(2)}}b.push(a.shift());return this.getIntegralArgs_(a,b)};cvox.SemanticTree.prototype.makeFunctionNode_=function(a,b){var c=this.createNode_();c.updateContent_(cvox.SemanticAttr.functionApplication());c.type=cvox.SemanticAttr.Type.PUNCTUATION;c.role=cvox.SemanticAttr.Role.APPLICATION;c=this.makeBranchNode_(cvox.SemanticAttr.Type.APPL,[a,b],[c]);c.role=a.role;return c};
-cvox.SemanticTree.prototype.makeBigOpNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.BIGOP,[a,b],[]);c.role=a.role;return c};cvox.SemanticTree.prototype.makeIntegralNode_=function(a,b,c){b=b||this.makeEmptyNode_();c=c||this.makeEmptyNode_();b=this.makeBranchNode_(cvox.SemanticAttr.Type.INTEGRAL,[a,b,c],[]);b.role=a.role;return b};
-cvox.SemanticTree.prototype.simpleFunctionHeuristic_=function(a){a=a.childNodes;if(0==a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!=cvox.SemanticAttr.Type.INFIXOP||a.role==cvox.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(cvox.SemanticTree.attrPred_("type","INFIXOP"))?!0:!1};cvox.SemanticTree.prefixFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","OPERATOR")(a)||cvox.SemanticTree.generalFunctionBoundary_(a)};
-cvox.SemanticTree.integralDxBoundary_=function(a,b){return!!b&&cvox.SemanticTree.attrPred_("type","IDENTIFIER")(b)&&cvox.SemanticAttr.isCharacterD(a.textContent)};cvox.SemanticTree.integralDxBoundarySingle_=function(a){if(cvox.SemanticTree.attrPred_("type","IDENTIFIER")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&cvox.SemanticAttr.isCharacterD(b)}return!1};
-cvox.SemanticTree.generalFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","RELATION")(a)||cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)};
-cvox.SemanticTree.prototype.processTablesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.tableIsMatrixOrVector_);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(this.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.isTableOrMultiline_);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();cvox.SemanticTree.tableIsCases_(d,e)&&this.tableToCases_(d,e.pop());b=b.concat(e);b.push(d)}return b.concat(a.comp.shift())};
-cvox.SemanticTree.isTableOrMultiline_=function(a){return!!a&&(cvox.SemanticTree.attrPred_("type","TABLE")(a)||cvox.SemanticTree.attrPred_("type","MULTILINE")(a))};cvox.SemanticTree.tableIsMatrixOrVector_=function(a){return!!a&&cvox.SemanticTree.attrPred_("type","FENCED")(a)&&cvox.SemanticTree.attrPred_("role","LEFTRIGHT")(a)&&1==a.childNodes.length&&cvox.SemanticTree.isTableOrMultiline_(a.childNodes[0])};
-cvox.SemanticTree.prototype.tableToMatrixOrVector_=function(a){var b=a.childNodes[0],c=cvox.SemanticTree.attrPred_("type","MULTILINE")(b)?"VECTOR":"MATRIX";b.type=cvox.SemanticAttr.Type[c];a.contentNodes.forEach(goog.bind(b.appendContentNode_,b));a=0;for(var d;d=b.childNodes[a];a++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role[c]);return b};cvox.SemanticTree.tableIsCases_=function(a,b){return 0<b.length&&cvox.SemanticTree.attrPred_("role","OPENFENCE")(b[b.length-1])};
-cvox.SemanticTree.prototype.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role.CASES);a.type=cvox.SemanticAttr.Type.CASES;a.appendContentNode_(b);return a};cvox.SemanticTree.tableIsMultiline_=function(a){return a.childNodes.every(function(a){a=a.childNodes.length;return 1>=a})};
-cvox.SemanticTree.prototype.tableToMultiline_=function(a){a.type=cvox.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)cvox.SemanticTree.rowToLine_(c,cvox.SemanticAttr.Role.MULTILINE)};cvox.SemanticTree.rowToLine_=function(a,b){b=b||cvox.SemanticAttr.Role.UNKNOWN;cvox.SemanticTree.attrPred_("type","ROW")(a)&&1==a.childNodes.length&&cvox.SemanticTree.attrPred_("type","CELL")(a.childNodes[0])&&(a.type=cvox.SemanticAttr.Type.LINE,a.role=b,a.childNodes=a.childNodes[0].childNodes)};
-cvox.SemanticTree.assignRoleToRow_=function(a,b){if(cvox.SemanticTree.attrPred_("type","LINE")(a))a.role=b;else if(cvox.SemanticTree.attrPred_("type","ROW")(a)){a.role=b;var c=cvox.SemanticTree.attrPred_("type","CELL");a.childNodes.forEach(function(a){c(a)&&(a.role=b)})}};
-cvox.SemanticTree.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};cvox.SemanticTree.partitionNodes_=function(a,b){var c=a,d=[],e=[];do{var f=cvox.SemanticTree.sliceNodes_(c,b);e.push(f.head);d.push(f.div);c=f.tail}while(f.div);d.pop();return{rel:d,comp:e}};
-cvox.SemanticTree.attrPred_=function(a,b){return function(c){var d;o:{switch(a){case "type":d=cvox.SemanticAttr.Type[b];break o;case "role":d=cvox.SemanticAttr.Role[b];break o;case "font":d=cvox.SemanticAttr.Font[b];break o}d=void 0}return c[a]==d}};cvox.TraverseMath=function(){this.activeNode=this.activeMath=null;this.allTexs_={};this.allMathjaxs_={};this.activeMathmlHost=null;this.domain="default";this.style="short";cvox.ChromeVox.mathJax&&(this.initializeMathjaxs(),this.initializeAltMaths())};goog.addSingletonGetter(cvox.TraverseMath);cvox.TraverseMath.setSemantic_=!1;cvox.TraverseMath.toggleSemantic=function(){return cvox.TraverseMath.setSemantic_=!cvox.TraverseMath.setSemantic_};
-cvox.TraverseMath.prototype.initialize=function(a){if(cvox.DomUtil.isMathImg(a)){if(!a.hasAttribute("cvoxid"))return;a=a.getAttribute("cvoxid");a=this.allTexs_[a]}cvox.DomUtil.isMathJax(a)&&(this.activeMathmlHost=this.allMathjaxs_[a.getAttribute("id")]);this.activeMath=this.activeMathmlHost||a;(this.activeNode=this.activeMathmlHost||a)&&cvox.TraverseMath.setSemantic_&&this.activeNode.nodeType==Node.ELEMENT_NODE&&(this.activeNode=(new cvox.SemanticTree(this.activeNode)).xml())};
-cvox.TraverseMath.prototype.addMathjax=function(a,b){var c=cvox.DomUtil.getMathSpanId(b);c?this.allMathjaxs_[c]=a:this.redoMathjaxs(a,b)};cvox.TraverseMath.prototype.redoMathjaxs=function(a,b){var c=goog.bind(function(){this.addMathjax(a,b)},this);setTimeout(c,500)};
-cvox.TraverseMath.prototype.initializeMathjaxs=function(){var a=goog.bind(function(a,c){this.addMathjax(a,c)},this);cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.getAllJax(a),cvox.ChromeVox.mathJax.registerSignal(a,"New Math"))})};
-cvox.TraverseMath.prototype.initializeAltMaths=function(){if(document.querySelector(cvox.DomUtil.altMathQuerySelector("tex")+", "+cvox.DomUtil.altMathQuerySelector("asciimath"))){var a=goog.bind(function(a,c){this.allTexs_[c]=a},this);cvox.ChromeVox.mathJax.injectScripts();cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.configMediaWiki(),cvox.ChromeVox.mathJax.getAllTexs(a),cvox.ChromeVox.mathJax.getAllAsciiMaths(a))})}};
-cvox.TraverseMath.prototype.nextSibling=function(a){if(!this.activeNode||!this.activeMath)return null;var b=this.activeNode,b=a?b.previousSibling:b.nextSibling;return b?this.activeNode=b:null};cvox.TraverseMath.prototype.nextParentChild=function(a){if(!this.activeNode||!this.activeMath||this.activeNode==this.activeMath&&a)return null;var b=this.activeNode,b=a?b.parentNode:b.firstChild;return b?this.activeNode=b:null};
-cvox.TraverseMath.prototype.getAttachedActiveNode=function(){var a=this.activeNode;if(!a||a.nodeType!=Node.ELEMENT_NODE)return null;a=a.getAttribute("spanID");return document.getElementById(a)};cvox.MathUtil={};cvox.MathUtil.isMathmlNodeOfClass_=function(a,b){return-1!=b.indexOf(a.tagName.toUpperCase())};cvox.MathUtil.isMathjaxNodeOfClass_=function(a,b){if("SPAN"==a.tagName){var c=a.className.split(" ");return c.some(function(a){return-1!=b.indexOf(a.toUpperCase())})}return!1};cvox.MathUtil.isMathNodeOfClass_=function(a,b){return a.nodeType==Node.ELEMENT_NODE&&(cvox.MathUtil.isMathmlNodeOfClass_(a,b)||cvox.MathUtil.isMathjaxNodeOfClass_(a,b))};cvox.MathUtil.TOKEN_LIST="MI MN MO MTEXT MSPACE MS".split(" ");
-cvox.MathUtil.isToken=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TOKEN_LIST)};cvox.MathUtil.LAYOUT_LIST="MROW MFRAC MSQRT MROOT MSTYLE MERROR MPADDED MPHANTOM MFENCED MENCLOSE".split(" ");cvox.MathUtil.isLayout=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.LAYOUT_LIST)};cvox.MathUtil.SCRIPT_LIST="MSUB MSUP MSUBSUP MUNDER MOVER MUNDEROVER MMULTISCRIPTS MPRESCRIPTS".split(" ");
-cvox.MathUtil.isScript=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.SCRIPT_LIST)};cvox.MathUtil.TABLES_LIST="MTABLE MLABELEDTR MTR MTD MALIGNGROUP MALIGNMARK".split(" ");cvox.MathUtil.isTables=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TABLES_LIST)};cvox.MathUtil.ELEMENTARY_LIST="MSTACK MLONGDIV MSGROUP MSROW MSCARRIES MSCARRY MSLINE".split(" ");cvox.MathUtil.isElementary=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.ELEMENTARY_LIST)};
-cvox.MathUtil.MATHML_TAG_LIST=[cvox.MathUtil.TOKEN_LIST,cvox.MathUtil.LAYOUT_LIST,cvox.MathUtil.SCRIPT_LIST,cvox.MathUtil.TABLES_LIST,cvox.MathUtil.ELEMENTARY_LIST].reduce(function(a,b){return a.concat(b)});cvox.MathUtil.isMathmlTag=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.MATHML_TAG_LIST)};cvox.MathUtil.WHITESPACE_LIST=["MSROW","MROW","MSPACE","MPHANTOM","MPADDED"];cvox.MathUtil.isWhitespace=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.WHITESPACE_LIST)};
-cvox.MathUtil.isNotWhitespace=function(a){return cvox.MathUtil.isMathmlTag(a)&&!cvox.MathUtil.isWhitespace(a)};cvox.MathUtil.union=function(a,b){return a.concat(b.filter(function(b){return 0>a.indexOf(b)}))};cvox.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d};cvox.SpeechRule.prototype.toString=function(){var a=[],b;for(b in this.dynamicCstr)a.push(this.dynamicCstr[b]);return this.name+" | "+a.join(".")+" | "+this.precondition.toString()+" ==> "+this.action.toString()};cvox.SpeechRule.Type={NODE:"NODE",MULTI:"MULTI",TEXT:"TEXT",PERSONALITY:"PERSONALITY"};
-cvox.SpeechRule.Type.fromString=function(a){switch(a){case "[n]":return cvox.SpeechRule.Type.NODE;case "[m]":return cvox.SpeechRule.Type.MULTI;case "[t]":return cvox.SpeechRule.Type.TEXT;case "[p]":return cvox.SpeechRule.Type.PERSONALITY;default:throw"Parse error: "+a;}};
-cvox.SpeechRule.Type.toString=function(a){switch(a){case cvox.SpeechRule.Type.NODE:return"[n]";case cvox.SpeechRule.Type.MULTI:return"[m]";case cvox.SpeechRule.Type.TEXT:return"[t]";case cvox.SpeechRule.Type.PERSONALITY:return"[p]";default:throw"Unknown type error: "+a;}};cvox.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content};
-cvox.SpeechRule.Component.fromString=function(a){var b={};b.type=cvox.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trimLeft();if(!a)throw new cvox.SpeechRule.OutputError("Missing content.");switch(b.type){case cvox.SpeechRule.Type.TEXT:if('"'==a[0]){var c=cvox.SpeechRule.splitString_(a,"\\(")[0].trim();if('"'!=c.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid string syntax.");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf("(")&&(a="");break}case cvox.SpeechRule.Type.NODE:case cvox.SpeechRule.Type.MULTI:c=
-a.indexOf(" (");if(-1==c){b.content=a.trim();a="";break}b.content=a.substring(0,c).trim();a=a.slice(c).trimLeft()}b=new cvox.SpeechRule.Component(b);a&&b.addAttributes(a);return b};cvox.SpeechRule.Component.prototype.toString=function(){var a="",a=a+cvox.SpeechRule.Type.toString(this.type),a=a+(this.content?" "+this.content:""),b=this.getAttributes();0<b.length&&(a+=" ("+b.join(", ")+")");return a};
-cvox.SpeechRule.Component.prototype.addAttribute=function(a){var b=a.indexOf(":");-1==b?this[a.trim()]="true":this[a.substring(0,b).trim()]=a.slice(b+1).trim()};cvox.SpeechRule.Component.prototype.addAttributes=function(a){if("("!=a[0]||")"!=a.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid attribute expression: "+a);a=cvox.SpeechRule.splitString_(a.slice(1,-1),",");for(var b=0;b<a.length;b++)this.addAttribute(a[b])};
-cvox.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this)"content"!=b&&"type"!=b&&"function"!=typeof this[b]&&a.push(b+":"+this[b]);return a};cvox.SpeechRule.Action=function(a){this.components=a};cvox.SpeechRule.Action.fromString=function(a){a=cvox.SpeechRule.splitString_(a,";").filter(function(a){return a.match(/\S/)}).map(function(a){return a.trim()});for(var b=[],c=0;c<a.length;c++){var d=cvox.SpeechRule.Component.fromString(a[c]);d&&b.push(d)}return new cvox.SpeechRule.Action(b)};
-cvox.SpeechRule.Action.prototype.toString=function(){var a=this.components.map(function(a){return a.toString()});return a.join("; ")};cvox.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};cvox.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(", ");return this.query+", "+a};
-cvox.SpeechRule.splitString_=function(a,b){for(var c=[],d="";""!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/"/g)||[]).length%2)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);c.push(d+a);a=d=""}else if(0==(a.substring(0,e).match(/"/g)||[]).length%2)c.push(d+a.substring(0,e)),d="",a=a.substring(e+1);else{var f=a.substring(e).search('"');if(-1==f)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&
-c.push(d);return c};cvox.SpeechRule.DynamicCstrAttrib={STYLE:"style"};cvox.SpeechRule.OutputError=function(a){this.name="RuleError";this.message=a||""};goog.inherits(cvox.SpeechRule.OutputError,Error);cvox.SpeechRuleFunctions=function(){};cvox.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};cvox.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};cvox.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};cvox.SpeechRuleFunctions.CustomQueries=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CQF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomQueries,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.CustomStrings=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CSF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomStrings,cvox.SpeechRuleFunctions.Store_);cvox.SpeechRuleFunctions.ContextFunctions=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CTXF",a)};goog.inherits(cvox.SpeechRuleFunctions.ContextFunctions,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){var b=RegExp("^"+this.prefix_);return a.match(b)?!0:(console.log("FunctionError: Invalid function name. Expected prefix"+this.prefix_),!1)};cvox.BaseRuleStore=function(){this.customQueries=new cvox.SpeechRuleFunctions.CustomQueries;this.customStrings=new cvox.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new cvox.SpeechRuleFunctions.ContextFunctions;this.speechRules_=[];this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[]};
-cvox.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=Node.ELEMENT_NODE&&a.nodeType!=Node.TEXT_NODE)return null;var c=this.speechRules_.filter(goog.bind(function(c){return this.testDynamicConstraints(b,c)&&this.testPrecondition_(a,c)},this));return 0<c.length?this.pickMostConstraint_(b,c):null};
-cvox.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=cvox.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new cvox.SpeechRule.Precondition(d,g),g={};g[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;var k=new cvox.SpeechRule(a,g,h,f)}catch(l){if("RuleError"==l.name)return console.log("Rule Error ",d,"("+b+"):",l.message),null;throw l;}this.addRule(k);return k};cvox.BaseRuleStore.prototype.addRule=function(a){this.speechRules_.unshift(a)};
-cvox.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};cvox.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};cvox.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};cvox.BaseRuleStore.prototype.evaluateDefault=function(a){return[new cvox.NavDescription({text:a.textContent})]};
-cvox.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&cvox.BaseRuleStore.compareDynamicConstraints_(c.dynamicCstr,a.dynamicCstr)&&cvox.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};cvox.BaseRuleStore.prototype.applyCustomQuery=function(a,b){var c=this.customQueries.lookup(b);return c?c(a):null};
-cvox.BaseRuleStore.prototype.applySelector=function(a,b){var c=this.applyCustomQuery(a,b);return c||cvox.XpathUtil.evalXPath(b,a)};cvox.BaseRuleStore.prototype.applyQuery=function(a,b){var c=this.applySelector(a,b);return 0<c.length?c[0]:null};cvox.BaseRuleStore.prototype.applyConstraint=function(a,b){var c=this.applyQuery(a,b);return!!c||cvox.XpathUtil.evaluateBoolean(b,a)};
-cvox.BaseRuleStore.prototype.testDynamicConstraints=function(a,b){var c=Object.keys(a);return c.every(function(c){return a[c]==b.dynamicCstr[c]||"default"==b.dynamicCstr[c]})};cvox.BaseRuleStore.prototype.getDynamicConstraintValues=function(){for(var a={},b=0,c;c=this.speechRules_[b];b++)for(var d in c.dynamicCstr){var e=[c.dynamicCstr[d]];a[d]=a[d]?cvox.MathUtil.union(a[d],e):e}return a};
-cvox.BaseRuleStore.prototype.countMatchingDynamicConstraintValues_=function(a,b){for(var c=0,d=0,e;e=this.dynamicCstrAttribs[d];d++)if(a[e]==b.dynamicCstr[e])c++;else break;return c};cvox.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){b.sort(goog.bind(function(b,d){var e=this.countMatchingDynamicConstraintValues_(a,b),f=this.countMatchingDynamicConstraintValues_(a,d);return e>f?-1:f>e?1:d.precondition.constraints.length-b.precondition.constraints.length},this));return b[0]};
-cvox.BaseRuleStore.prototype.testPrecondition_=function(a,b){var c=b.precondition;return this.applyQuery(a,c.query)===a&&c.constraints.every(goog.bind(function(b){return this.applyConstraint(a,b)},this))};cvox.BaseRuleStore.compareDynamicConstraints_=function(a,b){if(Object.keys(a).length!=Object.keys(b).length)return!1;for(var c in a)if(!b[c]||a[c]!==b[c])return!1;return!0};
-cvox.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};cvox.BaseRuleStore.comparePreconditions_=function(a,b){var c=a.precondition,d=b.precondition;return c.query!=d.query?!1:cvox.BaseRuleStore.compareStaticConstraints_(c.constraints,d.constraints)};cvox.MathStore=function(){cvox.BaseRuleStore.call(this);this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN,cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[cvox.AbstractTts.PITCH,cvox.AbstractTts.RATE]};goog.inherits(cvox.MathStore,cvox.BaseRuleStore);cvox.SpeechRule.DynamicCstrAttrib.DOMAIN="domain";
-cvox.MathStore.prototype.defineRule=function(a,b,c,d,e){var f=this.parseDynamicConstraint(b),g=Array.prototype.slice.call(arguments,4),g=cvox.MathStore.superClass_.defineRule.apply(this,[a,f[cvox.SpeechRule.DynamicCstrAttrib.STYLE],c,d].concat(g));g.dynamicCstr=f;this.removeDuplicates(g);return g};
-cvox.MathStore.prototype.parseDynamicConstraint=function(a){var b=a.split(".");if(!b[0]||!b[1])throw new cvox.SpeechRule.OutputError("Invalid domain assignment:"+a);return cvox.MathStore.createDynamicConstraint(b[0],b[1])};cvox.MathStore.createDynamicConstraint=function(a,b){var c={};c[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN]=a;c[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;return c};
-cvox.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(b){return b.name==a});if(!d)throw new cvox.SpeechRule.OutputError("Rule with named "+a+" does not exist.");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};cvox.MathStore.prototype.addAlias_=function(a,b,c){b=new cvox.SpeechRule.Precondition(b,c);b=new cvox.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};cvox.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};
-cvox.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\s+$/))return b;a=cvox.MathStore.removeEmpty_(a.replace(/\s/g," ").split(" "));for(var c=0,d;d=a[c];c++)if(1==d.length)b.push(this.evaluate_(d));else if(d.match(/^[a-zA-Z]+$/))b.push(this.evaluate_(d));else for(;d;){var e=d.match(/^\d+/),f=d.match(/^[a-zA-Z]+/);e?(b.push(this.evaluate_(e[0])),d=d.substring(e[0].length)):f?(b.push(this.evaluate_(f[0])),d=d.substring(f[0].length)):(e=d[0],e=e.charCodeAt(0),55296<=e&&56319>=e&&
-1<d.length&&!isNaN(d.charCodeAt(1))?(b.push(this.evaluate_(d.slice(0,2))),d=d.substring(2)):(b.push(this.evaluate_(d[0])),d=d.substring(1)))}return b};cvox.MathStore.prototype.evaluate_=function(a){return cvox.ChromeVox.host.mathMap?cvox.ChromeVox.host.mathMap.evaluate(a,cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style):new cvox.NavMathDescription({text:a,domain:cvox.TraverseMath.getInstance().domain,style:cvox.TraverseMath.getInstance().style})};
-cvox.MathStore.removeEmpty_=function(a){return a.filter(function(a){return a})};cvox.MathmlStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathmlStore,cvox.MathStore);goog.addSingletonGetter(cvox.MathmlStore);cvox.MathmlStore.prototype.defineDefaultMathmlRule=function(a,b){this.defineRule(a,"default.default",b,"self::mathml:"+a)};cvox.SpeechRuleEngine=function(){this.activeStore_=null;this.dynamicCstr={};this.dynamicCstr[cvox.SpeechRule.DynamicCstrAttrib.STYLE]="short"};goog.addSingletonGetter(cvox.SpeechRuleEngine);cvox.SpeechRuleEngine.prototype.parameterize=function(a){try{a.initialize()}catch(b){if("StoreError"==b.name)console.log("Store Error:",b.message);else throw b;}this.activeStore_=a};cvox.SpeechRuleEngine.prototype.setDynamicConstraint=function(a){a&&(this.dynamicCstr=a)};
-cvox.SpeechRuleEngine.prototype.constructString=function(a,b){if(!b)return"";if('"'==b.charAt(0))return b.slice(1,-1);var c=this.activeStore_.customStrings.lookup(b);return c?c(a):cvox.XpathUtil.evaluateString(b,a)};cvox.SpeechRuleEngine.prototype.evaluateNode=function(a){return a?this.evaluateTree_(a):[]};
-cvox.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=this.activeStore_.lookupRule(a,this.dynamicCstr);if(!b)return this.activeStore_.evaluateDefault(a);for(var b=b.action.components,c=[],d=0,e;e=b[d];d++){var f=[],g=e.content||"";switch(e.type){case cvox.SpeechRule.Type.NODE:(g=this.activeStore_.applyQuery(a,g))&&(f=this.evaluateTree_(g));break;case cvox.SpeechRule.Type.MULTI:g=this.activeStore_.applySelector(a,g);0<g.length&&(f=this.evaluateNodeList_(g,e.sepFunc,this.constructString(a,
-e.separator),e.ctxtFunc,this.constructString(a,e.context)));break;case cvox.SpeechRule.Type.TEXT:(g=this.constructString(a,g))&&(f=[new cvox.NavDescription({text:g})]);break;default:f=[new cvox.NavDescription({text:g})]}f[0]&&e.context&&e.type!=cvox.SpeechRule.Type.MULTI&&(f[0].context=this.constructString(a,e.context)+(f[0].context||""));c=c.concat(this.addPersonality_(f,e))}return c};
-cvox.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e){if(a==[])return[];var f=c||"",g=e||"";c=(c=this.activeStore_.contextFunctions.lookup(d))?c(a,g):function(){return g};b=(b=this.activeStore_.contextFunctions.lookup(b))?b(a,f):function(){return f};d=[];e=0;for(var h;h=a[e];e++)h=this.evaluateTree_(h),0<h.length&&(h[0].context=c()+(h[0].context||""),d=d.concat(h),e<a.length-1&&(h=b())&&d.push(new cvox.NavDescription({text:h})));return d};
-cvox.SpeechRuleEngine.propMap={pitch:cvox.AbstractTts.RELATIVE_PITCH,rate:cvox.AbstractTts.RELATIVE_RATE,volume:cvox.AbstractTts.RELATIVE_VOLUME,pause:cvox.AbstractTts.PAUSE};cvox.SpeechRuleEngine.prototype.addPersonality_=function(a,b){var c={},d;for(d in cvox.SpeechRuleEngine.propMap){var e=parseFloat(b[d]);isNaN(e)||(c[cvox.SpeechRuleEngine.propMap[d]]=e)}a.forEach(goog.bind(function(a){this.addRelativePersonality_(a,c);this.resetPersonality_(a)},this));return a};
-cvox.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&"number"==typeof c[d]?c[d]+b[d]:b[d];return a};cvox.SpeechRuleEngine.prototype.resetPersonality_=function(a){if(this.activeStore_.defaultTtsProps)for(var b=0,c;c=this.activeStore_.defaultTtsProps[b];b++)a.personality[c]=cvox.ChromeVox.tts.getDefaultProperty(c)};cvox.SpeechRuleEngine.debugMode=!1;
-cvox.SpeechRuleEngine.outputDebug=function(a){if(cvox.SpeechRuleEngine.debugMode){var b=Array.prototype.slice.call(arguments,0);console.log.apply(console,["Speech Rule Engine Debugger:"].concat(b))}};cvox.SpeechRuleEngine.prototype.toString=function(){var a=this.activeStore_.findAllRules(function(){return!0});return a.map(function(a){return a.toString()}).join("\n")};
-cvox.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=cvox.SpeechRuleEngine.getInstance().activeStore_;if(c){var d=a.precondition;cvox.SpeechRuleEngine.outputDebug(d.query,c.applyQuery(b,d.query));d.constraints.forEach(function(a){cvox.SpeechRuleEngine.outputDebug(a,c.applyConstraint(b,a))})}};
-cvox.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){for(var c=cvox.SpeechRuleEngine.getInstance().activeStore_,c=c.findAllRules(function(b){return b.name==a}),d=0,e;e=c[d];d++)cvox.SpeechRuleEngine.outputDebug("Rule",a,"number",d),cvox.SpeechRuleEngine.debugSpeechRule(e,b)};cvox.AbstractWalker=function(){};cvox.AbstractWalker.prototype.begin=function(a){a=a||{reversed:!1};return this.sync(cvox.CursorSelection.fromBody().setReversed(a.reversed))};cvox.AbstractWalker.prototype.hasAction=function(a){return"function"==typeof this[a]};cvox.AbstractWalker.prototype.performAction=function(a,b){return this.hasAction(a)?this[a](b):null};cvox.AbstractNodeWalker=function(){this.wasBegin_=!1};goog.inherits(cvox.AbstractNodeWalker,cvox.AbstractWalker);cvox.AbstractNodeWalker.prototype.next=function(a){var b=a.isReversed();a=a.end.node||document.body;do if(a=cvox.DomUtil.directedNextLeafLikeNode(a,b,goog.bind(this.stopNodeDescent,this)),!a)return null;while(a&&!cvox.DomUtil.hasContent(a));return cvox.CursorSelection.fromNode(a).setReversed(b)};
-cvox.AbstractNodeWalker.prototype.sync=function(a){a=this.privateSync_(a);this.wasBegin_=!1;return a};
-cvox.AbstractNodeWalker.prototype.privateSync_=function(a){var b=a.isReversed();if(a.equals(cvox.CursorSelection.fromBody())){if(this.wasBegin_)return cvox.CursorSelection.fromBody().setReversed(b);this.wasBegin_=!0}for(a=a.start.node;a!=document.body&&a.parentNode&&this.stopNodeDescent(a.parentNode);)a=a.parentNode;for(;!this.stopNodeDescent(a);)a=cvox.DomUtil.directedFirstChild(a,b);var c=cvox.CursorSelection.fromNode(a);cvox.DomUtil.hasContent(a)||(c=this.next(cvox.CursorSelection.fromNode(a).setReversed(b)));
-return c?c.setReversed(b):this.begin({reversed:b})};cvox.BareObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.BareObjectWalker,cvox.AbstractNodeWalker);cvox.BareObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AuralStyleConverter={};cvox.AuralStyleUtil={};
-cvox.AuralProperty={VOLUME:"VOLUME",SPEAK:"SPEAK",PAUSE_BEFORE:"PAUSE_BEFORE",PAUSE_AFTER:"PAUSE_AFTER",PAUSE:"PAUSE",CUE_BEFORE:"CUE_BEFORE",CUE_AFTER:"CUE_AFTER",CUE:"CUE",PLAY_DURING:"PLAY_DURING",AZIMUTH:"AZIMUTH",ELEVATION:"ELEVATION",SPEECH_RATE:"SPEECH_RATE",VOICE_FAMILY:"VOICE_FAMILY",PITCH:"PITCH",PITCH_RANGE:"PITCH_RANGE",STRESS:"STRESS",RICHNESS:"RICHNESS",SPEAK_PUNCTUATION:"SPEAK_PUNCTUATION",SPEAK_NUMERIAL:"SPEAK_NUMERIAL",SPEAK_HEADER:"SPEAK_HEADER",NONE:"NONE"};
-cvox.AuralStyleConverter.identity=function(a){return a};cvox.AuralStyleConverter.propertyTable={VOLUME:"volume",SPEAK:"no-op",PAUSE_BEFORE:"no-op",PAUSE_AFTER:"no-op",PAUSE:"no-op",CUE_BEFORE:"no-op",CUE_AFTER:"no-op",CUE:"no-op",PLAY_DURING:"no-op",AZIMUTH:"no-op",ELEVATION:"no-op",SPEECH_RATE:"relativeRate",VOICE_FAMILY:"no-op",PITCH:"relativePitch",PITCH_RANGE:"no-op",STRESS:"no-op",RICHNESS:"no-op",SPEAK_PUNCTUATION:"no-op",SPEAK_NUMERIAL:"no-op",SPEAK_HEADER:"no-op",NONE:"no-op"};
-cvox.AuralStyleConverter.valueTable={VOLUME:cvox.AuralStyleConverter.identity,SPEAK:cvox.AuralStyleConverter.identity,PAUSE_BEFORE:cvox.AuralStyleConverter.identity,PAUSE_AFTER:cvox.AuralStyleConverter.identity,PAUSE:cvox.AuralStyleConverter.identity,CUE_BEFORE:cvox.AuralStyleConverter.identity,CUE_AFTER:cvox.AuralStyleConverter.identity,CUE:cvox.AuralStyleConverter.identity,PLAY_DURING:cvox.AuralStyleConverter.identity,AZIMUTH:cvox.AuralStyleConverter.identity,ELEVATION:cvox.AuralStyleConverter.identity,
-SPEECH_RATE:cvox.AuralStyleConverter.identity,VOICE_FAMILY:cvox.AuralStyleConverter.identity,PITCH:cvox.AuralStyleConverter.identity,PITCH_RANGE:cvox.AuralStyleConverter.identity,STRESS:cvox.AuralStyleConverter.identity,RICHNESS:cvox.AuralStyleConverter.identity,SPEAK_PUNCTUATION:cvox.AuralStyleConverter.identity,SPEAK_NUMERIAL:cvox.AuralStyleConverter.identity,SPEAK_HEADER:cvox.AuralStyleConverter.identity,NONE:cvox.AuralStyleConverter.identity};
-cvox.AuralStyleConverter.convertRule=function(a,b){return{property:cvox.AuralStyleConverter.propertyTable[a],value:cvox.AuralStyleConverter.valueTable[a](b)}};cvox.AuralStyleConverter.convertStyle=function(a){var b={},c;for(c in a){var d=cvox.AuralStyleConverter.convertRule(c,a[c]);b[d.property]=d.value}return b};cvox.AuralStyleUtil.getStyleForNode=function(a){return(a=cvox.AuralStyleUtil.defaultStyles[a.tagName])?cvox.AuralStyleConverter.convertStyle(a):null};
-cvox.AuralStyleUtil.defaultStyles={ARTICLE:{PITCH:-0.1},ASIDE:{PITCH:-0.1},FOOTER:{PITCH:-0.1},H1:{PITCH:-0.3},H2:{PITCH:-0.25},H3:{PITCH:-0.2},H4:{PITCH:-0.15},H5:{PITCH:-0.1},H6:{PITCH:-0.05},HEADER:{PITCH:-0.1},HGROUP:{PITCH:-0.1},MARK:{PITCH:-0.1},NAV:{PITCH:-0.1},SECTION:{PITCH:-0.1},TIME:{PITCH:-0.1}};cvox.EarconUtil={};
-cvox.EarconUtil.getEarcon=function(a){var b=cvox.AriaUtil.getEarcon(a);if(null!=b)return b;switch(a.tagName){case "BUTTON":return cvox.AbstractEarcons.BUTTON;case "A":if(a.hasAttribute("href"))return cvox.AbstractEarcons.LINK;break;case "IMG":if(cvox.DomUtil.hasLongDesc(a))return cvox.AbstractEarcons.LONG_DESC;break;case "LI":return cvox.AbstractEarcons.LIST_ITEM;case "SELECT":return cvox.AbstractEarcons.LISTBOX;case "TEXTAREA":return cvox.AbstractEarcons.EDITABLE_TEXT;case "INPUT":switch(a.type){case "button":case "submit":case "reset":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":return a.checked?
-cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;default:if(cvox.DomUtil.isInputTypeText(a))return cvox.AbstractEarcons.EDITABLE_TEXT}}return null};cvox.DescriptionUtil={};cvox.DescriptionUtil.COLLECTION_NODE_TYPE={H1:!0,H2:!0,H3:!0,H4:!0,H5:!0,H6:!0};
-cvox.DescriptionUtil.getControlDescription=function(a,b){var c=[a];if(b&&0<b.length)c=b;else{var d=cvox.DomUtil.getSurroundingControl(a);d&&(c=[d,a])}c=cvox.DescriptionUtil.getDescriptionFromAncestors(c,!0,cvox.VERBOSITY_VERBOSE);if(d){var e=cvox.DomUtil.getName(d);0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(d),0<e.length&&(c.context=e+" "+c.context))}else e=cvox.DomUtil.getName(a),0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(a),0<e.length&&(c.text=cvox.DomUtil.collapseWhitespace(e))),
-d=cvox.DomUtil.getValue(a),0<d.length&&(c.userValue=cvox.DomUtil.collapseWhitespace(d));return c};
-cvox.DescriptionUtil.getDescriptionFromAncestors=function(a,b,c){"undefined"===typeof b&&(b=!0);var d=a.length,e="",f="",g="",h="",k=[],l=null;0<d&&(f=cvox.DomUtil.getName(a[d-1],b),g=cvox.DomUtil.getValue(a[d-1]));for(b=d-1;0<=b;b--){var m=a[b],p=m.getAttribute?m.getAttribute("role"):null;if("dialog"!=p&&"alertdialog"!=p){p=cvox.DomUtil.getRole(m,c);l||(l=cvox.AuralStyleUtil.getStyleForNode(m));if(b<d-1&&m.hasAttribute("role")){var q=cvox.DomUtil.getName(m,!1);q&&(p=q+" "+p)}0<p.length&&(0<e.length||
-0<h.length&&1<m.childElementCount?e=p+" "+cvox.DomUtil.getState(m,!1)+" "+e:h=0<h.length?h+(" "+p+" "+cvox.DomUtil.getState(m,!0)):p+" "+cvox.DomUtil.getState(m,!0));m=cvox.EarconUtil.getEarcon(m);null!=m&&-1==k.indexOf(m)&&k.push(m)}}return new cvox.NavDescription({context:cvox.DomUtil.collapseWhitespace(e),text:cvox.DomUtil.collapseWhitespace(f),userValue:cvox.DomUtil.collapseWhitespace(g),annotation:cvox.DomUtil.collapseWhitespace(h),earcons:k,personality:l})};
-cvox.DescriptionUtil.getDescriptionFromNavigation=function(a,b,c,d){if(!a||!b)return[];if(cvox.DomUtil.isMath(b)&&!cvox.AriaUtil.isMath(b))return cvox.DescriptionUtil.getMathDescription(b);if(cvox.DescriptionUtil.COLLECTION_NODE_TYPE[b.tagName])return cvox.DescriptionUtil.getCollectionDescription(cvox.CursorSelection.fromNode(a),cvox.CursorSelection.fromNode(b));var e=cvox.DomUtil.getUniqueAncestors(a,b,!0),e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,c,d);a=cvox.DomUtil.getUniqueAncestors(b,
-a);cvox.DescriptionUtil.shouldDescribeExit_(a)&&(c=cvox.DescriptionUtil.getDescriptionFromAncestors(a,c,d),c.context&&!e.context&&(e.context=cvox.ChromeVox.msgs.getMsg("exited_container",[c.context])));return[e]};cvox.DescriptionUtil.getCollectionDescription=function(a,b){var c=cvox.DescriptionUtil.getRawDescriptions_(a,b);cvox.DescriptionUtil.insertCollectionDescription_(c);return c};cvox.DescriptionUtil.subWalker_=new cvox.BareObjectWalker;
-cvox.DescriptionUtil.getRawDescriptions_=function(a,b){var c=[];b=b.clone().setReversed(!1);var d=cvox.DescriptionUtil.subWalker_.sync(b).start.node,e=a.end.node,f=cvox.CursorSelection.fromNode(d);if(!f)return[];for(;cvox.DomUtil.isDescendantOfNode(d,b.start.node);){e=cvox.DomUtil.getUniqueAncestors(e,d);cvox.DomUtil.isMath(d)&&!cvox.AriaUtil.isMath(d)?c=c.concat(cvox.DescriptionUtil.getMathDescription(d)):(e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,!0,cvox.ChromeVox.verbosity),c.push(e));
-f=cvox.DescriptionUtil.subWalker_.next(f);if(!f)break;e=d;d=f.start.node}return c};
-cvox.DescriptionUtil.getFullDescriptionsFromChildren=function(a,b){var c=[];if(!b)return c;var d;if(cvox.DomUtil.isLeafNode(b))return a?d=cvox.DomUtil.getUniqueAncestors(a,b):(d=[],d.push(b)),d=cvox.DescriptionUtil.getDescriptionFromAncestors(d,!0,cvox.ChromeVox.verbosity),c.push(d),c;d=b;var e=cvox.CursorSelection.fromNode(b);if(!e)return c;b=cvox.DescriptionUtil.subWalker_.sync(e).start.node;e=cvox.CursorSelection.fromNode(b);if(!e)return c;for(;cvox.DomUtil.isDescendantOfNode(b,d);){c=c.concat(cvox.DescriptionUtil.getFullDescriptionsFromChildren(a,
-b));e=cvox.DescriptionUtil.subWalker_.next(e);if(!e)break;a=b;b=e.start.node}return c};
-cvox.DescriptionUtil.insertCollectionDescription_=function(a){var b=cvox.DescriptionUtil.getAnnotations_(a);if(3<=a.length&&0==a[0].context.length&&1==b.length&&0<b[0].length&&cvox.DescriptionUtil.isAnnotationCollection_(b[0])){var b=b[0],c=a[0].context;a[0].context="";for(var d=0;d<a.length;d++)a[d].annotation="";a.splice(0,0,new cvox.NavDescription({context:c,text:"",annotation:cvox.ChromeVox.msgs.getMsg("collection",[b,cvox.ChromeVox.msgs.getNumber(a.length)])}))}};
-cvox.DescriptionUtil.getAnnotations_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(-1==b.indexOf(d.annotation)){var e=cvox.ChromeVox.msgs.getMsg("tag_link");-1!=d.annotation.toLowerCase().indexOf(e.toLowerCase())?-1==b.indexOf(e)&&b.push(e):b.push(d.annotation)}}return b};cvox.DescriptionUtil.isAnnotationCollection_=function(a){return a==cvox.ChromeVox.msgs.getMsg("tag_link")};cvox.DescriptionUtil.shouldDescribeExit_=function(a){return a.some(function(a){switch(a.tagName){case "TABLE":case "MATH":return!0}return cvox.AriaUtil.isLandmark(a)})};
-cvox.DescriptionUtil.getMathDescription=function(a){var b=cvox.SpeechRuleEngine.getInstance(),c=cvox.TraverseMath.getInstance();b.parameterize(cvox.MathmlStore.getInstance());c.initialize(a);a=b.evaluateNode(c.activeNode);if(a==[])return[new cvox.NavDescription({text:"empty math"})];cvox.ChromeVox.verbosity==cvox.VERBOSITY_VERBOSE&&(a[a.length-1].annotation="math");a[0].pushEarcon(cvox.AbstractEarcons.SPECIAL_CONTENT);return a};cvox.FindUtil={};cvox.FindUtil.objectWalker_=new cvox.BareObjectWalker;cvox.FindUtil.findNext=function(a,b,c){var d=a.isReversed();a=(new cvox.CursorSelection(a.absStart(),a.absStart())).setReversed(d);var e;if(e=b(cvox.DomUtil.getAncestors(a.start.node)))if(a=cvox.CursorSelection.fromNode(e).setReversed(d),c)return a;for(;a;){a=cvox.FindUtil.objectWalker_.next(a);c=null;if(!a||(c=b(cvox.DomUtil.getAncestors(a.start.node))))return c?cvox.CursorSelection.fromNode(c):null;if("IFRAME"==a.start.node.tagName)return a}return null};cvox.Interframe=function(){};cvox.Interframe.IF_MSG_PREFIX="cvox.INTERFRAME:";cvox.Interframe.SET_ID="cvox.INTERFRAME_SET_ID";cvox.Interframe.listeners=[];cvox.Interframe.allowAccessToIframeContentWindow=!0;
-cvox.Interframe.init=function(){cvox.Interframe.messageListener=function(a){if("string"===typeof a.data&&0==a.data.indexOf(cvox.Interframe.IF_MSG_PREFIX)){a=a.data.substr(cvox.Interframe.IF_MSG_PREFIX.length);a=cvox.ChromeVoxJSON.parse(a);a.command==cvox.Interframe.SET_ID&&(cvox.Interframe.id=a.id);for(var b=0,c;c=cvox.Interframe.listeners[b];b++)c(a)}return!1};window.addEventListener("message",cvox.Interframe.messageListener,!0)};
-cvox.Interframe.shutdown=function(){window.removeEventListener("message",cvox.Interframe.messageListener,!0)};cvox.Interframe.addListener=function(a){cvox.Interframe.listeners.push(a)};cvox.Interframe.sendMessageToWindow=function(a,b){var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null);b.postMessage(c,"*")};
-cvox.Interframe.sendMessageToIFrame=function(a,b){if(cvox.Interframe.allowAccessToIframeContentWindow&&b.contentWindow)cvox.Interframe.sendMessageToWindow(a,b.contentWindow);else{var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),d=document.createElement("script");d.type="text/javascript";if(b.hasAttribute("id")&&document.getElementById(b.id)==b)d.innerHTML="document.getElementById(decodeURI('"+encodeURI(b.id)+"')).contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');";
-else{var e="cvox_iframe"+a.id;""===b.className?b.className=e:-1==b.className.indexOf(e)&&(b.className+=" "+e);d.innerHTML="document.getElementsByClassName(decodeURI('"+encodeURI(e)+"'))[0].contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');"}document.head.appendChild(d);window.setTimeout(function(){document.head.removeChild(d)},1E3)}};
-cvox.Interframe.sendMessageToParentWindow=function(a){cvox.Interframe.isIframe()&&(a.sourceId=cvox.Interframe.id,window.parent?cvox.Interframe.sendMessageToWindow(a,window.parent):(a=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),window.location.href="javascript:window.parent.postMessage('"+encodeURI(a)+"', '*');"))};cvox.Interframe.sendIdToIFrame=function(a,b){var c={command:cvox.Interframe.SET_ID,id:a};cvox.Interframe.sendMessageToIFrame(c,b)};
-cvox.Interframe.isIframe=function(){return window!=window.parent};cvox.Interframe.init();cvox.PageSelection=function(a){this.sel_=a.clone();this.sel_.select();this.wasBegin_=!0};
-cvox.PageSelection.prototype.getDescription=function(a,b,c){var d=[];this.sel_.isReversed()!=c.isReversed()?(d=a.getDescription(c,b),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE)):(d=a.getDescription(b,c),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_selected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION),!this.wasBegin_&&this.sel_.absEquals(c.clone().normalize())&&(a=a.getDescription(c,b),a[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),
-a[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE),a[0].pushEarcon(cvox.AbstractEarcons.WRAP),d=a.concat(d)));return d};cvox.PageSelection.prototype.getFullDescription=function(){return[new cvox.NavDescription({text:window.getSelection().toString(),context:cvox.ChromeVox.msgs.getMsg("selection_is")})]};
-cvox.PageSelection.prototype.extend=function(a){this.sel_.directedBefore(a)?this.sel_.end=this.sel_.isReversed()==a.isReversed()?a.end.clone():a.start.clone():this.sel_=a.clone();this.sel_.select();this.wasBegin_=!1;return!this.sel_.absEquals(a)};cvox.BrailleUtil={};cvox.BrailleUtil.ITEM_SEPARATOR=" ";cvox.BrailleUtil.CONTAINER="tag_h1_brl tag_h2_brl tag_h3_brl tag_h4_brl tag_h5_brl tag_h6_brl".split(" ");
-cvox.BrailleUtil.TEMPLATE={base:"c n v r s",aria_role_button:"[n]",aria_role_textbox:"n: v r",input_type_button:"[n]",input_type_checkbox:"n (s)",input_type_email:"n: v r",input_type_number:"n: v r",input_type_password:"n: v r",input_type_search:"n: v r",input_type_submit:"[n]",input_type_text:"n: v r",input_type_tel:"n: v r",input_type_url:"n: v r",tag_button:"[n]",tag_textarea:"n: v r"};cvox.BrailleUtil.ValueSpan=function(a){this.offset=a};cvox.BrailleUtil.ValueSelectionSpan=function(){};
-cvox.BrailleUtil.getName=function(a){return a?cvox.DomUtil.getName(a).trim():""};cvox.BrailleUtil.getRoleMsg=function(a){if(!a)return"";(a=cvox.DomUtil.getRoleMsg(a,cvox.VERBOSITY_VERBOSE))&&(a=cvox.DomUtil.collapseWhitespace(a));a&&0<a.length&&cvox.ChromeVox.msgs.getMsg(a+"_brl")&&(a+="_brl");return a};cvox.BrailleUtil.getRole=function(a){return a?(a=cvox.BrailleUtil.getRoleMsg(a))?cvox.ChromeVox.msgs.getMsg(a):"":""};
-cvox.BrailleUtil.getState=function(a){return a?cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,!0).map(function(a){cvox.ChromeVox.msgs.getMsg(a[0]+"_brl")&&(a[0]+="_brl");return a})):""};cvox.BrailleUtil.getContainer=function(a,b){if(!a||!b)return"";for(var c=cvox.DomUtil.getUniqueAncestors(a,b),d=0,e;e=c[d];d++)if((e=cvox.BrailleUtil.getRoleMsg(e))&&-1!=cvox.BrailleUtil.CONTAINER.indexOf(e))return cvox.ChromeVox.msgs.getMsg(e);return""};
-cvox.BrailleUtil.getValue=function(a){if(!a)return new cvox.Spannable;var b=new cvox.BrailleUtil.ValueSpan(0);if(cvox.DomUtil.isInputTypeText(a)){var c=a.value;"password"===a.type&&(c=c.replace(/./g,"*"));b=new cvox.Spannable(c,b);a===document.activeElement&&b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,a.selectionStart,a.selectionEnd);return b}if(a instanceof HTMLTextAreaElement){var d=new cvox.EditableTextAreaShadow;d.update(a);var e=d.getLineIndex(a.selectionEnd),c=d.getLineStart(e),d=d.getLineEnd(e),
-d=a.value.substring(c,d);b.offset=c;b=new cvox.Spannable(d,b);a===document.activeElement&&(d=Math.max(a.selectionStart-c,0),a=Math.min(a.selectionEnd-c,b.getLength()),b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,d,a));return b}return new cvox.Spannable(cvox.DomUtil.getValue(a),b)};
-cvox.BrailleUtil.getTemplated=function(a,b,c){c=c?c:{};for(var d=c.roleMsg||(b?cvox.DomUtil.getRoleMsg(b,cvox.VERBOSITY_VERBOSE):""),d=cvox.BrailleUtil.TEMPLATE[d]||cvox.BrailleUtil.TEMPLATE.base,e=new cvox.Spannable,f=function(d){switch(d){case "n":return c.name||cvox.BrailleUtil.getName(b);case "r":return c.role||cvox.BrailleUtil.getRole(b);case "s":return c.state||cvox.BrailleUtil.getState(b);case "c":return c.container||cvox.BrailleUtil.getContainer(a,b);case "v":return c.value?new cvox.Spannable(c.value,
-new cvox.BrailleUtil.ValueSpan(0)):cvox.BrailleUtil.getValue(b);default:return d}},g=0;g<d.length;g++){var h=f(d[g]);e.append(h);h.toString()||" "!=d[g+1]||g++}return e.trim()};cvox.MathmlStoreUtil={};cvox.MathmlStoreUtil.matchMathjaxToMathml=function(a){var b=cvox.TraverseMath.getInstance().activeMathmlHost;return b.querySelector("#"+a.id)};cvox.MathmlStoreUtil.retrieveMathjaxExtender=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};cvox.MathmlStoreUtil.retrieveMathjaxLeaf=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};
-cvox.MathmlStoreUtil.checkMathjaxTag=function(a,b){var c=cvox.MathmlStoreUtil.matchMathjaxToMathml(a);return c&&c.tagName.toUpperCase()==b?[c]:[]};cvox.MathmlStoreUtil.checkMathjaxMunder=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MUNDER")};cvox.MathmlStoreUtil.checkMathjaxMover=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MOVER")};cvox.MathmlStoreUtil.checkMathjaxMsub=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUB")};
-cvox.MathmlStoreUtil.checkMathjaxMsup=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUP")};cvox.MathmlStoreUtil.nextSeparatorFunction=function(a){if(a){if(a.match(/^\s+$/))return null;var b=a.replace(/\s/g,"").split("").filter(function(a){return a})}else b=[","];return function(){return 1<b.length?b.shift():b[0]}};cvox.MathmlStoreUtil.mfencedSeparators=function(a,b){var c=cvox.MathmlStoreUtil.nextSeparatorFunction(b);return function(){return c?c():""}};
-cvox.MathmlStoreUtil.contentIterator=function(a,b){var c=0<a.length?cvox.XpathUtil.evalXPath("../../content/*",a[0]):[];return function(){var a=c.shift();return b+(a?a.textContent:"")}};cvox.StoreUtil={};cvox.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e="");return function(){d<c&&(d+=1);return e+" "+d}};cvox.MathmlStoreRules=function(){cvox.MathmlStoreRules.initCustomFunctions_();cvox.MathmlStoreRules.initDefaultRules_();cvox.MathmlStoreRules.initMathjaxRules_();cvox.MathmlStoreRules.initAliases_();cvox.MathmlStoreRules.initSpecializationRules_();cvox.MathmlStoreRules.initSemanticRules_()};goog.addSingletonGetter(cvox.MathmlStoreRules);cvox.MathmlStoreRules.mathStore=cvox.MathmlStore.getInstance();cvox.MathmlStoreRules.mathStore.initialize=cvox.MathmlStoreRules.getInstance;
-cvox.MathmlStoreRules.defineDefaultMathmlRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineDefaultMathmlRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRuleAlias_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRuleAlias,cvox.MathmlStoreRules.mathStore);
-cvox.MathmlStoreRules.addContextFunction_=goog.bind(cvox.MathmlStoreRules.mathStore.contextFunctions.add,cvox.MathmlStoreRules.mathStore.contextFunctions);cvox.MathmlStoreRules.addCustomQuery_=goog.bind(cvox.MathmlStoreRules.mathStore.customQueries.add,cvox.MathmlStoreRules.mathStore.customQueries);
-cvox.MathmlStoreRules.initCustomFunctions_=function(){(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFnodeCounter",cvox.StoreUtil.nodeCounter);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFmfSeparators",cvox.MathmlStoreUtil.mfencedSeparators);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFcontentIterator",cvox.MathmlStoreUtil.contentIterator);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFextender",cvox.MathmlStoreUtil.retrieveMathjaxExtender);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmunder",
-cvox.MathmlStoreUtil.checkMathjaxMunder);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmover",cvox.MathmlStoreUtil.checkMathjaxMover);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsub",cvox.MathmlStoreUtil.checkMathjaxMsub);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsup",cvox.MathmlStoreUtil.checkMathjaxMsup);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFlookupleaf",cvox.MathmlStoreUtil.retrieveMathjaxLeaf)};
-cvox.MathmlStoreRules.initDefaultRules_=function(){(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("math","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mspace","[p] (pause:250)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mstyle","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mpadded","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("merror","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mphantom","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mtext",
-"[t] text(); [p] (pause:200)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mi","[n] text()");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mo","[n] text() (rate:-0.1)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mn","[n] text()");(0,cvox.MathmlStoreRules.defineRule_)("mtext-variant","default.default",'[t] "begin"; [t] @mathvariant (pause:150);[t] text() (pause:150); [t] "end"; [t] @mathvariant (pause:200)',"self::mathml:mtext","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mi-variant",
-"default.default","[t] @mathvariant; [n] text()","self::mathml:mi","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mi-variant","self::mathml:mn","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mo-variant","default.default","[t] @mathvariant; [n] text() (rate:-0.1)","self::mathml:mo","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("ms",'[t] "string" (pitch:0.5, rate:0.5); [t] text()');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msup",
-'[n] ./*[1]; [t] "super";[n] ./*[2] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msubsup",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "super"; [n] ./*[3] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msub",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mover",'[n] ./*[2] (pitch:0.35); [p] (pause:200); [t] "over"; [n] ./*[1]; [p] (pause:400)');
-(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munder",'[n] ./*[2] (pitch:-0.35); [t] "under"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munderover",'[n] ./*[2] (pitch:-0.35); [t] "under and"; [n] ./*[3] (pitch:0.35); [t] "over"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mrow","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msqrt",'[t] "Square root of"; [m] ./* (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mroot",
-'[t] "root of order"; [n] ./*[2]; [t] "of";[n] ./*[1] (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mfrac",' [p] (pause:400); [n] ./*[1] (pitch:0.3); [t] "divided by"; [n] ./*[2] (pitch:-0.3); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-single","default.default",'[t] @open (context:"opening"); [m] ./* (separator:@separators);[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-empty",
-"default.default",'[t] @open (context:"opening"); [m] ./*;[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1",'string(@separators)=" "');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-comma","default.default",'[t] @open (context:"opening"); [m] ./* (separator:"comma");[t] @close (context:"closing")',"self::mathml:mfenced");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-multi","default.default",'[t] @open (context:"opening"); [m] ./* (sepFunc:CTXFmfSeparators,separator:@separators); [t] @close (context:"closing")',
-"self::mathml:mfenced","string-length(string(@separators))>1");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.default",'[t] "matrix"; [m] ./* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.default","[m] ./*","self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mtable",
-"default.superbrief",'[t] count(child::mathml:mtr); [t] "by";[t] count(child::mathml:mtr[1]/mathml:mtd); [t] "matrix";',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.short",'[t] "matrix"; [m] ./*',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.short","[m] ./*","self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.short",'[t] "Element"; [t] count(./preceding-sibling::mathml:mtd)+1;[t] count(./parent::mathml:mtr/preceding-sibling::mathml:mtr)+1;[p] (pause:500); [m] ./*',
-"self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-3",
-"default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[5]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[6]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-2-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[5]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[6]")};
-cvox.MathmlStoreRules.initMathjaxRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("mj-math","default.default","[n] ./*[1]/*[1]/*[1]",'self::span[@class="math"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-leaf","default.default","[n] CQFlookupleaf",'self::span[@class="mi"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mo"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mn"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtext"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-mo-ext","default.default","[n] CQFextender",'self::span[@class="mo"]',"./*[1]/*[1]/text()","./*[1]/*[2]/text()");(0,cvox.MathmlStoreRules.defineRule_)("mj-texatom","default.default","[n] ./*[1]",'self::span[@class="texatom"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msubsup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35);[p] (pause:200); [t] "super"; [n] ./*[1]/*[2]/*[1] (pitch:0.35);[p] (pause:300)','self::span[@class="msubsup"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-msub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub";[n] ./*[1]/*[2]/*[1] (pitch:-0.35); [p] (pause:300)','self::span[@class="msub"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "super";[n] ./*[1]/*[2]/*[1] (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munderover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under and";[n] ./*[1]/*[3]/*[1] (pitch:-0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)',
-'self::span[@class="munderover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munder","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="munder"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="mover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfrac","default.default",'[p] (pause:250); [n] ./*[1]/*[1]/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] ./*[1]/*[2]/*[1] (pitch:-0.3);[p] (pause:400)',
-'self::span[@class="mfrac"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msqrt","default.default",'[t] "Square root of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="msqrt"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mroot","default.default",'[t] "root of order"; [n] ./*[1]/*[4]/*[1]; [t] "of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="mroot"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfenced","default.default",'[t] "opening"; [n] ./*[1]; [m] ./*[position()>1 and position()<last()]; [t] "closing"; [n] ./*[last()]',
-'self::span[@class="mfenced"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtable"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mmultiscripts"]')};
-cvox.MathmlStoreRules.initAliases_=function(){(0,cvox.MathmlStoreRules.defineRuleAlias_)("mspace",'self::span[@class="mspace"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mstyle",'self::span[@class="mstyle"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mpadded",'self::span[@class="mpadded"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("merror",'self::span[@class="merror"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mphantom",'self::span[@class="mphantom"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("ms",
-'self::span[@class="ms"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mrow",'self::span[@class="mrow"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msub",'self::span[@class="msubsup"]',"CQFmathmlmsub");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msup",'self::span[@class="msubsup"]',"CQFmathmlmsup");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-munder",'self::span[@class="munderover"]',"CQFmathmlmunder");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-mover",'self::span[@class="munderover"]',
-"CQFmathmlmover")};
-cvox.MathmlStoreRules.initSpecializationRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] ./*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("cube","default.default",'[n] ./*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=3]");
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("square-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("cube-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',
-"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",
-'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square-sub",'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube-sub",
-'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]")};
-cvox.MathmlStoreRules.initSemanticRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("stree","default.default","[n] ./*[1]","self::stree");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel");(0,cvox.MathmlStoreRules.defineRule_)("variable-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',
-"count(./children/*)>2",'./children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.short",'[t] "equation sequence"; [m] ./children/* (separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("equality",
-"default.default",'[t] "equation"; [t] "left hand side"; [n] children/*[1];[p] (pause:200); [n] text() (pause:200);[t] "right hand side"; [n] children/*[2]','self::relseq[@role="equality"]',"count(./children/*)=2");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality","default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/identifier or ./children/number");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality2",
-"default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/function or ./children/appl");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default","[m] children/* (separator:./text())","self::relseq");(0,cvox.MathmlStoreRules.defineRule_)("binary-operation","default.default","[m] children/* (separator:text());","self::infixop");(0,cvox.MathmlStoreRules.defineRule_)("variable-addition",
-"default.default",'[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (separator:./text())','self::infixop[@role="addition"]',"count(children/*)>2",'children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-addition","default.default",'[t] "sum with,"; [t] count(./children/*); [t] ", summands";[p] (pause:400); [m] ./children/* (separator:./text())','self::infixop[@role="addition"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("prefix",
-"default.default",'[t] "prefix"; [n] text(); [t] "of" (pause 150);[n] children/*[1]',"self::prefixop");(0,cvox.MathmlStoreRules.defineRule_)("negative","default.default",'[t] "negative"; [n] children/*[1]',"self::prefixop",'self::prefixop[@role="negative"]');(0,cvox.MathmlStoreRules.defineRule_)("postfix","default.default",'[n] children/*[1]; [t] "postfix"; [n] text() (pause 300)',"self::postfixop");(0,cvox.MathmlStoreRules.defineRule_)("identifier","default.default","[n] text()","self::identifier");
-(0,cvox.MathmlStoreRules.defineRule_)("number","default.default","[n] text()","self::number");(0,cvox.MathmlStoreRules.defineRule_)("fraction","default.default",'[p] (pause:250); [n] children/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] children/*[2] (pitch:-0.3); [p] (pause:400)',"self::fraction");(0,cvox.MathmlStoreRules.defineRule_)("superscript","default.default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript");(0,cvox.MathmlStoreRules.defineRule_)("subscript",
-"default.default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',"self::subscript");(0,cvox.MathmlStoreRules.defineRule_)("ellipsis","default.default",'[p] (pause:200); [t] "dot dot dot"; [p] (pause:300)',"self::punct",'self::punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("fence-single","default.default","[n] text()","self::punct",'self::punct[@role="openfence"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="closefence"]');
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="vbar"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="application"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-punct","default.default","[p] (pause:200);","self::punct");(0,cvox.MathmlStoreRules.defineRule_)("omit-empty","default.default","","self::empty");(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close","default.default",'[p] (pause:100); [t] "open"; [n] children/*[1]; [p] (pause:200);[t] "close"',
-'self::fenced[@role="leftright"]');(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close-in-appl","default.default","[p] (pause:100); [n] children/*[1]; [p] (pause:200);",'self::fenced[@role="leftright"]',"./parent::children/parent::appl");(0,cvox.MathmlStoreRules.defineRule_)("fences-neutral","default.default",'[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);',"self::fenced",'self::fenced[@role="neutral"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-fences","default.default",
-"[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced");(0,cvox.MathmlStoreRules.defineRule_)("matrix","default.default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix");(0,cvox.MathmlStoreRules.defineRule_)("matrix-row","default.default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]');(0,cvox.MathmlStoreRules.defineRule_)("matrix-cell","default.default","[n] children/*[1]",'self::cell[@role="matrix"]');
-(0,cvox.MathmlStoreRules.defineRule_)("vector","default.default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',"self::vector");(0,cvox.MathmlStoreRules.defineRule_)("cases","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases");(0,cvox.MathmlStoreRules.defineRule_)("cases-row","default.default","[m] children/*",'self::row[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("cases-cell",
-"default.default","[n] children/*[1]",'self::cell[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("row","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row"');(0,cvox.MathmlStoreRules.defineRule_)("cases-end","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"',"self::cases","following-sibling::*");(0,cvox.MathmlStoreRules.defineRule_)("multiline","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',
-"self::multiline");(0,cvox.MathmlStoreRules.defineRule_)("line","default.default","[m] children/*","self::line");(0,cvox.MathmlStoreRules.defineRule_)("table","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table");(0,cvox.MathmlStoreRules.defineRule_)("table-row","default.default","[m] children/* (pause:100)",'self::row[@role="table"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("cases-cell",'self::cell[@role="table"]');(0,cvox.MathmlStoreRules.defineRule_)("end-punct",
-"default.default","[m] children/*; [p] (pause:300)","self::punctuated",'@role="endpunct"');(0,cvox.MathmlStoreRules.defineRule_)("start-punct","default.default","[n] content/*[1]; [p] (pause:200); [m] children/*","self::punctuated",'@role="startpunct"');(0,cvox.MathmlStoreRules.defineRule_)("integral-punct","default.default","[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2)","self::punctuated",'@role="integral"');(0,cvox.MathmlStoreRules.defineRule_)("punctuated","default.default","[m] children/* (pause:100)",
-"self::punctuated");(0,cvox.MathmlStoreRules.defineRule_)("function","default.default","[n] text()","self::function");(0,cvox.MathmlStoreRules.defineRule_)("appl","default.default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl");(0,cvox.MathmlStoreRules.defineRule_)("limboth","default.default",'[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3]',"self::limboth");(0,cvox.MathmlStoreRules.defineRule_)("sum-only","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::limboth",'self::limboth[@role="sum"]');(0,cvox.MathmlStoreRules.defineRule_)("limlower","default.default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower");(0,cvox.MathmlStoreRules.defineRule_)("limupper","default.default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',"self::limupper");(0,cvox.MathmlStoreRules.defineRule_)("largeop","default.default","[n] text()","self::largeop");(0,cvox.MathmlStoreRules.defineRule_)("bigop","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::bigop");(0,cvox.MathmlStoreRules.defineRule_)("integral","default.default","[n] children/*[1]; [p] (pause 100); [n] children/*[2]; [p] (pause 200);[n] children/*[3] (rate:0.35);","self::integral");(0,cvox.MathmlStoreRules.defineRule_)("sqrt","default.default",'[t] "Square root of"; [n] children/*[1] (rate:0.2); [p] (pause:400)',"self::sqrt");(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] children/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::superscript","children/*[2][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("text-no-mult","default.default","[n] children/*[1]; [p] (pause:200); [n] children/*[2]","self::infixop","children/text")};cvox.AbstractShifter=function(){this.isSubnavigating_=!1};cvox.AbstractShifter.prototype.begin=function(a,b){return this.currentWalker_.begin(b)};cvox.AbstractShifter.prototype.makeLessGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.makeMoreGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.ensureSubnavigating=function(){!1==this.isSubnavigating_&&(this.makeMoreGranular(),this.isSubnavigating_=!0)};
-cvox.AbstractShifter.prototype.ensureNotSubnavigating=function(){!0==this.isSubnavigating_&&(this.isSubnavigating_=!1,this.makeLessGranular())};cvox.AbstractShifter.prototype.isSubnavigating=function(){return this.isSubnavigating_};cvox.AbstractShifter.prototype.hasAction=function(a){return this.currentWalker_.hasAction(a)};cvox.AbstractShifter.prototype.performAction=function(a,b){return this.currentWalker_.performAction(a,b)};cvox.MathShifter=function(a){cvox.AbstractShifter.call(this);this.level_=0;this.bumped_=this.direction_=!1;cvox.TraverseMath.getInstance().initialize(a.start.node)};goog.inherits(cvox.MathShifter,cvox.AbstractShifter);cvox.MathShifter.prototype.next=function(a){var b=a.isReversed();this.bumped_=!cvox.TraverseMath.getInstance().nextSibling(b);return(b=cvox.TraverseMath.getInstance().getAttachedActiveNode())?cvox.CursorSelection.fromNode(b):a};
-cvox.MathShifter.prototype.sync=function(a){var b=cvox.TraverseMath.getInstance().getAttachedActiveNode();return b?cvox.CursorSelection.fromNode(b):a};cvox.MathShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("math_shifter")};cvox.MathShifter.prototype.getDescription=function(){var a=cvox.SpeechRuleEngine.getInstance().evaluateNode(cvox.TraverseMath.getInstance().activeNode);this.bumped_&&0<a.length&&a[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE);return a};
-cvox.MathShifter.prototype.getBraille=function(a,b){return new cvox.NavBraille({text:cvox.BrailleUtil.getTemplated(a.start.node,b.start.node)})};cvox.MathShifter.prototype.getGranularityMsg=function(){return this.direction_?"up to level "+this.level_:"down to level "+this.level_};cvox.MathShifter.prototype.makeLessGranular=function(){this.level_=0<this.level_?this.level_-1:0;this.direction_=!0;this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!0)};
-cvox.MathShifter.prototype.makeMoreGranular=function(){this.direction_=!1;(this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!1))||this.level_++};
-cvox.MathShifter.create=function(a){if(cvox.DomPredicates.mathPredicate(cvox.DomUtil.getAncestors(a.start.node))){var b=cvox.DomUtil.getContainingMath(a.end.node);cvox.TraverseMath.getInstance().initialize(b);cvox.SpeechRuleEngine.getInstance().parameterize(cvox.MathmlStore.getInstance());b=cvox.MathStore.createDynamicConstraint(cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style);cvox.SpeechRuleEngine.getInstance().setDynamicConstraint(b);return new cvox.MathShifter(a)}return null};cvox.TableUtil={};cvox.TableUtil.checkIfHeader=function(a){return"TH"==a.tagName||a.hasAttribute("scope")||a.hasAttribute("role")&&("rowheader"==a.getAttribute("role")||"columnheader"==a.getAttribute("role"))};
-cvox.TableUtil.determineColGroups=function(a){var b=[];if(0==a.length)return b;for(var c=0;c<a.length;c++){var d=a[c],e=cvox.TableUtil.getColNodes(d);if(0<e.length)for(d=0;d<e.length;d++){var f=e[d];if(f.hasAttribute("span"))for(var f=parseInt(f.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}else if(d.hasAttribute("span"))for(f=parseInt(d.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}return b};cvox.TableUtil.pushIfNotContained=function(a,b){-1==a.indexOf(b)&&a.push(b)};
-cvox.TableUtil.getChildRows=function(a){return cvox.XpathUtil.evalXPath('child::tbody/tr | child::thead/tr | child::*[attribute::role="row"]',a)};cvox.TableUtil.getChildCells=function(a){return cvox.XpathUtil.evalXPath('child::td | child::th | child::*[attribute::role="gridcell"] |child::*[attribute::role="rowheader"] |child::*[attribute::role="columnheader"]',a)};cvox.TableUtil.getCellWithID=function(a,b){return cvox.XpathUtil.evalXPath("id('"+b+"')",a)};
-cvox.TableUtil.getColGroups=function(a){return cvox.XpathUtil.evalXPath("child::colgroup",a)};cvox.TableUtil.getColNodes=function(a){return cvox.XpathUtil.evalXPath("child::col",a)};function ShadowTableNode(){}ShadowTableNode.prototype.rowHeaderCells=[];ShadowTableNode.prototype.colHeaderCells=[];cvox.TraverseTable=function(a){this.activeTable_=null;this.shadowTable_=[];this.candidateHeaders_=[];this.idToShadowNode_=[];this.initialize(a)};cvox.TraverseTable.prototype.colCount=null;cvox.TraverseTable.prototype.rowCount=null;cvox.TraverseTable.prototype.tableRowHeaders=null;cvox.TraverseTable.prototype.tableColHeaders=null;
-cvox.TraverseTable.prototype.initialize=function(a){a&&a!=this.activeTable_&&(this.activeTable_=a,this.currentCellCursor=null,this.tableRowHeaders=[],this.tableColHeaders=[],this.buildShadowTable_(),this.colCount=this.shadowColCount_(),this.rowCount=this.countRows_(),this.findHeaderCells_(),this.activeTable_.addEventListener("DOMSubtreeModified",goog.bind(function(){this.buildShadowTable_();this.colCount=this.shadowColCount_();this.rowCount=this.countRows_();this.tableRowHeaders=[];this.tableColHeaders=
-[];this.findHeaderCells_();0==this.colCount&&0==this.rowCount||null!=this.getCell()||this.attachCursorToNearestCell_()},this),!1))};
-cvox.TraverseTable.prototype.findNearestCursor=function(a){for(;a.firstElementChild&&"TABLE"!=a.firstElementChild.tagName&&!cvox.AriaUtil.isGrid(a.firstElementChild);)a=a.firstElementChild;for(;!cvox.DomPredicates.cellPredicate(cvox.DomUtil.getAncestors(a));)if(a=cvox.DomUtil.directedNextLeafNode(a),!cvox.DomUtil.getContainingTable(a,{allowCaptions:!0}))return null;for(var b=0;b<this.rowCount;++b)for(var c=0;c<this.colCount;++c)if(this.shadowTable_[b][c]&&cvox.DomUtil.isDescendantOfNode(a,this.shadowTable_[b][c].activeCell))return[b,
-c];return null};cvox.TraverseTable.prototype.attachCursorToNearestCell_=function(){if(this.currentCellCursor){var a=this.currentCellCursor,b=this.shadowTable_[a[0]];if(b)this.currentCellCursor=[a[0],b.length-1];else if(b=this.shadowTable_.length,0==b)this.currentCellCursor=null;else{var c=this.shadowTable_[b-1][a[1]];c?this.currentCellCursor=[b-1,a[1]]:this.goToLastCell()}}else this.goToLastCell()};
-cvox.TraverseTable.prototype.buildShadowTable_=function(){this.shadowTable_=[];for(var a=cvox.TableUtil.getChildRows(this.activeTable_),b=null,c=null,d=cvox.TableUtil.getColGroups(this.activeTable_),d=cvox.TableUtil.determineColGroups(d),e=0;e<a.length;e++)this.shadowTable_.push([]);for(e=0;e<a.length;e++)for(var f=cvox.TableUtil.getChildCells(a[e]),g=0,h=0;g<f.length;)if(null==this.shadowTable_[e][h]){var k=f[g],l=1,m=1;k.hasAttribute("colspan")&&(l=parseInt(k.getAttribute("colspan"),10),isNaN(l)||
-0>=l)&&(l=1);k.hasAttribute("rowspan")&&(m=parseInt(k.getAttribute("rowspan"),10),isNaN(m)||0>=m)&&(m=1);for(var p=0;p<m;p++)for(var q=0;q<l;q++){var n=new ShadowTableNode;0==p&&0==q?(n.spanned=!1,n.rowSpan=!1,n.colSpan=!1):(n.spanned=!0,n.rowSpan=1<m,n.colSpan=1<l);n.i=e;n.j=h;n.activeCell=k;n.rowHeaderCells=[];n.colHeaderCells=[];n.isRowHeader=!1;n.isColHeader=!1;cvox.TableUtil.checkIfHeader(n.activeCell)?this.candidateHeaders_.push(n):n.activeCell.hasAttribute("headers")&&this.candidateHeaders_.push(n);
-null==b?(b=a[e].parentNode,c=0):a[e].parentNode!=b&&(b=a[e].parentNode,c+=1);n.rowGroup=c;n.colGroup=0<d.length?d[h]:0;n.spanned||null!=k.id&&(this.idToShadowNode_[k.id]=n);this.shadowTable_[e+p][h+q]=n}h+=l;g++}else h+=1;return this.shadowTable_};
-cvox.TraverseTable.prototype.findHeaderCells_=function(){for(var a=0;a<this.candidateHeaders_.length;a++){var b=this.candidateHeaders_[a],c=b.activeCell,d=null,e=null;if(!b.spanned){"TH"!=c.tagName||c.hasAttribute("scope")?c.hasAttribute("scope")?e=c.getAttribute("scope"):c.hasAttribute("role")&&"rowheader"==c.getAttribute("role")?e="row":c.hasAttribute("role")&&"columnheader"==c.getAttribute("role")&&(e="col"):(0<b.j?"TH"==this.shadowTable_[b.i][b.j-1].activeCell.tagName&&(d="col"):b.j<this.shadowTable_[b.i].length-
-1?"TH"==this.shadowTable_[b.i][b.j+1].activeCell.tagName&&(d="col"):d="col",null==d&&(0<b.i?"TH"==this.shadowTable_[b.i-1][b.j].activeCell.tagName&&(d="row"):b.i<this.shadowTable_.length-1?"TH"==this.shadowTable_[b.i+1][b.j].activeCell.tagName&&(d="row"):d="row"));if("row"==e||"row"==d){b.isRowHeader=!0;for(d=b.j;d<this.shadowTable_[b.i].length;d++)e=this.shadowTable_[b.i][d],e.rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("col"==e||"col"==d){b.isColHeader=!0;for(e=b.i;e<this.shadowTable_.length;e++){d=
-this.shadowTable_[e][b.j];if(null==d)break;d.colHeaderCells.push(c)}this.tableColHeaders.push(c)}else if("rowgroup"==e){b.isRowHeader=!0;for(var f=b.rowGroup,d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].rowHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length&&this.shadowTable_[e][0].rowGroup==f;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("colgroup"==e){b.isColHeader=!0;f=b.colGroup;
-for(d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].colGroup==f&&this.shadowTable_[b.i][d].colHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].colGroup==f&&this.shadowTable_[e][d].colHeaderCells.push(c);this.tableColHeaders.push(c)}c.hasAttribute("headers")&&this.findAttrbHeaders_(b);c.hasAttribute("aria-describedby")&&this.findAttrbDescribedBy_(b)}}};
-cvox.TraverseTable.prototype.findAttrbHeaders_=function(a){for(var b=a.activeCell,c=b.getAttribute("headers").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];if(!cvox.TableUtil.checkIfHeader(g.activeCell)){var h=Math.abs(g.i-a.i),k=Math.abs(g.j-a.j);0==h||h<k?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,g.activeCell)):
-(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell))}}};
-cvox.TraverseTable.prototype.findAttrbDescribedBy_=function(a){for(var b=a.activeCell,c=b.getAttribute("aria-describedby").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];cvox.TableUtil.checkIfHeader(g.activeCell)||(g.activeCell.hasAttribute("role")&&"rowheader"==g.activeCell.getAttribute("role")?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,
-g.activeCell)):g.activeCell.hasAttribute("role")&&"columnheader"==g.activeCell.getAttribute("role")&&(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell)))}};cvox.TraverseTable.prototype.getCell=function(){if(!this.currentCellCursor||!this.shadowTable_)return null;var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a&&a.activeCell};
-cvox.TraverseTable.prototype.getCellAt=function(a){return a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]&&(a=this.shadowTable_[a[0]][a[1]],null!=a)?a.activeCell:null};cvox.TraverseTable.prototype.getCellRowHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.rowHeaderCells};cvox.TraverseTable.prototype.getCellColHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.colHeaderCells};
-cvox.TraverseTable.prototype.isSpanned=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.spanned};cvox.TraverseTable.prototype.isRowHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isRowHeader};cvox.TraverseTable.prototype.isColHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isColHeader};
-cvox.TraverseTable.prototype.getCol=function(){for(var a=[],b=0;b<this.shadowTable_.length;b++)if(this.shadowTable_[b][this.currentCellCursor[1]]){var c=this.shadowTable_[b][this.currentCellCursor[1]];if(c.colSpan&&c.rowSpan){var d=a[a.length-1];d!=c.activeCell&&a.push(c.activeCell)}else!c.colSpan&&c.rowSpan||a.push(c.activeCell)}return a};cvox.TraverseTable.prototype.summaryText=function(){return this.activeTable_.hasAttribute("summary")?this.activeTable_.getAttribute("summary"):null};
-cvox.TraverseTable.prototype.shadowColCount_=function(){for(var a=0,b=0;b<this.shadowTable_.length;b++)this.shadowTable_[b].length>a&&(a=this.shadowTable_[b].length);return a};cvox.TraverseTable.prototype.countRows_=function(){var a=cvox.TableUtil.getChildRows(this.activeTable_);return a.length};cvox.TraverseTable.prototype.nextRow=function(){return this.currentCellCursor?this.goToRow(this.currentCellCursor[0]+1):this.goToRow(0)};
-cvox.TraverseTable.prototype.nextCol=function(){return this.currentCellCursor?this.goToCol(this.currentCellCursor[1]+1):this.goToCol(0)};cvox.TraverseTable.prototype.goToRow=function(a){return null!=this.shadowTable_[a]?(this.currentCellCursor=null==this.currentCellCursor?[a,0]:[a,this.currentCellCursor[1]],!0):!1};cvox.TraverseTable.prototype.goToCol=function(a){if(0>a||a>=this.colCount)return!1;this.currentCellCursor=null==this.currentCellCursor?[0,a]:[this.currentCellCursor[0],a];return!0};
-cvox.TraverseTable.prototype.goToCell=function(a){if(a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]){var b=this.shadowTable_[a[0]][a[1]];if(null!=b)return this.currentCellCursor=a,!0}return!1};cvox.TraverseTable.prototype.goToLastCell=function(){var a=this.shadowTable_.length;if(0==a)return!1;var b=this.shadowTable_[a-1],a=[a-1,b.length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};
-cvox.TraverseTable.prototype.goToRowLastCell=function(){var a=this.currentCellCursor[0],a=[a,this.shadowTable_[a].length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TraverseTable.prototype.goToColLastCell=function(){var a=this.getCol(),a=[a.length-1,this.currentCellCursor[1]],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TableWalker=function(){this.tt=new cvox.TraverseTable(null)};goog.inherits(cvox.TableWalker,cvox.AbstractWalker);cvox.TableWalker.prototype.next=function(a){return this.nextRow(a)};cvox.TableWalker.prototype.sync=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell(a)},this))};
-cvox.TableWalker.prototype.getDescription=function(a,b){var c=this.syncPosition_(b);if(!c)return[];this.tt.goToCell(c);c=cvox.DescriptionUtil.getCollectionDescription(a,b);0==c.length&&c.push(new cvox.NavDescription({annotation:cvox.ChromeVox.msgs.getMsg("empty_cell")}));return c};cvox.TableWalker.prototype.getBraille=function(a,b){new cvox.NavBraille({});var c=this.syncPosition_(b);if(c){var d=cvox.BrailleUtil.getTemplated(a.start.node,b.start.node);d.append(" "+ ++c[0]+"/"+ ++c[1])}return new cvox.NavBraille({text:d})};
-cvox.TableWalker.prototype.goToFirstCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToCell([0,0])},this))};cvox.TableWalker.prototype.goToLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToLastCell()},this))};cvox.TableWalker.prototype.goToRowFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([a[0],0])},this))};
-cvox.TableWalker.prototype.goToRowLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToRowLastCell()},this))};cvox.TableWalker.prototype.goToColFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([0,a[1]])},this))};cvox.TableWalker.prototype.goToColLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToColLastCell()},this))};
-cvox.TableWalker.prototype.nextRow=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0]+(a.isReversed()?-1:1),b[1]])},this))};cvox.TableWalker.prototype.nextCol=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0],b[1]+(a.isReversed()?-1:1)])},this))};cvox.TableWalker.prototype.announceHeaders=function(a){cvox.ChromeVox.tts.speak(this.getHeaderText_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);return a};
-cvox.TableWalker.prototype.speakTableLocation=function(a){cvox.ChromeVox.navigationManager.speakDescriptionArray(this.getLocationDescription_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,null);return a};cvox.TableWalker.prototype.exitShifterContent=function(a){a=this.getTableNode_(a);if(!a)return null;a=cvox.DomUtil.directedNextLeafNode(a,!1);return cvox.CursorSelection.fromNode(a)};
-cvox.TableWalker.prototype.getHeaderText_=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))&&this.tt.goToCell(a)?this.getRowHeaderText_(a)+" "+this.getColHeaderText_(a):cvox.ChromeVox.msgs.getMsg("not_inside_table")};cvox.TableWalker.prototype.getLocationDescription_=function(a){a=this.getLocationInfo(a);return null==a?null:[new cvox.NavDescription({text:cvox.ChromeVox.msgs.getMsg("table_location",a)})]};
-cvox.TableWalker.prototype.getRowHeaderText_=function(a){var b="",c=this.tt.getCellRowHeaders();if(0==c.length)return c=this.tt.getCellAt([a[0],0]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("row_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("row_header")+b};
-cvox.TableWalker.prototype.getColHeaderText_=function(a){var b="",c=this.tt.getCellColHeaders();if(0==c.length)return c=this.tt.getCellAt([0,a[1]]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("column_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("column_header")+
-b};cvox.TableWalker.prototype.getLocationInfo=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))?[a[0]+1,this.tt.rowCount,a[1]+1,this.tt.colCount].map(function(a){return cvox.ChromeVox.msgs.getNumber(a)}):null};
-cvox.TableWalker.prototype.goTo_=function(a,b){this.tt.initialize(this.getTableNode_(a));var c=this.tt.findNearestCursor(a.end.node);if(!c)return null;this.tt.goToCell(c);return b(c)?cvox.CursorSelection.fromNode(this.tt.getCell()).setReversed(a.isReversed()):null};cvox.TableWalker.prototype.getTableNode_=function(a){return cvox.DomUtil.getContainingTable(a.end.node)};cvox.TableWalker.prototype.syncPosition_=function(a){var b=this.getTableNode_(a);this.tt.initialize(b);return this.tt.findNearestCursor(a.end.node)};cvox.ColumnWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.ColumnWalker,cvox.TableWalker);cvox.ColumnWalker.prototype.next=function(a){return this.nextCol(a)};cvox.ColumnWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("column_granularity")};cvox.RowWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.RowWalker,cvox.TableWalker);cvox.RowWalker.prototype.next=function(a){return this.nextRow(a)};cvox.RowWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("row_granularity")};cvox.TableShifter=function(){this.rowWalker_=new cvox.RowWalker;this.columnWalker_=new cvox.ColumnWalker;this.currentWalker_=this.rowWalker_;this.bumpedEdge_=!1;this.begin_=!0;cvox.AbstractShifter.call(this)};goog.inherits(cvox.TableShifter,cvox.AbstractShifter);cvox.TableShifter.prototype.next=function(a){var b=this.currentWalker_.next(a);return b?b:(this.bumpedEdge_=!0,a)};
-cvox.TableShifter.prototype.sync=function(a){return"TABLE"==a.start.node.tagName?a.isReversed()?this.currentWalker_.goToLastCell(a):this.currentWalker_.goToFirstCell(a):this.currentWalker_.sync(a)};cvox.TableShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("table_shifter")};
-cvox.TableShifter.prototype.getDescription=function(a,b){var c=this.currentWalker_.getDescription(a,b);if(0<c.length&&(this.bumpedEdge_&&(c[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE),this.bumpedEdge_=!1),this.begin_)){var d=this.currentWalker_.tt.summaryText(),e=this.currentWalker_.getLocationInfo(b);null!=e&&c.push(new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("table_location",e),text:"",annotation:d?d+" ":""}));this.currentWalker_.tt.isSpanned()&&c.push(new cvox.NavDescription({text:"",
-annotation:cvox.ChromeVox.msgs.getMsg("spanned")}));this.begin_=!1}return c};cvox.TableShifter.prototype.getBraille=function(a,b){return this.currentWalker_.getBraille(a,b)};cvox.TableShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};cvox.TableShifter.prototype.makeLessGranular=function(){cvox.TableShifter.superClass_.makeLessGranular.call(this);this.currentWalker_=this.rowWalker_};
-cvox.TableShifter.prototype.makeMoreGranular=function(){cvox.TableShifter.superClass_.makeMoreGranular.call(this);this.currentWalker_=this.columnWalker_};cvox.TableShifter.create=function(a){a=cvox.DomUtil.getAncestors(a.start.node);return cvox.DomPredicates.tablePredicate(a)&&!cvox.DomPredicates.captionPredicate(a)?new cvox.TableShifter:null};cvox.NavigationHistory=function(){this.reset_()};cvox.NavigationHistory.MAX_HISTORY_LEN_=30;cvox.NavigationHistory.prototype.reset_=function(){var a=document.body;this.history_=[a];this.arrivedValid_=!0};cvox.NavigationHistory.prototype.update=function(a){var b=this.history_[0];a&&a!=b&&this.history_.unshift(a);this.history_.length>cvox.NavigationHistory.MAX_HISTORY_LEN_&&this.history_.pop();this.arrivedValid_=this.isValidNode_(a)};
-cvox.NavigationHistory.prototype.becomeInvalid=function(a){this.clean_();return this.arrivedValid_?!this.isValidNode_(a):(this.arrivedValid_=!0,!1)};cvox.NavigationHistory.prototype.revert=function(a){var b=document.activeElement;b!=document.body&&this.isValidNode_(b)&&this.update(b);if(a)for(;0<this.history_.length;){b=this.history_[0];if(a(b))break;this.history_.shift()}return{current:this.history_[0],previous:this.history_[1]}};
-cvox.NavigationHistory.prototype.clean_=function(){for(var a=!1,b=this.history_.length-1;0<=b;b--){var c=this.isValidNode_(this.history_[b]);c||(this.history_.splice(b,1),a=!0)}return a};cvox.NavigationHistory.prototype.isValidNode_=function(a){return cvox.DomUtil.isAttachedToDocument(a)&&cvox.DomUtil.isVisible(a)?!0:!1};cvox.TraverseContent=function(a){this.currentDomObj=null!=a?a:document.body;var b=document.createRange();try{b.selectNode(this.currentDomObj),this.startCursor_=new cvox.Cursor(b.startContainer,b.startOffset,cvox.TraverseUtil.getNodeText(b.startContainer)),this.endCursor_=new cvox.Cursor(b.endContainer,b.endOffset,cvox.TraverseUtil.getNodeText(b.endContainer))}catch(c){window.console.log("Error: Unselectable node:"),window.console.log(a)}};goog.addSingletonGetter(cvox.TraverseContent);
-cvox.TraverseContent.prototype.lastSelectionWasWhitespace=!1;cvox.TraverseContent.prototype.skipWhitespace=!1;cvox.TraverseContent.prototype.skipInvalidSelections=!0;cvox.TraverseContent.prototype.breakAtLinks=!0;cvox.TraverseContent.kCharacter="character";cvox.TraverseContent.kWord="word";cvox.TraverseContent.kSentence="sentence";cvox.TraverseContent.kLine="line";cvox.TraverseContent.kParagraph="paragraph";
-cvox.TraverseContent.kAllGrains=[cvox.TraverseContent.kParagraph,cvox.TraverseContent.kSentence,cvox.TraverseContent.kLine,cvox.TraverseContent.kWord,cvox.TraverseContent.kCharacter];cvox.TraverseContent.prototype.syncToCursorSelection=function(a){this.startCursor_=a.start.clone();this.endCursor_=a.end.clone()};cvox.TraverseContent.prototype.getCurrentCursorSelection=function(){return new cvox.CursorSelection(this.startCursor_,this.endCursor_)};
-cvox.TraverseContent.prototype.updateSelection=function(){cvox.TraverseUtil.setSelection(this.startCursor_,this.endCursor_);cvox.SelectionUtil.scrollToSelection(window.getSelection())};cvox.TraverseContent.prototype.getCurrentRange=function(){var a=document.createRange();try{a.setStart(this.startCursor_.node,this.startCursor_.index),a.setEnd(this.endCursor_.node,this.endCursor_.index)}catch(b){console.log("Invalid range ")}return a};cvox.TraverseContent.prototype.getCurrentText=function(){return cvox.SelectionUtil.getRangeText(this.getCurrentRange())};
-cvox.TraverseContent.prototype.collapseToEnd=function(){this.startCursor_=this.endCursor_.clone()};cvox.TraverseContent.prototype.collapseToStart=function(){this.endCursor_=this.startCursor_.clone()};
-cvox.TraverseContent.prototype.moveNext=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getNextWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getNextChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getNextParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getNextLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.moveNext(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};
-cvox.TraverseContent.prototype.movePrev=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getPreviousWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getPreviousChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getPreviousParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getPreviousLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.movePrev(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};cvox.TraverseContent.prototype.getBreakTags=function(){return{A:this.breakAtLinks,BR:!0,HR:!0}};
-cvox.TraverseContent.prototype.nextElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.moveNext(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};
-cvox.TraverseContent.prototype.prevElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.movePrev(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};cvox.TraverseContent.prototype.reset=function(){window.getSelection().removeAllRanges()};cvox.AbstractSelectionWalker=function(){this.objWalker_=new cvox.BareObjectWalker;this.tc_=cvox.TraverseContent.getInstance();this.grain=""};goog.inherits(cvox.AbstractSelectionWalker,cvox.AbstractWalker);
-cvox.AbstractSelectionWalker.prototype.next=function(a){var b=a.isReversed();this.tc_.syncToCursorSelection(a.clone().setReversed(!1));var c=b?this.tc_.prevElement(this.grain):this.tc_.nextElement(this.grain);if(null==c)return this.objWalker_.next(a);var c=this.tc_.getCurrentCursorSelection().setReversed(b),d=this.objWalker_.next(a),d=d?d.setReversed(b):null;return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||
-cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.sync=function(a){var b=a.isReversed(),c=null;if(a.start.equals(a.end)&&"Text"!=a.start.node.constructor.name){for(c=a.start.node;c&&cvox.DomUtil.directedFirstChild(c,b)&&!cvox.TraverseUtil.treatAsLeafNode(c);){for(var d=cvox.DomUtil.directedFirstChild(c,b);d;)if(cvox.DomUtil.isVisible(d,{checkAncestors:!1,checkDescendants:!1})){c=d;break}else d=cvox.DomUtil.directedNextSibling(d,b);if(!d)break}c=cvox.CursorSelection.fromNode(c)}else c=a.clone(),b?c.start=c.end:
-c.end=c.start;c=this.next(c.setReversed(!1));d=(d=this.objWalker_.sync(a))?d.setReversed(b):null;if(!c)return d;c.setReversed(b);return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.getDescription=function(a,b){var c=cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getUniqueAncestors(a.end.node,b.start.node),!0,cvox.ChromeVox.verbosity);c.text=b.getText()||c.text;return[c]};cvox.AbstractSelectionWalker.prototype.getBraille=function(a,b){var c=b.absStart().node,d=cvox.TraverseUtil.getNodeText(c),e=new cvox.Spannable(d);e.setSpan(c,0,d.length);return new cvox.NavBraille({text:e,startIndex:b.absStart().index,endIndex:b.absEnd().index})};cvox.CharacterWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kCharacter};goog.inherits(cvox.CharacterWalker,cvox.AbstractSelectionWalker);cvox.CharacterWalker.prototype.getDescription=function(a,b){var c=cvox.CharacterWalker.superClass_.getDescription.call(this,a,b);c.forEach(function(a){a.personality||(a.personality={});a.personality.phoneticCharacters=!0});return c};cvox.CharacterWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("character_granularity")};cvox.GroupUtil={};cvox.GroupUtil.MAX_CHARCOUNT_=1500;cvox.GroupUtil.BREAKOUT_SELECTOR_='blockquote,button,code,form,frame,h1,h2,h3,h4,h5,h6,hr,iframe,input,object,ol,p,pre,select,table,tr,ul,math,span.math,[role~="alert alertdialog button checkbox combobox dialog log marquee menubar progressbar radio radiogroup scrollbar slider spinbutton status tab tabpanel textbox toolbar tooltip treeitem article document group heading img list math region row separator"]';
-cvox.GroupUtil.isLeafNode=function(a){if("LABEL"==a.tagName)return cvox.DomUtil.isLeafNode(a);if(cvox.DomUtil.isLeafNode(a))return!0;if(!cvox.DomUtil.isSemanticElt(a))for(var b=a.querySelectorAll(cvox.GroupUtil.BREAKOUT_SELECTOR_),c=0;c<b.length;++c)if(cvox.DomUtil.hasContent(b[c]))return!1;if(cvox.AriaUtil.isCompositeControl(a)&&!cvox.DomUtil.isFocusable(a))return!1;a=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a));return a.length>cvox.GroupUtil.MAX_CHARCOUNT_||
-""===a.replace(/\s/g,"")?!1:!0};cvox.GroupWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.GroupWalker,cvox.AbstractNodeWalker);cvox.GroupWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getCollectionDescription(a,b)};cvox.GroupWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};cvox.GroupWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("group_strategy")};cvox.GroupWalker.prototype.stopNodeDescent=function(a){return cvox.GroupUtil.isLeafNode(a)};cvox.StructuralLineWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kLine};goog.inherits(cvox.StructuralLineWalker,cvox.AbstractSelectionWalker);cvox.StructuralLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("structural_line")};
-cvox.StructuralLineWalker.prototype.getDescription=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getDescription.call(this,a,b);c[0].text=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index)+c[0].text;return c};
-cvox.StructuralLineWalker.prototype.getBraille=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getBraille.call(this,a,b),d=this.objWalker_.sync(b).absStart().node,e=a.absEnd().node,f=void 0;b.start.equals(b.end)||cvox.DomPredicates.editTextPredicate([d])||(f=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index),f+=b.getText());e=cvox.BrailleUtil.getTemplated(e,d,{name:f});e.setSpan(d,0,e.getLength());c.text=e;c.startIndex=0;c.endIndex=0;return c};cvox.LayoutLineWalker=function(){this.subWalker_=new cvox.StructuralLineWalker};goog.inherits(cvox.LayoutLineWalker,cvox.AbstractWalker);cvox.LayoutLineWalker.prototype.next=function(a){var b=new cvox.CursorSelection(a.end,a.end,a.isReversed()),c=this.subWalker_.sync(b);if(!c)return null;b=this.subWalker_.next(b);if(!b)return null;b.setReversed(a.isReversed());return this.extend_(b).setReversed(!1)};
-cvox.LayoutLineWalker.prototype.sync=function(a){var b=this.subWalker_.sync(a);if(!b)return null;var c=this.extend_(b),b=this.extend_(b.setReversed(!b.isReversed()));return new cvox.CursorSelection(b.end,c.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.getDescription=function(a,b){var c=[],d=a,e=b.clone().setReversed(!1),f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return[];if(e.start.node==e.end.node)return this.subWalker_.getDescription(a,b);for(;f&&!f.end.equals(e.end);)c.push.apply(c,this.subWalker_.getDescription(d,f)),d=f,f=this.subWalker_.next(f);f&&c.push.apply(c,this.subWalker_.getDescription(d,f));return c};
-cvox.LayoutLineWalker.prototype.getBraille=function(a,b){var c=new cvox.NavBraille({}),d=this.subWalker_.sync(b.clone().setReversed(!1)),e=this.sync(b).setReversed(!1);if(!e||!d)return c;var f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return c;for(;f&&!f.end.equals(e.end);)this.appendBraille_(a,d,f,c),a=f,f=this.subWalker_.next(f);f&&this.appendBraille_(a,d,f,c);return c};cvox.LayoutLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("layout_line")};
-cvox.LayoutLineWalker.prototype.isVisualLineBreak_=function(a,b){if(this.wantsOwnLine_(a.end.node)||this.wantsOwnLine_(b.start.node))return!0;var c=a.getRange().getBoundingClientRect(),d=b.getRange().getBoundingClientRect();0==c.width&&0==c.height&&a.end.node.nodeType==Node.ELEMENT_NODE&&(c=a.end.node.getBoundingClientRect());0==d.width&&0==d.height&&b.start.node.nodeType==Node.ELEMENT_NODE&&(d=b.start.node.getBoundingClientRect());return c.bottom!=d.bottom};
-cvox.LayoutLineWalker.prototype.wantsOwnLine_=function(a){return a instanceof HTMLTextAreaElement||a.parentNode instanceof HTMLTextAreaElement};cvox.LayoutLineWalker.prototype.extend_=function(a){var b=a,c=a;do b=c,c=this.subWalker_.next(b);while(c&&!this.isVisualLineBreak_(b,c));return new cvox.CursorSelection(a.start,b.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.appendBraille_=function(a,b,c,d){a=this.subWalker_.getBraille(a,c).text;var e=a.getSpanInstanceOf(cvox.BrailleUtil.ValueSelectionSpan);0<d.text.getLength()&&d.text.append(cvox.BrailleUtil.ITEM_SEPARATOR);for(var f=c.start.node;f.parentNode&&cvox.DomUtil.isLeafNode(f.parentNode);)f=f.parentNode;var g=d.text.getLength(),h=g+a.getLength();d.text.append(a.toString());d.text.setSpan(f,g,h);b&&c.absEquals(b)&&(e?(d.startIndex=g+a.getSpanStart(e),d.endIndex=g+a.getSpanEnd(e)):
-(d.startIndex=g,d.endIndex=g+1))};cvox.ObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.ObjectWalker,cvox.AbstractNodeWalker);cvox.ObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AbstractNodeWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getDescriptionFromNavigation(a.end.node,b.start.node,!0,cvox.ChromeVox.verbosity)};cvox.ObjectWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};
-cvox.ObjectWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("object_strategy")};cvox.SentenceWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kSentence};goog.inherits(cvox.SentenceWalker,cvox.AbstractSelectionWalker);cvox.SentenceWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("sentence_granularity")};cvox.WordWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kWord};goog.inherits(cvox.WordWalker,cvox.AbstractSelectionWalker);cvox.WordWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("word_granularity")};cvox.NavigationShifter=function(){this.reset_();cvox.AbstractShifter.call(this)};goog.inherits(cvox.NavigationShifter,cvox.AbstractShifter);cvox.NavigationShifter.GRANULARITIES={CHARACTER:0,WORD:1,LINE:2,SENTENCE:3,OBJECT:4,GROUP:5};cvox.NavigationShifter.prototype.storeOn=function(a){a.granularity=this.getGranularity()};cvox.NavigationShifter.prototype.readFrom=function(a){this.setGranularity(a.granularity)};
-cvox.NavigationShifter.prototype.next=function(a){a=this.currentWalker_.next(a);this.currentWalkerIndex_<=cvox.NavigationShifter.GRANULARITIES.LINE&&a&&(cvox.TraverseContent.getInstance().syncToCursorSelection(a.clone().setReversed(!1)),cvox.TraverseContent.getInstance().updateSelection());return a};cvox.NavigationShifter.prototype.sync=function(a){return this.currentWalker_.sync(a)};cvox.NavigationShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("navigation_shifter")};
-cvox.NavigationShifter.prototype.getDescription=function(a,b){return this.currentWalker_.getDescription(a,b)};cvox.NavigationShifter.prototype.getBraille=function(a,b){return this.lineWalker_.getBraille(a,b)};cvox.NavigationShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};
-cvox.NavigationShifter.prototype.makeMoreGranular=function(){cvox.NavigationShifter.superClass_.makeMoreGranular.call(this);this.currentWalkerIndex_=Math.max(this.currentWalkerIndex_-1,0);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_--;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.makeLessGranular=function(){cvox.NavigationShifter.superClass_.makeLessGranular.call(this);this.currentWalkerIndex_=Math.min(this.currentWalkerIndex_+1,this.walkers_.length-1);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_++;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.setGranularity=function(a){this.ensureNotSubnavigating();this.currentWalkerIndex_=a;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.prototype.getGranularity=function(){var a=this.isSubnavigating();this.ensureNotSubnavigating();var b=this.currentWalkerIndex_;a&&this.ensureSubnavigating();return b};
-cvox.NavigationShifter.prototype.hasAction=function(a){return"toggleLineType"==a?!0:cvox.NavigationShifter.superClass_.hasAction.call(this,a)};cvox.NavigationShifter.create=function(){return new cvox.NavigationShifter};
-cvox.NavigationShifter.prototype.reset_=function(){this.groupWalker_=new cvox.GroupWalker;this.objectWalker_=new cvox.ObjectWalker;this.sentenceWalker_=new cvox.SentenceWalker;this.lineWalker_=new cvox.LayoutLineWalker;this.wordWalker_=new cvox.WordWalker;this.characterWalker_=new cvox.CharacterWalker;this.walkers_=[this.characterWalker_,this.wordWalker_,this.lineWalker_,this.sentenceWalker_,this.objectWalker_,this.groupWalker_];this.currentWalkerIndex_=this.walkers_.indexOf(this.groupWalker_);this.currentWalker_=
-this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.allowSentence=!1;cvox.NavigationSpeaker=function(){this.stopReading=!1;this.id_=1};
-cvox.NavigationSpeaker.prototype.speakDescriptionArray=function(a,b,c){a=this.reorderAnnotations(a);this.stopReading=!1;this.id_=(this.id_+1)%1E4;var d=this,e=function(b,g,h){var k=a[b];if(k&&!d.stopReading&&d.id_==h){var l=function(){for(var a=0;a<k.earcons.length;a++)cvox.ChromeVox.earcons.playEarcon(k.earcons[a])},m=function(){e(b+1,cvox.AbstractTts.QUEUE_MODE_QUEUE,h)},p=function(){k.personality&&k.personality[cvox.AbstractTts.PAUSE]&&"number"==typeof k.personality[cvox.AbstractTts.PAUSE]?setTimeout(m,
-k.personality[cvox.AbstractTts.PAUSE]):m();b==a.length-1&&c&&c()};k.isEmpty()?(l(),p()):(k.speak(g,l,p),cvox.ChromeVox.host.hasTtsCallback()||(l(),p()))}};e(0,b,this.id_);0==a.length&&c&&c()};cvox.NavigationSpeaker.structuredElement=function(a){switch(a){case "table":case "Math":return!0}return!1};
-cvox.NavigationSpeaker.prototype.reorderAnnotations=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];cvox.NavigationSpeaker.structuredElement(d.annotation)&&(b.push(new cvox.NavDescription({text:"",annotation:d.annotation})),d.annotation="");b.push(d)}return b};cvox.NavigationManager=function(){this.addInterframeListener_();this.reset()};cvox.NavigationManager.prototype.storeOn=function(a){a.reversed=this.isReversed();a.keepReading=this.keepReading_;a.findNext=this.predicate_;this.shifter_.storeOn(a)};cvox.NavigationManager.prototype.readFrom=function(a){this.curSel_.setReversed(a.reversed);this.shifter_.readFrom(a);a.keepReading&&this.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH)};
-cvox.NavigationManager.prototype.reset=function(){this.navSpeaker_=new cvox.NavigationSpeaker;this.shifterTypes_=[cvox.NavigationShifter,cvox.TableShifter,cvox.MathShifter];this.shifterStack_=[];this.shifter_=new cvox.NavigationShifter;this.curSel_=document.activeElement!=document.body?cvox.CursorSelection.fromNode(document.activeElement):this.shifter_.begin(this.curSel_,{reversed:!1});this.prevSel_=this.curSel_.clone();this.ignoreIframesNoMatterWhat_=this.exitedShifter_=this.enteredShifter_=this.pageEndAnnounced_=
-this.pageEnd_=this.keepReading_=this.recovered_=this.skipped_=!1;this.pageSel_=null;this.predicate_="";this.saveSel_=null;this.activeIndicator&&this.activeIndicator.removeFromDom();this.activeIndicator=new cvox.ActiveIndicator;this.navigationHistory_=new cvox.NavigationHistory;this.focusRecovery_="chrome:"!=window.location.protocol;this.iframeIdMap={};this.nextIframeId=1;document.activeElement!=document.body&&this.sync();cvox.TraverseMath.getInstance()};
-cvox.NavigationManager.prototype.resolve=function(a){if(!this.getFocusRecovery())return!0;var b=this.getCurrentNode();if(!this.navigationHistory_.becomeInvalid(b)||this.hasNext_())return!0;b=this.navigationHistory_.revert(a);if(!b.current)return!0;a=cvox.CursorSelection.fromNode(b.current);b=cvox.CursorSelection.fromNode(b.previous);a=a||cvox.CursorSelection.fromBody();b=b||cvox.CursorSelection.fromBody();a.setReversed(this.isReversed());this.updateSel(a,b);this.recovered_=!0;return!1};
-cvox.NavigationManager.prototype.getFocusRecovery=function(){return this.focusRecovery_};cvox.NavigationManager.prototype.setFocusRecovery=function(a){this.focusRecovery_=a};cvox.NavigationManager.prototype.next_=function(a){return this.tryBoundaries_(this.shifter_.next(this.curSel_),a)?(this.pageSel_&&this.pageSel_.extend(this.curSel_),!0):!1};
-cvox.NavigationManager.prototype.hasNext_=function(){if(0<this.shifterStack_.length)return!0;var a=this.curSel_.clone(),b=!1,c=new cvox.NavigationShifter;c.setGranularity(this.shifter_.getGranularity());c.sync(a);c.next(a)&&(b=!0);return b};
-cvox.NavigationManager.prototype.findNext=function(a,b,c){this.predicate_=b||"";this.resolve();this.shifter_=this.shifterStack_[0]||this.shifter_;this.shifterStack_=[];a=cvox.FindUtil.findNext(this.curSel_,a,c);this.ignoreIframesNoMatterWhat_||this.tryIframe_(a&&a.start.node);a&&this.updateSelToArbitraryNode(a.start.node);this.predicate_="";return a};cvox.NavigationManager.prototype.sync=function(){this.resolve();var a=this.shifter_.sync(this.curSel_);a&&(this.curSel_=a)};
-cvox.NavigationManager.prototype.syncAll=function(a){this.sync();this.setFocus(a);this.updateIndicator()};cvox.NavigationManager.prototype.clearPageSel=function(a){var b=!!this.pageSel_;b&&a&&(a=cvox.ChromeVox.msgs.getMsg("clear_page_selection"),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION));this.pageSel_=null;return b};
-cvox.NavigationManager.prototype.togglePageSel=function(){this.pageSel_=this.pageSel_?null:new cvox.PageSelection(this.curSel_.setReversed(!1));return!!this.pageSel_};
-cvox.NavigationManager.prototype.getDescription=function(){if(this.getCurrentNode().hasAttribute&&this.getCurrentNode().hasAttribute("cvoxnodedesc")){for(var a=cvox.ChromeVoxJSON.parse(this.getCurrentNode().getAttribute("cvoxnodedesc")),b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b}var e=this.pageSel_?this.pageSel_.getDescription(this.shifter_,this.prevSel_,this.curSel_):this.shifter_.getDescription(this.prevSel_,
-this.curSel_),a=[];this.skipped_&&(a.push(cvox.AbstractEarcons.PARAGRAPH_BREAK),this.skipped_=!1);this.recovered_&&(a.push(cvox.AbstractEarcons.FONT_CHANGE),this.recovered_=!1);this.pageEnd_&&(a.push(cvox.AbstractEarcons.WRAP),this.pageEnd_=!1);this.enteredShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_ENTER),this.enteredShifter_=!1);this.exitedShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_EXIT),this.exitedShifter_=!1);0<a.length&&0<e.length&&a.forEach(function(a){e[0].pushEarcon(a)});return e};
-cvox.NavigationManager.prototype.getBraille=function(){return cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.ANDROID|cvox.PlatformFilter.CHROMEOS)?this.shifter_.getBraille(this.prevSel_,this.curSel_):new cvox.NavBraille({})};
-cvox.NavigationManager.prototype.performAction=function(a){switch(a){case "enterShifter":case "enterShifterSilently":for(var b=this.shifterTypes_.length-1,c;c=this.shifterTypes_[b];b--)if((c=c.create(this.curSel_))&&c.getName()!=this.shifter_.getName()){this.shifterStack_.push(this.shifter_);this.shifter_=c;this.sync();this.enteredShifter_="enterShifterSilently"!=a;break}else if(c&&this.shifter_.getName()==c.getName())break;break;case "exitShifter":if(0==this.shifterStack_.length)return!1;this.shifter_=
-this.shifterStack_.pop();this.sync();this.exitedShifter_=!0;break;case "exitShifterContent":if(0==this.shifterStack_.length)return!1;this.updateSel(this.shifter_.performAction(a,this.curSel_));this.shifter_=this.shifterStack_.pop()||this.shifter_;this.sync();this.exitedShifter_=!0;break;default:return this.shifter_.hasAction(a)?this.updateSel(this.shifter_.performAction(a,this.curSel_)):!1}return!0};cvox.NavigationManager.prototype.getGranularityMsg=function(){return this.shifter_.getGranularityMsg()};
-cvox.NavigationManager.prototype.makeMoreGranular=function(a){this.shifter_.makeMoreGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.makeLessGranular=function(a){this.shifter_.makeLessGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.setGranularity=function(a,b,c){!b&&0<this.shifterStack_.length||(this.shifter_=this.shifterStack_.shift()||this.shifter_,this.shifter_.setGranularity(a),this.persistGranularity_(c))};
-cvox.NavigationManager.prototype.getGranularity=function(){var a=this.shifterStack_[0]||this.shifter_;return a.getGranularity()};cvox.NavigationManager.prototype.ensureSubnavigating=function(){this.shifter_.isSubnavigating()||(this.shifter_.ensureSubnavigating(),this.sync())};cvox.NavigationManager.prototype.ensureNotSubnavigating=function(){this.shifter_.isSubnavigating()&&(this.shifter_.ensureNotSubnavigating(),this.sync())};
-cvox.NavigationManager.prototype.speakDescriptionArray=function(a,b,c,d){d&&a.every(function(a){a.personality||(a.personality=d)});this.navSpeaker_.speakDescriptionArray(a,b,c)};cvox.NavigationManager.prototype.updatePosition=function(a){var b=cvox.ChromeVox.position;b[document.location.href]=cvox.DomUtil.elementToPoint(a);JSON.stringify(b)};
-cvox.NavigationManager.prototype.finishNavCommand=function(a,b,c,d){if(this.pageEnd_&&!this.pageEndAnnounced_)this.pageEndAnnounced_=!0,cvox.ChromeVox.tts.stop(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),cvox.ChromeVox.verbosity===cvox.VERBOSITY_VERBOSE&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),this.isReversed()&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom")),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION));else{if(this.enteredShifter_||
-this.exitedShifter_)a=cvox.ChromeVox.msgs.getMsg("enter_content_say",[this.shifter_.getName()]);var e=cvox.ChromeVox.navigationManager.getDescription();(b=void 0===b?!0:b)&&this.setFocus();this.updateIndicator();b=c||cvox.AbstractTts.QUEUE_MODE_FLUSH;a&&(cvox.ChromeVox.tts.speak(a,b,cvox.AbstractTts.PERSONALITY_ANNOTATION),b=cvox.AbstractTts.QUEUE_MODE_QUEUE);this.speakDescriptionArray(e,b,d||null);this.getBraille().write();this.updatePosition(this.getCurrentNode())}};
-cvox.NavigationManager.prototype.navigate=function(a,b){this.pageEndAnnounced_=!1;if(this.pageEnd_)return this.pageEnd_=!1,this.syncToBeginning(a),!0;if(!this.resolve())return!1;this.ensureNotSubnavigating();void 0!==b&&(b!==this.getGranularity()||0<this.shifterStack_.length)&&(this.setGranularity(b,!0),this.sync());return this.next_(!a)};cvox.NavigationManager.prototype.subnavigate=function(){this.pageEndAnnounced_=!1;this.resolve()&&(this.ensureSubnavigating(),this.next_(!0))};
-cvox.NavigationManager.prototype.skip=function(){if(!this.keepReading_)return!1;cvox.ChromeVox.host.hasTtsCallback()&&(this.skipped_=!0,this.setReversed(!1),this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_FLUSH));return!0};cvox.NavigationManager.prototype.startReading=function(a){this.keepReading_=!0;cvox.ChromeVox.host.hasTtsCallback()?this.startCallbackReading_(a):this.startNonCallbackReading_(a);this.prevStickyState_=cvox.ChromeVox.isStickyOn};
-cvox.NavigationManager.prototype.stopReading=function(a){this.keepReading_=!1;this.navSpeaker_.stopReading=!0;a&&cvox.ChromeVox.tts.stop();void 0!=this.prevStickyState_&&(this.prevStickyState_=void 0)};cvox.NavigationManager.prototype.isReading=function(){return this.keepReading_};
-cvox.NavigationManager.prototype.startCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.finishNavCommand("",!0,a,goog.bind(function(){this.next_(!0)&&this.keepReading_&&this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_QUEUE)},this))});
-cvox.NavigationManager.prototype.startNonCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.keepReading_&&(cvox.ChromeVox.tts.isSpeaking()||(this.finishNavCommand("",!0,a,null),this.next_(!0)||(this.keepReading_=!1)),window.setTimeout(goog.bind(this.startNonCallbackReading_,this),1E3))});
-cvox.NavigationManager.prototype.getFullDescription=function(){return this.pageSel_?this.pageSel_.getFullDescription():[cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getAncestors(this.curSel_.start.node),!0,cvox.ChromeVox.verbosity)]};cvox.NavigationManager.prototype.setFocus=function(a){this.pageSel_||a&&this.curSel_.start.node.constructor==Text||cvox.Focuser.setFocus(this.curSel_.start.node)};cvox.NavigationManager.prototype.getCurrentNode=function(){return this.curSel_.absStart().node};
-cvox.NavigationManager.prototype.addInterframeListener_=function(){var a=this;cvox.Interframe.addListener(function(b){if("enterIframe"==b.command||"exitIframe"==b.command)cvox.ChromeVox.serializer.readFrom(b),a.keepReading_||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){window.focus();if(b.findNext){var c=b.findNext,d=cvox.DomPredicates[c],c=a.findNext(d,c,!0);if(d&&(!c||"IFRAME"==c.start.node.tagName))return}else if("exitIframe"==b.command)d=b.sourceId,d=a.iframeIdMap[d],c=b.reversed,
-d&&a.updateSel(cvox.CursorSelection.fromNode(d)),a.setReversed(c),a.sync(),a.navigate();else if(a.syncToBeginning(),!cvox.DomUtil.hasContent(document.body)){a.tryIframe_(null);return}a.finishNavCommand("",!0)})()})};cvox.NavigationManager.prototype.updateIndicator=function(){this.activeIndicator.syncToCursorSelection(this.curSel_)};cvox.NavigationManager.prototype.updateIndicatorIfChanged=function(){this.activeIndicator.updateIndicatorIfChanged()};
-cvox.NavigationManager.prototype.showOrHideIndicator=function(a){a||this.activeIndicator.removeFromDom()};cvox.NavigationManager.prototype.collapseSelection=function(){this.curSel_.collapse()};cvox.NavigationManager.prototype.updateSelToArbitraryNode=function(a,b){a?(this.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0),this.updateSel(cvox.CursorSelection.fromNode(a)),b||this.sync()):this.syncToBeginning()};
-cvox.NavigationManager.prototype.updateSel=function(a,b){a&&(this.prevSel_=b||this.curSel_,this.curSel_=a);var c=this.getCurrentNode();this.navigationHistory_.update(c);return!!a};cvox.NavigationManager.prototype.setReversed=function(a){this.curSel_.setReversed(a)};cvox.NavigationManager.prototype.isReversed=function(){return this.curSel_.isReversed()};
-cvox.NavigationManager.prototype.tryBoundaries_=function(a,b){b=!!b&&!this.ignoreIframesNoMatterWhat_||!1;this.pageEnd_=!1;if(b&&this.tryIframe_(a&&a.start.node))return!0;if(a)return this.updateSel(a),!0;if(0<this.shifterStack_.length)return!0;this.syncToBeginning(!b);this.clearPageSel(!0);this.stopReading(!0);this.pageEnd_=!0;return!1};
-cvox.NavigationManager.prototype.tryIframe_=function(a){if(null==a&&cvox.Interframe.isIframe()){var b={command:"exitIframe",reversed:this.isReversed(),granularity:this.getGranularity()};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToParentWindow(b);return!0}if(null==a||"IFRAME"!=a.tagName||!a.src)return!1;var c=void 0;for(b in this.iframeIdMap)if(this.iframeIdMap[b]==a){c=b;break}void 0==c&&(c=this.nextIframeId,this.nextIframeId++,this.iframeIdMap[c]=a,cvox.Interframe.sendIdToIFrame(c,
-a));b={command:"enterIframe",id:c};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToIFrame(b,a);return!0};cvox.NavigationManager.prototype.syncToBeginning=function(a){var b=this.shifter_.begin(this.curSel_,{reversed:this.curSel_.isReversed()});!a&&this.tryIframe_(b&&b.start.node)||this.updateSel(b)};cvox.NavigationManager.prototype.ignoreIframesNoMatterWhat=function(){this.ignoreIframesNoMatterWhat_=!0};cvox.NavigationManager.prototype.saveSel=function(){this.saveSel_=this.curSel_};
-cvox.NavigationManager.prototype.restoreSel=function(){this.curSel_=this.saveSel_||this.curSel_};cvox.NavigationManager.prototype.persistGranularity_=function(a){(a=void 0===a?!1:a)&&this.getGranularity()};cvox.SearchWidget=function(){this.txtNode_=this.containerNode_=null;this.PROMPT_="Search:";this.hasMatch_=this.caseSensitive_=!1;cvox.Widget.call(this)};goog.inherits(cvox.SearchWidget,cvox.Widget);goog.addSingletonGetter(cvox.SearchWidget);
-cvox.SearchWidget.prototype.show=function(){cvox.SearchWidget.superClass_.show.call(this);this.active=!0;this.hasMatch_=!1;cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);cvox.ChromeVox.navigationManager.setReversed(!1);this.focusRecovery_=cvox.ChromeVox.navigationManager.getFocusRecovery();cvox.ChromeVox.navigationManager.setFocusRecovery(!1);var a=this.createContainerNode_();this.containerNode_=a;var b=this.createOverlayNode_();a.appendChild(b);
-var c=document.createElement("span");c.innerHTML=this.PROMPT_;b.appendChild(c);this.txtNode_=this.createTextAreaNode_();b.appendChild(this.txtNode_);document.body.appendChild(a);this.txtNode_.focus();window.setTimeout(function(){a.style.opacity="1.0"},0)};
-cvox.SearchWidget.prototype.hide=function(a){if(this.isActive()){var b=this.containerNode_;b.style.opacity="0.0";window.setTimeout(function(){document.body.removeChild(b)},1E3);this.txtNode_=null;cvox.SearchWidget.containerNode=null;cvox.ChromeVox.navigationManager.setFocusRecovery(this.focusRecovery_);this.active=!1}cvox.$m("choice_widget_exited").andPause().andMessage(this.getNameMsg()).speakFlush();this.hasMatch_&&a||cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode);cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,
-cvox.ChromeVox.navigationManager))(!0);cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),cvox.AbstractTts.QUEUE_MODE_QUEUE,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=this.textFromCurrentDescription_();cvox.ChromeVox.braille.write(new cvox.NavBraille({text:a,startIndex:0,endIndex:0}));cvox.SearchWidget.superClass_.hide.call(this,!0)};cvox.SearchWidget.prototype.getNameMsg=function(){return["search_widget_intro"]};
-cvox.SearchWidget.prototype.getHelpMsg=function(){return"search_widget_intro_help"};
-cvox.SearchWidget.prototype.onKeyDown=function(a){if(!this.isActive())return!1;var b=this.txtNode_.value;if(8==a.keyCode)0<b.length?(b=b.substring(0,b.length-1),this.txtNode_.value=b,this.beginSearch_(b)):(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode),cvox.ChromeVox.navigationManager.syncAll());else if(40==a.keyCode)this.next_(b,!1);else if(38==a.keyCode)this.next_(b,!0);else if(13==a.keyCode)this.hide(!0);else if(27==a.keyCode)this.hide(!1);else if(a.ctrlKey&&67==a.keyCode)this.toggleCaseSensitivity_();
-else return cvox.SearchWidget.superClass_.onKeyDown.call(this,a);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onKeyPress=function(a){if(!this.isActive())return!1;this.txtNode_.value+=String.fromCharCode(a.charCode);var b=this.txtNode_.value;this.beginSearch_(b);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onNavigate=function(){};cvox.SearchWidget.prototype.getPredicate=function(){return null};
-cvox.SearchWidget.prototype.nextResult=function(a){if(!this.isActive())return null;var b=this.txtNode_.value;return this.next_(b,a)};cvox.SearchWidget.prototype.createContainerNode_=function(){var a=document.createElement("div");a.id="cvox-search";a.style.position="fixed";a.style.top="50%";a.style.left="50%";a.style["-webkit-transition"]="all 0.3s ease-in";a.style.opacity="0.0";a.style["z-index"]="2147483647";a.setAttribute("aria-hidden","true");return a};
-cvox.SearchWidget.prototype.createOverlayNode_=function(){var a=document.createElement("div");a.style.position="relative";a.style.left="-50%";a.style.top="-40px";a.style["line-height"]="1.2em";a.style["font-size"]="20px";a.style.padding="30px";a.style["min-width"]="150px";a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["border-radius"]="10px";return a};
-cvox.SearchWidget.prototype.createTextAreaNode_=function(){var a=document.createElement("textarea");a.setAttribute("aria-hidden","true");a.setAttribute("rows","1");a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["vertical-align"]="middle";a.addEventListener("textInput",this.handleSearchChanged_,!1);return a};
-cvox.SearchWidget.prototype.toggleCaseSensitivity_=function(){this.caseSensitive_?(cvox.SearchWidget.caseSensitive_=!1,cvox.ChromeVox.tts.speak("Ignoring case.",0,null)):(this.caseSensitive_=!0,cvox.ChromeVox.tts.speak("Case sensitive.",0,null))};
-cvox.SearchWidget.prototype.getNextResult_=function(a){var b=cvox.ChromeVox.navigationManager.isReversed();this.caseSensitive_||(a=a.toLowerCase());cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);do{if(this.getPredicate()){var c=this.getPredicate()(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()));if(!c)continue}for(var c=cvox.ChromeVox.navigationManager.getDescription(),d=0;d<c.length;d++){var e=this.caseSensitive_?c[d].text:
-c[d].text.toLowerCase(),f=e.indexOf(a);-1!=f&&e.length>a.length&&(c[d].text=cvox.DomUtil.collapseWhitespace(e.substring(0,f))+", "+a+", "+e.substring(f+a.length),c[d].text=cvox.DomUtil.collapseWhitespace(c[d].text));if(-1!=f)return c}cvox.ChromeVox.navigationManager.setReversed(b)}while(cvox.ChromeVox.navigationManager.navigate(!0,cvox.NavigationShifter.GRANULARITIES.OBJECT))};cvox.SearchWidget.prototype.beginSearch_=function(a){var b=this.getNextResult_(a);this.outputSearchResult_(b,a);this.onNavigate()};
-cvox.SearchWidget.prototype.next_=function(a,b){cvox.ChromeVox.navigationManager.setReversed(!!b);var c=!1;this.getPredicate()?(c=cvox.ChromeVox.navigationManager.findNext(this.getPredicate()),cvox.ChromeVox.navigationManager.setReversed(!!b),c||(cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),c=!0)):c=cvox.ChromeVox.navigationManager.navigate(!0);c=c?this.getNextResult_(a):null;this.outputSearchResult_(c,a);this.onNavigate();return c};
-cvox.SearchWidget.prototype.outputSearchResult_=function(a,b){cvox.ChromeVox.tts.stop();a?(this.hasMatch_=!0,cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,cvox.ChromeVox.navigationManager))(!0),cvox.ChromeVox.navigationManager.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("search_help_item"),cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION),
-this.outputSearchResultToBraille_(b)):(cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),this.hasMatch_=!1)};
-cvox.SearchWidget.prototype.outputSearchResultToBraille_=function(a){if(cvox.ChromeVox.braille){var b=this.textFromCurrentDescription_(),c=this.caseSensitive_?b:b.toLowerCase();a=this.caseSensitive_?a:a.toLowerCase();c=c.indexOf(a);if(-1==c)console.log("Search string not in result when preparing for Braille.");else{var d=b.length,b=cvox.ChromeVox.msgs.getMsg("mark_as_search_result_brl",[b]),e=b.length,c=c+(e-d);cvox.ChromeVox.braille.write(new cvox.NavBraille({text:b,startIndex:c+a.length,endIndex:c+
-a.length}))}}};cvox.SearchWidget.prototype.textFromCurrentDescription_=function(){for(var a=cvox.ChromeVox.navigationManager.getDescription(),b="",c=0;c<a.length;c++)b+=a[c].text+" ";return b};cvox.SearchWidget.prototype.handleSearchChanged_=function(a){a=a.target.value+a.data;cvox.SearchWidget.prototype.beginSearch_(a)};cvox.OverlayWidget=function(a){cvox.SearchWidget.call(this);this.snippet_=a};goog.inherits(cvox.OverlayWidget,cvox.SearchWidget);
-cvox.OverlayWidget.prototype.show=function(){cvox.OverlayWidget.superClass_.show.call(this);var a=document.createElement("DIV");a.innerHTML=this.snippet_;var b=cvox.DomUtil.elementToPoint(cvox.ChromeVox.navigationManager.getCurrentNode());a.style.position="absolute";a.style.left=b.x;a.style.top=b.y;document.body.appendChild(a);cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a);this.host_=a};cvox.OverlayWidget.prototype.hide=function(){this.host_.remove();cvox.OverlayWidget.superClass_.hide.call(this)};
-cvox.OverlayWidget.prototype.onKeyDown=function(a){cvox.OverlayWidget.superClass_.onKeyDown.call(this,a);if(13==a.keyCode||27==a.keyCode)return!0;a=cvox.ChromeVox.navigationManager.isReversed();cvox.DomUtil.isDescendantOfNode(cvox.ChromeVox.navigationManager.getCurrentNode(),this.host_)||(a?cvox.ChromeVox.navigationManager.syncToBeginning():cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.host_),this.onNavigate(),cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),
-0,null))};cvox.KeyboardHelpWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");var a=cvox.ChromeVoxKbHandler.handlerKeyMap;a.bindings().forEach(goog.bind(function(a){var c=a.command;a=a.sequence;var d=c;try{var e=cvox.CommandStore.messageForCommand(c);if(!e)return;d=cvox.ChromeVox.msgs.getMsg(e)}catch(f){}e=document.createElement("p");e.id=c;e.setAttribute("role","menuitem");e.textContent=d+" - "+cvox.KeyUtil.keySequenceToString(a,!0);this.container_.appendChild(e)},
-this))};goog.inherits(cvox.KeyboardHelpWidget,cvox.OverlayWidget);goog.addSingletonGetter(cvox.KeyboardHelpWidget);cvox.KeyboardHelpWidget.prototype.show=function(){cvox.KeyboardHelpWidget.superClass_.show.call(this);this.host_.appendChild(this.container_)};cvox.KeyboardHelpWidget.prototype.getNameMsg=function(){return["keyboard_help_intro"]};
-cvox.KeyboardHelpWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;this.hide();cvox.ChromeVoxEventSuspender.withSuspendedEvents(cvox.ChromeVoxUserCommands.commands[b])();a.preventDefault();a.stopPropagation();return!0}return cvox.KeyboardHelpWidget.superClass_.onKeyDown.call(this,a)};goog.object={};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};
-goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};
-goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};
-goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return b in a?a[b]:c};goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};
-goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
-goog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};
-goog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};
-goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};cvox.UserEventDetail=function(a){this.command=this.category="";-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)&&(this.command=a.command,this.category=cvox.UserEventDetail.Category.JUMP);this.customCommand="";a.customCommand&&(this.customCommand=a.customCommand,this.category=cvox.UserEventDetail.Category.CUSTOM);this.status=cvox.UserEventDetail.Status.PENDING;switch(a.status){case cvox.UserEventDetail.Status.SUCCESS:this.status=cvox.UserEventDetail.Status.SUCCESS;break;case cvox.UserEventDetail.Status.FAILURE:this.status=
-cvox.UserEventDetail.Status.FAILURE}this.resultNode=null;a.resultNode&&cvox.DomUtil.isAttachedToDocument(a.resultNode)&&(this.resultNode=a.resultNode)};cvox.UserEventDetail.Category={JUMP:"ATJumpEvent",CUSTOM:"ATCustomEvent"};cvox.UserEventDetail.Status={PENDING:"PENDING",SUCCESS:"SUCCESS",FAILURE:"FAILURE"};cvox.UserEventDetail.JUMP_COMMANDS="nextCheckbox previousCheckbox nextRadio previousRadio nextSlider previousSlider nextGraphic previousGraphic nextButton previousButton nextComboBox previousComboBox nextEditText previousEditText nextHeading previousHeading nextHeading1 previousHeading1 nextHeading2 previousHeading2 nextHeading3 previousHeading3 nextHeading4 previousHeading4 nextHeading5 previousHeading5 nextHeading6 previousHeading6 nextLink previousLink nextMath previousMath nextTable previousTable nextList previousList nextListItem previousListItem nextFormField previousFormField nextLandmark previousLandmark nextSection previousSection nextControl previousControl".split(" ");
-cvox.UserEventDetail.prototype.createEventObject=function(){var a=document.createEvent("CustomEvent");a.initCustomEvent(this.category,!0,!0,this);return a};var extractMenuList_=function(a){for(;a!==document;){var b=a.getAttribute("contextMenuActions");if(b)return JSON.parse(b);a=a.parentNode}return null},getCurrentElement_=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;return a};
-cvox.ContextMenuWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");this.triggerElement_=getCurrentElement_();(this.menuList=extractMenuList_(this.triggerElement_))?this.menuList.forEach(goog.bind(function(a){if(a.desc||a.cmd){var b=a.desc;a=a.cmd;var c=document.createElement("p");c.id=a;c.textContent=b;c.setAttribute("role","menuitem");this.container_.appendChild(c)}},this)):console.log("No context menu found.")};goog.inherits(cvox.ContextMenuWidget,cvox.OverlayWidget);
-cvox.ContextMenuWidget.prototype.show=function(){this.menuList&&(cvox.ContextMenuWidget.superClass_.show.call(this),this.host_.appendChild(this.container_))};cvox.ContextMenuWidget.prototype.getNameMsg=function(){return["context_menu_intro"]};
-cvox.ContextMenuWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode(),b=b.parentNode.id,b=new cvox.UserEventDetail({customCommand:b}),b=b.createEventObject();this.triggerElement_.dispatchEvent(b);this.hide();a.preventDefault();a.stopPropagation();return!0}return cvox.ContextMenuWidget.superClass_.onKeyDown.call(this,a)};cvox.NodeSearchWidget=function(a,b){this.typeMsg_=a;this.predicate_=b;cvox.SearchWidget.call(this)};goog.inherits(cvox.NodeSearchWidget,cvox.SearchWidget);cvox.NodeSearchWidget.prototype.getNameMsg=function(){return["choice_widget_name",[cvox.ChromeVox.msgs.getMsg(this.typeMsg_)]]};cvox.NodeSearchWidget.prototype.getHelpMsg=function(){return"choice_widget_help"};cvox.NodeSearchWidget.prototype.getPredicate=function(){return this.predicate_};
-cvox.NodeSearchWidget.create=function(a,b){return new cvox.NodeSearchWidget(a,b)};cvox.SelectWidget=function(a){cvox.OverlayWidget.call(this,"");this.selectNode_=a};goog.inherits(cvox.SelectWidget,cvox.OverlayWidget);
-cvox.SelectWidget.prototype.show=function(){cvox.SelectWidget.superClass_.show.call(this);var a=document.createElement("div");a.setAttribute("role","menu");for(var b=0,c=null;c=this.selectNode_.options[b];b++){var d=document.createElement("p");d.innerHTML=c.innerHTML;d.id=b;d.setAttribute("role","menuitem");a.appendChild(d)}this.host_.appendChild(a);b=this.selectNode_.selectedIndex;"number"==typeof b&&cvox.ChromeVox.syncToNode(a.children[b],!0)};
-cvox.SelectWidget.prototype.hide=function(){var a=document.createEvent("Event");a.initEvent("change",!1,!1);this.selectNode_.dispatchEvent(a);cvox.SelectWidget.superClass_.hide.call(this,!0)};cvox.SelectWidget.prototype.onNavigate=function(){var a=this;cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;a.selectNode_.selectedIndex=b})()};cvox.SelectWidget.prototype.getNameMsg=function(){return["aria_role_menu"]};cvox.FocusUtil=function(){};cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE={hidden:!1,text:!0,search:!0,tel:!0,url:!0,email:!0,password:!0,datetime:!1,date:!1,month:!1,week:!1,time:!1,"datetime-local":!1,number:!1,range:!1,color:!1,checkbox:!1,radio:!1,file:!1,submit:!1,image:!1,reset:!1,button:!1};
-cvox.FocusUtil.isFocusInTextInputField=function(){var a=document.activeElement;return a?a.isContentEditable||"textbox"==a.getAttribute("role")?!0:"true"==a.getAttribute("readOnly")?!1:"TEXTAREA"===a.tagName||"SELECT"===a.tagName?!0:"INPUT"===a.tagName?a.hasAttribute("type")?(a=a.getAttribute("type").toLowerCase(),cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[a]):!0:!1:!1};cvox.SpokenListBuilder=function(){this.list_=[]};cvox.SpokenListBuilder.prototype.flush=function(a){this.list_.push([a,cvox.AbstractTts.QUEUE_MODE_FLUSH]);return this};cvox.SpokenListBuilder.prototype.build=function(){return this.list_};cvox.RunnerInterface=function(){};cvox.RunnerInterface.prototype.setFocus=function(){};cvox.AbstractTestCase=function(){};cvox.TestTts=function(){cvox.AbstractTts.call(this);this.utterances_=[]};goog.inherits(cvox.TestTts,cvox.AbstractTts);cvox.TestTts.prototype.sentinelText_="@@@STOP@@@";cvox.TestTts.prototype.speak=function(a,b,c){this.utterances_.push({text:a,queueMode:b});c&&void 0!=c.endCallback&&(a=this.utterances_.length,this.utterances_[a-1].text!=this.sentinelText_&&c.endCallback())};cvox.HostFactory.ttsConstructor=cvox.TestTts;cvox.AutoRunner=function(){new cvox.TestTts};cvox.AutoRunner.TestSummary=function(a,b,c,d){this.tag=a;this.status=c;this.scope=d};cvox.AutoRunner.PASS="pass";cvox.AutoRunner.FAIL="fail";cvox.AutoRunner.prototype.setFocus=function(a){document.getElementById(a).focus();return this};cvox.ChromeVoxUserCommands={};cvox.ChromeVoxUserCommands.init_=function(){if(!cvox.ChromeVoxUserCommands.commands){cvox.ChromeVoxUserCommands.commands={};for(var a in cvox.CommandStore.CMD_WHITELIST)cvox.ChromeVoxUserCommands.commands[a]=cvox.ChromeVoxUserCommands.createCommand_(a)}};cvox.ChromeVoxUserCommands.wasMouseClicked=!1;cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage=!0;
-cvox.ChromeVoxUserCommands.handleTabAction_=function(){cvox.ChromeVox.tts.stop();if(!cvox.ChromeVox.navigationManager.resolve(cvox.DomUtil.isFocusable))return cvox.ChromeVox.navigationManager.setFocus(),!1;var a=cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_();if(a)return!0;var b=a=null,b=window.getSelection();cvox.ChromeVoxUserCommands.wasMouseClicked?cvox.ChromeVoxUserCommands.wasMouseClicked=!1:b=null;null==b||null==b.anchorNode||null==b.focusNode?(a=cvox.ChromeVox.navigationManager.getCurrentNode(),
-b=cvox.ChromeVox.navigationManager.getCurrentNode()):(a=b.anchorNode,b=b.focusNode);if(null==a||null==b)return!0;if(cvox.DomUtil.isFocusable(a))return a.focus(),!0;if(cvox.DomUtil.isFocusable(b))return b.focus(),!0;if(cvox.DomUtil.isFocusable(a.parentNode))return a.parentNode.focus(),!0;if(cvox.DomUtil.isFocusable(b.parentNode))return b.parentNode.focus(),!0;b=cvox.ChromeVoxUserCommands.createTabDummySpan_();a.parentNode.insertBefore(b,a);b.focus();return!0};
-cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_=function(){var a="A";return document.activeElement.tagName==a||cvox.DomUtil.isControl(document.activeElement)?!0:!1};cvox.ChromeVoxUserCommands.removeTabDummySpan=function(){var a=document.getElementById("ChromeVoxTabDummySpan");a&&document.activeElement!=a&&a.parentNode.removeChild(a)};cvox.ChromeVoxUserCommands.createTabDummySpan_=function(){var a=document.createElement("span");a.id="ChromeVoxTabDummySpan";a.tabIndex=-1;return a};
-cvox.ChromeVoxUserCommands.createCommand_=function(a){return goog.bind(function(b){b=cvox.ChromeVoxUserCommands.lookupCommand_(a,b);return cvox.ChromeVoxUserCommands.dispatchCommand_(b)},cvox.ChromeVoxUserCommands)};
-cvox.ChromeVoxUserCommands.dispatchCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField())return!0;if(cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage&&-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)){a=new cvox.UserEventDetail({command:a.command});a=a.createEventObject();var b=cvox.ChromeVox.navigationManager.getCurrentNode();b||(b=document.body);b.dispatchEvent(a);return!1}return cvox.ChromeVoxUserCommands.doCommand_(a)};
-cvox.ChromeVoxUserCommands.doCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField()||a.disallowOOBE&&document.URL.match(/^chrome:\/\/oobe/i))return!0;var b=a.command;a.allowEvents||cvox.ChromeVoxEventSuspender.enterSuspendEvents();a.disallowContinuation&&cvox.ChromeVox.navigationManager.stopReading(!0);a.forward?cvox.ChromeVox.navigationManager.setReversed(!1):a.backward&&cvox.ChromeVox.navigationManager.setReversed(!0);
-a.findNext&&(b="find",a.announce=!0);var c="",d="",e=!1;switch(b){case "handleTab":case "handleTabPrev":e=cvox.ChromeVoxUserCommands.handleTabAction_();break;case "forward":case "backward":e=!cvox.ChromeVox.navigationManager.navigate();break;case "right":case "left":cvox.ChromeVox.navigationManager.subnavigate();break;case "find":if(!a.findNext)throw"Invalid find command.";var f=cvox.CommandStore.NODE_INFO_MAP[a.findNext],g=f.predicate,h=cvox.DomPredicates[g],k="",l="";a.forward?(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),
-k=cvox.ChromeVox.msgs.getMsg(f.forwardError)):a.backward&&(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom"),k=cvox.ChromeVox.msgs.getMsg(f.backwardError));var f=null,m=a.status||cvox.UserEventDetail.Status.PENDING,p=a.resultNode||null;switch(m){case cvox.UserEventDetail.Status.SUCCESS:p&&cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(p,!0);break;case cvox.UserEventDetail.Status.FAILURE:d=k;break;default:f=cvox.ChromeVox.navigationManager.findNext(h,g),f||(cvox.ChromeVox.navigationManager.saveSel(),
-d=l,cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),f=cvox.ChromeVox.navigationManager.findNext(h,g,!0),f||(d=k,cvox.ChromeVox.navigationManager.restoreSel()))}f&&"IFRAME"==f.start.node.tagName&&(a.announce=!1);break;case "previousGranularity":cvox.ChromeVox.navigationManager.makeLessGranular(!0);d=cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "nextGranularity":cvox.ChromeVox.navigationManager.makeMoreGranular(!0);d=
-cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "previousCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "nextCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "previousWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);break;case "nextWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);
-break;case "previousSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "nextSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "previousLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "nextLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "previousObject":cvox.ChromeVox.navigationManager.navigate(!1,
-cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "nextObject":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "previousGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "nextGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "previousRow":case "previousCol":b="previousRow"==b?"nextRow":"nextCol";case "nextRow":case "nextCol":cvox.ChromeVox.navigationManager.performAction("enterShifterSilently");
-cvox.ChromeVox.navigationManager.performAction(b);break;case "moveToStartOfLine":case "moveToEndOfLine":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.LINE);cvox.ChromeVox.navigationManager.sync();cvox.ChromeVox.navigationManager.collapseSelection();break;case "readFromHere":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!0);cvox.ChromeVox.navigationManager.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH);break;case "cycleTypingEcho":break;
-case "jumpToTop":case cvox.BrailleKeyCommand.TOP:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "jumpToBottom":case cvox.BrailleKeyCommand.BOTTOM:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "stopSpeech":cvox.ChromeVox.navigationManager.stopReading(!0);break;case "toggleKeyboardHelp":cvox.KeyboardHelpWidget.getInstance().toggle();break;case "help":cvox.ChromeVox.tts.stop();break;case "contextMenu":g=cvox.ChromeVox.navigationManager.getCurrentNode();"SELECT"!=g.tagName||
-g.multiple?(g=new cvox.ContextMenuWidget,g.toggle()):(new cvox.SelectWidget(g)).show();break;case "showBookmarkManager":break;case "showOptionsPage":cvox.ChromeVox.tts.stop();break;case "showKbExplorerPage":cvox.ChromeVox.tts.stop();break;case "readLinkURL":g=document.activeElement;h=window.getSelection().anchorNode;k="";"A"==g.tagName?k=cvox.DomUtil.getLinkURL(g):h&&(k=cvox.DomUtil.getLinkURL(h.parentNode));""!=k?cvox.ChromeVox.tts.speak(k):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_url_found"));
-break;case "readCurrentTitle":cvox.ChromeVox.tts.speak(document.title);break;case "readCurrentURL":cvox.ChromeVox.tts.speak(document.URL);break;case "performDefaultAction":cvox.DomPredicates.linkPredicate([document.activeElement])&&(a.announce=!0,cvox.DomUtil.isInternalLink(document.activeElement)&&(cvox.DomUtil.syncInternalLink(document.activeElement),cvox.ChromeVox.navigationManager.sync()));break;case "forceClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();
-cvox.DomUtil.clickElem(g,!1,!1);break;case "forceDoubleClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_double_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.clickElem(g,!1,!1,!0);break;case "toggleChromeVox":break;case "fullyDescribe":g=cvox.ChromeVox.navigationManager.getFullDescription();cvox.ChromeVox.navigationManager.speakDescriptionArray(g,cvox.AbstractTts.QUEUE_MODE_FLUSH,null);break;case "speakTimeAndDate":g=new Date;cvox.ChromeVox.tts.speak(g.toLocaleTimeString()+
-", "+g.toLocaleDateString());break;case "toggleSelection":d=cvox.ChromeVox.navigationManager.togglePageSel();d=cvox.ChromeVox.msgs.getMsg(d?"begin_selection":"end_selection");break;case "startHistoryRecording":cvox.History.getInstance().startRecording();break;case "stopHistoryRecording":cvox.History.getInstance().stopRecording();break;case "enableConsoleTts":cvox.ConsoleTts.getInstance().setEnabled(!0);break;case "goToFirstCell":case "goToLastCell":case "goToRowFirstCell":case "goToRowLastCell":case "goToColFirstCell":case "goToColLastCell":case "announceHeaders":case "speakTableLocation":case "exitShifterContent":cvox.DomPredicates.tablePredicate(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()))&&
-cvox.ChromeVox.navigationManager.performAction(b)||(c="not_inside_table");break;case "enterShifter":case "exitShifter":cvox.ChromeVox.navigationManager.performAction(b);break;case "decreaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!1);break;case "increaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!0);break;case "decreaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,!1);break;case "increaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,
-!0);break;case "decreaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!1);break;case "increaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!0);break;case "cyclePunctuationEcho":break;case "toggleStickyMode":break;case "toggleKeyPrefix":cvox.ChromeVox.keyPrefixOn=!cvox.ChromeVox.keyPrefixOn;break;case "toggleSearchWidget":cvox.SearchWidget.getInstance().toggle();break;case "toggleEarcons":d=cvox.ChromeVox.earcons.toggle()?cvox.ChromeVox.msgs.getMsg("earcons_on"):
-cvox.ChromeVox.msgs.getMsg("earcons_off");break;case "showHeadingsList":case "showLinksList":case "showFormsList":case "showTablesList":case "showLandmarksList":if(!a.nodeList)break;g=cvox.CommandStore.NODE_INFO_MAP[a.nodeList];cvox.NodeSearchWidget.create(g.typeMsg,cvox.DomPredicates[g.predicate]).show();break;case "openLongDesc":g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.hasLongDesc(g)||cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_long_desc"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION);break;case "pauseAllMedia":k=document.getElementsByTagName("VIDEO");for(g=0;h=k[g];g++)h.pause();k=document.getElementsByTagName("AUDIO");for(g=0;h=k[g];g++)h.pause();break;case "toggleSemantics":cvox.TraverseMath.toggleSemantic()?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_on")):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_off"));break;case cvox.BrailleKeyCommand.ROUTING:g=cvox.ChromeVox.navigationManager.getBraille();
-g=g.text.getSpans(a.displayPosition||0);g=g.filter(function(a){return a instanceof Node})[0];cvox.DomUtil.clickElem(g||cvox.ChromeVox.navigationManager.getCurrentNode(),!1,!0);break;case cvox.BrailleKeyCommand.PAN_LEFT:case cvox.BrailleKeyCommand.LINE_UP:case cvox.BrailleKeyCommand.PAN_RIGHT:case cvox.BrailleKeyCommand.LINE_DOWN:cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "debug":break;case "nop":break;default:throw"Command behavior not defined: "+
-b;}""!=c?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(c),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION):cvox.ChromeVox.navigationManager.isReading()?a.disallowContinuation?cvox.ChromeVox.navigationManager.stopReading(!0):"readFromHere"!=b&&cvox.ChromeVox.navigationManager.skip():a.announce&&cvox.ChromeVox.navigationManager.finishNavCommand(d);a.allowEvents||cvox.ChromeVoxEventSuspender.exitSuspendEvents();return!!a.doDefault||e};
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent=function(a){a=new cvox.UserEventDetail(a.detail);a.command&&cvox.ChromeVoxUserCommands.doCommand_(cvox.ChromeVoxUserCommands.lookupCommand_(a.command,a))};cvox.ChromeVoxUserCommands.lookupCommand_=function(a,b){var c=cvox.CommandStore.CMD_WHITELIST[a];if(!c)throw"Invalid command: "+a;c=goog.object.clone(c);c.command=a;b&&goog.object.extend(c,b);return c};cvox.ChromeVoxUserCommands.init_();cvox.ChromeVoxKbHandler={};cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable=function(a){window.JSON&&(cvox.ChromeVoxKbHandler.handlerKeyMap=cvox.KeyMap.fromJSON(a))};cvox.ChromeVoxKbHandler.sortKeyToFunctionsTable_=function(a){function b(a,b){return a[0].length<b[0].length?-1:b[0].length<a[0].length?1:a[0].localeCompare(b[0])}var c=[],d;for(d in a)c.push([d,a[d]]);c.sort(b);return c};
-cvox.ChromeVoxKbHandler.basicKeyDownActionsListener=function(a){var b=cvox.KeyUtil.keyEventToKeySequence(a);a=void 0!=cvox.ChromeVoxKbHandler.handlerKeyMap?cvox.ChromeVoxKbHandler.handlerKeyMap.commandForKey(b):null;if(!a)return!cvox.KeyUtil.sequencing;if(!cvox.ChromeVox.isActive&&"toggleChromeVox"!=a)return!0;var c=!0,d=cvox.ChromeVoxUserCommands.commands[a];d?(b=cvox.History.getInstance(),b.enterUserCommand(a),c=d(),b.exitUserCommand(a)):b.cvoxModifier&&(c=!1);cvox.ChromeVox.entireDocumentIsHidden&&
-(c=!0);return c};cvox.LiveRegions=function(){};cvox.LiveRegions.pageLoadTime=null;cvox.LiveRegions.INITIAL_SILENCE_MS=2E3;cvox.LiveRegions.lastAnnouncedMap={};cvox.LiveRegions.MAX_DISCARD_DUPS_MS=2E3;cvox.LiveRegions.lastAnnouncedTime=null;cvox.LiveRegions.nodesAlreadyHandled=[];
-cvox.LiveRegions.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.pageLoadTime=a;if(c||!document.hasFocus())return!1;var d=!1;a=cvox.AriaUtil.getLiveRegions(document.body);for(c=0;c<a.length;c++)cvox.LiveRegions.handleOneChangedNode(a[c],a[c],!1,!1,function(a,c){a||b!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);var g=new cvox.NavigationSpeaker;g.speakDescriptionArray(c,b,null);d=!0});cvox.Interframe.addListener(function(a){if("speakLiveRegion"==
-a.command)for(var b=document.getElementsByTagName("iframe"),c=0,d;d=b[c];c++)if(d.src==a.src){if(!cvox.DomUtil.isVisible(d))break;d=JSON.parse(a.content);for(var k=[],l=0,m;m=d[l];l++)k.push(new cvox.NavDescription(m));(new cvox.NavigationSpeaker).speakDescriptionArray(k,a.queueMode,null)}});return d};
-cvox.LiveRegions.processMutations=function(a,b){cvox.LiveRegions.nodesAlreadyHandled=[];a.forEach(function(a){if(!a.target.hasAttribute||!a.target.hasAttribute("cvoxIgnore")){if(a.addedNodes)for(var d=0;d<a.addedNodes.length;d++)a.addedNodes[d].hasAttribute&&a.addedNodes[d].hasAttribute("cvoxIgnore")||cvox.LiveRegions.handleOneChangedNode(a.addedNodes[d],a.target,!1,!0,b);if(a.removedNodes)for(d=0;d<a.removedNodes.length;d++)a.removedNodes[d].hasAttribute&&a.removedNodes[d].hasAttribute("cvoxIgnore")||
-cvox.LiveRegions.handleOneChangedNode(a.removedNodes[d],a.target,!0,!1,b);"characterData"==a.type&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!1,b);if("class"==a.attributeName||"style"==a.attributeName||"hidden"==a.attributeName){var e=a.attributeName,d=a.target,f=!cvox.DomUtil.isVisible(d),g=document.createElement("div");g.setAttribute("cvoxIgnore","1");g.setAttribute("class",d.getAttribute("class"));g.setAttribute("style",d.getAttribute("style"));g.setAttribute("hidden",d.getAttribute("hidden"));
-g.setAttribute(e,a.oldValue);e=!0;d.parentElement?(d.parentElement.appendChild(g),e=!cvox.DomUtil.isVisible(g),d.parentElement.removeChild(g)):e=!cvox.DomUtil.isVisible(g);!0===e&&!1===f?cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!0,b):!1===e&&!0===f&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!0,!1,b)}}});cvox.LiveRegions.nodesAlreadyHandled.length=0};
-cvox.LiveRegions.handleOneChangedNode=function(a,b,c,d,e){var f=c?b:a;f instanceof Element||(f=f.parentElement);for(;f&&!cvox.AriaUtil.getAriaLive(f);)f=f.parentElement;if(!f){if(d&&a!=document.body)for(a=cvox.AriaUtil.getLiveRegions(a),d=0;d<a.length;d++)cvox.LiveRegions.handleOneChangedNode(a[d],b,c,!1,e)}else if(!(0<=cvox.LiveRegions.nodesAlreadyHandled.indexOf(a)||(cvox.LiveRegions.nodesAlreadyHandled.push(a),cvox.AriaUtil.getAriaBusy(f)))){if(c){if(!cvox.AriaUtil.getAriaRelevant(f,"removals"))return}else if(!cvox.AriaUtil.getAriaRelevant(f,
-"additions"))return;cvox.LiveRegions.announceChange(a,f,c,e)}};
-cvox.LiveRegions.announceChange=function(a,b,c,d){var e=new Date-cvox.LiveRegions.pageLoadTime;if(!("alert"!=cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS)&&cvox.DomUtil.isVisible(b)){if(a!=b)for(var f=a.parentElement;f;){(cvox.AriaUtil.getAriaAtomic(f)||cvox.AriaUtil.isLeafElement(f)||cvox.AriaUtil.isControlWidget(f))&&!cvox.AriaUtil.isCompositeControl(f)&&(a=f);if(f==b)break;f=f.parentElement}a=cvox.LiveRegions.getNavDescriptionsRecursive(a);if(0!=a.length){c&&(a=[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),
-text:""})].concat(a));if("alert"==cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS){c="";for(e=0;e<a.length;e++)c+=a[e].text,c+=a[e].userValue;if(""==cvox.DomUtil.collapseWhitespace(c))return}c=new Date;for(var g in cvox.LiveRegions.lastAnnouncedMap)c-cvox.LiveRegions.lastAnnouncedMap[g]>cvox.LiveRegions.MAX_DISCARD_DUPS_MS&&delete cvox.LiveRegions.lastAnnouncedMap[g];g=a.reduce(function(a,b){return a+"|"+b.text},"");cvox.LiveRegions.lastAnnouncedMap[g]||(cvox.LiveRegions.lastAnnouncedMap[g]=
-c,b="assertive"==cvox.AriaUtil.getAriaLive(b),cvox.Interframe.isIframe()&&!document.hasFocus()?cvox.Interframe.sendMessageToParentWindow({command:"speakLiveRegion",content:JSON.stringify(a),queueMode:b?0:1,src:window.location.href}):d(b,a))}}};
-cvox.LiveRegions.getNavDescriptionsRecursive=function(a){return cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)?(a=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity),a.isEmpty()?[]:[a]):cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a)};cvox.LiveRegionsDeprecated=function(){};cvox.LiveRegionsDeprecated.trackedRegions=[];cvox.LiveRegionsDeprecated.previousRegionValue=[];cvox.LiveRegionsDeprecated.pageLoadTime=null;cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS=2E3;
-cvox.LiveRegionsDeprecated.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegionsDeprecated.pageLoadTime=a;a=!1;for(var d=cvox.AriaUtil.getLiveRegions(document.body),e=0;e<d.length;e++)cvox.LiveRegionsDeprecated.updateLiveRegion(d[e],b,c)&&(a=!0,b=cvox.AbstractTts.QUEUE_MODE_QUEUE);return a};
-cvox.LiveRegionsDeprecated.updateLiveRegion=function(a,b,c){if(cvox.AriaUtil.getAriaBusy(a)||!cvox.DomUtil.isVisible(a))return!1;var d=cvox.LiveRegionsDeprecated.trackedRegions.indexOf(a),e;0<=d?e=cvox.LiveRegionsDeprecated.previousRegionValue[d]:(d=cvox.LiveRegionsDeprecated.trackedRegions.length,e=[],cvox.LiveRegionsDeprecated.trackedRegions.push(a),cvox.LiveRegionsDeprecated.previousRegionValue.push([]));var f=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(a),g=new Date-cvox.LiveRegionsDeprecated.pageLoadTime;
-if("alert"!=cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS)return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1;if("alert"==cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS){for(var h="",g=0;g<f.length;g++)h+=f[g].text,h+=f[g].userValue;if(""==cvox.DomUtil.collapseWhitespace(h))return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1}for(var k={},g=0;g<e.length;g++)k[e[g].toString()]=!0;for(var l={},g=0;g<f.length;g++)l[f[g].toString()]=
-!0;h=[];if(cvox.AriaUtil.getAriaRelevant(a,"additions"))for(g=0;g<f.length;g++)k[f[g].toString()]||h.push(f[g]);k=[];if(cvox.AriaUtil.getAriaRelevant(a,"removals"))for(g=0;g<e.length;g++)l[e[g].toString()]||k.push(e[g]);e=[];e=0==h.length&&0<k.length?[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),text:""})].concat(k):h;cvox.LiveRegionsDeprecated.previousRegionValue[d]=f;if(c||0==e.length)return!1;a=cvox.AriaUtil.getAriaLive(a);"polite"==a&&(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);
-for(g=0;g<e.length;g++)e[g].speak(b),b=cvox.AbstractTts.QUEUE_MODE_QUEUE;return!0};
-cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue=function(a){if(cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)){var b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity);return b.isEmpty()?[]:[b]}var c=[],b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!1,cvox.ChromeVox.verbosity);b.isEmpty()||c.push(b);for(b=0;b<a.childNodes.length;b++){var d=a.childNodes[b];cvox.DomUtil.isVisible(d,{checkAncestors:!1})&&!cvox.AriaUtil.isHidden(d)&&(d=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(d),
-c=c.concat(d))}return c};cvox.ChromeVoxEventWatcherUtil={};cvox.ChromeVoxEventWatcher=function(){};cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_=50;cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_=10;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_=1E3;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_=3;cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_=5;cvox.ChromeVoxEventWatcher.shouldEchoKeys=!0;cvox.ChromeVoxEventWatcher.processing_=!1;
-cvox.ChromeVoxEventWatcher.init=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=null;cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=null;cvox.ChromeVoxEventWatcher.eventToEat=null;cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;cvox.ChromeVoxEventWatcher.lastKeypressTime=0;cvox.ChromeVoxEventWatcher.listeners_=
-[];cvox.ChromeVoxEventWatcher.mutationObserver_=null;cvox.ChromeVoxEventWatcher.focusFollowsMouse=!1;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=500;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.lastEventTime=0;cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.readyCallbacks_=[];cvox.ChromeVox.searchKeyHeld=!1;cvox.ChromeVoxEventWatcher.textMutationObserver_=null;cvox.ChromeVoxEventWatcher.addEventListeners_(a);
-cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=0;cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=0};cvox.ChromeVoxEventWatcher.storeOn=function(a){a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld};cvox.ChromeVoxEventWatcher.readFrom=function(a){cvox.ChromeVox.searchKeyHeld=a.searchKeyHeld};
-cvox.ChromeVoxEventWatcher.addEvent=function(a){if(!cvox.ChromeVox.isActive||document.webkitHidden)return!1;cvox.ChromeVoxEventWatcher.events_.push(a);cvox.ChromeVoxEventWatcher.lastEventTime=(new Date).getTime();-1==cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime&&(cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=(new Date).getTime());cvox.ChromeVoxEventWatcher.queueProcessingScheduled_||(cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!0,window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,
-cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_))};cvox.ChromeVoxEventWatcher.addReadyCallback=function(a){cvox.ChromeVoxEventWatcher.readyCallbacks_.push(a);cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()};cvox.ChromeVoxEventWatcher.hasPendingEvents_=function(){return-1!=cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime||cvox.ChromeVoxEventWatcher.queueProcessingScheduled_};cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;
-cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_=function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_||(cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!0,window.setTimeout(function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;!cvox.ChromeVoxEventWatcher.hasPendingEvents_()&&!cvox.ChromeVoxEventWatcher.queueProcessingScheduled_&&0<cvox.ChromeVoxEventWatcher.readyCallbacks_.length&&(cvox.ChromeVoxEventWatcher.readyCallbacks_.shift()(),cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_())},
-5))};
-cvox.ChromeVoxEventWatcher.addEventListeners_=function(a){cvox.ChromeVoxEventWatcher.addEventListener_(a,"keydown",cvox.ChromeVoxEventWatcher.keyDownEventWatcher,!0);if(cvox.ChromeVox.isActive&&!cvox.ChromeVox.entireDocumentIsHidden)if(cvox.ChromeVoxEventWatcher.addEventListener_(a,"keypress",cvox.ChromeVoxEventWatcher.keyPressEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"keyup",cvox.ChromeVoxEventWatcher.keyUpEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,cvox.UserEventDetail.Category.JUMP,
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent,!1),cvox.ChromeVoxEventWatcher.addEventListener_(a,"focus",cvox.ChromeVoxEventWatcher.focusEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"blur",cvox.ChromeVoxEventWatcher.blurEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"change",cvox.ChromeVoxEventWatcher.changeEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"copy",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"cut",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"paste",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"select",cvox.ChromeVoxEventWatcher.selectEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"webkitvisibilitychange",cvox.ChromeVoxEventWatcher.visibilityChangeWatcher,!0),cvox.ChromeVoxEventWatcher.events_=[],cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1,cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"mouseover",cvox.ChromeVoxEventWatcher.mouseOverEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"mouseout",cvox.ChromeVoxEventWatcher.mouseOutEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"click",cvox.ChromeVoxEventWatcher.mouseClickEventWatcher,!0),"undefined"!=typeof WebKitMutationObserver){cvox.ChromeVoxEventWatcher.mutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.mutationHandler);var b=null;a.documentElement?b=a.documentElement:a.document&&
-a.document.documentElement&&(b=a.document.documentElement);b&&cvox.ChromeVoxEventWatcher.mutationObserver_.observe(b,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!0,characterDataOldValue:!0})}else cvox.ChromeVoxEventWatcher.addEventListener_(a,"DOMSubtreeModified",cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher,!0)};
-cvox.ChromeVoxEventWatcher.cleanup=function(a){for(var b=0;b<cvox.ChromeVoxEventWatcher.listeners_.length;b++){var c=cvox.ChromeVoxEventWatcher.listeners_[b];a.removeEventListener(c.type,c.listener,c.useCapture)}cvox.ChromeVoxEventWatcher.listeners_=[];cvox.ChromeVoxEventWatcher.currentDateHandler&&cvox.ChromeVoxEventWatcher.currentDateHandler.shutdown();cvox.ChromeVoxEventWatcher.currentTimeHandler&&cvox.ChromeVoxEventWatcher.currentTimeHandler.shutdown();cvox.ChromeVoxEventWatcher.currentMediaHandler&&
-cvox.ChromeVoxEventWatcher.currentMediaHandler.shutdown();cvox.ChromeVoxEventWatcher.mutationObserver_&&cvox.ChromeVoxEventWatcher.mutationObserver_.disconnect();cvox.ChromeVoxEventWatcher.mutationObserver_=null};cvox.ChromeVoxEventWatcher.addEventListener_=function(a,b,c,d){cvox.ChromeVoxEventWatcher.listeners_.push({type:b,listener:c,useCapture:d});a.addEventListener(b,c,d)};cvox.ChromeVoxEventWatcher.getLastFocusedNode=function(){return cvox.ChromeVoxEventWatcher.lastFocusedNode};
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=a;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=a?cvox.DomUtil.getControlValueAndStateString(a):null};
-cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d);return!0})};
-cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.WML)&&!a.fromCvox&&cvox.ApiImplementation.syncToNode(a.target,!0);return cvox.ChromeVox.host.mustRedispatchClickEvent()&&!a.fromCvox?(cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),cvox.DomUtil.clickElem(a,!1,!0),!1):cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse||cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&
-"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVox.navigationManager.stopReading(!0);var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.ChromeVoxEventWatcher.announcedMouseOverNode=
-b}},cvox.ChromeVoxEventWatcher.mouseoverDelayMs);return!0};cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
-cvox.ChromeVoxEventWatcher.focusEventWatcher=function(a){cvox.ChromeVoxUserCommands.removeTabDummySpan();cvox.ChromeVoxEventSuspender.areEventsSuspended()?a.target&&a.target.nodeType==Node.ELEMENT_NODE&&cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a.target):cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.focusHandler=function(a){if(a.target&&a.target.hasAttribute&&"true"==a.target.getAttribute("aria-hidden")&&"true"!=a.target.getAttribute("chromevoxignoreariahidden"))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.setUpTextHandler();else if(a.target&&a.target!=window){var b=a.target,c=cvox.DomUtil.getSurroundingControl(b);if(c&&c==cvox.ChromeVoxEventWatcher.lastFocusedNode)cvox.ChromeVoxEventWatcher.handleControlChanged(b);else{c?cvox.ChromeVoxEventWatcher.setLastFocusedNode_(c):
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_(b);c=cvox.ChromeVoxEventWatcher.queueMode_();if(cvox.ChromeVoxEventWatcher.getInitialVisibility()||cvox.ChromeVoxEventWatcher.handleDialogFocus(b))c=cvox.AbstractTts.QUEUE_MODE_QUEUE;cvox.ChromeVox.navigationManager.clearPageSel(!0)&&(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ApiImplementation.syncToNode(b,!document.webkitHidden,c);if(a.target.constructor==HTMLVideoElement||a.target.constructor==HTMLAudioElement)cvox.ChromeVoxEventWatcher.setUpMediaHandler_();
-else{if(a.target.hasAttribute)switch(a=a.target.getAttribute("type"),a){case "time":cvox.ChromeVoxEventWatcher.setUpTimeHandler_();return;case "date":case "month":case "week":cvox.ChromeVoxEventWatcher.setUpDateHandler_();return}cvox.ChromeVoxEventWatcher.setUpTextHandler()}}}else cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null)};
-cvox.ChromeVoxEventWatcher.blurEventWatcher=function(a){window.setTimeout(function(){document.activeElement||(cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.addEvent(a))},0);return!0};
-cvox.ChromeVoxEventWatcher.keyDownEventWatcher=function(a){cvox.ChromeVox.isChromeOS&&91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!0);a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld&&cvox.ChromeVox.isActive;a.stickyMode=cvox.ChromeVox.isStickyOn&&cvox.ChromeVox.isActive;a.keyPrefix=cvox.ChromeVox.keyPrefixOn&&cvox.ChromeVox.isActive;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVoxEventWatcher.eventToEat=null;if(!cvox.ChromeVoxKbHandler.basicKeyDownActionsListener(a)||cvox.ChromeVoxEventWatcher.handleControlAction(a))return a.preventDefault(),
-a.stopPropagation(),cvox.ChromeVoxEventWatcher.eventToEat=a,!1;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.keyUpEventWatcher=function(a){91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!1);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.stopPropagation(),a.preventDefault(),!1):!0};
-cvox.ChromeVoxEventWatcher.keyPressEventWatcher=function(a){var b=document.location.href,c=cvox.TypingEcho.shouldSpeakChar(cvox.ChromeVox.typingEcho);"undefined"!==typeof cvox.ChromeVox.keyEcho[b]&&(c=cvox.ChromeVox.keyEcho[b]);cvox.ChromeVoxEditableTextBase.eventTypingEcho&&c&&cvox.DomPredicates.editTextPredicate([document.activeElement])&&"password"!==document.activeElement.type&&(b=(new Date).getTime(),150<b-cvox.ChromeVoxEventWatcher.lastKeypressTime&&cvox.ChromeVox.tts.stop(),cvox.ChromeVoxEventWatcher.lastKeypressTime=
-b,cvox.ChromeVox.tts.speak(String.fromCharCode(a.charCode),1,{relativeRate:2}));cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.preventDefault(),a.stopPropagation(),!1):!0};cvox.ChromeVoxEventWatcher.changeEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.clipboardEventWatcher=function(a){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(a.type).toLowerCase());var b="";switch(a.type){case "paste":b=a.clipboardData.getData("text");break;case "copy":case "cut":b=window.getSelection().toString()}cvox.ChromeVox.tts.speak(b,cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ChromeVox.navigationManager.clearPageSel();return!0};
-cvox.ChromeVoxEventWatcher.changeHandler=function(a){cvox.ChromeVoxEventWatcher.setUpTextHandler()||document.activeElement==a.target&&cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement)};cvox.ChromeVoxEventWatcher.selectEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher=function(a){if(!a||!a.target)return!0;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.visibilityChangeWatcher=function(){cvox.ChromeVoxEventWatcher.initialVisibility=!document.webkitHidden;document.webkitHidden&&cvox.ChromeVox.navigationManager.stopReading(!0)};cvox.ChromeVoxEventWatcher.getInitialVisibility=function(){var a=cvox.ChromeVoxEventWatcher.initialVisibility;cvox.ChromeVoxEventWatcher.initialVisibility=!1;return a};
-cvox.ChromeVoxEventWatcher.speakLiveRegion_=function(a,b){var c=cvox.ChromeVoxEventWatcher.queueMode_();a||c!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);var d=new cvox.NavigationSpeaker;d.speakDescriptionArray(b,c,null)};
-cvox.ChromeVoxEventWatcher.subtreeModifiedHandler=function(a){var b=(new Date).getTime();if(cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_+cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_>b){if(cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_++,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_>cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_)return}else cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=b,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=
-1;if(a&&a.target)for(a=a.target,a=cvox.AriaUtil.getLiveRegions(a),b=0;b<a.length&&b<cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_;b++)cvox.LiveRegionsDeprecated.updateLiveRegion(a[b],cvox.ChromeVoxEventWatcher.queueMode_(),!1)};
-cvox.ChromeVoxEventWatcher.setUpTextHandler=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);if(a!=cvox.ChromeVoxEventWatcher.currentTextControl){cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("click",
-cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.textMutationObserver_&&(cvox.ChromeVoxEventWatcher.textMutationObserver_.disconnect(),cvox.ChromeVoxEventWatcher.textMutationObserver_=null));cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;if(null==a)return!1;if(a.constructor==HTMLInputElement&&cvox.DomUtil.isInputTypeText(a)&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=
-new cvox.ChromeVoxEditableHTMLInput(a,cvox.ChromeVox.tts);else if(a.constructor==HTMLTextAreaElement&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableTextArea(a,cvox.ChromeVox.tts);else if(a.isContentEditable||"textbox"==a.getAttribute("role"))cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableContentEditable(a,cvox.ChromeVox.tts);
-cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("click",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),window.WebKitMutationObserver&&(cvox.ChromeVoxEventWatcher.textMutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.onTextMutation),cvox.ChromeVoxEventWatcher.textMutationObserver_.observe(cvox.ChromeVoxEventWatcher.currentTextControl,
-{childList:!0,attributes:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1})),cvox.ChromeVoxEventSuspender.areEventsSuspended()||cvox.ChromeVox.navigationManager.updateSel(cvox.CursorSelection.fromNode(cvox.ChromeVoxEventWatcher.currentTextControl)));return null!=cvox.ChromeVoxEventWatcher.currentTextHandler}};cvox.ChromeVoxEventWatcher.handleTextChanged=function(a){if(cvox.ChromeVoxEventWatcher.currentTextHandler){var b=cvox.ChromeVoxEventWatcher.currentTextHandler;b.update(a);return!0}return!1};
-cvox.ChromeVoxEventWatcher.onTextMutation=function(){cvox.ChromeVoxEventWatcher.currentTextHandler&&window.setTimeout(function(){cvox.ChromeVoxEventWatcher.handleTextChanged(!1)},cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_)};
-cvox.ChromeVoxEventWatcher.handleControlChanged=function(a){var b=cvox.DomUtil.getControlValueAndStateString(a),c=cvox.DomUtil.getSurroundingControl(a),d=!1;if(a!=cvox.ChromeVoxEventWatcher.lastFocusedNode&&(null==c||c!=cvox.ChromeVoxEventWatcher.lastFocusedNode))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a);else if(b==cvox.ChromeVoxEventWatcher.lastFocusedNodeValue)return;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=b;if(cvox.DomPredicates.checkboxPredicate([a])||cvox.DomPredicates.radioPredicate([a]))d=
-!0,a.checked?cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_ON):cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_OFF);"SELECT"==a.tagName&&(d=!0);if("INPUT"==a.tagName)switch(a.type){case "color":case "datetime":case "datetime-local":case "range":d=!0}a.hasAttribute&&a.hasAttribute("role")&&(d=!0);c&&c!=a&&document.activeElement==a?(cvox.ApiImplementation.syncToNode(a,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH),d=!1):cvox.AriaUtil.getActiveDescendant(a)&&(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(cvox.AriaUtil.getActiveDescendant(a),
-!0),d=!0);d&&!cvox.ChromeVoxEventSuspender.areEventsSuspended()&&(cvox.ChromeVox.tts.speak(b,cvox.ChromeVoxEventWatcher.queueMode_(),null),cvox.NavBraille.fromText(b).write())};
-cvox.ChromeVoxEventWatcher.handleControlAction=function(a){if(!cvox.ChromeVox.isActive)return!1;var b=a.target;if("SELECT"==b.tagName&&1>=b.size&&(13==a.keyCode||32==a.keyCode))return a.preventDefault(),a.stopPropagation(),!0;if("INPUT"==b.tagName&&"range"==b.type){var c=parseFloat(b.value),d;b.step&&0<b.step?d=b.step:b.min&&b.max?(d=b.max-b.min,d=2<d&&31>d?1:(b.max-b.min)/10):d=1;if(37==a.keyCode||38==a.keyCode)c-=d;else if(39==a.keyCode||40==a.keyCode)c+=d;b.max&&c>b.max&&(c=b.max);b.min&&c<b.min&&
-(c=b.min);b.value=c}return!1};
-cvox.ChromeVoxEventWatcher.handleDialogFocus=function(a){for(;a;){if(a.hasAttribute){var b=a.getAttribute("role");if("dialog"==b||"alertdialog"==b)break}a=a.parentElement}if(a==cvox.ChromeVox.navigationManager.currentDialog)return!1;if(cvox.ChromeVox.navigationManager.currentDialog&&!a){if(!cvox.DomUtil.isDescendantOfNode(document.activeElement,cvox.ChromeVox.navigationManager.currentDialog))return cvox.ChromeVox.navigationManager.currentDialog=null,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("exiting_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),!0}else if(a)return cvox.ChromeVox.navigationManager.currentDialog=a,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("entering_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a),b=new cvox.NavigationSpeaker,b.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,null),!0;return!1};
-cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess=function(a,b,c){a=c-a;b=c-b;return a<cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_&&b<cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_};cvox.ChromeVoxEventWatcher.queueMode_=function(){return cvox.ChromeVoxEventWatcher.processing_?cvox.AbstractTts.QUEUE_MODE_QUEUE:cvox.AbstractTts.QUEUE_MODE_FLUSH};
-cvox.ChromeVoxEventWatcher.processQueue_=function(){if(0!=cvox.ChromeVoxEventWatcher.events_.length){var a=cvox.ChromeVoxEventWatcher.events_,b=-1,c=0,d,e;for(e=0;d=a[e];e++)"focus"==d.type&&(b=e,c=d.timeStamp);cvox.ChromeVoxEventWatcher.events_=[];for(e=0;d=a[e];e++){var f=a[e-1]||{};!(e>=b||"LiveRegion"==d.type||"DOMSubtreeModified"==d.type)||"focus"==f.type&&"change"==d.type||cvox.ChromeVoxEventWatcher.events_.push(d)}cvox.ChromeVoxEventWatcher.events_.sort(function(a,b){return"LiveRegion"!=b.type&&
-"LiveRegion"==a.type||"DOMSubtreeModified"!=b.type&&"DOMSubtreeModified"==a.type?1:-1});a=(new Date).getTime();if(0<=b&&cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess(c,cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime,a))window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_);else{for(e=0;d=cvox.ChromeVoxEventWatcher.events_[e];e++)cvox.ChromeVoxEventWatcher.handleEvent_(d),cvox.ChromeVoxEventWatcher.processing_=!0;cvox.ChromeVoxEventWatcher.processing_=
-!1;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()}}};
-cvox.ChromeVoxEventWatcher.handleEvent_=function(a){switch(a.type){case "keydown":cvox.ChromeVoxEventWatcher.setUpTextHandler();if(cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.handleTextChanged(!0),(a=cvox.ChromeVoxEventWatcher.currentTextHandler)&&a.lastChangeDescribed))break;cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement);break;case "keypress":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "focus":cvox.ChromeVoxEventWatcher.focusHandler(a);
-break;case "blur":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "change":cvox.ChromeVoxEventWatcher.changeHandler(a);break;case "select":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "LiveRegion":cvox.ChromeVoxEventWatcher.speakLiveRegion_(a.assertive,a.navDescriptions);break;case "DOMSubtreeModified":cvox.ChromeVoxEventWatcher.subtreeModifiedHandler(a)}};
-cvox.ChromeVoxEventWatcher.setUpTimeHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentTimeHandler=a.constructor==HTMLInputElement&&a.type&&"time"==a.type?new cvox.ChromeVoxHTMLTimeWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentTimeHandler};
-cvox.ChromeVoxEventWatcher.setUpMediaHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentMediaHandler=a.constructor==HTMLVideoElement||a.constructor==HTMLAudioElement?new cvox.ChromeVoxHTMLMediaWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentMediaHandler};
-cvox.ChromeVoxEventWatcher.setUpDateHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentDateHandler=a.constructor!=HTMLInputElement||!a.type||"date"!=a.type&&"month"!=a.type&&"week"!=a.type?null:new cvox.ChromeVoxHTMLDateWidget(a,cvox.ChromeVox.tts);return null!=cvox.ChromeVoxEventWatcher.currentDateHandler};cvox.Serializer=function(){};cvox.Serializer.prototype.storeOn=function(a){cvox.ChromeVox.storeOn(a);cvox.ChromeVoxEventWatcher.storeOn(a)};cvox.Serializer.prototype.readFrom=function(a){cvox.ChromeVox.readFrom(a);cvox.ChromeVoxEventWatcher.readFrom(a)};cvox.InitGlobals=function(){};
-cvox.InitGlobals.initGlobals=function(){cvox.ChromeVox.host||(cvox.ChromeVox.host=cvox.HostFactory.getHost());cvox.ChromeVox.tts=(new cvox.CompositeTts).add(cvox.HostFactory.getTts()).add(cvox.History.getInstance()).add(cvox.ConsoleTts.getInstance());cvox.ChromeVox.braille||(cvox.ChromeVox.braille=cvox.HostFactory.getBraille());cvox.ChromeVox.mathJax=cvox.HostFactory.getMathJax();cvox.ChromeVox.earcons=cvox.HostFactory.getEarcons();cvox.ChromeVox.msgs=cvox.HostFactory.getMsgs();cvox.ChromeVox.isActive=
-!0;cvox.ChromeVox.navigationManager=new cvox.NavigationManager;cvox.ChromeVox.navigationManager.updateIndicator();cvox.ChromeVox.syncToNode=cvox.ApiImplementation.syncToNode;cvox.ChromeVox.speakNode=cvox.ApiImplementation.speakNode;cvox.ChromeVox.serializer=new cvox.Serializer;cvox.ChromeVox.host.init();cvox.ChromeVoxEventWatcher.init(window);cvox.ChromeVox.executeUserCommand=function(a){cvox.ChromeVoxUserCommands.commands[a]()};cvox.ChromeVox.host.onPageLoad()};cvox.ChromeVoxInit={};cvox.ChromeVox.initTimeout_=100;cvox.ChromeVox.recallInit_=function(a){window.console.log(a+" Will try again in "+cvox.ChromeVox.initTimeout_+"ms");window.setTimeout(cvox.ChromeVox.initDocument,cvox.ChromeVox.initTimeout_);cvox.ChromeVox.initTimeout_*=2};
-cvox.ChromeVox.initDocument=function(){document.body?(cvox.ChromeVox.host=cvox.HostFactory.getHost(),cvox.ChromeVox.host.ttsLoaded()?(window.console.log("Starting ChromeVox."),cvox.InitGlobals.initGlobals(),window.disableChromeVox=function(){cvox.ChromeVox.host.killChromeVox()}):cvox.ChromeVox.recallInit_("ChromeVox not starting; waiting for TTS. "+document.location.href+".")):cvox.ChromeVox.recallInit_("ChromeVox not starting on unloaded page: "+document.location.href+".")};
-cvox.ChromeVox.reinit=function(){cvox.ChromeVox.host.reinit();cvox.ChromeVox.initDocument()};cvox.AndroidBraille=function(){};goog.inherits(cvox.AndroidBraille,cvox.AbstractBraille);cvox.AndroidBraille.prototype.write=function(a){accessibility.braille&&accessibility.braille(JSON.stringify(a.toJson()))};cvox.HostFactory.brailleConstructor=cvox.AndroidBraille;cvox.AndroidEarcons=function(){cvox.AbstractEarcons.call(this);this.audioMap={}};goog.inherits(cvox.AndroidEarcons,cvox.AbstractEarcons);cvox.AndroidEarcons.BASE_URL="https://ssl.gstatic.com/accessibility/javascript/android/earcons/";
-cvox.AndroidEarcons.prototype.playEarcon=function(a){if(this.earconsAvailable()){cvox.AndroidEarcons.superClass_.playEarcon.call(this,a);this.currentAudio=this.audioMap[a];this.currentAudio||(this.currentAudio=new Audio(cvox.AndroidEarcons.BASE_URL+this.getEarconFilename(a)),this.audioMap[a]=this.currentAudio);try{this.currentAudio.currentTime=0}catch(b){}this.currentAudio.paused&&this.currentAudio.play()}};
-cvox.AndroidEarcons.prototype.earconsAvailable=function(){return-1==navigator.userAgent.indexOf("Chrome")?!1:!0};cvox.HostFactory.earconsConstructor=cvox.AndroidEarcons;"undefined"!=typeof goog&&goog.provide&&(cvox.Api={},cvox.Api.Math={});
-(function(){function a(){d&&(d.port1.close(),d.port2.close(),d=null);d=new MessageChannel;window.postMessage("cvox.PortSetup",[d.port2],"*");d.port1.onmessage=function(a){"cvox.Disconnect"==a.data&&(d=null);try{var b=JSON.parse(a.data);b.id&&g[b.id]&&(g[b.id](b),delete g[b.id])}catch(c){}}}function b(a,b){var c=f;f++;void 0===a.args&&(a.args=[]);a.args=[c].concat(a.args);g[c]=b;d.port1.postMessage(JSON.stringify(a))}function c(a,c){var d=null;c&&c.endCallback&&(d=c.endCallback);b(a,d)}var d,e=!1,
-f=1,g={};window.cvox||(window.cvox={});var h=window.cvox,k=null;"undefined"!=typeof h.ApiImplementation&&(k=h.ApiImplementation);h.Api=function(){};h.Api.internalEnable=function(){e=!0;k||a();var b=document.createEvent("UIEvents");b.initEvent("chromeVoxLoaded",!0,!1);document.dispatchEvent(b)};h.Api.internalDisable=function(){e=!1;d=null;var a=document.createEvent("UIEvents");a.initEvent("chromeVoxUnloaded",!0,!1);document.dispatchEvent(a)};h.Api.isChromeVoxActive=function(){return k?e:!!d};h.Api.speak=
-function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(a,b,d):(a={cmd:"speak",args:[a,b,d]},c(a,d)))};h.Api.speakNode=function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(h.DomUtil.getName(a),b,d):(a={cmd:"speakNodeRef",args:[h.ApiUtils.makeNodeReference(a),b,d]},c(a,d)))};h.Api.stop=function(){if(h.Api.isChromeVoxActive())if(k)k.stop();else{var a={cmd:"stop"};d.port1.postMessage(JSON.stringify(a))}};h.Api.playEarcon=function(a){h.Api.isChromeVoxActive()&&(k?k.playEarcon(a):(a={cmd:"playEarcon",args:[a]},
-d.port1.postMessage(JSON.stringify(a))))};h.Api.syncToNode=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)k.syncToNode(a,b);else{var c={cmd:"syncToNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getCurrentNode=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.navigationManager.getCurrentNode()):b({cmd:"getCurrentNode"},function(b){a(h.ApiUtils.getNodeFromRef(b.currentNode))}))};h.Api.setSpeechForNode=function(a,b){h.Api.isChromeVoxActive()&&
-a&&b&&a.setAttribute("cvoxnodedesc",JSON.stringify(b))};h.Api.click=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)h.DomUtil.clickElem(a,b,!0);else{var c={cmd:"clickNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getBuild=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.BuildInfo.build):b({cmd:"getBuild"},function(b){a(b.build)}))};h.Api.getVersion=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.version+""):b({cmd:"getVersion"},function(b){a(b.version)}))};
-h.Api.getCvoxModifierKeys=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.KeyUtil.cvoxModKeyCodes()):b({cmd:"getCvoxModKeys"},function(b){a(b.keyCodes)}))};h.Api.isKeyShortcut=function(a,c){if(c)if(h.Api.isChromeVoxActive()){var d=[37,39];if(!d.indexOf(a.keyCode)||a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)if(k){var e=h.KeyUtil.keyEventToKeySequence(a);c(h.ChromeVoxKbHandler.handlerKeyMap.hasKey(e))}else{var d={},f=["target","srcElement","currentTarget","view"];for(e in a)-1===f.indexOf(e)&&(d[e]=
-a[e]);e={cmd:"isKeyShortcut",args:[d]};b(e,function(a){c(a.isHandled)})}else c(!1)}else c(!1)};h.Api.setKeyEcho=function(a){h.Api.isChromeVoxActive()&&(k?k.setKeyEcho(a):(a={cmd:"setKeyEcho",args:[a]},d.port1.postMessage(JSON.stringify(a))))};h.Api.Math=function(){};h.Api.Math.defineRule=function(a,b,c,e,f){if(h.Api.isChromeVoxActive()){var g=Array.prototype.slice.call(arguments,4),g=[a,b,c,e].concat(g);k?k.Math.defineRule.apply(k.Math,g):(g={cmd:"Math.defineRule",args:g},d.port1.postMessage(JSON.stringify(g)))}};
-h.Api.internalEnable();h.NodeDescription=function(a,b,c,d){this.context=a?a:"";this.text=b?b:"";this.userValue=c?c:"";this.annotation=d?d:""}})();cvox.InitialSpeech={};window.INJECTED_AFTER_LOAD||(window.INJECTED_AFTER_LOAD=!1);
-cvox.InitialSpeech.speak=function(){var a=window.INJECTED_AFTER_LOAD;if(!cvox.ChromeVox.isActive||document.webkitHidden)a=!0;window.top==window&&document.title&&!a&&cvox.ChromeVox.tts.speak(document.title,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.init(new Date,cvox.AbstractTts.QUEUE_MODE_QUEUE,a);document.hasFocus()&&document.activeElement==document.body&&cvox.ChromeVox.navigationManager.syncToBeginning();if(cvox.ChromeVox.position[document.location.href]){var b=cvox.ChromeVox.position[document.location.href];
-cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(document.elementFromPoint(b.x,b.y))}document.hasFocus()&&(a||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){cvox.ChromeVox.navigationManager.finishNavCommand("",!0,cvox.AbstractTts.QUEUE_MODE_QUEUE)})())};cvox.AndroidKeyMap=function(){};
-cvox.AndroidKeyMap.getStringifiedKeyMap=function(){return cvox.ChromeVoxJSON.stringify({'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[17]}}':"stopSpeech",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[9]}}':"handleTab",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[9]}}':"handleTabPrev",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[38]}}':"backward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"forward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[37]}}':"previousGranularity",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[39]}}':"nextGranularity",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[13]}}':"forceClickOnCurrentItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"readFromHere",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[85]}}':"readLinkURL",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[75]}}':"fullyDescribe",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[189]}}':"decreaseTtsPitch",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[187]}}':"increaseTtsPitch",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[219]}}':"decreaseTtsRate",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[221]}}':"increaseTtsRate",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[81]}}':"cyclePunctuationLevel",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[49]}}':"nextHeading1",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[49]}}':"previousHeading1",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[50]}}':"nextHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[50]}}':"previousHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[51]}}':"nextHeading3",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[51]}}':"previousHeading3",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[52]}}':"nextHeading4",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[52]}}':"previousHeading4",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[53]}}':"nextHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[53]}}':"previousHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[54]}}':"nextHeading6",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[54]}}':"previousHeading6",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[67]}}':"nextComboBox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[67]}}':"previousComboBox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[69]}}':"nextEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[69]}}':"previousEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[70]}}':"nextFormField",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[70]}}':"previousFormField",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[71]}}':"nextGraphic",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[71]}}':"previousGraphic",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[72]}}':"nextHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[72]}}':"previousHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[73]}}':"nextListItem",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[73]}}':"previousListItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[76]}}':"nextLink",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[76]}}':"previousLink",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[79]}}':"nextList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[79]}}':"previousList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[82]}}':"nextRadio",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[82]}}':"previousRadio",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[84]}}':"nextTable",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[84]}}':"previousTable",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[66]}}':"nextButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[66]}}':"previousButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[88]}}':"nextCheckbox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[88]}}':"previousCheckbox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[186]}}':"nextLandmark",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[186]}}':"previousLandmark"})};cvox.MathSimpleStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathSimpleStore,cvox.MathStore);cvox.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d]){var f=c[d][e],g='self::text() = "'+b+'"';this.defineRule(a,d+"."+e,'[t] "'+f+'"',"self::text()",g)}};cvox.MathCompoundStore=function(){this.subStores_={}};goog.addSingletonGetter(cvox.MathCompoundStore);
-cvox.MathCompoundStore.prototype.defineRules=function(a,b,c){var d=new cvox.MathSimpleStore;d.defineRulesFromMappings(a,b,c);this.subStores_[b]=d};cvox.MathCompoundStore.prototype.addSymbolRules=function(a){var b=cvox.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.mappings)};cvox.MathCompoundStore.prototype.addFunctionRules=function(a){var b=a.names;a=a.mappings;for(var c=0,d;d=b[c];c++)this.defineRules(d,d,a)};
-cvox.MathCompoundStore.prototype.lookupRule=function(a,b){var c=this.subStores_[a.textContent];if(c)return c.lookupRule(a,b)};cvox.MathCompoundStore.prototype.lookupString=function(a,b){var c=document.createTextNode(a);return(c=this.lookupRule(c,b))?c.action.components.map(function(a){return a.content.slice(1,-1)}).join(" "):""};
-cvox.MathCompoundStore.prototype.getDynamicConstraintValues=function(){var a={},b;for(b in this.subStores_){var c=this.subStores_[b].getDynamicConstraintValues(),d;for(d in c){var e=a[d];a[d]=e?cvox.MathUtil.union(e,c[d]):c[d]}}return a};cvox.MathSimpleStore.parseUnicode_=function(a){var b=parseInt(a,16);if(65536>b)return String.fromCharCode(b);b-=65536;a=(b>>10)+55296;b=(b&1023)+56320;return String.fromCharCode(a,b)};cvox.AndroidMathMap=function(){this.store_=cvox.MathCompoundStore.getInstance();cvox.AndroidMathMap.FUNCTION_MAPPINGS_.forEach(goog.bind(this.store_.addFunctionRules,this.store_));cvox.AndroidMathMap.SYMBOL_MAPPINGS_.forEach(goog.bind(this.store_.addSymbolRules,this.store_));this.store_.getDynamicConstraintValues()};
-cvox.AndroidMathMap.prototype.evaluate=function(a,b,c){var d="";b=cvox.MathStore.createDynamicConstraint(b,c);d=this.store_.lookupString(a,b);return new cvox.NavDescription({text:d?d:a})};
-cvox.AndroidMathMap.SYMBOL_MAPPINGS_=[{category:"Po",mappings:{"default":{"default":"exclamation mark"}},key:"0021"},{category:"Po",mappings:{"default":{"default":"quotation mark"}},key:"0022"},{category:"Po",mappings:{"default":{"default":"number sign",alternative:"hash","short":"number"}},key:"0023"},{category:"Sc",mappings:{"default":{"default":"dollar sign","short":"dollar"}},key:"0024"},{category:"Po",mappings:{"default":{"default":"percent sign","short":"percent"}},key:"0025"},{category:"Po",
-mappings:{"default":{"default":"ampersand"}},key:"0026"},{category:"Po",mappings:{"default":{"default":"apostrophe",alternative:"apostrophe quote"}},key:"0027"},{category:"Po",mappings:{"default":{"default":"asterisk"}},key:"002A"},{category:"Sm",mappings:{"default":{"default":"plus sign","short":"plus"}},key:"002B"},{category:"Po",mappings:{"default":{"default":"comma"}},key:"002C"},{category:"Pd",mappings:{"default":{"default":"hyphen minus","short":"minus"}},key:"002D"},{category:"Po",mappings:{"default":{"default":"full stop",
-alternative:"period"}},key:"002E"},{category:"Po",mappings:{"default":{"default":"solidus",alternative:"slash"}},key:"002F"},{category:"Po",mappings:{"default":{"default":"colon"}},key:"003A"},{category:"Po",mappings:{"default":{"default":"semicolon"}},key:"003B"},{category:"Sm",mappings:{"default":{"default":"less than sign","short":"less than"}},key:"003C"},{category:"Sm",mappings:{"default":{"default":"equals sign","short":"equals"}},key:"003D"},{category:"Sm",mappings:{"default":{"default":"greater than sign",
-"short":"greater than"}},key:"003E"},{category:"Po",mappings:{"default":{"default":"question mark"}},key:"003F"},{category:"Po",mappings:{"default":{"default":"commercial at","short":"at"}},key:"0040"},{category:"Po",mappings:{"default":{"default":"reverse solidus",alternative:"backslash"}},key:"005C"},{category:"Sk",mappings:{"default":{"default":"circumflex accent",alternative:"spacing circumflex","short":"hat"}},key:"005E"},{category:"Pc",mappings:{"default":{"default":"low line",alternative:"spacing underscore"}},
-key:"005F"},{category:"Sk",mappings:{"default":{"default":"grave accent",alternative:"spacing grave","short":"grave"}},key:"0060"},{category:"Sm",mappings:{"default":{"default":"vertical line",alternative:"vertical bar"}},key:"007C"},{category:"Sm",mappings:{"default":{"default":"tilde"}},key:"007E"},{category:"Po",mappings:{"default":{"default":"inverted exclamation mark"}},key:"00A1"},{category:"Sc",mappings:{"default":{"default":"cent sign","short":"cent"}},key:"00A2"},{category:"Sc",mappings:{"default":{"default":"pound sign",
-"short":"pound"}},key:"00A3"},{category:"Sc",mappings:{"default":{"default":"currency sign","short":"currency"}},key:"00A4"},{category:"Sc",mappings:{"default":{"default":"yen sign","short":"yen"}},key:"00A5"},{category:"So",mappings:{"default":{"default":"broken bar",alternative:"broken vertical bar"}},key:"00A6"},{category:"Po",mappings:{"default":{"default":"section sign","short":"section"}},key:"00A7"},{category:"Sk",mappings:{"default":{"default":"diaeresis",alternative:"spacing diaeresis","short":"double dot"}},
-key:"00A8"},{category:"So",mappings:{"default":{"default":"copyright sign","short":"copyright"}},key:"00A9"},{category:"Lo",mappings:{"default":{"default":"feminine ordinal indicator"}},key:"00AA"},{category:"Pi",mappings:{"default":{"default":"left pointing double angle quotation mark",alternative:"left pointing guillemet"}},key:"00AB"},{category:"Sm",mappings:{"default":{"default":"not sign","short":"not"}},key:"00AC"},{category:"So",mappings:{"default":{"default":"registered sign",alternative:"registered trade mark sign",
-"short":"registered"}},key:"00AE"},{category:"Sk",mappings:{"default":{"default":"macron",alternative:"spacing macron"}},key:"00AF"},{category:"So",mappings:{"default":{"default":"degree sign","short":"degree"}},key:"00B0"},{category:"Sm",mappings:{"default":{"default":"plus minus sign",alternative:"plus or minus sign","short":"plus minus"}},key:"00B1"},{category:"Sk",mappings:{"default":{"default":"acute accent",alternative:"spacing acute","short":"acute"}},key:"00B4"},{category:"Ll",mappings:{"default":{"default":"micro sign",
-"short":"micro"}},key:"00B5"},{category:"Po",mappings:{"default":{"default":"pilcrow sign",alternative:"paragraph sign","short":"pilcrow"}},key:"00B6"},{category:"Po",mappings:{"default":{"default":"middle dot"}},key:"00B7"},{category:"Sk",mappings:{"default":{"default":"cedilla",alternative:"spacing cedilla"}},key:"00B8"},{category:"Lo",mappings:{"default":{"default":"masculine ordinal indicator"}},key:"00BA"},{category:"Pf",mappings:{"default":{"default":"right pointing double angle quotation mark",
-alternative:"right pointing guillemet"}},key:"00BB"},{category:"Po",mappings:{"default":{"default":"inverted question mark"}},key:"00BF"},{category:"Sm",mappings:{"default":{"default":"multiplication sign","short":"multiplication"}},key:"00D7"},{category:"Sm",mappings:{"default":{"default":"division sign","short":"division"}},key:"00F7"},{category:"Sk",mappings:{"default":{"default":"breve",alternative:"spacing breve"}},key:"02D8"},{category:"Sk",mappings:{"default":{"default":"dot above",alternative:"spacing dot above"}},
-key:"02D9"},{category:"Sk",mappings:{"default":{"default":"ring above",alternative:"spacing ring above"}},key:"02DA"},{category:"Sk",mappings:{"default":{"default":"ogonek",alternative:"spacing ogonek"}},key:"02DB"},{category:"Sk",mappings:{"default":{"default":"small tilde",alternative:"spacing tilde"}},key:"02DC"},{category:"Sk",mappings:{"default":{"default":"double acute accent",alternative:"spacing double acute"}},key:"02DD"},{category:"Pd",mappings:{"default":{"default":"hyphen"}},key:"2010"},
-{category:"Pd",mappings:{"default":{"default":"non breaking hyphen"}},key:"2011"},{category:"Pd",mappings:{"default":{"default":"figure dash"}},key:"2012"},{category:"Pd",mappings:{"default":{"default":"en dash"}},key:"2013"},{category:"Pd",mappings:{"default":{"default":"em dash"}},key:"2014"},{category:"Pd",mappings:{"default":{"default":"horizontal bar",alternative:"quotation dash"}},key:"2015"},{category:"Po",mappings:{"default":{"default":"double vertical line",alternative:"double vertical bar"}},
-key:"2016"},{category:"Po",mappings:{"default":{"default":"double low line",alternative:"spacing double underscore"}},key:"2017"},{category:"Pi",mappings:{"default":{"default":"left single quotation mark",alternative:"single turned comma quotation mark"}},key:"2018"},{category:"Pf",mappings:{"default":{"default":"right single quotation mark",alternative:"single comma quotation mark"}},key:"2019"},{category:"Ps",mappings:{"default":{"default":"single low 9 quotation mark",alternative:"low single comma quotation mark"}},
-key:"201A"},{category:"Pi",mappings:{"default":{"default":"single high reversed 9 quotation mark",alternative:"single reversed comma quotation mark"}},key:"201B"},{category:"Pi",mappings:{"default":{"default":"left double quotation mark",alternative:"double turned comma quotation mark"}},key:"201C"},{category:"Pf",mappings:{"default":{"default":"right double quotation mark",alternative:"double comma quotation mark"}},key:"201D"},{category:"Ps",mappings:{"default":{"default":"double low 9 quotation mark",
-alternative:"low double comma quotation mark"}},key:"201E"},{category:"Pi",mappings:{"default":{"default":"double high reversed 9 quotation mark",alternative:"double reversed comma quotation mark"}},key:"201F"},{category:"Po",mappings:{"default":{"default":"dagger"}},key:"2020"},{category:"Po",mappings:{"default":{"default":"double dagger"}},key:"2021"},{category:"Po",mappings:{"default":{"default":"bullet"}},key:"2022"},{category:"Po",mappings:{"default":{"default":"triangular bullet"}},key:"2023"},
-{category:"Po",mappings:{"default":{"default":"one dot leader"}},key:"2024"},{category:"Po",mappings:{"default":{"default":"two dot leader"}},key:"2025"},{category:"Po",mappings:{"default":{"default":"horizontal ellipsis"}},key:"2026"},{category:"Po",mappings:{"default":{"default":"hyphenation point"}},key:"2027"},{category:"Po",mappings:{"default":{"default":"per mille sign","short":"per mille"}},key:"2030"},{category:"Po",mappings:{"default":{"default":"per ten thousand sign","short":"per ten thousand"}},
-key:"2031"},{category:"Po",mappings:{"default":{"default":"prime"}},key:"2032"},{category:"Po",mappings:{"default":{"default":"double prime"}},key:"2033"},{category:"Po",mappings:{"default":{"default":"triple prime"}},key:"2034"},{category:"Po",mappings:{"default":{"default":"reversed prime"}},key:"2035"},{category:"Po",mappings:{"default":{"default":"reversed double prime"}},key:"2036"},{category:"Po",mappings:{"default":{"default":"reversed triple prime"}},key:"2037"},{category:"Po",mappings:{"default":{"default":"caret"}},
-key:"2038"},{category:"Pi",mappings:{"default":{"default":"single left pointing angle quotation mark",alternative:"left pointing single guillemet"}},key:"2039"},{category:"Pf",mappings:{"default":{"default":"single right pointing angle quotation mark",alternative:"right pointing single guillemet"}},key:"203A"},{category:"Po",mappings:{"default":{"default":"reference mark"}},key:"203B"},{category:"Po",mappings:{"default":{"default":"double exclamation mark"}},key:"203C"},{category:"Po",mappings:{"default":{"default":"interrobang"}},
-key:"203D"},{category:"Po",mappings:{"default":{"default":"overline",alternative:"spacing overscore"}},key:"203E"},{category:"Pc",mappings:{"default":{"default":"undertie"}},key:"203F"},{category:"Pc",mappings:{"default":{"default":"character tie"}},key:"2040"},{category:"Po",mappings:{"default":{"default":"caret insertion point"}},key:"2041"},{category:"Po",mappings:{"default":{"default":"asterism"}},key:"2042"},{category:"Po",mappings:{"default":{"default":"hyphen bullet"}},key:"2043"},{category:"Sm",
-mappings:{"default":{"default":"fraction slash"}},key:"2044"},{category:"Po",mappings:{"default":{"default":"double question mark"}},key:"2047"},{category:"Po",mappings:{"default":{"default":"question exclamation mark"}},key:"2048"},{category:"Po",mappings:{"default":{"default":"exclamation question mark"}},key:"2049"},{category:"Po",mappings:{"default":{"default":"reversed pilcrow sign","short":"reversed pilcrow"}},key:"204B"},{category:"Po",mappings:{"default":{"default":"black leftwards bullet"}},
-key:"204C"},{category:"Po",mappings:{"default":{"default":"black rightwards bullet"}},key:"204D"},{category:"Po",mappings:{"default":{"default":"low asterisk"}},key:"204E"},{category:"Po",mappings:{"default":{"default":"reversed semicolon"}},key:"204F"},{category:"Po",mappings:{"default":{"default":"close up"}},key:"2050"},{category:"Po",mappings:{"default":{"default":"two asterisks aligned vertically"}},key:"2051"},{category:"Sm",mappings:{"default":{"default":"commercial minus sign","short":"commercial minus"}},
-key:"2052"},{category:"Po",mappings:{"default":{"default":"swung dash"}},key:"2053"},{category:"Pc",mappings:{"default":{"default":"inverted undertie"}},key:"2054"},{category:"Po",mappings:{"default":{"default":"flower punctuation mark"}},key:"2055"},{category:"Po",mappings:{"default":{"default":"three dot punctuation"}},key:"2056"},{category:"Po",mappings:{"default":{"default":"quadruple prime"}},key:"2057"},{category:"Po",mappings:{"default":{"default":"four dot punctuation"}},key:"2058"},{category:"Po",
-mappings:{"default":{"default":"five dot punctuation"}},key:"2059"},{category:"Po",mappings:{"default":{"default":"two dot punctuation"}},key:"205A"},{category:"Po",mappings:{"default":{"default":"four dot mark"}},key:"205B"},{category:"Po",mappings:{"default":{"default":"dotted cross"}},key:"205C"},{category:"Po",mappings:{"default":{"default":"tricolon"}},key:"205D"},{category:"Po",mappings:{"default":{"default":"vertical four dots"}},key:"205E"},{category:"Sm",mappings:{"default":{"default":"superscript plus sign",
-"short":"superscript plus"}},key:"207A"},{category:"Sm",mappings:{"default":{"default":"superscript minus",alternative:"superscript hyphen minus"}},key:"207B"},{category:"Sm",mappings:{"default":{"default":"superscript equals sign","short":"superscript equals"}},key:"207C"},{category:"Ps",mappings:{"default":{"default":"superscript left parenthesis",alternative:"superscript opening parenthesis"}},key:"207D"},{category:"Pe",mappings:{"default":{"default":"superscript right parenthesis",alternative:"superscript closing parenthesis"}},
-key:"207E"},{category:"Sm",mappings:{"default":{"default":"subscript plus sign","short":"subscript plus"}},key:"208A"},{category:"Sm",mappings:{"default":{"default":"subscript minus",alternative:"subscript hyphen minus"}},key:"208B"},{category:"Sm",mappings:{"default":{"default":"subscript equals sign","short":"subscript equals"}},key:"208C"},{category:"Ps",mappings:{"default":{"default":"subscript left parenthesis",alternative:"subscript opening parenthesis"}},key:"208D"},{category:"Pe",mappings:{"default":{"default":"subscript right parenthesis",
-alternative:"subscript closing parenthesis"}},key:"208E"},{category:"So",mappings:{"default":{"default":"property line"}},key:"214A"},{category:"Sm",mappings:{"default":{"default":"turned ampersand"}},key:"214B"},{category:"So",mappings:{"default":{"default":"per sign","short":"per"}},key:"214C"},{category:"So",mappings:{"default":{"default":"aktieselskab"}},key:"214D"},{category:"Ll",mappings:{"default":{"default":"turned small f"}},key:"214E"},{category:"Sm",mappings:{"default":{"default":"for all"}},
-key:"2200"},{category:"Sm",mappings:{"default":{"default":"complement"}},key:"2201"},{category:"Sm",mappings:{"default":{"default":"partial differential"}},key:"2202"},{category:"Sm",mappings:{"default":{"default":"there exists"}},key:"2203"},{category:"Sm",mappings:{"default":{"default":"there does not exist"}},key:"2204"},{category:"Sm",mappings:{"default":{"default":"empty set"}},key:"2205"},{category:"Sm",mappings:{"default":{"default":"increment"}},key:"2206"},{category:"Sm",mappings:{"default":{"default":"nabla"}},
-key:"2207"},{category:"Sm",mappings:{"default":{"default":"element of"}},key:"2208"},{category:"Sm",mappings:{"default":{"default":"not an element of"}},key:"2209"},{category:"Sm",mappings:{"default":{"default":"small element of"}},key:"220A"},{category:"Sm",mappings:{"default":{"default":"contains as member"}},key:"220B"},{category:"Sm",mappings:{"default":{"default":"does not contain as member"}},key:"220C"},{category:"Sm",mappings:{"default":{"default":"small contains as member"}},key:"220D"},
-{category:"Sm",mappings:{"default":{"default":"end of proof"}},key:"220E"},{category:"Sm",mappings:{"default":{"default":"n ary product"}},key:"220F"},{category:"Sm",mappings:{"default":{"default":"n ary coproduct"}},key:"2210"},{category:"Sm",mappings:{"default":{"default":"n ary summation"}},key:"2211"},{category:"Sm",mappings:{"default":{"default":"minus sign","short":"minus"}},key:"2212"},{category:"Sm",mappings:{"default":{"default":"minus or plus sign","short":"minus or plus"}},key:"2213"},
-{category:"Sm",mappings:{"default":{"default":"dot plus"}},key:"2214"},{category:"Sm",mappings:{"default":{"default":"division slash"}},key:"2215"},{category:"Sm",mappings:{"default":{"default":"set minus"}},key:"2216"},{category:"Sm",mappings:{"default":{"default":"asterisk operator"}},key:"2217"},{category:"Sm",mappings:{"default":{"default":"ring operator"}},key:"2218"},{category:"Sm",mappings:{"default":{"default":"bullet operator"}},key:"2219"},{category:"Sm",mappings:{"default":{"default":"square root"}},
-key:"221A"},{category:"Sm",mappings:{"default":{"default":"cube root"}},key:"221B"},{category:"Sm",mappings:{"default":{"default":"fourth root"}},key:"221C"},{category:"Sm",mappings:{"default":{"default":"proportional to"}},key:"221D"},{category:"Sm",mappings:{"default":{"default":"infinity"}},key:"221E"},{category:"Sm",mappings:{"default":{"default":"right angle"}},key:"221F"},{category:"Sm",mappings:{"default":{"default":"angle"}},key:"2220"},{category:"Sm",mappings:{"default":{"default":"measured angle"}},
-key:"2221"},{category:"Sm",mappings:{"default":{"default":"spherical angle"}},key:"2222"},{category:"Sm",mappings:{"default":{"default":"divides","short":"bar"}},key:"2223"},{category:"Sm",mappings:{"default":{"default":"does not divide"}},key:"2224"},{category:"Sm",mappings:{"default":{"default":"parallel to"}},key:"2225"},{category:"Sm",mappings:{"default":{"default":"not parallel to"}},key:"2226"},{category:"Sm",mappings:{"default":{"default":"logical and"}},key:"2227"},{category:"Sm",mappings:{"default":{"default":"logical or"}},
-key:"2228"},{category:"Sm",mappings:{"default":{"default":"intersection"}},key:"2229"},{category:"Sm",mappings:{"default":{"default":"union"}},key:"222A"},{category:"Sm",mappings:{"default":{"default":"integral"}},key:"222B"},{category:"Sm",mappings:{"default":{"default":"double integral"}},key:"222C"},{category:"Sm",mappings:{"default":{"default":"triple integral"}},key:"222D"},{category:"Sm",mappings:{"default":{"default":"contour integral"}},key:"222E"},{category:"Sm",mappings:{"default":{"default":"surface integral"}},
-key:"222F"},{category:"Sm",mappings:{"default":{"default":"volume integral"}},key:"2230"},{category:"Sm",mappings:{"default":{"default":"clockwise integral"}},key:"2231"},{category:"Sm",mappings:{"default":{"default":"clockwise contour integral"}},key:"2232"},{category:"Sm",mappings:{"default":{"default":"anticlockwise contour integral"}},key:"2233"},{category:"Sm",mappings:{"default":{"default":"therefore"}},key:"2234"},{category:"Sm",mappings:{"default":{"default":"because"}},key:"2235"},{category:"Sm",
-mappings:{"default":{"default":"ratio"}},key:"2236"},{category:"Sm",mappings:{"default":{"default":"proportion"}},key:"2237"},{category:"Sm",mappings:{"default":{"default":"dot minus"}},key:"2238"},{category:"Sm",mappings:{"default":{"default":"excess"}},key:"2239"},{category:"Sm",mappings:{"default":{"default":"geometric proportion"}},key:"223A"},{category:"Sm",mappings:{"default":{"default":"homothetic"}},key:"223B"},{category:"Sm",mappings:{"default":{"default":"tilde operator"}},key:"223C"},{category:"Sm",
-mappings:{"default":{"default":"reversed tilde"}},key:"223D"},{category:"Sm",mappings:{"default":{"default":"inverted lazy s"}},key:"223E"},{category:"Sm",mappings:{"default":{"default":"sine wave"}},key:"223F"},{category:"Sm",mappings:{"default":{"default":"wreath product"}},key:"2240"},{category:"Sm",mappings:{"default":{"default":"not tilde"}},key:"2241"},{category:"Sm",mappings:{"default":{"default":"minus tilde"}},key:"2242"},{category:"Sm",mappings:{"default":{"default":"asymptotically equal to"}},
-key:"2243"},{category:"Sm",mappings:{"default":{"default":"not asymptotically equal to"}},key:"2244"},{category:"Sm",mappings:{"default":{"default":"approximately equal to"}},key:"2245"},{category:"Sm",mappings:{"default":{"default":"approximately but not actually equal to"}},key:"2246"},{category:"Sm",mappings:{"default":{"default":"neither approximately nor actually equal to"}},key:"2247"},{category:"Sm",mappings:{"default":{"default":"almost equal to"}},key:"2248"},{category:"Sm",mappings:{"default":{"default":"not almost equal to"}},
-key:"2249"},{category:"Sm",mappings:{"default":{"default":"almost equal or equal to"}},key:"224A"},{category:"Sm",mappings:{"default":{"default":"triple tilde"}},key:"224B"},{category:"Sm",mappings:{"default":{"default":"all equal to"}},key:"224C"},{category:"Sm",mappings:{"default":{"default":"equivalent to"}},key:"224D"},{category:"Sm",mappings:{"default":{"default":"geometrically equivalent to"}},key:"224E"},{category:"Sm",mappings:{"default":{"default":"difference between"}},key:"224F"},{category:"Sm",
-mappings:{"default":{"default":"approaches the limit"}},key:"2250"},{category:"Sm",mappings:{"default":{"default":"geometrically equal to"}},key:"2251"},{category:"Sm",mappings:{"default":{"default":"approximately equal to or the image of"}},key:"2252"},{category:"Sm",mappings:{"default":{"default":"image of or approximately equal to"}},key:"2253"},{category:"Sm",mappings:{"default":{"default":"colon equals",alternative:"colon equal"}},key:"2254"},{category:"Sm",mappings:{"default":{"default":"equals colon",
-alternative:"equal colon"}},key:"2255"},{category:"Sm",mappings:{"default":{"default":"ring in equal to"}},key:"2256"},{category:"Sm",mappings:{"default":{"default":"ring equal to"}},key:"2257"},{category:"Sm",mappings:{"default":{"default":"corresponds to"}},key:"2258"},{category:"Sm",mappings:{"default":{"default":"estimates"}},key:"2259"},{category:"Sm",mappings:{"default":{"default":"equiangular to"}},key:"225A"},{category:"Sm",mappings:{"default":{"default":"star equals"}},key:"225B"},{category:"Sm",
-mappings:{"default":{"default":"delta equal to"}},key:"225C"},{category:"Sm",mappings:{"default":{"default":"equal to by definition"}},key:"225D"},{category:"Sm",mappings:{"default":{"default":"measured by"}},key:"225E"},{category:"Sm",mappings:{"default":{"default":"questioned equal to"}},key:"225F"},{category:"Sm",mappings:{"default":{"default":"not equal to"}},key:"2260"},{category:"Sm",mappings:{"default":{"default":"identical to"}},key:"2261"},{category:"Sm",mappings:{"default":{"default":"not identical to"}},
-key:"2262"},{category:"Sm",mappings:{"default":{"default":"strictly equivalent to"}},key:"2263"},{category:"Sm",mappings:{"default":{"default":"less than or equal to",alternative:"less than or equal to"}},key:"2264"},{category:"Sm",mappings:{"default":{"default":"greater than or equal to",alternative:"greater than or equal to"}},key:"2265"},{category:"Sm",mappings:{"default":{"default":"less than over equal to",alternative:"less than over equal to"}},key:"2266"},{category:"Sm",mappings:{"default":{"default":"greater than over equal to",
-alternative:"greater than over equal to"}},key:"2267"},{category:"Sm",mappings:{"default":{"default":"less than but not equal to",alternative:"less than but not equal to"}},key:"2268"},{category:"Sm",mappings:{"default":{"default":"greater than but not equal to",alternative:"greater than but not equal to"}},key:"2269"},{category:"Sm",mappings:{"default":{"default":"much less than",alternative:"much less than"}},key:"226A"},{category:"Sm",mappings:{"default":{"default":"much greater than",alternative:"much greater than"}},
-key:"226B"},{category:"Sm",mappings:{"default":{"default":"between"}},key:"226C"},{category:"Sm",mappings:{"default":{"default":"not equivalent to"}},key:"226D"},{category:"Sm",mappings:{"default":{"default":"not less than",alternative:"not less than"}},key:"226E"},{category:"Sm",mappings:{"default":{"default":"not greater than",alternative:"not greater than"}},key:"226F"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equal to",alternative:"neither less than nor equal to"}},
-key:"2270"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equal to",alternative:"neither greater than nor equal to"}},key:"2271"},{category:"Sm",mappings:{"default":{"default":"less than or equivalent to",alternative:"less than or equivalent to"}},key:"2272"},{category:"Sm",mappings:{"default":{"default":"greater than or equivalent to",alternative:"greater than or equivalent to"}},key:"2273"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equivalent to",
-alternative:"neither less than nor equivalent to"}},key:"2274"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equivalent to",alternative:"neither greater than nor equivalent to"}},key:"2275"},{category:"Sm",mappings:{"default":{"default":"less than or greater than",alternative:"less than or greater than"}},key:"2276"},{category:"Sm",mappings:{"default":{"default":"greater than or less than",alternative:"greater than or less than"}},key:"2277"},{category:"Sm",mappings:{"default":{"default":"neither less than nor greater than",
-alternative:"neither less than nor greater than"}},key:"2278"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor less than",alternative:"neither greater than nor less than"}},key:"2279"},{category:"Sm",mappings:{"default":{"default":"precedes"}},key:"227A"},{category:"Sm",mappings:{"default":{"default":"succeeds"}},key:"227B"},{category:"Sm",mappings:{"default":{"default":"precedes or equal to"}},key:"227C"},{category:"Sm",mappings:{"default":{"default":"succeeds or equal to"}},
-key:"227D"},{category:"Sm",mappings:{"default":{"default":"precedes or equivalent to"}},key:"227E"},{category:"Sm",mappings:{"default":{"default":"succeeds or equivalent to"}},key:"227F"},{category:"Sm",mappings:{"default":{"default":"does not precede"}},key:"2280"},{category:"Sm",mappings:{"default":{"default":"does not succeed"}},key:"2281"},{category:"Sm",mappings:{"default":{"default":"subset of"}},key:"2282"},{category:"Sm",mappings:{"default":{"default":"superset of"}},key:"2283"},{category:"Sm",
-mappings:{"default":{"default":"not a subset of"}},key:"2284"},{category:"Sm",mappings:{"default":{"default":"not a superset of"}},key:"2285"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to"}},key:"2286"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to"}},key:"2287"},{category:"Sm",mappings:{"default":{"default":"neither a subset of nor equal to"}},key:"2288"},{category:"Sm",mappings:{"default":{"default":"neither a superset of nor equal to"}},key:"2289"},
-{category:"Sm",mappings:{"default":{"default":"subset of with not equal to",alternative:"subset of or not equal to","short":"subset of or not equal to"}},key:"228A"},{category:"Sm",mappings:{"default":{"default":"superset of with not equal to",alternative:"superset of or not equal to","short":"superset of or not equal to"}},key:"228B"},{category:"Sm",mappings:{"default":{"default":"multiset"}},key:"228C"},{category:"Sm",mappings:{"default":{"default":"multiset multiplication"}},key:"228D"},{category:"Sm",
-mappings:{"default":{"default":"multiset union"}},key:"228E"},{category:"Sm",mappings:{"default":{"default":"square image of"}},key:"228F"},{category:"Sm",mappings:{"default":{"default":"square original of"}},key:"2290"},{category:"Sm",mappings:{"default":{"default":"square image of or equal to"}},key:"2291"},{category:"Sm",mappings:{"default":{"default":"square original of or equal to"}},key:"2292"},{category:"Sm",mappings:{"default":{"default":"square cap"}},key:"2293"},{category:"Sm",mappings:{"default":{"default":"square cup"}},
-key:"2294"},{category:"Sm",mappings:{"default":{"default":"circled plus"}},key:"2295"},{category:"Sm",mappings:{"default":{"default":"circled minus"}},key:"2296"},{category:"Sm",mappings:{"default":{"default":"circled times"}},key:"2297"},{category:"Sm",mappings:{"default":{"default":"circled division slash"}},key:"2298"},{category:"Sm",mappings:{"default":{"default":"circled dot operator"}},key:"2299"},{category:"Sm",mappings:{"default":{"default":"circled ring operator"}},key:"229A"},{category:"Sm",
-mappings:{"default":{"default":"circled asterisk operator"}},key:"229B"},{category:"Sm",mappings:{"default":{"default":"circled equals"}},key:"229C"},{category:"Sm",mappings:{"default":{"default":"circled dash"}},key:"229D"},{category:"Sm",mappings:{"default":{"default":"squared plus"}},key:"229E"},{category:"Sm",mappings:{"default":{"default":"squared minus"}},key:"229F"},{category:"Sm",mappings:{"default":{"default":"squared times"}},key:"22A0"},{category:"Sm",mappings:{"default":{"default":"squared dot operator"}},
-key:"22A1"},{category:"Sm",mappings:{"default":{"default":"right tack"}},key:"22A2"},{category:"Sm",mappings:{"default":{"default":"left tack"}},key:"22A3"},{category:"Sm",mappings:{"default":{"default":"down tack"}},key:"22A4"},{category:"Sm",mappings:{"default":{"default":"up tack"}},key:"22A5"},{category:"Sm",mappings:{"default":{"default":"assertion"}},key:"22A6"},{category:"Sm",mappings:{"default":{"default":"models"}},key:"22A7"},{category:"Sm",mappings:{"default":{"default":"true"}},key:"22A8"},
-{category:"Sm",mappings:{"default":{"default":"forces"}},key:"22A9"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar right turnstile"}},key:"22AA"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double right turnstile"}},key:"22AB"},{category:"Sm",mappings:{"default":{"default":"does not prove"}},key:"22AC"},{category:"Sm",mappings:{"default":{"default":"not true"}},key:"22AD"},{category:"Sm",mappings:{"default":{"default":"does not force"}},key:"22AE"},{category:"Sm",
-mappings:{"default":{"default":"negated double vertical bar double right turnstile"}},key:"22AF"},{category:"Sm",mappings:{"default":{"default":"precedes under relation"}},key:"22B0"},{category:"Sm",mappings:{"default":{"default":"succeeds under relation"}},key:"22B1"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of"}},key:"22B2"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup"}},key:"22B3"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of or equal to"}},
-key:"22B4"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup or equal to"}},key:"22B5"},{category:"Sm",mappings:{"default":{"default":"original of"}},key:"22B6"},{category:"Sm",mappings:{"default":{"default":"image of"}},key:"22B7"},{category:"Sm",mappings:{"default":{"default":"multimap"}},key:"22B8"},{category:"Sm",mappings:{"default":{"default":"hermitian conjugate matrix"}},key:"22B9"},{category:"Sm",mappings:{"default":{"default":"intercalate"}},key:"22BA"},{category:"Sm",
-mappings:{"default":{"default":"xor"}},key:"22BB"},{category:"Sm",mappings:{"default":{"default":"nand"}},key:"22BC"},{category:"Sm",mappings:{"default":{"default":"nor"}},key:"22BD"},{category:"Sm",mappings:{"default":{"default":"right triangle"}},key:"22BF"},{category:"Sm",mappings:{"default":{"default":"n ary logical and"}},key:"22C0"},{category:"Sm",mappings:{"default":{"default":"n ary logical or"}},key:"22C1"},{category:"Sm",mappings:{"default":{"default":"n ary intersection"}},key:"22C2"},
-{category:"Sm",mappings:{"default":{"default":"n ary union"}},key:"22C3"},{category:"Sm",mappings:{"default":{"default":"diamond operator"}},key:"22C4"},{category:"Sm",mappings:{"default":{"default":"dot operator"}},key:"22C5"},{category:"Sm",mappings:{"default":{"default":"star operator"}},key:"22C6"},{category:"Sm",mappings:{"default":{"default":"division times"}},key:"22C7"},{category:"Sm",mappings:{"default":{"default":"bowtie"}},key:"22C8"},{category:"Sm",mappings:{"default":{"default":"left normal factor semidirect product"}},
-key:"22C9"},{category:"Sm",mappings:{"default":{"default":"right normal factor semidirect product"}},key:"22CA"},{category:"Sm",mappings:{"default":{"default":"left semidirect product"}},key:"22CB"},{category:"Sm",mappings:{"default":{"default":"right semidirect product"}},key:"22CC"},{category:"Sm",mappings:{"default":{"default":"reversed tilde equals"}},key:"22CD"},{category:"Sm",mappings:{"default":{"default":"curly logical or"}},key:"22CE"},{category:"Sm",mappings:{"default":{"default":"curly logical and"}},
-key:"22CF"},{category:"Sm",mappings:{"default":{"default":"double subset"}},key:"22D0"},{category:"Sm",mappings:{"default":{"default":"double superset"}},key:"22D1"},{category:"Sm",mappings:{"default":{"default":"double intersection"}},key:"22D2"},{category:"Sm",mappings:{"default":{"default":"double union"}},key:"22D3"},{category:"Sm",mappings:{"default":{"default":"pitchfork"}},key:"22D4"},{category:"Sm",mappings:{"default":{"default":"equal and parallel to"}},key:"22D5"},{category:"Sm",mappings:{"default":{"default":"less than with dot",
-alternative:"less than with dot","short":"less than dot"}},key:"22D6"},{category:"Sm",mappings:{"default":{"default":"greater than with dot",alternative:"greater than with dot","short":"greater than dot"}},key:"22D7"},{category:"Sm",mappings:{"default":{"default":"very much less than",alternative:"very much less than"}},key:"22D8"},{category:"Sm",mappings:{"default":{"default":"very much greater than",alternative:"very much greater than"}},key:"22D9"},{category:"Sm",mappings:{"default":{"default":"less than equal to or greater than",
-alternative:"less than equal to or greater than"}},key:"22DA"},{category:"Sm",mappings:{"default":{"default":"greater than equal to or less than",alternative:"greater than equal to or less than"}},key:"22DB"},{category:"Sm",mappings:{"default":{"default":"equal to or less than",alternative:"equal to or less than"}},key:"22DC"},{category:"Sm",mappings:{"default":{"default":"equal to or greater than",alternative:"equal to or greater than"}},key:"22DD"},{category:"Sm",mappings:{"default":{"default":"equal to or precedes"}},
-key:"22DE"},{category:"Sm",mappings:{"default":{"default":"equal to or succeeds"}},key:"22DF"},{category:"Sm",mappings:{"default":{"default":"does not precede or equal"}},key:"22E0"},{category:"Sm",mappings:{"default":{"default":"does not succeed or equal"}},key:"22E1"},{category:"Sm",mappings:{"default":{"default":"not square image of or equal to"}},key:"22E2"},{category:"Sm",mappings:{"default":{"default":"not square original of or equal to"}},key:"22E3"},{category:"Sm",mappings:{"default":{"default":"square image of or not equal to"}},
-key:"22E4"},{category:"Sm",mappings:{"default":{"default":"square original of or not equal to"}},key:"22E5"},{category:"Sm",mappings:{"default":{"default":"less than but not equivalent to",alternative:"less than but not equivalent to"}},key:"22E6"},{category:"Sm",mappings:{"default":{"default":"greater than but not equivalent to",alternative:"greater than but not equivalent to"}},key:"22E7"},{category:"Sm",mappings:{"default":{"default":"precedes but not equivalent to"}},key:"22E8"},{category:"Sm",
-mappings:{"default":{"default":"succeeds but not equivalent to"}},key:"22E9"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of"}},key:"22EA"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup"}},key:"22EB"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of or equal to"}},key:"22EC"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup or equal"}},key:"22ED"},{category:"Sm",mappings:{"default":{"default":"vertical ellipsis",
-"short":"dot dot dot"}},key:"22EE"},{category:"Sm",mappings:{"default":{"default":"midline horizontal ellipsis","short":"dot dot dot"}},key:"22EF"},{category:"Sm",mappings:{"default":{"default":"up right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F0"},{category:"Sm",mappings:{"default":{"default":"down right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F1"},{category:"Sm",mappings:{"default":{"default":"element of with long horizontal stroke"}},key:"22F2"},{category:"Sm",
-mappings:{"default":{"default":"element of with vertical bar at end of horizontal stroke"}},key:"22F3"},{category:"Sm",mappings:{"default":{"default":"small element of with vertical bar at end of horizontal stroke"}},key:"22F4"},{category:"Sm",mappings:{"default":{"default":"element of with dot above"}},key:"22F5"},{category:"Sm",mappings:{"default":{"default":"element of with overbar"}},key:"22F6"},{category:"Sm",mappings:{"default":{"default":"small element of with overbar"}},key:"22F7"},{category:"Sm",
-mappings:{"default":{"default":"element of with underbar"}},key:"22F8"},{category:"Sm",mappings:{"default":{"default":"element of with two horizontal strokes"}},key:"22F9"},{category:"Sm",mappings:{"default":{"default":"contains with long horizontal stroke"}},key:"22FA"},{category:"Sm",mappings:{"default":{"default":"contains with vertical bar at end of horizontal stroke"}},key:"22FB"},{category:"Sm",mappings:{"default":{"default":"small contains with vertical bar at end of horizontal stroke"}},key:"22FC"},
-{category:"Sm",mappings:{"default":{"default":"contains with overbar"}},key:"22FD"},{category:"Sm",mappings:{"default":{"default":"small contains with overbar"}},key:"22FE"},{category:"Sm",mappings:{"default":{"default":"z notation bag membership"}},key:"22FF"},{category:"So",mappings:{"default":{"default":"diameter sign","short":"diameter"}},key:"2300"},{category:"So",mappings:{"default":{"default":"house"}},key:"2302"},{category:"So",mappings:{"default":{"default":"projective"}},key:"2305"},{category:"So",
-mappings:{"default":{"default":"perspective"}},key:"2306"},{category:"So",mappings:{"default":{"default":"wavy line"}},key:"2307"},{category:"So",mappings:{"default":{"default":"reversed not sign","short":"reversed not"}},key:"2310"},{category:"So",mappings:{"default":{"default":"square lozenge"}},key:"2311"},{category:"So",mappings:{"default":{"default":"arc"}},key:"2312"},{category:"So",mappings:{"default":{"default":"segment"}},key:"2313"},{category:"So",mappings:{"default":{"default":"sector"}},
-key:"2314"},{category:"So",mappings:{"default":{"default":"heavy plus sign",alternative:"heavy plus","short":"bold plus"}},key:"2795"},{category:"So",mappings:{"default":{"default":"heavy minus sign",alternative:"heavy minus","short":"bold minus"}},key:"2796"},{category:"So",mappings:{"default":{"default":"heavy division sign",alternative:"heavy division","short":"bold division"}},key:"2797"},{category:"So",mappings:{"default":{"default":"curly loop"}},key:"27B0"},{category:"So",mappings:{"default":{"default":"double curly loop"}},
-key:"27BF"},{category:"Sm",mappings:{"default":{"default":"white triangle containing small white triangle"}},key:"27C1"},{category:"Sm",mappings:{"default":{"default":"perpendicular"}},key:"27C2"},{category:"Sm",mappings:{"default":{"default":"open subset"}},key:"27C3"},{category:"Sm",mappings:{"default":{"default":"open superset"}},key:"27C4"},{category:"Sm",mappings:{"default":{"default":"or with dot inside"}},key:"27C7"},{category:"Sm",mappings:{"default":{"default":"reverse solidus preceding subset"}},
-key:"27C8"},{category:"Sm",mappings:{"default":{"default":"superset preceding solidus"}},key:"27C9"},{category:"Sm",mappings:{"default":{"default":"vertical bar with horizontal stroke"}},key:"27CA"},{category:"Sm",mappings:{"default":{"default":"mathematical rising diagonal"}},key:"27CB"},{category:"Sm",mappings:{"default":{"default":"long division"}},key:"27CC"},{category:"Sm",mappings:{"default":{"default":"mathematical falling diagonal"}},key:"27CD"},{category:"Sm",mappings:{"default":{"default":"squared logical and"}},
-key:"27CE"},{category:"Sm",mappings:{"default":{"default":"squared logical or"}},key:"27CF"},{category:"Sm",mappings:{"default":{"default":"white diamond with centered dot"}},key:"27D0"},{category:"Sm",mappings:{"default":{"default":"and with dot"}},key:"27D1"},{category:"Sm",mappings:{"default":{"default":"element of opening upwards"}},key:"27D2"},{category:"Sm",mappings:{"default":{"default":"lower right corner with dot"}},key:"27D3"},{category:"Sm",mappings:{"default":{"default":"upper left corner with dot"}},
-key:"27D4"},{category:"Sm",mappings:{"default":{"default":"left outer join"}},key:"27D5"},{category:"Sm",mappings:{"default":{"default":"right outer join"}},key:"27D6"},{category:"Sm",mappings:{"default":{"default":"full outer join"}},key:"27D7"},{category:"Sm",mappings:{"default":{"default":"large up tack"}},key:"27D8"},{category:"Sm",mappings:{"default":{"default":"large down tack"}},key:"27D9"},{category:"Sm",mappings:{"default":{"default":"left and right double turnstile"}},key:"27DA"},{category:"Sm",
-mappings:{"default":{"default":"left and right tack"}},key:"27DB"},{category:"Sm",mappings:{"default":{"default":"left multimap"}},key:"27DC"},{category:"Sm",mappings:{"default":{"default":"long right tack"}},key:"27DD"},{category:"Sm",mappings:{"default":{"default":"long left tack"}},key:"27DE"},{category:"Sm",mappings:{"default":{"default":"up tack with circle above"}},key:"27DF"},{category:"Sm",mappings:{"default":{"default":"lozenge divided by horizontal rule"}},key:"27E0"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond"}},
-key:"27E1"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with leftwards tick"}},key:"27E2"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with rightwards tick"}},key:"27E3"},{category:"Sm",mappings:{"default":{"default":"white square with leftwards tick"}},key:"27E4"},{category:"Sm",mappings:{"default":{"default":"white square with rightwards tick"}},key:"27E5"},{category:"Sm",mappings:{"default":{"default":"rising diagonal crossing falling diagonal"}},
-key:"292B"},{category:"Sm",mappings:{"default":{"default":"falling diagonal crossing rising diagonal"}},key:"292C"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar delimiter"}},key:"2980"},{category:"Sm",mappings:{"default":{"default":"z notation spot"}},key:"2981"},{category:"Sm",mappings:{"default":{"default":"z notation type colon"}},key:"2982"},{category:"Sm",mappings:{"default":{"default":"dotted fence"}},key:"2999"},{category:"Sm",mappings:{"default":{"default":"vertical zigzag line"}},
-key:"299A"},{category:"Sm",mappings:{"default":{"default":"reversed empty set"}},key:"29B0"},{category:"Sm",mappings:{"default":{"default":"empty set with overbar"}},key:"29B1"},{category:"Sm",mappings:{"default":{"default":"empty set with small circle above"}},key:"29B2"},{category:"Sm",mappings:{"default":{"default":"circle with horizontal bar"}},key:"29B5"},{category:"Sm",mappings:{"default":{"default":"circled vertical bar"}},key:"29B6"},{category:"Sm",mappings:{"default":{"default":"circled parallel"}},
-key:"29B7"},{category:"Sm",mappings:{"default":{"default":"circled reverse solidus"}},key:"29B8"},{category:"Sm",mappings:{"default":{"default":"circled perpendicular"}},key:"29B9"},{category:"Sm",mappings:{"default":{"default":"circle divided by horizontal bar and top half divided by vertical bar"}},key:"29BA"},{category:"Sm",mappings:{"default":{"default":"circle with superimposed x"}},key:"29BB"},{category:"Sm",mappings:{"default":{"default":"circled anticlockwise rotated division sign","short":"circled anticlockwise rotated division"}},
-key:"29BC"},{category:"Sm",mappings:{"default":{"default":"circled white bullet"}},key:"29BE"},{category:"Sm",mappings:{"default":{"default":"circled bullet"}},key:"29BF"},{category:"Sm",mappings:{"default":{"default":"circled less than"}},key:"29C0"},{category:"Sm",mappings:{"default":{"default":"circled greater than"}},key:"29C1"},{category:"Sm",mappings:{"default":{"default":"circle with small circle to the right"}},key:"29C2"},{category:"Sm",mappings:{"default":{"default":"circle with two horizontal strokes to the right"}},
-key:"29C3"},{category:"Sm",mappings:{"default":{"default":"squared rising diagonal slash"}},key:"29C4"},{category:"Sm",mappings:{"default":{"default":"squared falling diagonal slash"}},key:"29C5"},{category:"Sm",mappings:{"default":{"default":"squared asterisk"}},key:"29C6"},{category:"Sm",mappings:{"default":{"default":"squared small circle"}},key:"29C7"},{category:"Sm",mappings:{"default":{"default":"squared square"}},key:"29C8"},{category:"Sm",mappings:{"default":{"default":"two joined squares"}},
-key:"29C9"},{category:"Sm",mappings:{"default":{"default":"triangle with dot above"}},key:"29CA"},{category:"Sm",mappings:{"default":{"default":"triangle with underbar"}},key:"29CB"},{category:"Sm",mappings:{"default":{"default":"s in triangle"}},key:"29CC"},{category:"Sm",mappings:{"default":{"default":"triangle with serifs at bottom"}},key:"29CD"},{category:"Sm",mappings:{"default":{"default":"right triangle above left triangle"}},key:"29CE"},{category:"Sm",mappings:{"default":{"default":"left triangle beside vertical bar"}},
-key:"29CF"},{category:"Sm",mappings:{"default":{"default":"vertical bar beside right triangle"}},key:"29D0"},{category:"Sm",mappings:{"default":{"default":"bowtie with left half black"}},key:"29D1"},{category:"Sm",mappings:{"default":{"default":"bowtie with right half black"}},key:"29D2"},{category:"Sm",mappings:{"default":{"default":"black bowtie"}},key:"29D3"},{category:"Sm",mappings:{"default":{"default":"times with left half black"}},key:"29D4"},{category:"Sm",mappings:{"default":{"default":"times with right half black"}},
-key:"29D5"},{category:"Sm",mappings:{"default":{"default":"white hourglass"}},key:"29D6"},{category:"Sm",mappings:{"default":{"default":"black hourglass"}},key:"29D7"},{category:"Sm",mappings:{"default":{"default":"incomplete infinity"}},key:"29DC"},{category:"Sm",mappings:{"default":{"default":"tie over infinity"}},key:"29DD"},{category:"Sm",mappings:{"default":{"default":"infinity negated with vertical bar"}},key:"29DE"},{category:"Sm",mappings:{"default":{"default":"double ended multimap"}},key:"29DF"},
-{category:"Sm",mappings:{"default":{"default":"square with contoured outline"}},key:"29E0"},{category:"Sm",mappings:{"default":{"default":"increases as"}},key:"29E1"},{category:"Sm",mappings:{"default":{"default":"shuffle product"}},key:"29E2"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel"}},key:"29E3"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel with tilde above"}},key:"29E4"},{category:"Sm",mappings:{"default":{"default":"identical to and slanted parallel"}},
-key:"29E5"},{category:"Sm",mappings:{"default":{"default":"gleich stark"}},key:"29E6"},{category:"Sm",mappings:{"default":{"default":"thermodynamic"}},key:"29E7"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with left half black"}},key:"29E8"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with right half black"}},key:"29E9"},{category:"Sm",mappings:{"default":{"default":"black lozenge"}},key:"29EB"},{category:"Sm",mappings:{"default":{"default":"error barred white square"}},
-key:"29EE"},{category:"Sm",mappings:{"default":{"default":"error barred black square"}},key:"29EF"},{category:"Sm",mappings:{"default":{"default":"error barred white diamond"}},key:"29F0"},{category:"Sm",mappings:{"default":{"default":"error barred black diamond"}},key:"29F1"},{category:"Sm",mappings:{"default":{"default":"error barred white circle"}},key:"29F2"},{category:"Sm",mappings:{"default":{"default":"error barred black circle"}},key:"29F3"},{category:"Sm",mappings:{"default":{"default":"rule delayed"}},
-key:"29F4"},{category:"Sm",mappings:{"default":{"default":"reverse solidus operator"}},key:"29F5"},{category:"Sm",mappings:{"default":{"default":"solidus with overbar"}},key:"29F6"},{category:"Sm",mappings:{"default":{"default":"reverse solidus with horizontal stroke"}},key:"29F7"},{category:"Sm",mappings:{"default":{"default":"big solidus"}},key:"29F8"},{category:"Sm",mappings:{"default":{"default":"big reverse solidus"}},key:"29F9"},{category:"Sm",mappings:{"default":{"default":"double plus"}},
-key:"29FA"},{category:"Sm",mappings:{"default":{"default":"triple plus"}},key:"29FB"},{category:"Sm",mappings:{"default":{"default":"tiny"}},key:"29FE"},{category:"Sm",mappings:{"default":{"default":"miny"}},key:"29FF"},{category:"Sm",mappings:{"default":{"default":"n ary circled dot operator"}},key:"2A00"},{category:"Sm",mappings:{"default":{"default":"n ary circled plus operator"}},key:"2A01"},{category:"Sm",mappings:{"default":{"default":"n ary circled times operator"}},key:"2A02"},{category:"Sm",
-mappings:{"default":{"default":"n ary union operator with dot"}},key:"2A03"},{category:"Sm",mappings:{"default":{"default":"n ary union operator with plus"}},key:"2A04"},{category:"Sm",mappings:{"default":{"default":"n ary square intersection operator"}},key:"2A05"},{category:"Sm",mappings:{"default":{"default":"n ary square union operator"}},key:"2A06"},{category:"Sm",mappings:{"default":{"default":"two logical and operator"}},key:"2A07"},{category:"Sm",mappings:{"default":{"default":"two logical or operator"}},
-key:"2A08"},{category:"Sm",mappings:{"default":{"default":"n ary times operator"}},key:"2A09"},{category:"Sm",mappings:{"default":{"default":"modulo two sum"}},key:"2A0A"},{category:"Sm",mappings:{"default":{"default":"summation with integral"}},key:"2A0B"},{category:"Sm",mappings:{"default":{"default":"quadruple integral operator"}},key:"2A0C"},{category:"Sm",mappings:{"default":{"default":"finite part integral"}},key:"2A0D"},{category:"Sm",mappings:{"default":{"default":"integral with double stroke"}},
-key:"2A0E"},{category:"Sm",mappings:{"default":{"default":"integral average with slash"}},key:"2A0F"},{category:"Sm",mappings:{"default":{"default":"circulation function"}},key:"2A10"},{category:"Sm",mappings:{"default":{"default":"anticlockwise integration"}},key:"2A11"},{category:"Sm",mappings:{"default":{"default":"line integration with rectangular path around pole"}},key:"2A12"},{category:"Sm",mappings:{"default":{"default":"line integration with semicircular path around pole"}},key:"2A13"},{category:"Sm",
-mappings:{"default":{"default":"line integration not including the pole"}},key:"2A14"},{category:"Sm",mappings:{"default":{"default":"integral around a point operator"}},key:"2A15"},{category:"Sm",mappings:{"default":{"default":"quaternion integral operator"}},key:"2A16"},{category:"Sm",mappings:{"default":{"default":"integral with times sign","short":"integral with times"}},key:"2A18"},{category:"Sm",mappings:{"default":{"default":"integral with intersection"}},key:"2A19"},{category:"Sm",mappings:{"default":{"default":"integral with union"}},
-key:"2A1A"},{category:"Sm",mappings:{"default":{"default":"integral with overbar"}},key:"2A1B"},{category:"Sm",mappings:{"default":{"default":"integral with underbar"}},key:"2A1C"},{category:"Sm",mappings:{"default":{"default":"join"}},key:"2A1D"},{category:"Sm",mappings:{"default":{"default":"large left triangle operator"}},key:"2A1E"},{category:"Sm",mappings:{"default":{"default":"z notation schema composition"}},key:"2A1F"},{category:"Sm",mappings:{"default":{"default":"z notation schema piping"}},
-key:"2A20"},{category:"Sm",mappings:{"default":{"default":"z notation schema projection"}},key:"2A21"},{category:"Sm",mappings:{"default":{"default":"plus sign with small circle above","short":"plus with circle above"}},key:"2A22"},{category:"Sm",mappings:{"default":{"default":"plus sign with circumflex accent above","short":"plus hat"}},key:"2A23"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde above","short":"plus tilde"}},key:"2A24"},{category:"Sm",mappings:{"default":{"default":"plus sign with dot below",
-"short":"plus underdot"}},key:"2A25"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde below"}},key:"2A26"},{category:"Sm",mappings:{"default":{"default":"plus sign with subscript two"}},key:"2A27"},{category:"Sm",mappings:{"default":{"default":"plus sign with black triangle"}},key:"2A28"},{category:"Sm",mappings:{"default":{"default":"minus sign with comma above"}},key:"2A29"},{category:"Sm",mappings:{"default":{"default":"minus sign with dot below"}},key:"2A2A"},{category:"Sm",
-mappings:{"default":{"default":"minus sign with falling dots"}},key:"2A2B"},{category:"Sm",mappings:{"default":{"default":"minus sign with rising dots"}},key:"2A2C"},{category:"Sm",mappings:{"default":{"default":"plus sign in left half circle"}},key:"2A2D"},{category:"Sm",mappings:{"default":{"default":"plus sign in right half circle"}},key:"2A2E"},{category:"Sm",mappings:{"default":{"default":"vector or cross product"}},key:"2A2F"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with dot above"}},
-key:"2A30"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with underbar"}},key:"2A31"},{category:"Sm",mappings:{"default":{"default":"semidirect product with bottom closed"}},key:"2A32"},{category:"Sm",mappings:{"default":{"default":"smash product"}},key:"2A33"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in left half circle"}},key:"2A34"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in right half circle"}},key:"2A35"},{category:"Sm",
-mappings:{"default":{"default":"circled multiplication sign with circumflex accent"}},key:"2A36"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in double circle"}},key:"2A37"},{category:"Sm",mappings:{"default":{"default":"circled division sign","short":"circled division"}},key:"2A38"},{category:"Sm",mappings:{"default":{"default":"plus sign in triangle"}},key:"2A39"},{category:"Sm",mappings:{"default":{"default":"minus sign in triangle"}},key:"2A3A"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in triangle"}},
-key:"2A3B"},{category:"Sm",mappings:{"default":{"default":"interior product"}},key:"2A3C"},{category:"Sm",mappings:{"default":{"default":"righthand interior product"}},key:"2A3D"},{category:"Sm",mappings:{"default":{"default":"z notation relational composition"}},key:"2A3E"},{category:"Sm",mappings:{"default":{"default":"amalgamation or coproduct"}},key:"2A3F"},{category:"Sm",mappings:{"default":{"default":"intersection with dot"}},key:"2A40"},{category:"Sm",mappings:{"default":{"default":"union with minus sign",
-"short":"union with minus"}},key:"2A41"},{category:"Sm",mappings:{"default":{"default":"union with overbar"}},key:"2A42"},{category:"Sm",mappings:{"default":{"default":"intersection with overbar"}},key:"2A43"},{category:"Sm",mappings:{"default":{"default":"intersection with logical and"}},key:"2A44"},{category:"Sm",mappings:{"default":{"default":"union with logical or"}},key:"2A45"},{category:"Sm",mappings:{"default":{"default":"union above intersection"}},key:"2A46"},{category:"Sm",mappings:{"default":{"default":"intersection above union"}},
-key:"2A47"},{category:"Sm",mappings:{"default":{"default":"union above bar above intersection"}},key:"2A48"},{category:"Sm",mappings:{"default":{"default":"intersection above bar above union"}},key:"2A49"},{category:"Sm",mappings:{"default":{"default":"union beside and joined with union"}},key:"2A4A"},{category:"Sm",mappings:{"default":{"default":"intersection beside and joined with intersection"}},key:"2A4B"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs"}},key:"2A4C"},
-{category:"Sm",mappings:{"default":{"default":"closed intersection with serifs"}},key:"2A4D"},{category:"Sm",mappings:{"default":{"default":"double square intersection"}},key:"2A4E"},{category:"Sm",mappings:{"default":{"default":"double square union"}},key:"2A4F"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs and smash product"}},key:"2A50"},{category:"Sm",mappings:{"default":{"default":"logical and with dot above"}},key:"2A51"},{category:"Sm",mappings:{"default":{"default":"logical or with dot above"}},
-key:"2A52"},{category:"Sm",mappings:{"default":{"default":"double logical and"}},key:"2A53"},{category:"Sm",mappings:{"default":{"default":"double logical or"}},key:"2A54"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical and"}},key:"2A55"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical or"}},key:"2A56"},{category:"Sm",mappings:{"default":{"default":"sloping large or"}},key:"2A57"},{category:"Sm",mappings:{"default":{"default":"sloping large and"}},
-key:"2A58"},{category:"Sm",mappings:{"default":{"default":"logical or overlapping logical and"}},key:"2A59"},{category:"Sm",mappings:{"default":{"default":"logical and with middle stem"}},key:"2A5A"},{category:"Sm",mappings:{"default":{"default":"logical or with middle stem"}},key:"2A5B"},{category:"Sm",mappings:{"default":{"default":"logical and with horizontal dash"}},key:"2A5C"},{category:"Sm",mappings:{"default":{"default":"logical or with horizontal dash"}},key:"2A5D"},{category:"Sm",mappings:{"default":{"default":"logical and with double overbar"}},
-key:"2A5E"},{category:"Sm",mappings:{"default":{"default":"logical and with underbar"}},key:"2A5F"},{category:"Sm",mappings:{"default":{"default":"logical and with double underbar"}},key:"2A60"},{category:"Sm",mappings:{"default":{"default":"small vee with underbar"}},key:"2A61"},{category:"Sm",mappings:{"default":{"default":"logical or with double overbar"}},key:"2A62"},{category:"Sm",mappings:{"default":{"default":"logical or with double underbar"}},key:"2A63"},{category:"Sm",mappings:{"default":{"default":"z notation domain antirestriction"}},
-key:"2A64"},{category:"Sm",mappings:{"default":{"default":"z notation range antirestriction"}},key:"2A65"},{category:"Sm",mappings:{"default":{"default":"equals sign with dot below"}},key:"2A66"},{category:"Sm",mappings:{"default":{"default":"identical with dot above"}},key:"2A67"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with double vertical stroke"}},key:"2A68"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with triple vertical stroke"}},key:"2A69"},
-{category:"Sm",mappings:{"default":{"default":"tilde operator with dot above"}},key:"2A6A"},{category:"Sm",mappings:{"default":{"default":"tilde operator with rising dots"}},key:"2A6B"},{category:"Sm",mappings:{"default":{"default":"similar minus similar"}},key:"2A6C"},{category:"Sm",mappings:{"default":{"default":"congruent with dot above"}},key:"2A6D"},{category:"Sm",mappings:{"default":{"default":"equals with asterisk"}},key:"2A6E"},{category:"Sm",mappings:{"default":{"default":"almost equal to with circumflex accent",
-"short":"almost equal hat"}},key:"2A6F"},{category:"Sm",mappings:{"default":{"default":"approximately equal or equal to"}},key:"2A70"},{category:"Sm",mappings:{"default":{"default":"equals sign above plus sign","short":"equals above plus"}},key:"2A71"},{category:"Sm",mappings:{"default":{"default":"plus sign above equals sign","short":"plus above equals"}},key:"2A72"},{category:"Sm",mappings:{"default":{"default":"equals sign above tilde operator","short":"equals above tilde operator"}},key:"2A73"},
-{category:"Sm",mappings:{"default":{"default":"double colon equal"}},key:"2A74"},{category:"Sm",mappings:{"default":{"default":"two consecutive equals signs","short":"two consecutive equals"}},key:"2A75"},{category:"Sm",mappings:{"default":{"default":"three consecutive equals signs","short":"three consecutive equals"}},key:"2A76"},{category:"Sm",mappings:{"default":{"default":"equals sign with two dots above and two dots below"}},key:"2A77"},{category:"Sm",mappings:{"default":{"default":"equivalent with four dots above"}},
-key:"2A78"},{category:"Sm",mappings:{"default":{"default":"less than with circle inside"}},key:"2A79"},{category:"Sm",mappings:{"default":{"default":"greater than with circle inside"}},key:"2A7A"},{category:"Sm",mappings:{"default":{"default":"less than with question mark above"}},key:"2A7B"},{category:"Sm",mappings:{"default":{"default":"greater than with question mark above"}},key:"2A7C"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to"}},key:"2A7D"},{category:"Sm",
-mappings:{"default":{"default":"greater than or slanted equal to"}},key:"2A7E"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot inside"}},key:"2A7F"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot inside"}},key:"2A80"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above"}},key:"2A81"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above"}},
-key:"2A82"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above right"}},key:"2A83"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above left"}},key:"2A84"},{category:"Sm",mappings:{"default":{"default":"less than or approximate"}},key:"2A85"},{category:"Sm",mappings:{"default":{"default":"greater than or approximate"}},key:"2A86"},{category:"Sm",mappings:{"default":{"default":"less than and single line not equal to"}},
-key:"2A87"},{category:"Sm",mappings:{"default":{"default":"greater than and single line not equal to"}},key:"2A88"},{category:"Sm",mappings:{"default":{"default":"less than and not approximate"}},key:"2A89"},{category:"Sm",mappings:{"default":{"default":"greater than and not approximate"}},key:"2A8A"},{category:"Sm",mappings:{"default":{"default":"less than above double line equal above greater than"}},key:"2A8B"},{category:"Sm",mappings:{"default":{"default":"greater than above double line equal above less than"}},
-key:"2A8C"},{category:"Sm",mappings:{"default":{"default":"less than above similar or equal"}},key:"2A8D"},{category:"Sm",mappings:{"default":{"default":"greater than above similar or equal"}},key:"2A8E"},{category:"Sm",mappings:{"default":{"default":"less than above similar above greater than"}},key:"2A8F"},{category:"Sm",mappings:{"default":{"default":"greater than above similar above less than"}},key:"2A90"},{category:"Sm",mappings:{"default":{"default":"less than above greater than above double line equal"}},
-key:"2A91"},{category:"Sm",mappings:{"default":{"default":"greater than above less than above double line equal"}},key:"2A92"},{category:"Sm",mappings:{"default":{"default":"less than above slanted equal above greater than above slanted equal"}},key:"2A93"},{category:"Sm",mappings:{"default":{"default":"greater than above slanted equal above less than above slanted equal"}},key:"2A94"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than"}},key:"2A95"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than"}},
-key:"2A96"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than with dot inside"}},key:"2A97"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than with dot inside"}},key:"2A98"},{category:"Sm",mappings:{"default":{"default":"double line equal to or less than"}},key:"2A99"},{category:"Sm",mappings:{"default":{"default":"double line equal to or greater than"}},key:"2A9A"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or less than"}},
-key:"2A9B"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or greater than"}},key:"2A9C"},{category:"Sm",mappings:{"default":{"default":"similar or less than"}},key:"2A9D"},{category:"Sm",mappings:{"default":{"default":"similar or greater than"}},key:"2A9E"},{category:"Sm",mappings:{"default":{"default":"similar above less than above equals sign"}},key:"2A9F"},{category:"Sm",mappings:{"default":{"default":"similar above greater than above equals sign"}},key:"2AA0"},{category:"Sm",
-mappings:{"default":{"default":"double nested less than"}},key:"2AA1"},{category:"Sm",mappings:{"default":{"default":"double nested greater than"}},key:"2AA2"},{category:"Sm",mappings:{"default":{"default":"double nested less than with underbar"}},key:"2AA3"},{category:"Sm",mappings:{"default":{"default":"greater than overlapping less than"}},key:"2AA4"},{category:"Sm",mappings:{"default":{"default":"greater than beside less than"}},key:"2AA5"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve"}},
-key:"2AA6"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve"}},key:"2AA7"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve above slanted equal"}},key:"2AA8"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve above slanted equal"}},key:"2AA9"},{category:"Sm",mappings:{"default":{"default":"smaller than"}},key:"2AAA"},{category:"Sm",mappings:{"default":{"default":"larger than"}},key:"2AAB"},{category:"Sm",mappings:{"default":{"default":"smaller than or equal to"}},
-key:"2AAC"},{category:"Sm",mappings:{"default":{"default":"larger than or equal to"}},key:"2AAD"},{category:"Sm",mappings:{"default":{"default":"equals sign with bumpy above"}},key:"2AAE"},{category:"Sm",mappings:{"default":{"default":"precedes above single line equals sign"}},key:"2AAF"},{category:"Sm",mappings:{"default":{"default":"succeeds above single line equals sign"}},key:"2AB0"},{category:"Sm",mappings:{"default":{"default":"precedes above single line not equal to"}},key:"2AB1"},{category:"Sm",
-mappings:{"default":{"default":"succeeds above single line not equal to"}},key:"2AB2"},{category:"Sm",mappings:{"default":{"default":"precedes above equals sign"}},key:"2AB3"},{category:"Sm",mappings:{"default":{"default":"succeeds above equals sign"}},key:"2AB4"},{category:"Sm",mappings:{"default":{"default":"precedes above not equal to"}},key:"2AB5"},{category:"Sm",mappings:{"default":{"default":"succeeds above not equal to"}},key:"2AB6"},{category:"Sm",mappings:{"default":{"default":"precedes above almost equal to"}},
-key:"2AB7"},{category:"Sm",mappings:{"default":{"default":"succeeds above almost equal to"}},key:"2AB8"},{category:"Sm",mappings:{"default":{"default":"precedes above not almost equal to"}},key:"2AB9"},{category:"Sm",mappings:{"default":{"default":"succeeds above not almost equal to"}},key:"2ABA"},{category:"Sm",mappings:{"default":{"default":"double precedes"}},key:"2ABB"},{category:"Sm",mappings:{"default":{"default":"double succeeds"}},key:"2ABC"},{category:"Sm",mappings:{"default":{"default":"subset with dot"}},
-key:"2ABD"},{category:"Sm",mappings:{"default":{"default":"superset with dot"}},key:"2ABE"},{category:"Sm",mappings:{"default":{"default":"subset with plus sign below"}},key:"2ABF"},{category:"Sm",mappings:{"default":{"default":"superset with plus sign below"}},key:"2AC0"},{category:"Sm",mappings:{"default":{"default":"subset with multiplication sign below"}},key:"2AC1"},{category:"Sm",mappings:{"default":{"default":"superset with multiplication sign below"}},key:"2AC2"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to with dot above"}},
-key:"2AC3"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to with dot above"}},key:"2AC4"},{category:"Sm",mappings:{"default":{"default":"subset of above equals sign"}},key:"2AC5"},{category:"Sm",mappings:{"default":{"default":"superset of above equals sign"}},key:"2AC6"},{category:"Sm",mappings:{"default":{"default":"subset of above tilde operator"}},key:"2AC7"},{category:"Sm",mappings:{"default":{"default":"superset of above tilde operator"}},key:"2AC8"},{category:"Sm",mappings:{"default":{"default":"subset of above almost equal to"}},
-key:"2AC9"},{category:"Sm",mappings:{"default":{"default":"superset of above almost equal to"}},key:"2ACA"},{category:"Sm",mappings:{"default":{"default":"subset of above not equal to"}},key:"2ACB"},{category:"Sm",mappings:{"default":{"default":"superset of above not equal to"}},key:"2ACC"},{category:"Sm",mappings:{"default":{"default":"square left open box operator"}},key:"2ACD"},{category:"Sm",mappings:{"default":{"default":"square right open box operator"}},key:"2ACE"},{category:"Sm",mappings:{"default":{"default":"closed subset"}},
-key:"2ACF"},{category:"Sm",mappings:{"default":{"default":"closed superset"}},key:"2AD0"},{category:"Sm",mappings:{"default":{"default":"closed subset or equal to"}},key:"2AD1"},{category:"Sm",mappings:{"default":{"default":"closed superset or equal to"}},key:"2AD2"},{category:"Sm",mappings:{"default":{"default":"subset above superset"}},key:"2AD3"},{category:"Sm",mappings:{"default":{"default":"superset above subset"}},key:"2AD4"},{category:"Sm",mappings:{"default":{"default":"subset above subset"}},
-key:"2AD5"},{category:"Sm",mappings:{"default":{"default":"superset above superset"}},key:"2AD6"},{category:"Sm",mappings:{"default":{"default":"superset beside subset"}},key:"2AD7"},{category:"Sm",mappings:{"default":{"default":"superset beside and joined by dash with subset"}},key:"2AD8"},{category:"Sm",mappings:{"default":{"default":"element of opening downwards"}},key:"2AD9"},{category:"Sm",mappings:{"default":{"default":"pitchfork with tee top"}},key:"2ADA"},{category:"Sm",mappings:{"default":{"default":"transversal intersection"}},
-key:"2ADB"},{category:"Sm",mappings:{"default":{"default":"forking"}},key:"2ADC"},{category:"Sm",mappings:{"default":{"default":"nonforking"}},key:"2ADD"},{category:"Sm",mappings:{"default":{"default":"short left tack"}},key:"2ADE"},{category:"Sm",mappings:{"default":{"default":"short down tack"}},key:"2ADF"},{category:"Sm",mappings:{"default":{"default":"short up tack"}},key:"2AE0"},{category:"Sm",mappings:{"default":{"default":"perpendicular with s"}},key:"2AE1"},{category:"Sm",mappings:{"default":{"default":"vertical bar triple right turnstile"}},
-key:"2AE2"},{category:"Sm",mappings:{"default":{"default":"double vertical bar left turnstile"}},key:"2AE3"},{category:"Sm",mappings:{"default":{"default":"vertical bar double left turnstile"}},key:"2AE4"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double left turnstile"}},key:"2AE5"},{category:"Sm",mappings:{"default":{"default":"long dash from left member of double vertical"}},key:"2AE6"},{category:"Sm",mappings:{"default":{"default":"short down tack with overbar"}},key:"2AE7"},
-{category:"Sm",mappings:{"default":{"default":"short up tack with underbar"}},key:"2AE8"},{category:"Sm",mappings:{"default":{"default":"short up tack above short down tack"}},key:"2AE9"},{category:"Sm",mappings:{"default":{"default":"double down tack"}},key:"2AEA"},{category:"Sm",mappings:{"default":{"default":"double up tack"}},key:"2AEB"},{category:"Sm",mappings:{"default":{"default":"double stroke not sign"}},key:"2AEC"},{category:"Sm",mappings:{"default":{"default":"reversed double stroke not sign"}},
-key:"2AED"},{category:"Sm",mappings:{"default":{"default":"does not divide with reversed negation slash"}},key:"2AEE"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle above"}},key:"2AEF"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle below"}},key:"2AF0"},{category:"Sm",mappings:{"default":{"default":"down tack with circle below"}},key:"2AF1"},{category:"Sm",mappings:{"default":{"default":"parallel with horizontal stroke"}},key:"2AF2"},{category:"Sm",
-mappings:{"default":{"default":"parallel with tilde operator"}},key:"2AF3"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar binary relation"}},key:"2AF4"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar with horizontal stroke"}},key:"2AF5"},{category:"Sm",mappings:{"default":{"default":"triple colon operator"}},key:"2AF6"},{category:"Sm",mappings:{"default":{"default":"triple nested less than"}},key:"2AF7"},{category:"Sm",mappings:{"default":{"default":"triple nested greater than"}},
-key:"2AF8"},{category:"Sm",mappings:{"default":{"default":"double line slanted less than or equal to"}},key:"2AF9"},{category:"Sm",mappings:{"default":{"default":"double line slanted greater than or equal to"}},key:"2AFA"},{category:"Sm",mappings:{"default":{"default":"triple solidus binary relation"}},key:"2AFB"},{category:"Sm",mappings:{"default":{"default":"large triple vertical bar operator"}},key:"2AFC"},{category:"Sm",mappings:{"default":{"default":"double solidus operator"}},key:"2AFD"},{category:"Sm",
-mappings:{"default":{"default":"white vertical bar"}},key:"2AFE"},{category:"Sm",mappings:{"default":{"default":"n ary white vertical bar"}},key:"2AFF"},{category:"Pd",mappings:{"default":{"default":"wave dash"}},key:"301C"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical comma"}},key:"FE10"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical colon"}},key:"FE13"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical semicolon"}},
-key:"FE14"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical exclamation mark"}},key:"FE15"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical question mark"}},key:"FE16"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical horizontal ellipsis"}},key:"FE19"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical two dot leader",alternative:"glyph for vertical two dot leader"}},key:"FE30"},{category:"Pd",
-mappings:{"default":{"default":"presentation form for vertical em dash",alternative:"glyph for vertical em dash"}},key:"FE31"},{category:"Pd",mappings:{"default":{"default":"presentation form for vertical en dash",alternative:"glyph for vertical en dash"}},key:"FE32"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical low line",alternative:"glyph for vertical spacing underscore"}},key:"FE33"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical wavy low line",
-alternative:"glyph for vertical spacing wavy underscore"}},key:"FE34"},{category:"Po",mappings:{"default":{"default":"sesame dot"}},key:"FE45"},{category:"Po",mappings:{"default":{"default":"white sesame dot"}},key:"FE46"},{category:"Po",mappings:{"default":{"default":"dashed overline",alternative:"spacing dashed overscore"}},key:"FE49"},{category:"Po",mappings:{"default":{"default":"centerline overline",alternative:"spacing centerline overscore"}},key:"FE4A"},{category:"Po",mappings:{"default":{"default":"wavy overline",
-alternative:"spacing wavy overscore"}},key:"FE4B"},{category:"Po",mappings:{"default":{"default":"double wavy overline",alternative:"spacing double wavy overscore"}},key:"FE4C"},{category:"Pc",mappings:{"default":{"default":"dashed low line",alternative:"spacing dashed underscore"}},key:"FE4D"},{category:"Pc",mappings:{"default":{"default":"centerline low line",alternative:"spacing centerline underscore"}},key:"FE4E"},{category:"Pc",mappings:{"default":{"default":"wavy low line",alternative:"spacing wavy underscore"}},
-key:"FE4F"},{category:"Po",mappings:{"default":{"default":"small comma"}},key:"FE50"},{category:"Po",mappings:{"default":{"default":"small full stop",alternative:"small period"}},key:"FE52"},{category:"Po",mappings:{"default":{"default":"small semicolon"}},key:"FE54"},{category:"Po",mappings:{"default":{"default":"small colon"}},key:"FE55"},{category:"Po",mappings:{"default":{"default":"small question mark"}},key:"FE56"},{category:"Po",mappings:{"default":{"default":"small exclamation mark"}},key:"FE57"},
-{category:"Pd",mappings:{"default":{"default":"small em dash"}},key:"FE58"},{category:"Po",mappings:{"default":{"default":"small number sign"}},key:"FE5F"},{category:"Po",mappings:{"default":{"default":"small ampersand"}},key:"FE60"},{category:"Po",mappings:{"default":{"default":"small asterisk"}},key:"FE61"},{category:"Sm",mappings:{"default":{"default":"small plus sign"}},key:"FE62"},{category:"Pd",mappings:{"default":{"default":"small hyphen minus"}},key:"FE63"},{category:"Sm",mappings:{"default":{"default":"small less than sign"}},
-key:"FE64"},{category:"Sm",mappings:{"default":{"default":"small greater than sign"}},key:"FE65"},{category:"Sm",mappings:{"default":{"default":"small equals sign"}},key:"FE66"},{category:"Po",mappings:{"default":{"default":"small reverse solidus",alternative:"small backslash"}},key:"FE68"},{category:"Sc",mappings:{"default":{"default":"small dollar sign"}},key:"FE69"},{category:"Po",mappings:{"default":{"default":"small percent sign"}},key:"FE6A"},{category:"Po",mappings:{"default":{"default":"small commercial at"}},
-key:"FE6B"},{category:"Po",mappings:{"default":{"default":"fullwidth exclamation mark"}},key:"FF01"},{category:"Po",mappings:{"default":{"default":"fullwidth quotation mark"}},key:"FF02"},{category:"Po",mappings:{"default":{"default":"fullwidth number sign"}},key:"FF03"},{category:"Sc",mappings:{"default":{"default":"fullwidth dollar sign"}},key:"FF04"},{category:"Po",mappings:{"default":{"default":"fullwidth percent sign"}},key:"FF05"},{category:"Po",mappings:{"default":{"default":"fullwidth ampersand"}},
-key:"FF06"},{category:"Po",mappings:{"default":{"default":"fullwidth apostrophe"}},key:"FF07"},{category:"Po",mappings:{"default":{"default":"fullwidth asterisk"}},key:"FF0A"},{category:"Sm",mappings:{"default":{"default":"fullwidth plus sign"}},key:"FF0B"},{category:"Po",mappings:{"default":{"default":"fullwidth comma"}},key:"FF0C"},{category:"Pd",mappings:{"default":{"default":"fullwidth hyphen minus"}},key:"FF0D"},{category:"Po",mappings:{"default":{"default":"fullwidth full stop",alternative:"fullwidth period"}},
-key:"FF0E"},{category:"Po",mappings:{"default":{"default":"fullwidth solidus",alternative:"fullwidth slash"}},key:"FF0F"},{category:"Po",mappings:{"default":{"default":"fullwidth colon"}},key:"FF1A"},{category:"Po",mappings:{"default":{"default":"fullwidth semicolon"}},key:"FF1B"},{category:"Sm",mappings:{"default":{"default":"fullwidth less than sign"}},key:"FF1C"},{category:"Sm",mappings:{"default":{"default":"fullwidth equals sign"}},key:"FF1D"},{category:"Sm",mappings:{"default":{"default":"fullwidth greater than sign"}},
-key:"FF1E"},{category:"Po",mappings:{"default":{"default":"fullwidth question mark"}},key:"FF1F"},{category:"Po",mappings:{"default":{"default":"fullwidth commercial at"}},key:"FF20"},{category:"Po",mappings:{"default":{"default":"fullwidth reverse solidus",alternative:"fullwidth backslash"}},key:"FF3C"},{category:"Sk",mappings:{"default":{"default":"fullwidth circumflex accent",alternative:"fullwidth spacing circumflex"}},key:"FF3E"},{category:"Pc",mappings:{"default":{"default":"fullwidth low line",
-alternative:"fullwidth spacing underscore"}},key:"FF3F"},{category:"Sk",mappings:{"default":{"default":"fullwidth grave accent",alternative:"fullwidth spacing grave"}},key:"FF40"},{category:"Sm",mappings:{"default":{"default":"fullwidth vertical line",alternative:"fullwidth vertical bar"}},key:"FF5C"},{category:"Sm",mappings:{"default":{"default":"fullwidth tilde",alternative:"fullwidth spacing tilde"}},key:"FF5E"},{category:"Sc",mappings:{"default":{"default":"fullwidth cent sign"}},key:"FFE0"},
-{category:"Sc",mappings:{"default":{"default":"fullwidth pound sign"}},key:"FFE1"},{category:"Sm",mappings:{"default":{"default":"fullwidth not sign"}},key:"FFE2"},{category:"Sk",mappings:{"default":{"default":"fullwidth macron",alternative:"fullwidth spacing macron"}},key:"FFE3"},{category:"So",mappings:{"default":{"default":"fullwidth broken bar",alternative:"fullwidth broken vertical bar"}},key:"FFE4"},{category:"Sc",mappings:{"default":{"default":"fullwidth yen sign"}},key:"FFE5"},{category:"Sc",
-mappings:{"default":{"default":"fullwidth won sign"}},key:"FFE6"},{category:"So",mappings:{"default":{"default":"halfwidth forms light vertical"}},key:"FFE8"},{category:"So",mappings:{"default":{"default":"halfwidth black square"}},key:"FFED"},{category:"So",mappings:{"default":{"default":"halfwidth white circle"}},key:"FFEE"},{category:"Ll",names:[],key:"03B1",mappings:{"default":{"default":"greek small letter alpha","short":"alpha"}}},{category:"Ll",names:[],key:"03B2",mappings:{"default":{"default":"greek small letter beta",
-"short":"beta"}}},{category:"Ll",names:[],key:"03B3",mappings:{"default":{"default":"greek small letter gamma","short":"gamma"}}},{category:"Ll",names:[],key:"03B4",mappings:{"default":{"default":"greek small letter delta","short":"delta"}}},{category:"Ll",names:[],key:"03B5",mappings:{"default":{"default":"greek small letter epsilon","short":"epsilon"}}},{category:"Ll",names:[],key:"03B6",mappings:{"default":{"default":"greek small letter zeta","short":"zeta"}}},{category:"Ll",names:[],key:"03B7",
-mappings:{"default":{"default":"greek small letter eta","short":"eta"}}},{category:"Ll",names:[],key:"03B8",mappings:{"default":{"default":"greek small letter theta","short":"theta"}}},{category:"Ll",names:[],key:"03B9",mappings:{"default":{"default":"greek small letter iota","short":"iota"}}},{category:"Ll",names:[],key:"03BA",mappings:{"default":{"default":"greek small letter kappa","short":"kappa"}}},{category:"Ll",names:[],key:"03BB",mappings:{"default":{"default":"greek small letter lamda",alternative:"greek small letter lambda",
-"short":"lamda"}}},{category:"Ll",names:[],key:"03BC",mappings:{"default":{"default":"greek small letter mu","short":"mu"}}},{category:"Ll",names:[],key:"03BD",mappings:{"default":{"default":"greek small letter nu","short":"nu"}}},{category:"Ll",names:[],key:"03BE",mappings:{"default":{"default":"greek small letter xi","short":"xi"}}},{category:"Ll",names:[],key:"03BF",mappings:{"default":{"default":"greek small letter omicron","short":"omicron"}}},{category:"Ll",names:[],key:"03C0",mappings:{"default":{"default":"greek small letter pi",
-"short":"pi"}}},{category:"Ll",names:[],key:"03C1",mappings:{"default":{"default":"greek small letter rho","short":"rho"}}},{category:"Ll",names:[],key:"03C2",mappings:{"default":{"default":"greek small letter final sigma","short":"final sigma"}}},{category:"Ll",names:[],key:"03C3",mappings:{"default":{"default":"greek small letter sigma","short":"sigma"}}},{category:"Ll",names:[],key:"03C4",mappings:{"default":{"default":"greek small letter tau","short":"tau"}}},{category:"Ll",names:[],key:"03C5",
-mappings:{"default":{"default":"greek small letter upsilon","short":"upsilon"}}},{category:"Ll",names:[],key:"03C6",mappings:{"default":{"default":"greek small letter phi","short":"phi"}}},{category:"Ll",names:[],key:"03C7",mappings:{"default":{"default":"greek small letter chi","short":"chi"}}},{category:"Ll",names:[],key:"03C8",mappings:{"default":{"default":"greek small letter psi","short":"psi"}}},{category:"Ll",names:[],key:"03C9",mappings:{"default":{"default":"greek small letter omega","short":"omega"}}},
-{category:"Ll",mappings:{"default":{"default":"greek beta symbol",alternative:"greek small letter curled beta","short":"beta"}},key:"03D0"},{category:"Ll",mappings:{"default":{"default":"greek theta symbol",alternative:"greek small letter script theta","short":"theta"}},key:"03D1"},{category:"Ll",mappings:{"default":{"default":"greek phi symbol",alternative:"greek small letter script phi","short":"phi"}},key:"03D5"},{category:"Ll",mappings:{"default":{"default":"greek pi symbol",alternative:"greek small letter omega pi",
-"short":"pi"}},key:"03D6"},{category:"Ll",mappings:{"default":{"default":"greek kai symbol","short":"kai"}},key:"03D7"},{category:"Ll",mappings:{"default":{"default":"greek kappa symbol",alternative:"greek small letter script kappa","short":"kappa"}},key:"03F0"},{category:"Ll",mappings:{"default":{"default":"greek rho symbol",alternative:"greek small letter tailed rho","short":"rho"}},key:"03F1"},{category:"Ll",mappings:{"default":{"default":"greek lunate epsilon symbol","short":"epsilon"}},key:"03F5"},
-{category:"Sm",mappings:{"default":{"default":"greek reversed lunate epsilon symbol","short":"reversed epsilon"}},key:"03F6"},{category:"Lu",names:[],key:"0391",mappings:{"default":{"default":"greek capital letter alpha","short":"cap alpha"}}},{category:"Lu",names:[],key:"0392",mappings:{"default":{"default":"greek capital letter beta","short":"cap beta"}}},{category:"Lu",names:[],key:"0393",mappings:{"default":{"default":"greek capital letter gamma","short":"cap gamma"}}},{category:"Lu",names:[],
-key:"0394",mappings:{"default":{"default":"greek capital letter delta","short":"cap delta"}}},{category:"Lu",names:[],key:"0395",mappings:{"default":{"default":"greek capital letter epsilon","short":"cap epsilon"}}},{category:"Lu",names:[],key:"0396",mappings:{"default":{"default":"greek capital letter zeta","short":"cap zeta"}}},{category:"Lu",names:[],key:"0397",mappings:{"default":{"default":"greek capital letter eta","short":"cap eta"}}},{category:"Lu",names:[],key:"0398",mappings:{"default":{"default":"greek capital letter theta",
-"short":"cap theta"}}},{category:"Lu",names:[],key:"0399",mappings:{"default":{"default":"greek capital letter iota","short":"cap iota"}}},{category:"Lu",names:[],key:"039A",mappings:{"default":{"default":"greek capital letter kappa","short":"cap kappa"}}},{category:"Lu",names:[],key:"039B",mappings:{"default":{"default":"greek capital letter lamda",alternative:"greek capital letter lambda","short":"cap lamda"}}},{category:"Lu",names:[],key:"039C",mappings:{"default":{"default":"greek capital letter mu",
-"short":"cap mu"}}},{category:"Lu",names:[],key:"039D",mappings:{"default":{"default":"greek capital letter nu","short":"cap nu"}}},{category:"Lu",names:[],key:"039E",mappings:{"default":{"default":"greek capital letter xi","short":"cap xi"}}},{category:"Lu",names:[],key:"039F",mappings:{"default":{"default":"greek capital letter omicron","short":"cap omicron"}}},{category:"Lu",names:[],key:"03A0",mappings:{"default":{"default":"greek capital letter pi","short":"cap pi"}}},{category:"Lu",names:[],
-key:"03A1",mappings:{"default":{"default":"greek capital letter rho","short":"cap rho"}}},{category:"Lu",names:[],key:"03A3",mappings:{"default":{"default":"greek capital letter sigma","short":"cap sigma"}}},{category:"Lu",names:[],key:"03A4",mappings:{"default":{"default":"greek capital letter tau","short":"cap tau"}}},{category:"Lu",names:[],key:"03A5",mappings:{"default":{"default":"greek capital letter upsilon","short":"cap upsilon"}}},{category:"Lu",names:[],key:"03A6",mappings:{"default":{"default":"greek capital letter phi",
-"short":"cap phi"}}},{category:"Lu",names:[],key:"03A7",mappings:{"default":{"default":"greek capital letter chi","short":"cap chi"}}},{category:"Lu",names:[],key:"03A8",mappings:{"default":{"default":"greek capital letter psi","short":"cap psi"}}},{category:"Lu",names:[],key:"03A9",mappings:{"default":{"default":"greek capital letter omega","short":"cap omega"}}},{category:"Lu",mappings:{"default":{"default":"greek capital theta symbol","short":"cap theta"}},key:"03F4"},{category:"Ps",mappings:{"default":{"default":"left parenthesis",
-alternative:"opening parenthesis"}},key:"0028"},{category:"Pe",mappings:{"default":{"default":"right parenthesis",alternative:"closing parenthesis"}},key:"0029"},{category:"Ps",mappings:{"default":{"default":"left square bracket",alternative:"opening square bracket"}},key:"005B"},{category:"Pe",mappings:{"default":{"default":"right square bracket",alternative:"closing square bracket"}},key:"005D"},{category:"Ps",mappings:{"default":{"default":"left curly bracket",alternative:"opening curly bracket"}},
-key:"007B"},{category:"Pe",mappings:{"default":{"default":"right curly bracket",alternative:"closing curly bracket"}},key:"007D"},{category:"Ps",mappings:{"default":{"default":"left square bracket with quill"}},key:"2045"},{category:"Pe",mappings:{"default":{"default":"right square bracket with quill"}},key:"2046"},{category:"Sm",mappings:{"default":{"default":"left ceiling"}},key:"2308"},{category:"Sm",mappings:{"default":{"default":"right ceiling"}},key:"2309"},{category:"Sm",mappings:{"default":{"default":"left floor"}},
-key:"230A"},{category:"Sm",mappings:{"default":{"default":"right floor"}},key:"230B"},{category:"So",mappings:{"default":{"default":"bottom right crop"}},key:"230C"},{category:"So",mappings:{"default":{"default":"bottom left crop"}},key:"230D"},{category:"So",mappings:{"default":{"default":"top right crop"}},key:"230E"},{category:"So",mappings:{"default":{"default":"top left crop"}},key:"230F"},{category:"So",mappings:{"default":{"default":"top left corner"}},key:"231C"},{category:"So",mappings:{"default":{"default":"top right corner"}},
-key:"231D"},{category:"So",mappings:{"default":{"default":"bottom left corner"}},key:"231E"},{category:"So",mappings:{"default":{"default":"bottom right corner"}},key:"231F"},{category:"Sm",mappings:{"default":{"default":"top half integral"}},key:"2320"},{category:"Sm",mappings:{"default":{"default":"bottom half integral"}},key:"2321"},{category:"Ps",mappings:{"default":{"default":"left pointing angle bracket",alternative:"bra"}},key:"2329"},{category:"Pe",mappings:{"default":{"default":"right pointing angle bracket",
-alternative:"ket"}},key:"232A"},{category:"Sm",mappings:{"default":{"default":"left parenthesis upper hook"}},key:"239B"},{category:"Sm",mappings:{"default":{"default":"left parenthesis extension"}},key:"239C"},{category:"Sm",mappings:{"default":{"default":"left parenthesis lower hook"}},key:"239D"},{category:"Sm",mappings:{"default":{"default":"right parenthesis upper hook"}},key:"239E"},{category:"Sm",mappings:{"default":{"default":"right parenthesis extension"}},key:"239F"},{category:"Sm",mappings:{"default":{"default":"right parenthesis lower hook"}},
-key:"23A0"},{category:"Sm",mappings:{"default":{"default":"left square bracket upper corner"}},key:"23A1"},{category:"Sm",mappings:{"default":{"default":"left square bracket extension"}},key:"23A2"},{category:"Sm",mappings:{"default":{"default":"left square bracket lower corner"}},key:"23A3"},{category:"Sm",mappings:{"default":{"default":"right square bracket upper corner"}},key:"23A4"},{category:"Sm",mappings:{"default":{"default":"right square bracket extension"}},key:"23A5"},{category:"Sm",mappings:{"default":{"default":"right square bracket lower corner"}},
-key:"23A6"},{category:"Sm",mappings:{"default":{"default":"left curly bracket upper hook"}},key:"23A7"},{category:"Sm",mappings:{"default":{"default":"left curly bracket middle piece"}},key:"23A8"},{category:"Sm",mappings:{"default":{"default":"left curly bracket lower hook"}},key:"23A9"},{category:"Sm",mappings:{"default":{"default":"curly bracket extension"}},key:"23AA"},{category:"Sm",mappings:{"default":{"default":"right curly bracket upper hook"}},key:"23AB"},{category:"Sm",mappings:{"default":{"default":"right curly bracket middle piece"}},
-key:"23AC"},{category:"Sm",mappings:{"default":{"default":"right curly bracket lower hook"}},key:"23AD"},{category:"Sm",mappings:{"default":{"default":"integral extension"}},key:"23AE"},{category:"Sm",mappings:{"default":{"default":"horizontal line extension"}},key:"23AF"},{category:"Sm",mappings:{"default":{"default":"upper left or lower right curly bracket section"}},key:"23B0"},{category:"Sm",mappings:{"default":{"default":"upper right or lower left curly bracket section"}},key:"23B1"},{category:"Sm",
-mappings:{"default":{"default":"summation top"}},key:"23B2"},{category:"Sm",mappings:{"default":{"default":"summation bottom"}},key:"23B3"},{category:"So",mappings:{"default":{"default":"top square bracket"}},key:"23B4"},{category:"So",mappings:{"default":{"default":"bottom square bracket"}},key:"23B5"},{category:"So",mappings:{"default":{"default":"bottom square bracket over top square bracket"}},key:"23B6"},{category:"So",mappings:{"default":{"default":"radical symbol bottom"}},key:"23B7"},{category:"So",
-mappings:{"default":{"default":"left vertical box line"}},key:"23B8"},{category:"So",mappings:{"default":{"default":"right vertical box line"}},key:"23B9"},{category:"Sm",mappings:{"default":{"default":"top parenthesis"}},key:"23DC"},{category:"Sm",mappings:{"default":{"default":"bottom parenthesis"}},key:"23DD"},{category:"Sm",mappings:{"default":{"default":"top curly bracket"}},key:"23DE"},{category:"Sm",mappings:{"default":{"default":"bottom curly bracket"}},key:"23DF"},{category:"Sm",mappings:{"default":{"default":"top tortoise shell bracket"}},
-key:"23E0"},{category:"Sm",mappings:{"default":{"default":"bottom tortoise shell bracket"}},key:"23E1"},{category:"Ps",mappings:{"default":{"default":"medium left parenthesis ornament"}},key:"2768"},{category:"Pe",mappings:{"default":{"default":"medium right parenthesis ornament"}},key:"2769"},{category:"Ps",mappings:{"default":{"default":"medium flattened left parenthesis ornament"}},key:"276A"},{category:"Pe",mappings:{"default":{"default":"medium flattened right parenthesis ornament"}},key:"276B"},
-{category:"Ps",mappings:{"default":{"default":"medium left pointing angle bracket ornament"}},key:"276C"},{category:"Pe",mappings:{"default":{"default":"medium right pointing angle bracket ornament"}},key:"276D"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle quotation mark ornament"}},key:"276E"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle quotation mark ornament"}},key:"276F"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle bracket ornament"}},
-key:"2770"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle bracket ornament"}},key:"2771"},{category:"Ps",mappings:{"default":{"default":"light left tortoise shell bracket ornament"}},key:"2772"},{category:"Pe",mappings:{"default":{"default":"light right tortoise shell bracket ornament"}},key:"2773"},{category:"Ps",mappings:{"default":{"default":"medium left curly bracket ornament"}},key:"2774"},{category:"Pe",mappings:{"default":{"default":"medium right curly bracket ornament"}},
-key:"2775"},{category:"Ps",mappings:{"default":{"default":"left s shaped bag delimiter"}},key:"27C5"},{category:"Pe",mappings:{"default":{"default":"right s shaped bag delimiter"}},key:"27C6"},{category:"Ps",mappings:{"default":{"default":"mathematical left white square bracket"}},key:"27E6"},{category:"Pe",mappings:{"default":{"default":"mathematical right white square bracket"}},key:"27E7"},{category:"Ps",mappings:{"default":{"default":"mathematical left angle bracket"}},key:"27E8"},{category:"Pe",
-mappings:{"default":{"default":"mathematical right angle bracket"}},key:"27E9"},{category:"Ps",mappings:{"default":{"default":"mathematical left double angle bracket"}},key:"27EA"},{category:"Pe",mappings:{"default":{"default":"mathematical right double angle bracket"}},key:"27EB"},{category:"Ps",mappings:{"default":{"default":"mathematical left white tortoise shell bracket"}},key:"27EC"},{category:"Pe",mappings:{"default":{"default":"mathematical right white tortoise shell bracket"}},key:"27ED"},
-{category:"Ps",mappings:{"default":{"default":"mathematical left flattened parenthesis"}},key:"27EE"},{category:"Pe",mappings:{"default":{"default":"mathematical right flattened parenthesis"}},key:"27EF"},{category:"Ps",mappings:{"default":{"default":"left white curly bracket"}},key:"2983"},{category:"Pe",mappings:{"default":{"default":"right white curly bracket"}},key:"2984"},{category:"Ps",mappings:{"default":{"default":"left white parenthesis"}},key:"2985"},{category:"Pe",mappings:{"default":{"default":"right white parenthesis"}},
-key:"2986"},{category:"Ps",mappings:{"default":{"default":"z notation left image bracket"}},key:"2987"},{category:"Pe",mappings:{"default":{"default":"z notation right image bracket"}},key:"2988"},{category:"Ps",mappings:{"default":{"default":"z notation left binding bracket"}},key:"2989"},{category:"Pe",mappings:{"default":{"default":"z notation right binding bracket"}},key:"298A"},{category:"Ps",mappings:{"default":{"default":"left square bracket with underbar"}},key:"298B"},{category:"Pe",mappings:{"default":{"default":"right square bracket with underbar"}},
-key:"298C"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in top corner"}},key:"298D"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in bottom corner"}},key:"298E"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in bottom corner"}},key:"298F"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in top corner"}},key:"2990"},{category:"Ps",mappings:{"default":{"default":"left angle bracket with dot"}},
-key:"2991"},{category:"Pe",mappings:{"default":{"default":"right angle bracket with dot"}},key:"2992"},{category:"Ps",mappings:{"default":{"default":"left arc less than bracket"}},key:"2993"},{category:"Pe",mappings:{"default":{"default":"right arc greater than bracket"}},key:"2994"},{category:"Ps",mappings:{"default":{"default":"double left arc greater than bracket"}},key:"2995"},{category:"Pe",mappings:{"default":{"default":"double right arc less than bracket"}},key:"2996"},{category:"Ps",mappings:{"default":{"default":"left black tortoise shell bracket"}},
-key:"2997"},{category:"Pe",mappings:{"default":{"default":"right black tortoise shell bracket"}},key:"2998"},{category:"Ps",mappings:{"default":{"default":"left wiggly fence"}},key:"29D8"},{category:"Pe",mappings:{"default":{"default":"right wiggly fence"}},key:"29D9"},{category:"Ps",mappings:{"default":{"default":"left double wiggly fence"}},key:"29DA"},{category:"Pe",mappings:{"default":{"default":"right double wiggly fence"}},key:"29DB"},{category:"Ps",mappings:{"default":{"default":"left pointing curved angle bracket"}},
-key:"29FC"},{category:"Pe",mappings:{"default":{"default":"right pointing curved angle bracket"}},key:"29FD"},{category:"Ps",mappings:{"default":{"default":"top left half bracket"}},key:"2E22"},{category:"Pe",mappings:{"default":{"default":"top right half bracket"}},key:"2E23"},{category:"Ps",mappings:{"default":{"default":"bottom left half bracket"}},key:"2E24"},{category:"Pe",mappings:{"default":{"default":"bottom right half bracket"}},key:"2E25"},{category:"Ps",mappings:{"default":{"default":"left sideways u bracket"}},
-key:"2E26"},{category:"Pe",mappings:{"default":{"default":"right sideways u bracket"}},key:"2E27"},{category:"Ps",mappings:{"default":{"default":"left double parenthesis"}},key:"2E28"},{category:"Pe",mappings:{"default":{"default":"right double parenthesis"}},key:"2E29"},{category:"Ps",mappings:{"default":{"default":"left angle bracket",alternative:"opening angle bracket"}},key:"3008"},{category:"Pe",mappings:{"default":{"default":"right angle bracket",alternative:"closing angle bracket"}},key:"3009"},
-{category:"Ps",mappings:{"default":{"default":"left double angle bracket",alternative:"opening double angle bracket"}},key:"300A"},{category:"Pe",mappings:{"default":{"default":"right double angle bracket",alternative:"closing double angle bracket"}},key:"300B"},{category:"Ps",mappings:{"default":{"default":"left corner bracket",alternative:"opening corner bracket"}},key:"300C"},{category:"Pe",mappings:{"default":{"default":"right corner bracket",alternative:"closing corner bracket"}},key:"300D"},
-{category:"Ps",mappings:{"default":{"default":"left white corner bracket",alternative:"opening white corner bracket"}},key:"300E"},{category:"Pe",mappings:{"default":{"default":"right white corner bracket",alternative:"closing white corner bracket"}},key:"300F"},{category:"Ps",mappings:{"default":{"default":"left black lenticular bracket",alternative:"opening black lenticular bracket"}},key:"3010"},{category:"Pe",mappings:{"default":{"default":"right black lenticular bracket",alternative:"closing black lenticular bracket"}},
-key:"3011"},{category:"Ps",mappings:{"default":{"default":"left tortoise shell bracket",alternative:"opening tortoise shell bracket"}},key:"3014"},{category:"Pe",mappings:{"default":{"default":"right tortoise shell bracket",alternative:"closing tortoise shell bracket"}},key:"3015"},{category:"Ps",mappings:{"default":{"default":"left white lenticular bracket",alternative:"opening white lenticular bracket"}},key:"3016"},{category:"Pe",mappings:{"default":{"default":"right white lenticular bracket",
-alternative:"closing white lenticular bracket"}},key:"3017"},{category:"Ps",mappings:{"default":{"default":"left white tortoise shell bracket",alternative:"opening white tortoise shell bracket"}},key:"3018"},{category:"Pe",mappings:{"default":{"default":"right white tortoise shell bracket",alternative:"closing white tortoise shell bracket"}},key:"3019"},{category:"Ps",mappings:{"default":{"default":"left white square bracket",alternative:"opening white square bracket"}},key:"301A"},{category:"Pe",
-mappings:{"default":{"default":"right white square bracket",alternative:"closing white square bracket"}},key:"301B"},{category:"Ps",mappings:{"default":{"default":"reversed double prime quotation mark"}},key:"301D"},{category:"Pe",mappings:{"default":{"default":"double prime quotation mark"}},key:"301E"},{category:"Pe",mappings:{"default":{"default":"low double prime quotation mark"}},key:"301F"},{category:"Ps",mappings:{"default":{"default":"ornate left parenthesis"}},key:"FD3E"},{category:"Pe",
-mappings:{"default":{"default":"ornate right parenthesis"}},key:"FD3F"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white lenticular bracket"}},key:"FE17"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white lenticular bracket"}},key:"FE18"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left parenthesis",alternative:"glyph for vertical opening parenthesis"}},key:"FE35"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right parenthesis",
-alternative:"glyph for vertical closing parenthesis"}},key:"FE36"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left curly bracket",alternative:"glyph for vertical opening curly bracket"}},key:"FE37"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right curly bracket",alternative:"glyph for vertical closing curly bracket"}},key:"FE38"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left tortoise shell bracket",
-alternative:"glyph for vertical opening tortoise shell bracket"}},key:"FE39"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right tortoise shell bracket",alternative:"glyph for vertical closing tortoise shell bracket"}},key:"FE3A"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left black lenticular bracket",alternative:"glyph for vertical opening black lenticular bracket"}},key:"FE3B"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right black lenticular bracket",
-alternative:"glyph for vertical closing black lenticular bracket"}},key:"FE3C"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left double angle bracket",alternative:"glyph for vertical opening double angle bracket"}},key:"FE3D"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right double angle bracket",alternative:"glyph for vertical closing double angle bracket"}},key:"FE3E"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left angle bracket",
-alternative:"glyph for vertical opening angle bracket"}},key:"FE3F"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right angle bracket",alternative:"glyph for vertical closing angle bracket"}},key:"FE40"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left corner bracket",alternative:"glyph for vertical opening corner bracket"}},key:"FE41"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right corner bracket",
-alternative:"glyph for vertical closing corner bracket"}},key:"FE42"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white corner bracket",alternative:"glyph for vertical opening white corner bracket"}},key:"FE43"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white corner bracket",alternative:"glyph for vertical closing white corner bracket"}},key:"FE44"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left square bracket"}},
-key:"FE47"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right square bracket"}},key:"FE48"},{category:"Ps",mappings:{"default":{"default":"small left parenthesis",alternative:"small opening parenthesis"}},key:"FE59"},{category:"Pe",mappings:{"default":{"default":"small right parenthesis",alternative:"small closing parenthesis"}},key:"FE5A"},{category:"Ps",mappings:{"default":{"default":"small left curly bracket",alternative:"small opening curly bracket"}},key:"FE5B"},
-{category:"Pe",mappings:{"default":{"default":"small right curly bracket",alternative:"small closing curly bracket"}},key:"FE5C"},{category:"Ps",mappings:{"default":{"default":"small left tortoise shell bracket",alternative:"small opening tortoise shell bracket"}},key:"FE5D"},{category:"Pe",mappings:{"default":{"default":"small right tortoise shell bracket",alternative:"small closing tortoise shell bracket"}},key:"FE5E"},{category:"Ps",mappings:{"default":{"default":"fullwidth left parenthesis",alternative:"fullwidth opening parenthesis"}},
-key:"FF08"},{category:"Pe",mappings:{"default":{"default":"fullwidth right parenthesis",alternative:"fullwidth closing parenthesis"}},key:"FF09"},{category:"Ps",mappings:{"default":{"default":"fullwidth left square bracket",alternative:"fullwidth opening square bracket"}},key:"FF3B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right square bracket",alternative:"fullwidth closing square bracket"}},key:"FF3D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left curly bracket",
-alternative:"fullwidth opening curly bracket"}},key:"FF5B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right curly bracket",alternative:"fullwidth closing curly bracket"}},key:"FF5D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left white parenthesis"}},key:"FF5F"},{category:"Pe",mappings:{"default":{"default":"fullwidth right white parenthesis"}},key:"FF60"},{category:"Ps",mappings:{"default":{"default":"halfwidth left corner bracket",alternative:"halfwidth opening corner bracket"}},
-key:"FF62"},{category:"Pe",mappings:{"default":{"default":"halfwidth right corner bracket",alternative:"halfwidth closing corner bracket"}},key:"FF63"}];
-cvox.AndroidMathMap.FUNCTION_MAPPINGS_=[{category:"Elementary",mappings:{"default":{"default":"logarithm",alternative:"logarithm function","short":"log"}},key:"log",names:["log"]},{category:"Elementary",mappings:{"default":{"default":"natural logarithm",alternative:"natural logarithm function","short":"natural log"}},key:"ln",names:["ln"]},{category:"Elementary",mappings:{"default":{"default":"logarithm base 10","short":"log base 10"}},key:"lg",names:["lg"]},{category:"Elementary",mappings:{"default":{"default":"exponential",
-alternative:"exponential function","short":"exp"}},key:"exp",names:["exp","expt"]},{category:"Elementary",mappings:{"default":{"default":"greatest common divisor","short":"gcd"}},key:"gcd",names:["gcd"]},{category:"Elementary",mappings:{"default":{"default":"least common multiple","short":"lcm"}},key:"gcd",names:["gcd"]},{category:"Complex",mappings:{"default":{"default":"argument","short":"arg"}},key:"arg",names:["arg"]},{category:"Complex",mappings:{"default":{"default":"imaginary part","short":"imaginary"}},
-key:"im",names:["im"]},{category:"Complex",mappings:{"default":{"default":"real part","short":"real"}},key:"re",names:["re"]},{category:"Limits",mappings:{"default":{"default":"infimum","short":"inf"}},key:"inf",names:["inf"]},{category:"Limits",mappings:{"default":{"default":"limit","short":"lim"}},key:"lim",names:["lim"]},{category:"Limits",mappings:{"default":{"default":"infimum default",alternative:"inferior limit","short":"liminf"}},key:"liminf",names:["lim inf"]},{category:"Limits",mappings:{"default":{"default":"supremum limit",
-alternative:"superior limit","short":"limsup"}},key:"limsup",names:["lim sup"]},{category:"Limits",mappings:{"default":{"default":"maximum","short":"max"}},key:"max",names:["max"]},{category:"Limits",mappings:{"default":{"default":"minimum","short":"min"}},key:"min",names:["min"]},{category:"Limits",mappings:{"default":{"default":"supremum","short":"sup"}},key:"sup",names:["sup"]},{category:"Limits",mappings:{"default":{"default":"injective limit",alternative:"direct limit","short":"colimit"}},key:"injlim",
-names:["injlim","inj lim"]},{category:"Limits",mappings:{"default":{"default":"projective limit",alternative:"inverse limit","short":"limit"}},key:"projlim",names:["projlim","proj lim"]},{category:"Elementary",mappings:{"default":{"default":"modulo","short":"mod"}},key:"mod",names:["mod"]},{category:"Probability",mappings:{"default":{"default":"probability"}},key:"Pr",names:["Pr"]},{category:"Trigonometric",mappings:{"default":{"default":"cosine function","short":"cosine"}},key:"cos",names:["cos",
-"cosine"]},{category:"Trigonometric",mappings:{"default":{"default":"cotangent function","short":"cotangent"}},key:"cot",names:["cot"]},{category:"Trigonometric",mappings:{"default":{"default":"cosecant function","short":"cosecant"}},key:"csc",names:["csc"]},{category:"Trigonometric",mappings:{"default":{"default":"secant function","short":"secant"}},key:"sec",names:["sec"]},{category:"Trigonometric",mappings:{"default":{"default":"sine function",alternative:"sine function","short":"sine"}},key:"sin",
-names:["sin","sine"]},{category:"Trigonometric",mappings:{"default":{"default":"tangent function","short":"tangent"}},key:"tan",names:["tan"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cosine function",alternative:"arc cosine function","short":"arc cosine"}},key:"arccos",names:["arccos"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cotangent function",alternative:"arc cotangent function","short":"arc cotangent"}},key:"arccot",names:["arccot"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse cosecant function",alternative:"arc cosecant function","short":"arc cosecant"}},key:"arccsc",names:["arccsc"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse secant function",alternative:"arc secant function","short":"arc secant"}},key:"arcsec",names:["arcsec"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse sine function",alternative:"arc sine function","short":"arc sine"}},key:"arcsin",names:["arcsin"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse tangent function",alternative:"arc tangent function","short":"arc tangent"}},key:"arctan",names:["arctan"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosine function","short":"hyperbolic cosine"}},key:"cosh",names:["cosh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cotangent function","short":"hyperbolic cotangent"}},key:"coth",names:["coth"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosecant function",
-"short":"hyperbolic cosecant"}},key:"csch",names:["csch"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic secant function","short":"hyperbolic secant"}},key:"sech",names:["sech"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic sine function","short":"hyperbolic sine"}},key:"sinh",names:["sinh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic tangent function","short":"hyperbolic tangent"}},key:"tanh",names:["tanh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosine function",
-alternative:"area hyperbolic cosine function","short":"area hyperbolic cosine"}},key:"arcosh",names:["arcosh","arccosh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cotangent function",alternative:"area hyperbolic cotangent function","short":"area hyperbolic cotangent"}},key:"arcoth",names:["arcoth","arccoth"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosecant function",alternative:"area hyperbolic cosecant function","short":"area hyperbolic cosecant"}},
-key:"arcsch",names:["arcsch","arccsch"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic secant function",alternative:"area hyperbolic secant function","short":"area hyperbolic secant"}},key:"arsech",names:["arsech","arcsech"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic sine function",alternative:"area hyperbolic sine function","short":"area hyperbolic sine"}},key:"arsinh",names:["arsinh","arcsinh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic tangent function",
-alternative:"area hyperbolic tangent function","short":"area hyperbolic tangent"}},key:"artanh",names:["artanh","arctanh"]},{category:"Algebra",mappings:{"default":{"default":"degree"}},key:"deg",names:["deg"]},{category:"Algebra",mappings:{"default":{"default":"determinant","short":"det"}},key:"det",names:["det"]},{category:"Algebra",mappings:{"default":{"default":"dimension"}},key:"dim",names:["dim"]},{category:"Algebra",mappings:{"default":{"default":"homomorphism","short":"hom"}},key:"hom",names:["hom",
-"Hom"]},{category:"Algebra",mappings:{"default":{"default":"kernel"}},key:"ker",names:["ker"]},{category:"Algebra",mappings:{"default":{"default":"trace"}},key:"Tr",names:["Tr","tr"]}];cvox.AndroidVox=function(){cvox.ChromeVox.navigationManager.ignoreIframesNoMatterWhat()};goog.exportSymbol("cvox.AndroidVox",cvox.AndroidVox);
-cvox.AndroidVox.performAction=function(a){var b=JSON.parse(a);a=b.action;var c=b.granularity,b=b.element,d=cvox.SearchWidget.getInstance().isActive();16==c&&512==a&&(cvox.ChromeVox.navigationManager.setReversed(!1),cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.navigationManager.updateIndicator());if(16==c)return cvox.ChromeVoxUserCommands.commands.readFromHere(),!0;cvox.ChromeVoxUserCommands.commands.stopSpeech();if(256==a||512==a)d||cvox.ChromeVoxEventWatcher.setUpTextHandler();
-var e=cvox.ChromeVoxEventWatcher.currentTextHandler;e||document.activeElement==document.body||console.log("no text handler, but there is an active element",document.activeElement);if(e&&1==c){if(256==a)return e.moveCursorToNextCharacter();if(512==a)return e.moveCursorToPreviousCharacter()}else if(e&&2==c){if(256==a)return e.moveCursorToNextWord();if(512==a)return e.moveCursorToPreviousWord()}else if(e&&8==c){if(256==a)return e.moveCursorToNextParagraph();if(512==a)return e.moveCursorToPreviousParagraph()}else if(e&&
-4==c){var f=!1;256==a?f=e.moveCursorToNextLine():512==a&&(f=e.moveCursorToPreviousLine());if(f)return!0}switch(c){case -1:return cvox.ChromeVox.navigationManager.finishNavCommand(""),!0;case -2:return cvox.ChromeVoxUserCommands.commands.readCurrentTitle(),!0;case -3:return!0;case -4:return 512==a?cvox.ChromeVoxUserCommands.commands.exitShifter():cvox.ChromeVoxUserCommands.commands.enterShifter(),!0;case -5:return cvox.SearchWidget.getInstance().toggle(),!0}if(-275999999<=c&&-275E6>=c){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),
-cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);a=cvox.ChromeVox.navigationManager.getBraille();b=-275E6-c;if(c=a.text.getSpan(b))a=b-a.text.getSpanStart(c),cvox.AndroidVox.performClickAction(c,a);return!0}if(0>c)return!1;e=[];e[8]=cvox.NavigationShifter.GRANULARITIES.GROUP;e[4]=cvox.NavigationShifter.GRANULARITIES.LINE;e[2]=cvox.NavigationShifter.GRANULARITIES.WORD;e[1]=cvox.NavigationShifter.GRANULARITIES.CHARACTER;d||(c=c?e[c]:cvox.NavigationShifter.GRANULARITIES.OBJECT,
-cvox.ChromeVox.navigationManager.setGranularity(c));c=!1;switch(a){case 16:if(d)break;cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);(c=cvox.ChromeVox.navigationManager.getCurrentNode())&&cvox.AndroidVox.performClickAction(c);c=!0;break;case 1024:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.nextSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.nextList();break;case "CONTROL":c=
-!cvox.ChromeVoxUserCommands.commands.nextControl()}if(c)break;case 256:d?(cvox.SearchWidget.getInstance().nextResult(!1),c=!0):c=!cvox.ChromeVoxUserCommands.commands.forward();break;case 2048:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.previousSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.previousList();break;case "CONTROL":c=!cvox.ChromeVoxUserCommands.commands.previousControl()}if(c)break;case 512:d?(cvox.SearchWidget.getInstance().nextResult(!0),c=!0):c=
-!cvox.ChromeVoxUserCommands.commands.backward()}return c};goog.exportSymbol("cvox.AndroidVox.performAction",cvox.AndroidVox.performAction);
-cvox.AndroidVox.performClickAction=function(a,b){cvox.ChromeVox.navigationManager.getCurrentNode()!=a&&cvox.ApiImplementation.syncToNode(a,!1);cvox.Focuser.setFocus(a);var c=cvox.DomUtil.isInputTypeText(a)||a instanceof HTMLTextAreaElement;if(goog.isDef(b)&&c){var d=cvox.BrailleUtil.getTemplated(null,a),c=d.getSpanInstanceOf(cvox.BrailleUtil.ValueSpan),e=d.getSpanStart(c),d=d.getSpanEnd(c);e<=b&&b<=d&&(c=b-e+c.offset,a.selectionStart=a.selectionEnd=c,cvox.ChromeVoxEventWatcher.handleTextChanged(!0))}cvox.DomUtil.clickElem(a,
-!1,!0)};cvox.AndroidHost=function(){};goog.inherits(cvox.AndroidHost,cvox.AbstractHost);
-cvox.AndroidHost.prototype.init=function(){cvox.ChromeVox.version="AndroidVox";var a=cvox.AndroidKeyMap.getStringifiedKeyMap();cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable(a);cvox.ApiImplementation.siteSpecificScriptLoader="";cvox.ApiImplementation.siteSpecificScriptBase="";cvox.ApiImplementation.init();cvox.ChromeVox.earcons.earconsAvailable()&&(cvox.ChromeVox.verbosity=cvox.VERBOSITY_BRIEF);new cvox.AndroidMathMap;cvox.InitialSpeech.speak()};cvox.AndroidHost.prototype.reinit=function(){};
-cvox.AndroidHost.prototype.onPageLoad=function(){cvox.ChromeVoxEventWatcher.focusFollowsMouse=!0;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=0};cvox.AndroidHost.prototype.ttsLoaded=function(){return"undefined"!=typeof accessibility};cvox.AndroidHost.prototype.getApiSrc=function(){return""};cvox.AndroidHost.prototype.hasTtsCallback=function(){return!1};cvox.AndroidHost.prototype.mustRedispatchClickEvent=function(){return!0};
-cvox.AndroidHost.prototype.activateOrDeactivateChromeVox=function(a){cvox.ChromeVox.tts.stop();cvox.AndroidHost.superClass_.activateOrDeactivateChromeVox.call(this,a);this.onPageLoad()};goog.exportSymbol("cvox.AndroidHost.prototype.activateOrDeactivateChromeVox",cvox.AndroidHost.prototype.activateOrDeactivateChromeVox);cvox.HostFactory.hostConstructor=cvox.AndroidHost;window.cvox||(window.cvox={});cvox.MathJaxExternalUtil=function(){};cvox.MathJaxExternalUtil.mmlAttr=function(){return""};
-cvox.MathJaxExternalUtil.mfenced=function(a){null==a&&(a="");var b=[a+'<mrow mfenced="true"'+this.toMathMLattributes()+">"],c=a+" ";this.data.open&&b.push(this.data.open.toMathML(c));null!=this.data[0]&&b.push(this.data[0].toMathML(c));for(var d=1,e=this.data.length;d<e;d++)this.data[d]&&(this.data["sep"+d]&&b.push(this.data["sep"+d].toMathML(c)),b.push(this.data[d].toMathML(c)));this.data.close&&b.push(this.data.close.toMathML(c));b.push(a+"</mrow>");return b.join("\n")};
-cvox.MathJaxExternalUtil.getMathml=function(a,b){var c=MathJax.ElementJax.mml.mbase.prototype,d=MathJax.ElementJax.mml.mfenced.prototype;this.mmlAttr=c.toMathMLattributes;var e=d.toMathML;try{c.toMathMLattributes=cvox.MathJaxExternalUtil.mbase;d.toMathML=cvox.MathJaxExternalUtil.mfenced;var f=a.root.toMathML("");c.toMathMLattributes=this.mmlAttr;d.toMathML=e;MathJax.Callback(b)(f)}catch(g){c.toMathMLattributes=this.mmlAttr;d.toMathML=e;if(!g.restart)throw g;return MathJax.Callback.After([cvox.MathJaxExternalUtil.getMathml,
-a,b],g.restart)}};cvox.MathJaxExternalUtil.mbase=function(){var a=cvox.MathJaxExternalUtil.mmlAttr.call(this);if(null!=this.spanID)var b=(this.id||"MathJax-Span-"+this.spanID)+MathJax.OutputJax["HTML-CSS"].idPostfix,a=a+(' spanID="'+b+'"');null!=this.texClass&&(a+=' texClass="'+this.texClass+'"');return a};cvox.MathJaxExternalUtil.isActive=function(){return"undefined"!=typeof MathJax&&"undefined"!=typeof MathJax.Hub&&"undefined"!=typeof MathJax.ElementJax&&"undefined"!=typeof MathJax.InputJax};
-cvox.MathJaxExternalUtil.getMathjaxCallback_=function(a,b){cvox.MathJaxExternalUtil.getMathml(b,function(c){b.root.inputID&&a(c,b.root.inputID)})};cvox.MathJaxExternalUtil.registerSignal=function(a,b){MathJax.Hub.Register.MessageHook(b,function(b){b=MathJax.Hub.getJaxFor(b[1]);cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};cvox.MathJaxExternalUtil.getAllJax=function(a){var b=MathJax.Hub.getAllJax();b&&b.forEach(function(b){b.root.spanID&&cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};
-cvox.MathJaxExternalUtil.injectConfigScript=function(){var a=document.createElement("script");a.setAttribute("type","text/x-mathjax-config");a.textContent='MathJax.Hub.Config({\n jax: ["input/AsciiMath", "input/TeX"],\n extensions: ["toMathML.js"],\n skipStartupTypeset: true,\n messageStyle: "none",\n TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]}\n});\nMathJax.Hub.Queue(\n function() {MathJax.Hub.inputJax["math/asciimath"].Process();\n MathJax.Hub.inputJax["math/tex"].Process()}\n);\n//\n// Prevent these from being loaded\n//\nif (!MathJax.Extension.MathMenu) {MathJax.Extension.MathMenu = {}};\nif (!MathJax.Extension.MathZoom) {MathJax.Extension.MathZoom = {}};';
-document.activeElement.appendChild(a)};cvox.MathJaxExternalUtil.injectLoadScript=function(){var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src","http://cdn.mathjax.org/mathjax/latest/MathJax.js");document.activeElement.appendChild(a)};
-cvox.MathJaxExternalUtil.configMediaWiki=function(){mediaWiki&&MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions,{mathchar0mi:{thetasym:"03B8",koppa:"03DF",stigma:"03DB",varstigma:"03DB",coppa:"03D9",varcoppa:"03D9",sampi:"03E1",C:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],cnums:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Complex:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],H:["210D",{mathvariant:a.VARIANT.DOUBLESTRUCK}],
-N:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],natnums:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Q:["0051",{mathvariant:a.VARIANT.DOUBLESTRUCK}],R:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Z:["005A",{mathvariant:a.VARIANT.DOUBLESTRUCK}],sect:"00A7",P:"00B6",AA:["00C5",{mathvariant:a.VARIANT.NORMAL}],alef:["2135",{mathvariant:a.VARIANT.NORMAL}],alefsym:["2135",{mathvariant:a.VARIANT.NORMAL}],
-weierp:["2118",{mathvariant:a.VARIANT.NORMAL}],real:["211C",{mathvariant:a.VARIANT.NORMAL}],part:["2202",{mathvariant:a.VARIANT.NORMAL}],infin:["221E",{mathvariant:a.VARIANT.NORMAL}],empty:["2205",{mathvariant:a.VARIANT.NORMAL}],O:["2205",{mathvariant:a.VARIANT.NORMAL}],ang:["2220",{mathvariant:a.VARIANT.NORMAL}],exist:["2203",{mathvariant:a.VARIANT.NORMAL}],clubs:["2663",{mathvariant:a.VARIANT.NORMAL}],diamonds:["2662",{mathvariant:a.VARIANT.NORMAL}],hearts:["2661",{mathvariant:a.VARIANT.NORMAL}],
-spades:["2660",{mathvariant:a.VARIANT.NORMAL}],textvisiblespace:"2423",geneuro:"20AC",euro:"20AC"},mathchar0mo:{and:"2227",or:"2228",bull:"2219",plusmn:"00B1",sdot:"22C5",Dagger:"2021",sup:"2283",sub:"2282",supe:"2287",sube:"2286",isin:"2208",hAar:"21D4",hArr:"21D4",Harr:"21D4",Lrarr:"21D4",lrArr:"21D4",lArr:"21D0",Larr:"21D0",rArr:"21D2",Rarr:"21D2",harr:"2194",lrarr:"2194",larr:"2190",gets:"2190",rarr:"2192",oiint:["222F",{texClass:a.TEXCLASS.OP}],oiiint:["2230",{texClass:a.TEXCLASS.OP}]},mathchar7:{Alpha:"0391",
-Beta:"0392",Epsilon:"0395",Zeta:"0396",Eta:"0397",Iota:"0399",Kappa:"039A",Mu:"039C",Nu:"039D",Omicron:"039F",Rho:"03A1",Tau:"03A4",Chi:"03A7",Koppa:"03DE",Stigma:"03DA",Digamma:"03DC",Coppa:"03D8",Sampi:"03E0"},delimiter:{"\\uarr":"2191","\\darr":"2193","\\Uarr":"21D1","\\uArr":"21D1","\\Darr":"21D3","\\dArr":"21D3","\\rang":"27E9","\\lang":"27E8"},macros:{sgn:"NamedFn",arccot:"NamedFn",arcsec:"NamedFn",arccsc:"NamedFn",sen:"NamedFn",image:["Macro","\\Im"],bold:["Macro","\\mathbf{#1}",1],pagecolor:["Macro",
-"",1],emph:["Macro","\\textit{#1}",1],textsf:["Macro","\\mathord{\\sf{\\text{#1}}}",1],texttt:["Macro","\\mathord{\\tt{\\text{#1}}}",1],vline:["Macro","\\smash{\\large\\lvert}",0]}})})};
-cvox.MathJaxExternalUtil.convertToMml=function(a,b,c,d,e,f){var g=MathJax.HTML.Element("script",{type:c},[b]),g={math:b,script:g};MathJax.InputJax[d].prefilterHooks.Execute(g);var h;try{h=f(g.math)}catch(k){if(k[e])h=MathJax.ElementJax.mml.merror(k.message.replace(/\n.*/,""));else{if(k.restart)return MathJax.Callback.After([cvox.MathJaxExternalUtil.convertToMml,a,b,c,d,e,f],k.restart);throw k;}}h=h.inferred?MathJax.ElementJax.mml.apply(MathJax.ElementJax,h.data):MathJax.ElementJax.mml(h);h.root.display=
-"block";g.math=h;g.script.MathJax={};MathJax.InputJax[d].postfilterHooks.Execute(g);return cvox.MathJaxExternalUtil.getMathml(g.math,a)};cvox.MathJaxExternalUtil.texToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/tex;mode=display","TeX","texError",function(a){return MathJax.InputJax.TeX.Parse(a).mml()})};cvox.MathJaxExternalUtil.asciiMathToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/asciimath","AsciiMath","asciimathError",MathJax.InputJax.AsciiMath.AM.parseMath)};cvox.AndroidMathJax=function(){this.altMathNodeId_=0};goog.inherits(cvox.AndroidMathJax,cvox.AbstractMathJax);cvox.AndroidMathJax.prototype.getMathmlToDomCallback_=function(a){return goog.bind(function(b,c){return this.convertMarkupToDom(a,b,c)},this)};cvox.AndroidMathJax.prototype.isMathjaxActive=function(a){var b=0,c=function(){b++;cvox.MathJaxExternalUtil.isActive()?a(!0):5>b&&setTimeout(c,1E3)};c()};cvox.AndroidMathJax.prototype.getAllJax=function(a){cvox.MathJaxExternalUtil.getAllJax(this.getMathmlToDomCallback_(a))};
-cvox.AndroidMathJax.prototype.registerSignal=function(a,b){cvox.MathJaxExternalUtil.registerSignal(this.getMathmlToDomCallback_(a),b)};cvox.AndroidMathJax.prototype.injectScripts=function(){cvox.MathJaxExternalUtil.injectConfigScript();cvox.MathJaxExternalUtil.injectLoadScript()};cvox.AndroidMathJax.prototype.configMediaWiki=function(){cvox.MathJaxExternalUtil.configMediaWiki()};
-cvox.AndroidMathJax.prototype.getTex=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.texToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};cvox.AndroidMathJax.prototype.getAsciiMath=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.asciiMathToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};
-cvox.HostFactory.mathJaxConstructor=cvox.AndroidMathJax;cvox.AndroidTts=function(){cvox.AbstractTts.call(this);this.ttsProperties.rate=0.5;this.ttsProperties.pitch=0.5;this.ttsProperties.volume=1};goog.inherits(cvox.AndroidTts,cvox.AbstractTts);cvox.AndroidTts.prototype.speak=function(a,b,c){cvox.AndroidTts.superClass_.speak.call(this,a,b,c);c=this.mergeProperties(c);accessibility.speak(a,b,c);return this};cvox.AndroidTts.prototype.isSpeaking=function(){cvox.AndroidTts.superClass_.isSpeaking.call(this);return accessibility.isSpeaking()};
-cvox.AndroidTts.prototype.stop=function(){cvox.AndroidTts.superClass_.stop.call(this);accessibility.stop()};cvox.HostFactory.ttsConstructor=cvox.AndroidTts;cvox.TestMessages={locale:{message:"en"},chromevox_name:{message:"ChromeVox"},chromevox_description:{message:"ChromeVox - Giving Voice to Chrome"},chromevox_stop_speech_key:{message:"Stop speech"},chromevox_toggle_sticky_mode:{message:"Enable/Disable sticky mode"},chromevox_prefix_key:{message:"Prefix key"},chromevox_handle_tab_next:{message:"Jump to next focusable item"},chromevox_handle_tab_prev:{message:"Jump to previous focusable item"},chromevox_backward:{message:"Navigate backward"},chromevox_forward:{message:"Navigate forward"},
-chromevox_left:{message:"Move left"},chromevox_right:{message:"Move right"},chromevox_skip_backward:{message:"Skip backward during continuous reading"},chromevox_skip_forward:{message:"Skip forward during continuous reading"},chromevox_previous_granularity:{message:"Decrease navigation granularity"},chromevox_next_granularity:{message:"Increase navigation granularity"},chromevox_act_on_current_item:{message:"Take action on current item"},chromevox_force_click_on_current_item:{message:"Click on current item"},
-chromevox_read_link_url:{message:"Announce the URL behind a link"},chromevox_read_current_title:{message:"Announce the title of the current page"},chromevox_read_current_url:{message:"Announce the URL of the current page"},chromevox_read_from_here:{message:"Start reading from current location"},chromevox_show_power_key:{message:"Open ChromeVox keyboard help"},chromevox_hide_power_key:{message:"Hide ChromeVox help"},chromevox_power_key_help:{message:"Press up or down to review commands, press enter to activate"},
-chromevox_help:{message:"Open ChromeVox tutorial"},chromevox_toggle_search_widget:{message:"Toggle search widget"},chromevox_show_options_page:{message:"Open options page"},chromevox_show_kb_explorer_page:{message:"Open keyboard explorer"},chromevox_decrease_tts_rate:{message:"Decrease rate of speech"},chromevox_increase_tts_rate:{message:"Increase rate of speech"},chromevox_decrease_tts_pitch:{message:"Decrease pitch"},chromevox_increase_tts_pitch:{message:"Increase pitch"},chromevox_decrease_tts_volume:{message:"Decrease speech volume"},
-chromevox_increase_tts_volume:{message:"Increase speech volume"},chromevox_show_forms_list:{message:"Show forms list"},chromevox_show_headings_list:{message:"Show headings list"},chromevox_show_links_list:{message:"Show links list"},chromevox_show_tables_list:{message:"Show tables list"},chromevox_show_landmarks_list:{message:"Show landmarks list"},chromevox_previous_row:{message:"Previous table row"},chromevox_next_row:{message:"Next table row"},chromevox_previous_col:{message:"Previous table column"},
-chromevox_next_col:{message:"Next table column"},chromevox_announce_headers:{message:"Announce the headers of the current cell"},chromevox_speak_table_location:{message:"Announce current cell coordinates"},chromevox_guess_row_header:{message:"Make a guess at the row header of the current cell"},chromevox_guess_col_header:{message:"Make a guess at the column header of the current cell"},chromevox_skip_to_beginning:{message:"Go to beginning of table"},chromevox_skip_to_end:{message:"Go to end of table"},
-chromevox_skip_to_row_beginning:{message:"Go to beginning of the current row"},chromevox_skip_to_row_end:{message:"Go to end of the current row"},chromevox_skip_to_col_beginning:{message:"Go to beginning of the current column"},chromevox_skip_to_col_end:{message:"Go to end of the current column"},chromevox_next_heading1:{message:"Next level 1 heading"},chromevox_previous_heading1:{message:"Previous level 1 heading"},chromevox_next_heading2:{message:"Next level 2 heading"},chromevox_previous_heading2:{message:"Previous level 2 heading"},
-chromevox_next_heading3:{message:"Next level 3 heading"},chromevox_previous_heading3:{message:"Previous level 3 heading"},chromevox_next_heading4:{message:"Next level 4 heading"},chromevox_previous_heading4:{message:"Previous level 4 heading"},chromevox_next_heading5:{message:"Next level 5 heading"},chromevox_previous_heading5:{message:"Previous level 5 heading"},chromevox_next_heading6:{message:"Next level 6 heading"},chromevox_previous_heading6:{message:"Previous level 6 heading"},chromevox_next_combo_box:{message:"Next combo box"},
-chromevox_previous_combo_box:{message:"Previous combo box"},chromevox_next_edit_text:{message:"Next editable text area"},chromevox_previous_edit_text:{message:"Previous editable text area"},chromevox_next_form_field:{message:"Next form field"},chromevox_previous_form_field:{message:"Previous form field"},chromevox_next_graphic:{message:"Next graphic"},chromevox_previous_graphic:{message:"Previous graphic"},chromevox_next_heading:{message:"Next heading"},chromevox_previous_heading:{message:"Previous heading"},
-chromevox_next_list_item:{message:"Next list item"},chromevox_previous_list_item:{message:"Previous list item"},chromevox_next_jump:{message:"Next jump"},chromevox_previous_jump:{message:"Previous jump"},chromevox_next_link:{message:"Next link"},chromevox_previous_link:{message:"Previous link"},chromevox_next_list:{message:"Next list"},chromevox_previous_list:{message:"Previous list"},chromevox_next_math:{message:"Next math"},chromevox_previous_math:{message:"Previous math"},chromevox_next_media:{message:"Next media"},
-chromevox_previous_media:{message:"Previous media"},chromevox_next_blockquote:{message:"Next block quote"},chromevox_previous_blockquote:{message:"Previous block quote"},chromevox_next_radio:{message:"Next radio button"},chromevox_previous_radio:{message:"Previous radio button"},chromevox_next_slider:{message:"Next slider"},chromevox_previous_slider:{message:"Previous slider"},chromevox_next_table:{message:"Next table"},chromevox_next_visited_link:{message:"Next visited link"},chromevox_previous_table:{message:"Previous table"},
-chromevox_previous_visited_link:{message:"Previous visited link"},chromevox_next_button:{message:"Next button"},chromevox_previous_button:{message:"Previous button"},chromevox_next_checkbox:{message:"Next checkbox"},chromevox_previous_checkbox:{message:"Previous checkbox"},chromevox_next_landmark:{message:"Next landmark"},chromevox_previous_landmark:{message:"Previous landmark"},chromevox_benchmark:{message:"Debug benchmark"},chromevox_announce_position:{message:"Announces a brief description of the current position"},
-chromevox_fully_describe:{message:"Announces a complete description of the current position"},chromevox_options_page_title:{message:"ChromeVox Options"},chromevox_options_page_summary:{message:"Use the options below to customize ChromeVox. Changes take effect immediately."},chromevox_options_mouse_focus_follows:{message:"Use the mouse to change focus."},chromevox_options_site_specific_enhancements:{message:"Enhance specific sites (like Google Search)."},chromevox_options_verbosity_verbose:{message:"Enable verbose descriptions."},
-chromevox_options_cursor_between_characters:{message:"Place cursor between characters when editing text (like Mac OS X)."},chromevox_options_magnifier_show_checkbox:{message:"Show a magnified view of the page content."},chromevox_options_voices:{message:"Voices"},chromevox_options_voices_description:{message:"Change the current voice by selecting an option from the list below."},chromevox_options_braille:{message:"Braille"},chromevox_options_braille_table_type_6:{message:"Switch to 8 dot braille"},
-chromevox_options_braille_table_type_8:{message:"Switch to 6 dot braille"},chromevox_options_braille_description_6:{message:"Change the current 6 dot braille table by selecting an option from the list below."},chromevox_options_braille_locale_grade:{message:"$1, Grade $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_options_braille_description_8:{message:"Change the current 8 dot braille table by selecting an option from the list below."},chromevox_options_keyboard_shortcuts:{message:"Keyboard shortcuts"},
-chromevox_options_keymap_description:{message:"Change the current keymap by selecting an option from the list below."},chromevox_options_select_keys:{message:"Reset current keymap"},chromevox_options_shortcuts_description:{message:"Customize keyboard shortcuts for frequently used commands by typing them into the corresponding fields below."},chromevox_options_modifier_keys:{message:"Modifier keys"},chromevox_options_cvox_modifier_key:{message:"ChromeVox modifier key"},chromevox_kbexplorer_title:{message:"ChromeOS Keyboard Explorer"},
-chromevox_kbexplorer_instructions:{message:"Press any key to learn its name. Ctrl+W will close the keyboard explorer."},chromevox_chrome_system_need_restart:{message:"System was updated. Restart is recommended."},chromevox_chrome_brightness_changed:{message:"Brightness $1 percent",placeholders:{1:{content:"$1"}}},chromevox_chrome_tab_created:{message:"tab created"},chromevox_chrome_tab_selected:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_normal_window_selected:{message:"window $1 tab",
-placeholders:{1:{content:"$1"}}},chromevox_chrome_incognito_window_selected:{message:"incognito window $1 tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_menu_opened:{message:"$1 menu opened",placeholders:{1:{content:"$1"}}},chromevox_describe_checkbox_checked:{message:"$1 checkbox checked",placeholders:{1:{content:"$1"}}},chromevox_checkbox_checked_state:{message:"checked"},chromevox_checkbox_checked_state_brl:{message:"x"},chromevox_describe_checkbox_unchecked:{message:"$1, checkbox not checked",
-placeholders:{1:{content:"$1"}}},chromevox_checkbox_unchecked_state:{message:"not checked"},chromevox_checkbox_unchecked_state_brl:{message:" "},chromevox_describe_radio_selected:{message:"$1, radio button selected",placeholders:{1:{content:"$1"}}},chromevox_radio_selected_state:{message:"selected"},chromevox_radio_selected_state_brl:{message:"x"},chromevox_describe_radio_unselected:{message:"$1, radio button unselected",placeholders:{1:{content:"$1"}}},chromevox_radio_unselected_state:{message:"unselected"},
-chromevox_radio_unselected_state_brl:{message:" "},chromevox_describe_menu:{message:"$1, menu",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item:{message:"$1, menu item",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item_with_submenu:{message:"$1, menu item, with submenu",placeholders:{1:{content:"$1"}}},chromevox_describe_window:{message:"$1, window",placeholders:{1:{content:"$1"}}},chromevox_describe_textbox:{message:"$1, $2, text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},
-chromevox_describe_unnamed_textbox:{message:"$1, text box",placeholders:{1:{content:"$1"}}},chromevox_describe_password:{message:"$1, $2, password text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_password:{message:"$1, password text box",placeholders:{1:{content:"$1"}}},chromevox_describe_button:{message:"$1, button",placeholders:{1:{content:"$1"}}},chromevox_describe_combobox:{message:"$1, $2, combo box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_combobox:{message:"$1, combo box",
-placeholders:{1:{content:"$1"}}},chromevox_describe_listbox:{message:"$1, $2, list box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_listbox:{message:"$1, list box",placeholders:{1:{content:"$1"}}},chromevox_describe_link:{message:"$1, link",placeholders:{1:{content:"$1"}}},chromevox_describe_tab:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_describe_slider:{message:"$1, $2, slider",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_selected:{message:", selected"},
-chromevox_describe_unselected:{message:", unselected"},chromevox_describe_index:{message:" $1 of $2 ",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_announce_rate:{message:"Rate $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_pitch:{message:"Pitch $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_volume:{message:"Volume $1 percent",placeholders:{1:{content:"$1"}}},chromevox_exiting_dialog:{message:"Exited dialog."},chromevox_exited_container:{message:"Exited $1.",
-placeholders:{1:{content:"$1"}}},chromevox_entering_dialog:{message:"Entered dialog"},chromevox_live_regions_removed:{message:"removed:"},chromevox_sticky_mode_enabled:{message:"Sticky mode enabled"},chromevox_sticky_mode_disabled:{message:"Sticky mode disabled"},chromevox_keyboard_help_intro:{message:"Keyboard Help"},chromevox_context_menu_intro:{message:"Context Menu"},chromevox_choice_widget_name:{message:"$1 list.",placeholders:{1:{content:"$1"}}},chromevox_choice_widget_help:{message:"Use up and down arrow keys to browse, or type to search."},
-chromevox_choice_widget_exited:{message:"Exited"},chromevox_choice_widget_type_generic:{message:" "},chromevox_end_of_cell:{message:"End of cell."},chromevox_no_url_found:{message:"No URL found"},chromevox_leaving_table:{message:"Leaving table."},chromevox_leaving_grid:{message:"Leaving grid."},chromevox_inside_table:{message:"Inside table"},chromevox_no_tables:{message:"No table found."},chromevox_not_inside_table:{message:"Not inside table."},chromevox_no_cell_below:{message:"No cell below."},chromevox_no_cell_above:{message:"No cell above."},
-chromevox_no_cell_right:{message:"No cell right."},chromevox_no_cell_left:{message:"No cell left."},chromevox_empty_cell:{message:"Empty cell."},chromevox_spanned:{message:"Spanned."},chromevox_row_header:{message:"Row header:"},chromevox_empty_row_header:{message:"Empty row header"},chromevox_column_header:{message:"Column header:"},chromevox_empty_column_header:{message:"Empty column header"},chromevox_no_headers:{message:"No headers"},chromevox_empty_headers:{message:"Empty headers"},chromevox_table_location:{message:"Row $1 of $2, Column $3 of $4",
-placeholders:{1:{content:"$1"},2:{content:"$2"},3:{content:"$3"},4:{content:"$4"}}},chromevox_no_next_checkbox:{message:"No next checkbox."},chromevox_no_previous_checkbox:{message:"No previous checkbox."},chromevox_no_next_edit_text:{message:"No next editable text field."},chromevox_no_previous_edit_text:{message:"No previous editable text field."},chromevox_no_next_heading:{message:"No next heading."},chromevox_no_previous_heading:{message:"No previous heading."},chromevox_no_next_heading_1:{message:"No next level 1 heading."},
-chromevox_no_previous_heading_1:{message:"No previous level 1 heading."},chromevox_no_next_heading_2:{message:"No next level 2 heading."},chromevox_no_previous_heading_2:{message:"No previous level 2 heading."},chromevox_no_next_heading_3:{message:"No next level 3 heading."},chromevox_no_previous_heading_3:{message:"No previous level 3 heading."},chromevox_no_next_heading_4:{message:"No next level 4 heading."},chromevox_no_previous_heading_4:{message:"No previous level 4 heading."},chromevox_no_next_heading_5:{message:"No next level 5 heading."},
-chromevox_no_previous_heading_5:{message:"No previous level 5 heading."},chromevox_no_next_heading_6:{message:"No next level 6 heading."},chromevox_no_previous_heading_6:{message:"No previous level 6 heading."},chromevox_no_next_not_link:{message:"No next item that isn't a link."},chromevox_no_previous_not_link:{message:"No previous item that isn't a link."},chromevox_no_next_anchor:{message:"No next anchor."},chromevox_no_previous_anchor:{message:"No previous anchor."},chromevox_no_next_link:{message:"No next link."},
-chromevox_no_previous_link:{message:"No previous link."},chromevox_no_next_table:{message:"No next table."},chromevox_no_previous_table:{message:"No previous table."},chromevox_no_next_visited_link:{message:"No next visited link."},chromevox_no_previous_visited_link:{message:"No previous visited link."},chromevox_no_next_math:{message:"No next math expression."},chromevox_no_previous_math:{message:"No previous math expression."},chromevox_no_next_media_widget:{message:"No next media widget."},chromevox_no_previous_media_widget:{message:"No previous media widget."},
-chromevox_no_next_list:{message:"No next list."},chromevox_no_previous_list:{message:"No previous list."},chromevox_no_next_list_item:{message:"No next list item."},chromevox_no_previous_list_item:{message:"No previous list item."},chromevox_no_next_blockquote:{message:"No next blockquote."},chromevox_no_previous_blockquote:{message:"No previous blockquote."},chromevox_no_next_form_field:{message:"No next form field."},chromevox_no_previous_form_field:{message:"No previous form field."},chromevox_no_next_jump:{message:"No next jump point."},
-chromevox_no_previous_jump:{message:"No previous jump point."},chromevox_no_next_landmark:{message:"No next ARIA landmark."},chromevox_no_previous_landmark:{message:"No previous ARIA landmark."},chromevox_no_next_combo_box:{message:"No next combo box."},chromevox_no_previous_combo_box:{message:"No previous combo box."},chromevox_no_next_button:{message:"No next button."},chromevox_no_previous_button:{message:"No previous button."},chromevox_no_next_graphic:{message:"No next graphic."},chromevox_no_previous_graphic:{message:"No previous graphic."},
-chromevox_no_next_slider:{message:"No next slider."},chromevox_no_previous_slider:{message:"No previous slider."},chromevox_no_next_radio_button:{message:"No next radio button."},chromevox_no_previous_radio_button:{message:"No previous radio button."},chromevox_no_next_section:{message:"No next section."},chromevox_no_previous_section:{message:"No previous section."},chromevox_no_next_control:{message:"No next control."},chromevox_no_previous_control:{message:"No previous control."},chromevox_element_clicked:{message:"Clicked"},
-chromevox_element_double_clicked:{message:"double clicked"},chromevox_powerkey_no_headings:{message:"No headings."},chromevox_powerkey_no_links:{message:"No links."},chromevox_powerkey_no_forms:{message:"No forms."},chromevox_powerkey_no_tables:{message:"No tables."},chromevox_powerkey_no_landmarks:{message:"No ARIA landmarks."},chromevox_powerkey_no_jumps:{message:"No jumps."},chromevox_list_position:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_list_position_brl:{message:"$1/$2",
-placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_aria_has_submenu:{message:"has submenu"},chromevox_aria_has_submenu_brl:{message:"+submnu"},chromevox_aria_has_popup:{message:"has pop up"},chromevox_aria_has_popup_brl:{message:"+popup"},chromevox_aria_value_min:{message:"Min $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_min_brl:{message:"min:$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max:{message:"Max $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max_brl:{message:"max:$1",
-placeholders:{1:{content:"$1"}}},chromevox_aria_value_now:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_now_brl:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_role_alert:{message:"Alert"},chromevox_aria_role_alert_brl:{message:"alrt"},chromevox_aria_role_alertdialog:{message:"Alert dialog"},chromevox_aria_role_alertdialog_brl:{message:"alrt dlg"},chromevox_aria_role_button:{message:"Button"},chromevox_aria_role_button_brl:{message:"btn"},chromevox_aria_role_checkbox:{message:"Check box"},
-chromevox_aria_role_checkbox_brl:{message:"chx"},chromevox_aria_role_combobox:{message:"Combo box"},chromevox_aria_role_combobox_brl:{message:"cbx"},chromevox_aria_role_dialog:{message:"Dialog"},chromevox_aria_role_dialog_brl:{message:"dlg"},chromevox_aria_role_grid:{message:"Grid"},chromevox_aria_role_grid_brl:{message:"grd"},chromevox_aria_role_gridcell:{message:"Cell"},chromevox_aria_role_gridcell_brl:{message:"cl"},chromevox_aria_role_gridcell_pos:{message:"row $1 column $2",placeholders:{1:{content:"$1"},
-2:{content:"$2"}}},chromevox_aria_role_link:{message:"Link"},chromevox_aria_role_link_brl:{message:"lnk"},chromevox_aria_role_link_singular:{message:"1 link"},chromevox_aria_role_link_plural:{message:"$1 links",placeholders:{1:{content:"$1"}}},chromevox_aria_role_listbox:{message:"List box"},chromevox_aria_role_listbox_brl:{message:"lstbx"},chromevox_aria_role_log:{message:"Log"},chromevox_aria_role_log_brl:{message:"log"},chromevox_aria_role_marquee:{message:"Marquee"},chromevox_aria_role_marquee_brl:{message:"maqe"},
-chromevox_aria_role_menu:{message:"Menu"},chromevox_aria_role_menu_brl:{message:"mnu"},chromevox_aria_role_menubar:{message:"Menu bar"},chromevox_aria_role_menubar_brl:{message:"mnu br"},chromevox_aria_role_menuitem:{message:"Menu item"},chromevox_aria_role_menuitem_brl:{message:"mnu itm"},chromevox_aria_role_menuitemcheckbox:{message:"Menu item check box"},chromevox_aria_role_menuitemcheckbox_brl:{message:"mnu itm chx"},chromevox_aria_role_menuitemradio:{message:"Menu item radio button"},chromevox_aria_role_menuitemradio_brl:{message:"mnu itm rd"},
-chromevox_aria_role_option:{message:" "},chromevox_aria_role_option_brl:{message:" "},chromevox_aria_role_popup_button:{message:"Pop-up button"},chromevox_aria_role_popup_button_brl:{message:"pup btn"},chromevox_aria_role_progressbar:{message:"Progress bar"},chromevox_aria_role_progressbar_brl:{message:"prog br"},chromevox_aria_role_radio:{message:"Radio button"},chromevox_aria_role_radio_brl:{message:"rd"},chromevox_aria_role_radiogroup:{message:"Radio button group"},chromevox_aria_role_radiogroup_brl:{message:"rd grp"},
-chromevox_aria_role_scrollbar:{message:"Scroll bar"},chromevox_aria_role_scrollbar_brl:{message:"scr br"},chromevox_aria_role_slider:{message:"Slider"},chromevox_aria_role_slider_brl:{message:"slr"},chromevox_aria_role_spinbutton:{message:"Spin button"},chromevox_aria_role_spinbutton_brl:{message:"spn btn"},chromevox_aria_role_status:{message:"Status"},chromevox_aria_role_status_brl:{message:"sts"},chromevox_aria_role_tab:{message:"Tab"},chromevox_aria_role_tab_brl:{message:"tab"},chromevox_aria_role_tabpanel:{message:"Tab panel"},
-chromevox_aria_role_tabpanel_brl:{message:"tab pnl"},chromevox_aria_role_textbox:{message:"Text box"},chromevox_aria_role_textbox_brl:{message:"txtbx"},chromevox_aria_role_timer:{message:"Timer"},chromevox_aria_role_timer_brl:{message:"tmr"},chromevox_aria_role_toolbar:{message:"Tool bar"},chromevox_aria_role_toolbar_brl:{message:"tl br"},chromevox_aria_role_tooltip:{message:"Tool tip"},chromevox_aria_role_tooltip_brl:{message:"tl tp"},chromevox_aria_role_treeitem:{message:"Tree item"},chromevox_aria_role_treeitem_brl:{message:"tr itm"},
-chromevox_aria_role_article:{message:"Article"},chromevox_aria_role_article_brl:{message:"acl"},chromevox_aria_role_application:{message:"Application"},chromevox_aria_role_application_brl:{message:"app"},chromevox_aria_role_banner:{message:"Banner"},chromevox_aria_role_banner_brl:{message:"bnr"},chromevox_aria_role_columnheader:{message:"Column header"},chromevox_aria_role_columnheader_brl:{message:"clm hd"},chromevox_aria_role_complementary:{message:"Complementary"},chromevox_aria_role_complementary_brl:{message:"cmpy"},
-chromevox_aria_role_contentinfo:{message:"Content info"},chromevox_aria_role_contentinfo_brl:{message:"cnt in"},chromevox_aria_role_definition:{message:"Definition"},chromevox_aria_role_definition_brl:{message:"def"},chromevox_aria_role_directory:{message:"Directory"},chromevox_aria_role_directory_brl:{message:"dir"},chromevox_aria_role_document:{message:"Document"},chromevox_aria_role_document_brl:{message:"doc"},chromevox_aria_role_form:{message:"Form"},chromevox_aria_role_form_brl:{message:"frm"},
-chromevox_aria_role_form_singular:{message:"1 form"},chromevox_aria_role_form_plural:{message:"$1 forms",placeholders:{1:{content:"$1"}}},chromevox_aria_role_group:{message:"Group"},chromevox_aria_role_group_brl:{message:"grp"},chromevox_aria_role_heading:{message:"Heading"},chromevox_aria_role_heading_brl:{message:"hd"},chromevox_aria_role_img:{message:"Image"},chromevox_aria_role_img_brl:{message:"img"},chromevox_aria_role_list:{message:"List"},chromevox_aria_role_list_brl:{message:"lst"},chromevox_aria_role_listitem:{message:"List item"},
-chromevox_aria_role_listitem_brl:{message:"lstitm"},chromevox_aria_role_main:{message:"Main"},chromevox_aria_role_main_brl:{message:"main"},chromevox_aria_role_math:{message:"Math"},chromevox_aria_role_math_brl:{message:"math"},chromevox_aria_role_navigation:{message:"Navigation"},chromevox_aria_role_navigation_brl:{message:"nav"},chromevox_aria_role_note:{message:"Note"},chromevox_aria_role_note_brl:{message:"note"},chromevox_aria_role_region:{message:"Region"},chromevox_aria_role_region_brl:{message:"rgn"},
-chromevox_aria_role_rowheader:{message:"Row header"},chromevox_aria_role_rowheader_brl:{message:"rw hd"},chromevox_aria_role_search:{message:"Search"},chromevox_aria_role_search_brl:{message:"srch"},chromevox_aria_role_separator:{message:"Separator"},chromevox_aria_role_separator_brl:{message:"sprtr"},chromevox_aria_autocomplete_inline:{message:"Autocompletion inline"},chromevox_aria_autocomplete_inline_brl:{message:"autocomplete"},chromevox_aria_autocomplete_list:{message:"Autocompletion list"},
-chromevox_aria_autocomplete_list_brl:{message:"autocomplete lst"},chromevox_aria_autocomplete_both:{message:"Autocompletion inline and list"},chromevox_aria_autocomplete_both_brl:{message:"autocomplete lst"},chromevox_aria_checked_true:{message:"Checked"},chromevox_aria_checked_true_brl:{message:"x"},chromevox_aria_checked_false:{message:"Not checked"},chromevox_aria_checked_false_brl:{message:" "},chromevox_aria_checked_mixed:{message:"Partially checked"},chromevox_aria_checked_mixed_brl:{message:"/x"},
-chromevox_aria_disabled_true:{message:"Disabled"},chromevox_aria_disabled_true_brl:{message:"="},chromevox_aria_expanded_true:{message:"Expanded"},chromevox_aria_expanded_true_brl:{message:">"},chromevox_aria_expanded_false:{message:"Collapsed"},chromevox_aria_expanded_false_brl:{message:"<"},chromevox_aria_invalid_true:{message:"Invalid input"},chromevox_aria_invalid_true_brl:{message:"!"},chromevox_aria_invalid_grammar:{message:"Grammatical mistake detected"},chromevox_aria_invalid_grammar_brl:{message:"Grammatical mistake detected"},
-chromevox_aria_invalid_spelling:{message:"Spelling mistake detected"},chromevox_aria_invalid_spelling_brl:{message:"misspelled"},chromevox_aria_multiline_true:{message:"Multi line"},chromevox_aria_multiline_true_brl:{message:"mult ln"},chromevox_aria_multiselectable_true:{message:"Multi select"},chromevox_aria_multiselectable_true_brl:{message:"mult sel"},chromevox_aria_pressed_true:{message:"Pressed"},chromevox_aria_pressed_true_brl:{message:"x"},chromevox_aria_pressed_false:{message:"Not pressed"},
-chromevox_aria_pressed_false_brl:{message:" "},chromevox_aria_pressed_mixed:{message:"Partially pressed"},chromevox_aria_pressed_mixed_brl:{message:"/x"},chromevox_aria_readonly_true:{message:"Read only"},chromevox_aria_readonly_true_brl:{message:"rdonly"},chromevox_aria_required_true:{message:"Required"},chromevox_aria_required_true_brl:{message:"req"},chromevox_aria_selected_true:{message:"Selected"},chromevox_aria_selected_true_brl:{message:"x"},chromevox_aria_selected_false:{message:"Not selected"},
-chromevox_aria_selected_false_brl:{message:" "},chromevox_tag_link:{message:"Link"},chromevox_tag_link_brl:{message:"lnk"},chromevox_tag_button:{message:"Button"},chromevox_tag_button_brl:{message:"btn"},chromevox_tag_h1:{message:"Heading 1"},chromevox_tag_h1_brl:{message:"h1"},chromevox_tag_h2:{message:"Heading 2"},chromevox_tag_h2_brl:{message:"h2"},chromevox_tag_h3:{message:"Heading 3"},chromevox_tag_h3_brl:{message:"h3"},chromevox_tag_h4:{message:"Heading 4"},chromevox_tag_h4_brl:{message:"h4"},
-chromevox_tag_h5:{message:"Heading 5"},chromevox_tag_h5_brl:{message:"h5"},chromevox_tag_h6:{message:"Heading 6"},chromevox_tag_h6_brl:{message:"h6"},chromevox_tag_li:{message:"List item"},chromevox_tag_li_brl:{message:"lstitm"},chromevox_tag_ol:{message:"Ordered List"},chromevox_tag_ol_brl:{message:"lst"},chromevox_tag_select:{message:"Combo box"},chromevox_tag_select_brl:{message:"cbx"},chromevox_tag_textarea:{message:"Text area"},chromevox_tag_textarea_brl:{message:"txta"},chromevox_tag_table:{message:"table"},
-chromevox_tag_table_brl:{message:"tbl"},chromevox_tag_ul:{message:"List"},chromevox_tag_ul_brl:{message:"lst"},chromevox_tag_section:{message:"Section"},chromevox_tag_section_brl:{message:"stn"},chromevox_tag_nav:{message:"Navigation"},chromevox_tag_nav_brl:{message:"nav"},chromevox_tag_article:{message:"Article"},chromevox_tag_article_brl:{message:"article"},chromevox_tag_aside:{message:"Aside"},chromevox_tag_aside_brl:{message:"aside"},chromevox_tag_hgroup:{message:"Heading group"},chromevox_tag_hgroup_brl:{message:"hgrp"},
-chromevox_tag_header:{message:"Header"},chromevox_tag_header_brl:{message:"hdr"},chromevox_tag_footer:{message:"Footer"},chromevox_tag_footer_brl:{message:"ftr"},chromevox_tag_time:{message:"Time"},chromevox_tag_time_brl:{message:" "},chromevox_tag_mark:{message:"Mark"},chromevox_tag_mark_brl:{message:"mark"},chromevox_tag_video:{message:"Video"},chromevox_tag_video_brl:{message:"video"},chromevox_tag_audio:{message:"Audio"},chromevox_tag_audio_brl:{message:"audio"},chromevox_input_type_button:{message:"Button"},
-chromevox_input_type_button_brl:{message:"btn"},chromevox_input_type_checkbox:{message:"Check box"},chromevox_input_type_checkbox_brl:{message:"chx"},chromevox_input_type_color:{message:"Color picker"},chromevox_input_type_color_brl:{message:"color picker"},chromevox_input_type_datetime:{message:"Date time control"},chromevox_input_type_datetime_brl:{message:"date time"},chromevox_input_type_datetime_local:{message:"Date time control"},chromevox_input_type_datetime_local_brl:{message:"date time"},
-chromevox_input_type_date:{message:"Date control"},chromevox_input_type_date_brl:{message:"date"},chromevox_input_type_email:{message:"Edit text, email entry"},chromevox_input_type_email_brl:{message:"edtxt email"},chromevox_input_type_file:{message:"File selection"},chromevox_input_type_file_brl:{message:"file"},chromevox_input_type_image:{message:"Button"},chromevox_input_type_image_brl:{message:"btn"},chromevox_input_type_month:{message:"Month control"},chromevox_input_type_month_brl:{message:"month"},
-chromevox_input_type_number:{message:"Edit text numeric only"},chromevox_input_type_number_brl:{message:"edtxt#"},chromevox_input_type_password:{message:"Password edit text"},chromevox_input_type_password_brl:{message:"pwd edtxt"},chromevox_input_type_radio:{message:"Radio button"},chromevox_input_type_radio_brl:{message:"rd btn"},chromevox_input_type_range:{message:"Slider"},chromevox_input_type_range_brl:{message:"slr"},chromevox_input_type_reset:{message:"Reset"},chromevox_input_type_reset_brl:{message:"reset"},
-chromevox_input_type_search:{message:"Edit text, search entry"},chromevox_input_type_search_brl:{message:"search edtxt"},chromevox_input_type_submit:{message:"Button"},chromevox_input_type_submit_brl:{message:"btn"},chromevox_input_type_tel:{message:"Edit text, number entry"},chromevox_input_type_tel_brl:{message:"tele# edtxt"},chromevox_input_type_text:{message:"Edit text"},chromevox_input_type_text_brl:{message:"edtxt"},chromevox_input_type_url:{message:"Edit text, URL entry"},chromevox_input_type_url_brl:{message:"url edtxt"},
-chromevox_input_type_week:{message:"Week of the year control"},chromevox_input_type_week_brl:{message:"week"},chromevox_internal_link:{message:"Internal link"},chromevox_internal_link_brl:{message:"int lnk"},chromevox_text_box_blank:{message:"Blank"},chromevox_list_with_items:{message:"with $1 items",placeholders:{1:{content:"$1"}}},chromevox_list_with_items_brl:{message:"+$1",placeholders:{1:{content:"$1"}}},chromevox_state_percent:{message:"$1%",placeholders:{1:{content:"$1"}}},chromevox_state_percent_brl:{message:"$1%",
-placeholders:{1:{content:"$1"}}},chromevox_has_submenu:{message:"with submenu"},chromevox_has_submenu_brl:{message:"+submnu"},chromevox_has_popup:{message:"has popup"},chromevox_has_popup_brl:{message:"has popup"},chromevox_collection:{message:"$1 collection with $2 items",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_key:{message:"Enter"},chromevox_space_key:{message:"Space"},chromevox_backspace_key:{message:"Backspace"},chromevox_tab_key:{message:"Tab"},chromevox_left_key:{message:"Left"},
-chromevox_up_key:{message:"Up"},chromevox_right_key:{message:"Right"},chromevox_down_key:{message:"Down"},chromevox_unknown_link:{message:"Unknown link"},chromevox_toggle_chromevox_active:{message:"Toggle ChromeVox active or inactive."},chromevox_chromevox_inactive:{message:"ChromeVox is now inactive."},chromevox_pause:{message:", "},chromevox_end:{message:". "},chromevox_previous_different_element:{message:"Previous different element."},chromevox_next_different_element:{message:"Next different element."},
-chromevox_previous_similar_element:{message:"Previous similar element."},chromevox_next_similar_element:{message:"Next similar element."},chromevox_no_more_similar_elements:{message:"No more similar elements."},chromevox_no_more_different_elements:{message:"No more different elements."},chromevox_index_total:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_css_space:{message:"Enter group exploration"},chromevox_enter_group_exploration:{message:"Exploring groups"},
-chromevox_pdf_header:{message:'This page contains the text automatically extracted from the PDF file <b>$1</b>. <a href="$2">Click here for the original.</a>',placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_object_strategy:{message:"Object"},chromevox_group_strategy:{message:"Group"},chromevox_table_strategy:{message:"Table"},chromevox_row_granularity:{message:"Row"},chromevox_column_granularity:{message:"Column"},chromevox_mathml_tree_granularity:{message:"Math ML Tree"},chromevox_mathml_layout_granularity:{message:"Math ML Layout"},
-chromevox_mathml_token_granularity:{message:"Math ML Token"},chromevox_mathml_leaf_granularity:{message:"Math ML Leaf"},chromevox_visual_strategy:{message:"Visual"},chromevox_custom_strategy:{message:"Custom"},chromevox_line_granularity:{message:"Line"},chromevox_sentence_granularity:{message:"Sentence"},chromevox_word_granularity:{message:"Word"},chromevox_character_granularity:{message:"Character"},chromevox_search_widget_intro:{message:"Find in page."},chromevox_search_widget_intro_help:{message:"Enter a search query."},
-chromevox_search_widget_outro:{message:"Exited find in page."},chromevox_search_widget_no_results:{message:"No more results."},chromevox_modifier_keys:{message:"Modifier Keys"},chromevox_navigation:{message:"ChromeVox Navigation"},chromevox_information:{message:"Information"},chromevox_help_commands:{message:"Help Commands"},chromevox_controlling_speech:{message:"Controlling Speech"},chromevox_overview:{message:"Overview"},chromevox_tables:{message:"Tables"},chromevox_jump_commands:{message:"Jump Commands"},
-chromevox_braille:{message:"Braille"},chromevox_developer:{message:"Developer"},chromevox_keymap_classic:{message:"Classic keymap"},chromevox_keymap_flat:{message:"Flat keymap"},chromevox_keymap_experimental:{message:"Experimental keymap"},chromevox_enable_tts_log:{message:"Enable TTS logging"},chromevox_begin_selection:{message:"Start selection"},chromevox_end_selection:{message:"End selection"},chromevox_selection_is:{message:"Selection is "},chromevox_toggle_selection:{message:"Start or end selection."},
-chromevox_copy:{message:"copy."},chromevox_cut:{message:"cut."},chromevox_paste:{message:"paste."},chromevox_selected:{message:"selected"},chromevox_unselected:{message:"unselected"},chromevox_added_to_selection:{message:"added to selection"},chromevox_removed_from_selection:{message:"removed from selection"},chromevox_then:{message:"then"},chromevox_followed_by:{message:"followed by"},chromevox_modifier_key:{message:"ChromeVox modifier"},chromevox_key_conflict:{message:"$1 is already assigned to a command.",
-placeholders:{1:{content:"$1"}}},chromevox_math_expr:{message:"Math"},chromevox_math_expr_brl:{message:"Math"},chromevox_not_inside_math:{message:"Not inside math"},chromevox_timewidget_ampm:{message:"AM PM"},chromevox_timewidget_hours:{message:"hours"},chromevox_timewidget_minutes:{message:"minutes"},chromevox_timewidget_seconds:{message:"seconds"},chromevox_timewidget_milliseconds:{message:"milliseconds"},chromevox_timewidget_am:{message:"AM"},chromevox_timewidget_pm:{message:"PM"},chromevox_datewidget_week:{message:"week"},
-chromevox_datewidget_january:{message:"January"},chromevox_datewidget_february:{message:"February"},chromevox_datewidget_march:{message:"March"},chromevox_datewidget_april:{message:"April"},chromevox_datewidget_may:{message:"May"},chromevox_datewidget_june:{message:"June"},chromevox_datewidget_july:{message:"July"},chromevox_datewidget_august:{message:"August"},chromevox_datewidget_september:{message:"September"},chromevox_datewidget_october:{message:"October"},chromevox_datewidget_november:{message:"November"},
-chromevox_datewidget_december:{message:"December"},chromevox_no_punctuation:{message:"No punctuation"},chromevox_some_punctuation:{message:"Some punctuation"},chromevox_all_punctuation:{message:"All punctuation"},chromevox_search_help_item:{message:"Press enter to accept or escape to cancel, down for next and up for previous."},chromevox_clickable:{message:"clickable"},chromevox_clickable_brl:{message:"clickable"},chromevox_previous_character:{message:"Previous Character"},chromevox_next_character:{message:"Next Character"},
-chromevox_previous_word:{message:"Previous Word"},chromevox_next_word:{message:"Next Word"},chromevox_previous_sentence:{message:"Previous Sentence"},chromevox_next_sentence:{message:"Next Sentence"},chromevox_previous_line:{message:"Previous Line"},chromevox_next_line:{message:"Next Line"},chromevox_previous_object:{message:"Previous Object"},chromevox_next_object:{message:"Next Object"},chromevox_previous_group:{message:"Previous Group"},chromevox_next_group:{message:"Next Group"},chromevox_role_landmark:{message:"Landmark"},
-chromevox_modifier_entry_error:{message:"No modifier pressed; please press and hold one or more modifiers; lift your fingers once done and you will hear the keys set. Tab to exit."},chromevox_modifier_entry_set:{message:"$1 is now the new ChromeVox modifier.",placeholders:{1:{content:"$1"}}},chromevox_keymap_reset:{message:"$1 has been reset.",placeholders:{1:{content:"$1"}}},chromevox_keymap_switch:{message:"Switched to $1.",placeholders:{1:{content:"$1"}}},chromevox_jump_to_top:{message:"Jump to the top of the page"},
-chromevox_jump_to_bottom:{message:"Jump to the bottom of the page"},chromevox_wrapped_to_top:{message:"Wrapped to top"},chromevox_wrapped_to_bottom:{message:"Wrapped to bottom"},chromevox_cycle_punctuation_echo:{message:"Cycle punctuation echo"},chromevox_cycle_typing_echo:{message:"Cycle typing echo"},chromevox_pause_all_media:{message:"Pauses all currently playing media widgets"},chromevox_open_long_desc:{message:"Open long description in a new tab"},chromevox_no_long_desc:{message:"No long description"},
-chromevox_image_with_long_desc:{message:"Image with long description"},chromevox_selected_options_value:{message:"$1 to $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_value_brl:{message:"$1-$2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_state:{message:"selected $1 items",placeholders:{1:{content:"$1"}}},chromevox_selected_options_state_brl:{message:"sld $1",placeholders:{1:{content:"$1"}}},chromevox_clear_page_selection:{message:"cleared selection"},
-chromevox_character_echo:{message:"character echo"},chromevox_word_echo:{message:"word echo"},chromevox_character_and_word_echo:{message:"character and word echo"},chromevox_none_echo:{message:"no typing echo"},chromevox_enter_content:{message:"enter structured content, such as tables"},chromevox_exit_content:{message:"exit structured content, such as tables"},chromevox_enter_content_say:{message:"entered $1",placeholders:{1:{content:"$1"}}},chromevox_structural_line:{message:"structural line"},chromevox_layout_line:{message:"line"},
-chromevox_toggle_line_type:{message:"Toggle line type between structural or layout"},chromevox_table_shifter:{message:"table"},chromevox_navigation_shifter:{message:"default navigation"},chromevox_math_shifter:{message:"math"},chromevox_toggle_semantics:{message:"Toggle interpretation of math expressions between structural and semantic"},chromevox_semantics_on:{message:"Semantics on"},chromevox_semantics_off:{message:"Semantics off"},chromevox_phonetic_map:{message:'{"a": "alpha", "b": "bravo", "c": "charlie", "d": "delta", "e": "echo", "f": "foxtrot", "g": "golf", "h": "hotel", "i": "india", "j": "juliet","k": "kilo", "l": "lima", "m": "mike", "n": "november", "o": "oscar","p": "papa", "q": "quebec", "r": "romeo", "s": "sierra", "t": "tango", "u": "uniform", "v": "victor", "w": "whiskey","x": "xray", "y": "yankee", "z": "zulu"}'},
-chromevox_page_has_one_alert_singular:{message:"This page has 1 alert"},chromevox_page_has_alerts_plural:{message:"This page has $1 alerts",placeholders:{1:{content:"$1"}}},chromevox_review_alerts:{message:"Press Alt+Shift+A to review alerts"},chromevox_no_next_article:{message:"No next article."},chromevox_no_previous_article:{message:"No previous article."},chromevox_chromevox_intro:{message:"ChromeVox spoken feedback is ready"},chromevox_intro_brl:{message:"ChromeVox ready"},chromevox_earcons_on:{message:"Earcons on"},
-chromevox_earcons_off:{message:"Earcons off"},chromevox_toggle_earcons:{message:"Turn sound feedback (earcons) on or off."},chromevox_speak_time_and_date:{message:"Speak the current time and date."},chromevox_mark_as_search_result_brl:{message:"S:$1",placeholders:{1:{content:"$1"}}},chromevox_text_deleted:{message:"Deleted"},chromevox_perform_default_action:{message:"Perform default action"},chromevox_visited_url:{message:"visited"},chromevox_visited_url_brl:{message:"visited"},chromevox_exclamation:{message:"{COUNT, plural, =1 {exclamation point}other {# exclamation points}}"},
-chromevox_space:{message:"{COUNT, plural, =1 {space}other {# spaces}}"},chromevox_backtick:{message:"{COUNT, plural, =1 {backtick}other {# backticks}}"},chromevox_tilde:{message:"{COUNT, plural, =1 {TILDE}other {# tildes}}"},chromevox_at:{message:"{COUNT, plural, =1 {at}other {# at signs}}"},chromevox_pound:{message:"{COUNT, plural, =1 {pound}other {# pound signs}}"},chromevox_dollar:{message:"{COUNT, plural, =1 {dollar}other {# dollar signs}}"},chromevox_percent:{message:"{COUNT, plural, =1 {percent}other {# percent signs}}"},
-chromevox_caret:{message:"{COUNT, plural, =1 {caret}other {# carets}}"},chromevox_ampersand:{message:"{COUNT, plural, =1 {ampersand}other {# ampersands}}"},chromevox_asterisk:{message:"{COUNT, plural, =1 {asterisk}other {# asterisks}}"},chromevox_open_paren:{message:"{COUNT, plural, =1 {open paren}other {# open parens}}"},chromevox_close_paren:{message:"{COUNT, plural, =1 {close paren}other {# close parens}}"},chromevox_dash:{message:"{COUNT, plural, =1 {dash}other {# dashes}}"},chromevox_underscore:{message:"{COUNT, plural, =1 {underscore}other {# underscores}}"},
-chromevox_equals:{message:"{COUNT, plural, =1 {equal}other {# equal signs}}"},chromevox_plus:{message:"{COUNT, plural, =1 {plus}other {# plus signs}}"},chromevox_left_bracket:{message:"{COUNT, plural, =1 {left bracket}other {# left brackets}}"},chromevox_right_bracket:{message:"{COUNT, plural, =1 {right bracket}other {# right brackets}}"},chromevox_left_brace:{message:"{COUNT, plural, =1 {left brace}other {# left braces}}"},chromevox_right_brace:{message:"{COUNT, plural, =1 {right brace}other {# right braces}}"},
-chromevox_pipe:{message:"{COUNT, plural, =1 {pipe}other {# vertical pipes}}"},chromevox_semicolon:{message:"{COUNT, plural, =1 {semicolon}other {# semicolons}}"},chromevox_colon:{message:"{COUNT, plural, =1 {colon}other {# colons}}"},chromevox_comma:{message:"{COUNT, plural, =1 {comma}other {# commas}}"},chromevox_dot:{message:"{COUNT, plural, =1 {dot}=3 {ellipsis}other {# dots}}"},chromevox_less_than:{message:"{COUNT, plural, =1 {less than}other {# less than signs}}"},chromevox_greater_than:{message:"{COUNT, plural, =1 {greater than}other {# greater than signs}}"},
-chromevox_slash:{message:"{COUNT, plural, =1 {slash}other {# slashes}}"},chromevox_question_mark:{message:"{COUNT, plural, =1 {question mark}other {# question marks}}"},chromevox_quote:{message:"{COUNT, plural, =1 {quote}other {# quotes}}"},chromevox_apostrophe:{message:"{COUNT, plural, =1 {apostrophe}other {# apostrophes}}"},chromevox_tab:{message:"{COUNT, plural, =1 {tab}other {# tabs}}"},chromevox_backslash:{message:"{COUNT, plural, =1 {backslash}other {# backslashes}}"},chromevox_braille_routing:{message:"Click the item under a routing key"},
-chromevox_braille_pan_left:{message:"Pan backward"},chromevox_braille_pan_right:{message:"Pan bforward"},chromevox_braille_line_up:{message:"Braille previous Line"},chromevox_braille_line_down:{message:"Braille next Line"},chromevox_braille_top:{message:"Move braille display to top of page"},chromevox_braille_bottom:{message:"Move braille display to bottom of page"},chromevox_access_key:{message:"has access key, $1",placeholders:{1:{content:"$1"}}},chromevox_locale_dict:{message:'{"ar": "Arabic","bg": "Bulgarian","ca": "Catalan","hr": "Croatian","cs": "Czech","da": "Danish","nl": "Dutch","en_CA": "English (Canada)","en_GB": "English (United Kingdom)","en_US": "English (United States)","et": "Estonian","fr": "French","fr_CA": "French (Canada)","fr_FR": "French (France)","fi": "Finnish","de": "German","de_CH": "German (Switzerland)","de_DE": "German (Germany)","el": "Greek","hi": "Hindi","hu": "Hungarian","is": "Icelandic","it": "Italian","lv": "Latvian","lt": "Lithuanian","nb": "Norwegian Bokm\u00e5l","pl": "Polish","pt": "Portuguese","ro": "Romanian","ru": "Russian","sr": "Serbian","sk": "Slovak","sl": "Slovenian","es": "Spanish","sv": "Swedish","tr": "Turkish","vi": "Vietnamese","zh": "Chinese","zh_TW": "Chinese (Traditional Han)"}'}};cvox.TestMsgs=function(){};goog.inherits(cvox.TestMsgs,cvox.AbstractMsgs);cvox.TestMsgs.prototype.getMsg=function(a,b){if(!a){var c=Error();c.message="Message id required";throw c;}c=cvox.TestMessages["chromevox_"+a];if(void 0==c)throw c=Error(),c.message="missing-msg: "+a,c;var d=c.message;if(b)for(var e=0;e<b.length;e++){var f=c.placeholders[e+1];if(!f)throw c=Error(),c.message="Bad placeholder "+e+" for message id "+a,c;f=c.placeholders[e+1].content;d=d.replace(f,b[e])}return d};
-cvox.TestMsgs.prototype.getNumber=function(a){return""+a};cvox.HostFactory.msgsConstructor=cvox.TestMsgs;cvox.ChromeVox.initDocument();
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js
deleted file mode 100644
index 091a8297..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js
+++ /dev/null
@@ -1,48 +0,0 @@
-cordova.define("cordova-plugin-customurlscheme.LaunchMyApp", function(require, exports, module) { (function () {
- "use strict";
-
- var remainingAttempts = 10;
-
- function waitForAndCallHandlerFunction(url) {
- if (typeof window.handleOpenURL === "function") {
- // Clear the intent when we have a handler (note that this is only done when the preference 'CustomURLSchemePluginClearsAndroidIntent' is 'true' in config.xml
- cordova.exec(
- null,
- null,
- "LaunchMyApp",
- "clearIntent",
- []);
-
- window.handleOpenURL(url);
- } else if (remainingAttempts-- > 0) {
- setTimeout(function(){waitForAndCallHandlerFunction(url);}, 500);
- }
- }
-
- function triggerOpenURL() {
- cordova.exec(
- waitForAndCallHandlerFunction,
- null,
- "LaunchMyApp",
- "checkIntent",
- []);
- }
-
- document.addEventListener("deviceready", triggerOpenURL, false);
-
- var launchmyapp = {
- getLastIntent: function(success, failure) {
- cordova.exec(
- success,
- failure,
- "LaunchMyApp",
- "getLastIntent",
- []);
- }
- }
-
- module.exports = launchmyapp;
-
-}());
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js
deleted file mode 100644
index ff0c5b48..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js
+++ /dev/null
@@ -1,85 +0,0 @@
-cordova.define("cordova-plugin-device.device", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var argscheck = require('cordova/argscheck'),
- channel = require('cordova/channel'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- cordova = require('cordova');
-
-channel.createSticky('onCordovaInfoReady');
-// Tell cordova channel to wait on the CordovaInfoReady event
-channel.waitForInitialization('onCordovaInfoReady');
-
-/**
- * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
- * phone, etc.
- * @constructor
- */
-function Device() {
- this.available = false;
- this.platform = null;
- this.version = null;
- this.uuid = null;
- this.cordova = null;
- this.model = null;
- this.manufacturer = null;
- this.isVirtual = null;
- this.serial = null;
-
- var me = this;
-
- channel.onCordovaReady.subscribe(function() {
- me.getInfo(function(info) {
- //ignoring info.cordova returning from native, we should use value from cordova.version defined in cordova.js
- //TODO: CB-5105 native implementations should not return info.cordova
- var buildLabel = cordova.version;
- me.available = true;
- me.platform = info.platform;
- me.version = info.version;
- me.uuid = info.uuid;
- me.cordova = buildLabel;
- me.model = info.model;
- me.isVirtual = info.isVirtual;
- me.manufacturer = info.manufacturer || 'unknown';
- me.serial = info.serial || 'unknown';
- channel.onCordovaInfoReady.fire();
- },function(e) {
- me.available = false;
- utils.alert("[ERROR] Error initializing Cordova: " + e);
- });
- });
-}
-
-/**
- * Get device info
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- */
-Device.prototype.getInfo = function(successCallback, errorCallback) {
- argscheck.checkArgs('fF', 'Device.getInfo', arguments);
- exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
-};
-
-module.exports = new Device();
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/android/notification.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/android/notification.js
deleted file mode 100644
index 07b92378..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/android/notification.js
+++ /dev/null
@@ -1,76 +0,0 @@
-cordova.define("cordova-plugin-dialogs.notification_android", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-
-/**
- * Provides Android enhanced notification API.
- */
-module.exports = {
- activityStart : function(title, message) {
- // If title and message not specified then mimic Android behavior of
- // using default strings.
- if (typeof title === "undefined" && typeof message == "undefined") {
- title = "Busy";
- message = 'Please wait...';
- }
-
- exec(null, null, 'Notification', 'activityStart', [ title, message ]);
- },
-
- /**
- * Close an activity dialog
- */
- activityStop : function() {
- exec(null, null, 'Notification', 'activityStop', []);
- },
-
- /**
- * Display a progress dialog with progress bar that goes from 0 to 100.
- *
- * @param {String}
- * title Title of the progress dialog.
- * @param {String}
- * message Message to display in the dialog.
- */
- progressStart : function(title, message) {
- exec(null, null, 'Notification', 'progressStart', [ title, message ]);
- },
-
- /**
- * Close the progress dialog.
- */
- progressStop : function() {
- exec(null, null, 'Notification', 'progressStop', []);
- },
-
- /**
- * Set the progress dialog value.
- *
- * @param {Number}
- * value 0-100
- */
- progressValue : function(value) {
- exec(null, null, 'Notification', 'progressValue', [ value ]);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/notification.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/notification.js
deleted file mode 100644
index d08d34a6..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-dialogs/www/notification.js
+++ /dev/null
@@ -1,132 +0,0 @@
-cordova.define("cordova-plugin-dialogs.notification", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-var platform = require('cordova/platform');
-
-/**
- * Provides access to notifications on the device.
- */
-
-module.exports = {
-
- /**
- * Open a native alert dialog, with a customizable title and button text.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} completeCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Alert)
- * @param {String} buttonLabel Label of the close button (default: OK)
- */
- alert: function(message, completeCallback, title, buttonLabel) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Alert");
- var _buttonLabel = (buttonLabel || "OK");
- exec(completeCallback, null, "Notification", "alert", [_message, _title, _buttonLabel]);
- },
-
- /**
- * Open a native confirm dialog, with a customizable title and button text.
- * The result that the user selects is returned to the result callback.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} resultCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Confirm)
- * @param {Array} buttonLabels Array of the labels of the buttons (default: ['OK', 'Cancel'])
- */
- confirm: function(message, resultCallback, title, buttonLabels) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Confirm");
- var _buttonLabels = (buttonLabels || ["OK", "Cancel"]);
-
- // Strings are deprecated!
- if (typeof _buttonLabels === 'string') {
- console.log("Notification.confirm(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).");
- }
-
- _buttonLabels = convertButtonLabels(_buttonLabels);
-
- exec(resultCallback, null, "Notification", "confirm", [_message, _title, _buttonLabels]);
- },
-
- /**
- * Open a native prompt dialog, with a customizable title and button text.
- * The following results are returned to the result callback:
- * buttonIndex Index number of the button selected.
- * input1 The text entered in the prompt dialog box.
- *
- * @param {String} message Dialog message to display (default: "Prompt message")
- * @param {Function} resultCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the dialog (default: "Prompt")
- * @param {Array} buttonLabels Array of strings for the button labels (default: ["OK","Cancel"])
- * @param {String} defaultText Textbox input value (default: empty string)
- */
- prompt: function(message, resultCallback, title, buttonLabels, defaultText) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Prompt");
- var _buttonLabels = (buttonLabels || ["OK","Cancel"]);
-
- // Strings are deprecated!
- if (typeof _buttonLabels === 'string') {
- console.log("Notification.prompt(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).");
- }
-
- _buttonLabels = convertButtonLabels(_buttonLabels);
-
- var _defaultText = (defaultText || "");
- exec(resultCallback, null, "Notification", "prompt", [_message, _title, _buttonLabels, _defaultText]);
- },
-
- /**
- * Causes the device to beep.
- * On Android, the default notification ringtone is played "count" times.
- *
- * @param {Integer} count The number of beeps.
- */
- beep: function(count) {
- var defaultedCount = count || 1;
- exec(null, null, "Notification", "beep", [ defaultedCount ]);
- }
-};
-
-function convertButtonLabels(buttonLabels) {
-
- // Some platforms take an array of button label names.
- // Other platforms take a comma separated list.
- // For compatibility, we convert to the desired type based on the platform.
- if (platform.id == "amazon-fireos" || platform.id == "android" || platform.id == "ios" ||
- platform.id == "windowsphone" || platform.id == "firefoxos" || platform.id == "ubuntu" ||
- platform.id == "windows8" || platform.id == "windows") {
-
- if (typeof buttonLabels === 'string') {
- buttonLabels = buttonLabels.split(","); // not crazy about changing the var type here
- }
- } else {
- if (Array.isArray(buttonLabels)) {
- var buttonLabelArray = buttonLabels;
- buttonLabels = buttonLabelArray.toString();
- }
- }
-
- return buttonLabels;
-}
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/PositionError.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/PositionError.js
deleted file mode 100644
index 45439b70..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/PositionError.js
+++ /dev/null
@@ -1,40 +0,0 @@
-cordova.define("cordova-plugin-geolocation.PositionError", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Position error object
- *
- * @constructor
- * @param code
- * @param message
- */
-var PositionError = function(code, message) {
- this.code = code || null;
- this.message = message || '';
-};
-
-PositionError.prototype.PERMISSION_DENIED = PositionError.PERMISSION_DENIED = 1;
-PositionError.prototype.POSITION_UNAVAILABLE = PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.prototype.TIMEOUT = PositionError.TIMEOUT = 3;
-
-module.exports = PositionError;
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/android/geolocation.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/android/geolocation.js
deleted file mode 100644
index c90d3c2a..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-geolocation/www/android/geolocation.js
+++ /dev/null
@@ -1,73 +0,0 @@
-cordova.define("cordova-plugin-geolocation.geolocation", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = cordova.require('cordova/exec');
-var utils = require('cordova/utils');
-var PositionError = require('./PositionError');
-
-// Native watchPosition method is called async after permissions prompt.
-// So we use additional map and own ids to return watch id synchronously.
-var pluginToNativeWatchMap = {};
-
-module.exports = {
- getCurrentPosition: function(success, error, args) {
- var win = function() {
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- geo.getCurrentPosition(success, error, args);
- };
- var fail = function() {
- if (error) {
- error(new PositionError (PositionError.PERMISSION_DENIED, 'Illegal Access'));
- }
- };
- exec(win, fail, "Geolocation", "getPermission", []);
- },
-
- watchPosition: function(success, error, args) {
- var pluginWatchId = utils.createUUID();
-
- var win = function() {
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- pluginToNativeWatchMap[pluginWatchId] = geo.watchPosition(success, error, args);
- };
-
- var fail = function() {
- if (error) {
- error(new PositionError(PositionError.PERMISSION_DENIED, 'Illegal Access'));
- }
- };
- exec(win, fail, "Geolocation", "getPermission", []);
-
- return pluginWatchId;
- },
-
- clearWatch: function(pluginWatchId) {
- var win = function() {
- var nativeWatchId = pluginToNativeWatchMap[pluginWatchId];
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- geo.clearWatch(nativeWatchId);
- };
-
- exec(win, null, "Geolocation", "getPermission", []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js
deleted file mode 100644
index 20bcd65a..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js
+++ /dev/null
@@ -1,113 +0,0 @@
-cordova.define("cordova-plugin-inappbrowser.inappbrowser", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT 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() {
- // special patch to correctly work on Ripple emulator (CB-9760)
- if (window.parent && !!window.parent.ripple) { // https://gist.github.com/triceam/4658021
- module.exports = window.open.bind(window); // fallback to default window.open behaviour
- return;
- }
-
- var exec = require('cordova/exec');
- var channel = require('cordova/channel');
- var modulemapper = require('cordova/modulemapper');
- var urlutil = require('cordova/urlutil');
-
- function InAppBrowser() {
- this.channels = {
- 'loadstart': channel.create('loadstart'),
- 'loadstop' : channel.create('loadstop'),
- 'loaderror' : channel.create('loaderror'),
- 'exit' : channel.create('exit')
- };
- }
-
- InAppBrowser.prototype = {
- _eventHandler: function (event) {
- if (event && (event.type in this.channels)) {
- this.channels[event.type].fire(event);
- }
- },
- close: function (eventname) {
- exec(null, null, "InAppBrowser", "close", []);
- },
- show: function (eventname) {
- exec(null, null, "InAppBrowser", "show", []);
- },
- addEventListener: function (eventname,f) {
- if (eventname in this.channels) {
- this.channels[eventname].subscribe(f);
- }
- },
- removeEventListener: function(eventname, f) {
- if (eventname in this.channels) {
- this.channels[eventname].unsubscribe(f);
- }
- },
-
- executeScript: function(injectDetails, cb) {
- if (injectDetails.code) {
- exec(cb, null, "InAppBrowser", "injectScriptCode", [injectDetails.code, !!cb]);
- } else if (injectDetails.file) {
- exec(cb, null, "InAppBrowser", "injectScriptFile", [injectDetails.file, !!cb]);
- } else {
- throw new Error('executeScript requires exactly one of code or file to be specified');
- }
- },
-
- insertCSS: function(injectDetails, cb) {
- if (injectDetails.code) {
- exec(cb, null, "InAppBrowser", "injectStyleCode", [injectDetails.code, !!cb]);
- } else if (injectDetails.file) {
- exec(cb, null, "InAppBrowser", "injectStyleFile", [injectDetails.file, !!cb]);
- } else {
- throw new Error('insertCSS requires exactly one of code or file to be specified');
- }
- }
- };
-
- module.exports = function(strUrl, strWindowName, strWindowFeatures, callbacks) {
- // Don't catch calls that write to existing frames (e.g. named iframes).
- if (window.frames && window.frames[strWindowName]) {
- var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open');
- return origOpenFunc.apply(window, arguments);
- }
-
- strUrl = urlutil.makeAbsolute(strUrl);
- var iab = new InAppBrowser();
-
- callbacks = callbacks || {};
- for (var callbackName in callbacks) {
- iab.addEventListener(callbackName, callbacks[callbackName]);
- }
-
- var cb = function(eventname) {
- iab._eventHandler(eventname);
- };
-
- strWindowFeatures = strWindowFeatures || "";
-
- exec(cb, cb, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]);
- return iab;
- };
-})();
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/Connection.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/Connection.js
deleted file mode 100644
index 1450e953..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/Connection.js
+++ /dev/null
@@ -1,36 +0,0 @@
-cordova.define("cordova-plugin-network-information.Connection", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Network status
- */
-module.exports = {
- UNKNOWN: "unknown",
- ETHERNET: "ethernet",
- WIFI: "wifi",
- CELL_2G: "2g",
- CELL_3G: "3g",
- CELL_4G: "4g",
- CELL:"cellular",
- NONE: "none"
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/network.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/network.js
deleted file mode 100644
index bfac2e3f..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-network-information/www/network.js
+++ /dev/null
@@ -1,93 +0,0 @@
-cordova.define("cordova-plugin-network-information.network", function(require, exports, module) { /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec'),
- cordova = require('cordova'),
- channel = require('cordova/channel'),
- utils = require('cordova/utils');
-
-// Link the onLine property with the Cordova-supplied network info.
-// This works because we clobber the navigator object with our own
-// object in bootstrap.js.
-// Browser platform do not need to define this property, because
-// it is already supported by modern browsers
-if (cordova.platformId !== 'browser' && typeof navigator != 'undefined') {
- utils.defineGetter(navigator, 'onLine', function() {
- return this.connection.type != 'none';
- });
-}
-
-function NetworkConnection() {
- this.type = 'unknown';
-}
-
-/**
- * Get connection info
- *
- * @param {Function} successCallback The function to call when the Connection data is available
- * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
- */
-NetworkConnection.prototype.getInfo = function(successCallback, errorCallback) {
- exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []);
-};
-
-var me = new NetworkConnection();
-var timerId = null;
-var timeout = 500;
-
-channel.createSticky('onCordovaConnectionReady');
-channel.waitForInitialization('onCordovaConnectionReady');
-
-channel.onCordovaReady.subscribe(function() {
- me.getInfo(function(info) {
- me.type = info;
- if (info === "none") {
- // set a timer if still offline at the end of timer send the offline event
- timerId = setTimeout(function(){
- cordova.fireDocumentEvent("offline");
- timerId = null;
- }, timeout);
- } else {
- // If there is a current offline event pending clear it
- if (timerId !== null) {
- clearTimeout(timerId);
- timerId = null;
- }
- cordova.fireDocumentEvent("online");
- }
-
- // should only fire this once
- if (channel.onCordovaConnectionReady.state !== 2) {
- channel.onCordovaConnectionReady.fire();
- }
- },
- function (e) {
- // If we can't get the network info we should still tell Cordova
- // to fire the deviceready event.
- if (channel.onCordovaConnectionReady.state !== 2) {
- channel.onCordovaConnectionReady.fire();
- }
- console.log("Error initializing Network Connection: " + e);
- });
-});
-
-module.exports = me;
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js
deleted file mode 100644
index 5813054f..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js
+++ /dev/null
@@ -1,11 +0,0 @@
-cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) {
-module.exports = {
- hasReadPermission: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []);
- },
- requestReadPermission: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js
deleted file mode 100644
index ccc52e54..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js
+++ /dev/null
@@ -1,8 +0,0 @@
-cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
-module.exports = {
- getSimInfo: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
deleted file mode 100644
index 5beaa5fd..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
+++ /dev/null
@@ -1,36 +0,0 @@
-cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-
-var splashscreen = {
- show:function() {
- exec(null, null, "SplashScreen", "show", []);
- },
- hide:function() {
- exec(null, null, "SplashScreen", "hide", []);
- }
-};
-
-module.exports = splashscreen;
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-statusbar/www/statusbar.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-statusbar/www/statusbar.js
deleted file mode 100644
index 708186f9..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-statusbar/www/statusbar.js
+++ /dev/null
@@ -1,116 +0,0 @@
-cordova.define("cordova-plugin-statusbar.statusbar", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* global cordova */
-
-var exec = require('cordova/exec');
-
-var namedColors = {
- "black": "#000000",
- "darkGray": "#A9A9A9",
- "lightGray": "#D3D3D3",
- "white": "#FFFFFF",
- "gray": "#808080",
- "red": "#FF0000",
- "green": "#00FF00",
- "blue": "#0000FF",
- "cyan": "#00FFFF",
- "yellow": "#FFFF00",
- "magenta": "#FF00FF",
- "orange": "#FFA500",
- "purple": "#800080",
- "brown": "#A52A2A"
-};
-
-var StatusBar = {
-
- isVisible: true,
-
- overlaysWebView: function (doOverlay) {
- exec(null, null, "StatusBar", "overlaysWebView", [doOverlay]);
- },
-
- styleDefault: function () {
- // dark text ( to be used on a light background )
- exec(null, null, "StatusBar", "styleDefault", []);
- },
-
- styleLightContent: function () {
- // light text ( to be used on a dark background )
- exec(null, null, "StatusBar", "styleLightContent", []);
- },
-
- styleBlackTranslucent: function () {
- // #88000000 ? Apple says to use lightContent instead
- exec(null, null, "StatusBar", "styleBlackTranslucent", []);
- },
-
- styleBlackOpaque: function () {
- // #FF000000 ? Apple says to use lightContent instead
- exec(null, null, "StatusBar", "styleBlackOpaque", []);
- },
-
- backgroundColorByName: function (colorname) {
- return StatusBar.backgroundColorByHexString(namedColors[colorname]);
- },
-
- backgroundColorByHexString: function (hexString) {
- if (hexString.charAt(0) !== "#") {
- hexString = "#" + hexString;
- }
-
- if (hexString.length === 4) {
- var split = hexString.split("");
- hexString = "#" + split[1] + split[1] + split[2] + split[2] + split[3] + split[3];
- }
-
- exec(null, null, "StatusBar", "backgroundColorByHexString", [hexString]);
- },
-
- hide: function () {
- exec(null, null, "StatusBar", "hide", []);
- StatusBar.isVisible = false;
- },
-
- show: function () {
- exec(null, null, "StatusBar", "show", []);
- StatusBar.isVisible = true;
- }
-
-};
-
-// prime it. setTimeout so that proxy gets time to init
-window.setTimeout(function () {
- exec(function (res) {
- if (typeof res == 'object') {
- if (res.type == 'tap') {
- cordova.fireWindowEvent('statusTap');
- }
- } else {
- StatusBar.isVisible = res;
- }
- }, null, "StatusBar", "_ready", []);
-}, 0);
-
-module.exports = StatusBar;
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js
deleted file mode 100644
index dbfd4d63..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js
+++ /dev/null
@@ -1,123 +0,0 @@
-cordova.define("cordova-plugin-x-socialsharing.SocialSharing", function(require, exports, module) { function SocialSharing() {
-}
-
-// Override this method (after deviceready) to set the location where you want the iPad popup arrow to appear.
-// If not overridden with different values, the popup is not used. Example:
-//
-// window.plugins.socialsharing.iPadPopupCoordinates = function() {
-// return "100,100,200,300";
-// };
-SocialSharing.prototype.iPadPopupCoordinates = function () {
- // left,top,width,height
- return "-1,-1,-1,-1";
-};
-
-SocialSharing.prototype.setIPadPopupCoordinates = function (coords) {
- // left,top,width,height
- cordova.exec(function() {}, this._getErrorCallback(function() {}, "setIPadPopupCoordinates"), "SocialSharing", "setIPadPopupCoordinates", [coords]);
-};
-
-SocialSharing.prototype.available = function (callback) {
- cordova.exec(function (avail) {
- callback(avail ? true : false);
- }, null, "SocialSharing", "available", []);
-};
-
-// this is the recommended way to share as it is the most feature-rich with respect to what you pass in and get back
-SocialSharing.prototype.shareWithOptions = function (options, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareWithOptions"), "SocialSharing", "shareWithOptions", [options]);
-};
-
-SocialSharing.prototype.share = function (message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "share"), "SocialSharing", "share", [message, subject, this._asArray(fileOrFileArray), url]);
-};
-
-SocialSharing.prototype.shareViaTwitter = function (message, file /* multiple not allowed by twitter */, url, successCallback, errorCallback) {
- var fileArray = this._asArray(file);
- var ecb = this._getErrorCallback(errorCallback, "shareViaTwitter");
- if (fileArray.length > 1) {
- ecb("shareViaTwitter supports max one file");
- } else {
- cordova.exec(successCallback, ecb, "SocialSharing", "shareViaTwitter", [message, null, fileArray, url]);
- }
-};
-
-SocialSharing.prototype.shareViaFacebook = function (message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaFacebook"), "SocialSharing", "shareViaFacebook", [message, null, this._asArray(fileOrFileArray), url]);
-};
-
-SocialSharing.prototype.shareViaFacebookWithPasteMessageHint = function (message, fileOrFileArray, url, pasteMessageHint, successCallback, errorCallback) {
- pasteMessageHint = pasteMessageHint || "If you like you can paste a message from your clipboard";
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaFacebookWithPasteMessageHint"), "SocialSharing", "shareViaFacebookWithPasteMessageHint", [message, null, this._asArray(fileOrFileArray), url, pasteMessageHint]);
-};
-
-SocialSharing.prototype.shareViaWhatsApp = function (message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaWhatsApp"), "SocialSharing", "shareViaWhatsApp", [message, null, this._asArray(fileOrFileArray), url, null]);
-};
-
-SocialSharing.prototype.shareViaWhatsAppToReceiver = function (receiver, message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaWhatsAppToReceiver"), "SocialSharing", "shareViaWhatsApp", [message, null, this._asArray(fileOrFileArray), url, receiver]);
-};
-
-SocialSharing.prototype.shareViaSMS = function (options, phonenumbers, successCallback, errorCallback) {
- var opts = options;
- if (typeof options == "string") {
- opts = {"message":options}; // for backward compatibility as the options param used to be the message
- }
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaSMS"), "SocialSharing", "shareViaSMS", [opts, phonenumbers]);
-};
-
-SocialSharing.prototype.shareViaEmail = function (message, subject, toArray, ccArray, bccArray, fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaEmail"), "SocialSharing", "shareViaEmail", [message, subject, this._asArray(toArray), this._asArray(ccArray), this._asArray(bccArray), this._asArray(fileOrFileArray)]);
-};
-
-SocialSharing.prototype.canShareVia = function (via, message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "canShareVia"), "SocialSharing", "canShareVia", [message, subject, this._asArray(fileOrFileArray), url, via]);
-};
-
-SocialSharing.prototype.canShareViaEmail = function (successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "canShareViaEmail"), "SocialSharing", "canShareViaEmail", []);
-};
-
-SocialSharing.prototype.shareViaInstagram = function (message, fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaInstagram"), "SocialSharing", "shareViaInstagram", [message, null, this._asArray(fileOrFileArray), null]);
-};
-
-SocialSharing.prototype.shareVia = function (via, message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareVia"), "SocialSharing", "shareVia", [message, subject, this._asArray(fileOrFileArray), url, via]);
-};
-
-SocialSharing.prototype.saveToPhotoAlbum = function (fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "saveToPhotoAlbum"), "SocialSharing", "saveToPhotoAlbum", [this._asArray(fileOrFileArray)]);
-};
-
-SocialSharing.prototype._asArray = function (param) {
- if (param == null) {
- param = [];
- } else if (typeof param === 'string') {
- param = new Array(param);
- }
- return param;
-};
-
-SocialSharing.prototype._getErrorCallback = function (ecb, functionName) {
- if (typeof ecb === 'function') {
- return ecb;
- } else {
- return function (result) {
- console.log("The injected error callback of '" + functionName + "' received: " + JSON.stringify(result));
- }
- }
-};
-
-SocialSharing.install = function () {
- if (!window.plugins) {
- window.plugins = {};
- }
-
- window.plugins.socialsharing = new SocialSharing();
- return window.plugins.socialsharing;
-};
-
-cordova.addConstructor(SocialSharing.install);
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/ionic-plugin-keyboard/www/android/keyboard.js b/StoneIsland/platforms/android/assets/www/plugins/ionic-plugin-keyboard/www/android/keyboard.js
deleted file mode 100644
index cce2e5be..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/ionic-plugin-keyboard/www/android/keyboard.js
+++ /dev/null
@@ -1,62 +0,0 @@
-cordova.define("ionic-plugin-keyboard.keyboard", function(require, exports, module) {
-var argscheck = require('cordova/argscheck'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- channel = require('cordova/channel');
-
-
-var Keyboard = function() {
-};
-
-Keyboard.hideKeyboardAccessoryBar = function(hide) {
- exec(null, null, "Keyboard", "hideKeyboardAccessoryBar", [hide]);
-};
-
-Keyboard.close = function() {
- exec(null, null, "Keyboard", "close", []);
-};
-
-Keyboard.show = function() {
- exec(null, null, "Keyboard", "show", []);
-};
-
-Keyboard.disableScroll = function(disable) {
- exec(null, null, "Keyboard", "disableScroll", [disable]);
-};
-
-/*
-Keyboard.styleDark = function(dark) {
- exec(null, null, "Keyboard", "styleDark", [dark]);
-};
-*/
-
-Keyboard.isVisible = false;
-
-channel.onCordovaReady.subscribe(function() {
- exec(success, null, 'Keyboard', 'init', []);
-
- function success(msg) {
- var action = msg.charAt(0);
- if ( action === 'S' ) {
- var keyboardHeight = msg.substr(1);
- cordova.plugins.Keyboard.isVisible = true;
- cordova.fireWindowEvent('native.keyboardshow', { 'keyboardHeight': + keyboardHeight });
-
- //deprecated
- cordova.fireWindowEvent('native.showkeyboard', { 'keyboardHeight': + keyboardHeight });
- } else if ( action === 'H' ) {
- cordova.plugins.Keyboard.isVisible = false;
- cordova.fireWindowEvent('native.keyboardhide');
-
- //deprecated
- cordova.fireWindowEvent('native.hidekeyboard');
- }
- }
-});
-
-module.exports = Keyboard;
-
-
-
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js b/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js
deleted file mode 100644
index f5d0aaf7..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js
+++ /dev/null
@@ -1,53 +0,0 @@
-cordova.define("phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Mobile Accessibility Notification event constants
- */
-module.exports = {
- /* MobileAccessibility window events */
- SCREEN_READER_STATUS_CHANGED : "screenreaderstatuschanged",
- CLOSED_CAPTIONING_STATUS_CHANGED : "closedcaptioningstatuschanged",
- GUIDED_ACCESS_STATUS_CHANGED : "guidedaccessstatuschanged",
- INVERT_COLORS_STATUS_CHANGED : "invertcolorsstatuschanged",
- MONO_AUDIO_STATUS_CHANGED : "monoaudiostatuschanged",
- REDUCE_MOTION_STATUS_CHANGED : "reducemotionstatuschanged",
- TOUCH_EXPLORATION_STATUS_CHANGED : "touchexplorationstatechanged",
- BOLD_TEXT_STATUS_CHANGED : "boldtextstatuschanged",
- DARKER_SYSTEM_COLORS_STATUS_CHANGED : "darkersystemcolorsstatuschanged",
- GRAYSCALE_STATUS_CHANGED : "grayscalestatuschanged",
- REDUCE_TRANSPARENCY_STATUS_CHANGED : "reducetransparencystatuschanged",
- SPEAK_SCREEN_STATUS_CHANGED : "speakscreenstatuschanged",
- SPEAK_SELECTION_STATUS_CHANGED : "speakselectionstatuschanged",
- SWITCH_CONTROL_STATUS_CHANGED : "switchcontrolstatuschanged",
-
- /* iOS specific UIAccessibilityNotifications */
- SCREEN_CHANGED : 1000,
- LAYOUT_CHANGED : 1001,
- ANNOUNCEMENT : 1008,
- PAGE_SCROLLED : 1009,
-
- /* Windows specific high contrast event */
- HIGH_CONTRAST_CHANGED : "highcontrastchanged"
-};
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js b/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js
deleted file mode 100644
index 852b8d34..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js
+++ /dev/null
@@ -1,502 +0,0 @@
-cordova.define("phonegap-plugin-mobile-accessibility.mobile-accessibility", function(require, exports, module) {
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var argscheck = require('cordova/argscheck'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- device = require('cordova-plugin-device.device'),
- network = require('cordova-plugin-network-information.network'),
- connection = require('cordova-plugin-network-information.Connection'),
- MobileAccessibilityNotifications = require('phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications');
-
-var MobileAccessibility = function() {
- this._isBoldTextEnabled = false;
- this._isClosedCaptioningEnabled = false;
- this._isDarkerSystemColorsEnabled = false;
- this._isGrayscaleEnabled = false;
- this._isGuidedAccessEnabled = false;
- this._isInvertColorsEnabled = false;
- this._isMonoAudioEnabled = false;
- this._isReduceMotionEnabled = false;
- this._isReduceTransparencyEnabled = false;
- this._isScreenReaderRunning = false;
- this._isSpeakScreenEnabled = false;
- this._isSpeakSelectionEnabled = false;
- this._isSwitchControlRunning = false;
- this._isTouchExplorationEnabled = false;
- this._usePreferredTextZoom = false;
- this._isHighContrastEnabled = false;
- this._highContrastScheme = undefined;
-
- // Create new event handlers on the window (returns a channel instance)
- this.channels = {
- boldtextstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.BOLD_TEXT_STATUS_CHANGED),
- closedcaptioningstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.CLOSED_CAPTIONING_STATUS_CHANGED),
- darkersystemcolorsstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.DARKER_SYSTEM_COLORS_STATUS_CHANGED),
- grayscalestatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.GRAYSCALE_STATUS_CHANGED),
- guidedaccessstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.GUIDED_ACCESS_STATUS_CHANGED),
- invertcolorsstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.INVERT_COLORS_STATUS_CHANGED),
- monoaudiostatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.MONO_AUDIO_STATUS_CHANGED),
- reducemotionstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.REDUCE_MOTION_STATUS_CHANGED),
- reducetransparencystatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.REDUCE_TRANSPARENCY_STATUS_CHANGED),
- screenreaderstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SCREEN_READER_STATUS_CHANGED),
- speakscreenstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SPEAK_SCREEN_STATUS_CHANGED),
- speakselectionstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SPEAK_SELECTION_STATUS_CHANGED),
- switchcontrolstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SWITCH_CONTROL_STATUS_CHANGED),
- touchexplorationstatechanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.TOUCH_EXPLORATION_STATUS_CHANGED),
- highcontrastchanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.HIGH_CONTRAST_CHANGED)
- };
- for (var key in this.channels) {
- this.channels[key].onHasSubscribersChange = MobileAccessibility.onHasSubscribersChange;
- }
-};
-
-/**
- * @private
- * @ignore
- */
-function handlers() {
- return mobileAccessibility.channels.boldtextstatuschanged.numHandlers +
- mobileAccessibility.channels.closedcaptioningstatuschanged.numHandlers +
- mobileAccessibility.channels.darkersystemcolorsstatuschanged.numHandlers +
- mobileAccessibility.channels.grayscalestatuschanged.numHandlers +
- mobileAccessibility.channels.guidedaccessstatuschanged.numHandlers +
- mobileAccessibility.channels.invertcolorsstatuschanged.numHandlers +
- mobileAccessibility.channels.monoaudiostatuschanged.numHandlers +
- mobileAccessibility.channels.reducemotionstatuschanged.numHandlers +
- mobileAccessibility.channels.reducetransparencystatuschanged.numHandlers +
- mobileAccessibility.channels.screenreaderstatuschanged.numHandlers +
- mobileAccessibility.channels.speakscreenstatuschanged.numHandlers +
- mobileAccessibility.channels.speakselectionstatuschanged.numHandlers +
- mobileAccessibility.channels.switchcontrolstatuschanged.numHandlers +
- mobileAccessibility.channels.touchexplorationstatechanged.numHandlers +
- mobileAccessibility.channels.highcontrastchanged.numHandlers;
-};
-
-/**
- *
- * Event handlers for when callback methods get registered for mobileAccessibility.
- * Keep track of how many handlers we have so we can start and stop the native MobileAccessibility listener
- * appropriately.
- * @private
- * @ignore
- */
-MobileAccessibility.onHasSubscribersChange = function() {
- // If we just registered the first handler, make sure native listener is started.
- if (this.numHandlers === 1 && handlers() === 1) {
- exec(mobileAccessibility._status, mobileAccessibility._error, "MobileAccessibility", "start", []);
- } else if (handlers() === 0) {
- exec(null, null, "MobileAccessibility", "stop", []);
- }
-};
-
-/**
- * Asynchronous call to native MobileAccessibility determine if a screen reader is running.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isScreenReaderRunning = function(callback) {
- exec(function(bool) {
- mobileAccessibility.activateOrDeactivateChromeVox(bool);
- callback(Boolean(bool));
- }, null, "MobileAccessibility", "isScreenReaderRunning", []);
-};
-MobileAccessibility.prototype.isVoiceOverRunning = function(callback) {
- if (device.platform.toLowerCase() === "ios") {
- MobileAccessibility.prototype.isScreenReaderRunning(callback);
- } else {
- callback(false);
- }
-};
-MobileAccessibility.prototype.isTalkBackRunning = function(callback) {
- if (device.platform.toLowerCase() === "android" || device.platform.toLowerCase() === "amazon-fireos") {
- MobileAccessibility.prototype.isScreenReaderRunning(callback);
- } else {
- callback(false);
- }
-};
-MobileAccessibility.prototype.isChromeVoxActive = function () {
- return typeof cvox !== "undefined" && cvox.ChromeVox.host.ttsLoaded() && cvox.Api.isChromeVoxActive();
-};
-MobileAccessibility.prototype.activateOrDeactivateChromeVox = function(bool) {
- if (device.platform !== "Android") return;
- if (typeof cvox === "undefined") {
- if (bool) {
- console.warn('A screen reader is running but ChromeVox has failed to initialize.');
- if (navigator.connection.type === Connection.UNKNOWN || navigator.connection.type === Connection.NONE) {
- mobileAccessibility.injectLocalAndroidVoxScript();
- }
- }
- } else {
- // activate or deactivate ChromeVox based on whether or not or not the screen reader is running.
- try {
- cvox.ChromeVox.host.activateOrDeactivateChromeVox(bool);
- } catch (err) {
- console.error(err);
- }
- }
-
- if (bool) {
- if (!mobileAccessibility.hasOrientationChangeListener) {
- window.addEventListener("orientationchange", mobileAccessibility.onOrientationChange);
- mobileAccessibility.hasOrientationChangeListener = true;
- }
- } else if(mobileAccessibility.hasOrientationChangeListener) {
- window.removeEventListener("orientationchange", mobileAccessibility.onOrientationChange);
- mobileAccessibility.hasOrientationChangeListener = false;
- }
-};
-
-MobileAccessibility.prototype.hasOrientationChangeListener = false;
-MobileAccessibility.prototype.onOrientationChange = function(event) {
- if (!mobileAccessibility.isChromeVoxActive()) return;
- cvox.ChromeVox.navigationManager.updateIndicator();
-};
-
-MobileAccessibility.prototype.scriptInjected = false;
-MobileAccessibility.prototype.injectLocalAndroidVoxScript = function() {
- var versionsplit = device.version.split('.');
- if (device.platform !== "Android" ||
- !(versionsplit[0] > 4 || (versionsplit[0] == 4 && versionsplit[1] >= 1)) ||
- typeof cvox !== "undefined" || mobileAccessibility.scriptInjected) return;
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.async = true;
- script.onload = function(){
- // console.log(this.src + ' has loaded');
- if (mobileAccessibility.isChromeVoxActive()) {
- cordova.fireWindowEvent("screenreaderstatuschanged", {
- isScreenReaderRunning: true
- });
- }
- };
-
- script.src = (versionsplit[0] > 4 || versionsplit[1] > 3)
- ? "plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js"
- : "plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js";
- document.getElementsByTagName('head')[0].appendChild(script);
- mobileAccessibility.scriptInjected = true;
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Bold Text is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isBoldTextEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isBoldTextEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Closed Captioning is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isClosedCaptioningEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isClosedCaptioningEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Darker System Colors are enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isDarkerSystemColorsEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isDarkerSystemColorsEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Grayscale is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isGrayscaleEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isGrayscaleEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Guided Access is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isGuidedAccessEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isGuidedAccessEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if the display colors have been inverted.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isInvertColorsEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isInvertColorsEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Mono Audio is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isMonoAudioEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isMonoAudioEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Reduce Motion is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isReduceMotionEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isReduceMotionEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Reduce Transparency is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isReduceTransparencyEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isReduceTransparencyEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Speak Screen is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSpeakScreenEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSpeakScreenEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Speak Selection is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSpeakSelectionEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSpeakSelectionEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Switch Control is running.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSwitchControlRunning = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSwitchControlRunning", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Touch Exploration is enabled on Android.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isTouchExplorationEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isTouchExplorationEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if High Contrast is enabled on Windows.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isHighContrastEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isHighContrastEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to return the current text zoom percent value for the WebView.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.getTextZoom = function(callback) {
- exec(callback, null, "MobileAccessibility", "getTextZoom", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to set the current text zoom percent value for the WebView.
- * @param {Number} textZoom A percentage value by which text in the WebView should be scaled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.setTextZoom = function(textZoom, callback) {
- exec(callback, null, "MobileAccessibility", "setTextZoom", [textZoom]);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to retrieve the user's preferred text zoom from system settings and apply it to the application WebView.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.updateTextZoom = function(callback) {
- exec(callback, null, "MobileAccessibility", "updateTextZoom", []);
-};
-
-MobileAccessibility.prototype.usePreferredTextZoom = function(bool) {
- var currentValue = window.localStorage.getItem("MobileAccessibility.usePreferredTextZoom") === "true";
-
- if (arguments.length === 0) {
- return currentValue;
- }
-
- if (currentValue != bool) {
- window.localStorage.setItem("MobileAccessibility.usePreferredTextZoom", bool);
- }
-
- var callback = function(){
- // Wrapping updateTextZoom call in a function to stop
- // the event parameter propagation. This fixes an error
- // on resume where cordova tried to call apply() on the
- // event, expecting a function.
- mobileAccessibility.updateTextZoom();
- };
-
- document.removeEventListener("resume", callback);
-
- if (bool) {
- // console.log("We should update the text zoom at this point: " + bool)
- document.addEventListener("resume", callback, false);
- mobileAccessibility.updateTextZoom();
- } else {
- mobileAccessibility.setTextZoom(100);
- }
-
- return Boolean(bool);
-};
-
-MobileAccessibility.prototype.MobileAccessibilityNotifications = MobileAccessibilityNotifications;
-
-/**
- * Posts a notification with a string for a screen reader to announce, if it is running.
- * @param {uint} mobileAccessibilityNotification A numeric constant for the type of notification to send. Constants are defined in MobileAccessibility.MobileAccessibilityNotifications.
- * @param {string} string A string to be announced by a screen reader.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility, when the announcement is finished, the function should expect an object containing the stringValue that was voiced and a boolean indicating that the announcement wasSuccessful.
- */
-MobileAccessibility.prototype.postNotification = function(mobileAccessibilityNotification, string, callback) {
- exec(callback, null, "MobileAccessibility", "postNotification", [mobileAccessibilityNotification, string]);
-};
-
-/**
- * Speaks the given string, and if ChromeVox is active, it will use the specified queueMode and properties.
- * @param {string} string A string to be announced by a screen reader.
- * @param {number} [queueMode] Optional number. Valid modes are 0 for flush; 1 for queue.
- * @param {Object} [properties] Speech properties to use for this utterance.
- */
-MobileAccessibility.prototype.speak = function(string, queueMode, properties) {
- if (this.isChromeVoxActive()) {
- cvox.ChromeVox.tts.speak(string, queueMode, properties);
- } else {
- exec(null, null, "MobileAccessibility", "postNotification", [MobileAccessibilityNotifications.ANNOUNCEMENT, string]);
- }
-}
-
-/**
- * Stops speech.
- */
-MobileAccessibility.prototype.stop = function() {
- if (this.isChromeVoxActive()) {
- cvox.ChromeVox.tts.stop();
- } else {
- exec(null, null, "MobileAccessibility", "postNotification", [MobileAccessibilityNotifications.ANNOUNCEMENT, "\u200b"]);
- }
-}
-
-/**
- * Callback from native MobileAccessibility returning an object which describes the status of MobileAccessibility features.
- *
- * @param {Object} info
- * @config {Boolean} [isBoldTextEnabled] Boolean to indicate bold text status (ios).
- * @config {Boolean} [isClosedCaptioningEnabled] Boolean to indicate closed captioning status.
- * @config {Boolean} [isDarkerSystemColorsEnabled] Boolean to indicate darker system colors status (ios).
- * @config {Boolean} [isGrayscaleEnabled] Boolean to indicate grayscale status (ios).
- * @config {Boolean} [isGuidedAccessEnabled] Boolean to indicate guided access status (ios).
- * @config {Boolean} [isInvertColorsEnabled] Boolean to indicate invert colors status (ios).
- * @config {Boolean} [isMonoAudioEnabled] Boolean to indicate mono audio status (ios).
- * @config {Boolean} [isReduceMotionEnabled] Boolean to indicate reduce motion status (ios).
- * @config {Boolean} [isReduceTransparencyEnabled] Boolean to indicate reduce transparency status (ios).
- * @config {Boolean} [isScreenReaderRunning] Boolean to indicate screen reader status.
- * @config {Boolean} [isSpeakScreenEnabled] Boolean to indicate speak screen status (ios).
- * @config {Boolean} [isSpeakSelectionEnabled] Boolean to indicate speak selection status (ios).
- * @config {Boolean} [isSwitchControlRunning] Boolean to indicate switch control status (ios).
- * @config {Boolean} [isTouchExplorationEnabled] Boolean to indicate touch exploration status (android).
- */
-MobileAccessibility.prototype._status = function(info) {
- if (info) {
- mobileAccessibility.activateOrDeactivateChromeVox(info.isScreenReaderRunning);
- if (mobileAccessibility._isBoldTextEnabled !== info.isBoldTextEnabled) {
- mobileAccessibility._isBoldTextEnabled = info.isBoldTextEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.BOLD_TEXT_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isClosedCaptioningEnabled !== info.isClosedCaptioningEnabled) {
- mobileAccessibility._isClosedCaptioningEnabled = info.isClosedCaptioningEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.CLOSED_CAPTIONING_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isDarkerSystemColorsEnabled !== info.isDarkerSystemColorsEnabled) {
- mobileAccessibility._isDarkerSystemColorsEnabled = info.isDarkerSystemColorsEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.DARKER_SYSTEM_COLORS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isGrayscaleEnabled !== info.isGrayscaleEnabled) {
- mobileAccessibility._isGrayscaleEnabled = info.isGrayscaleEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.GRAYSCALE_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isGuidedAccessEnabled !== info.isGuidedAccessEnabled) {
- mobileAccessibility._isGuidedAccessEnabled = info.isGuidedAccessEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.GUIDED_ACCESS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isInvertColorsEnabled !== info.isInvertColorsEnabled) {
- mobileAccessibility._isInvertColorsEnabled = info.isInvertColorsEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.INVERT_COLORS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isMonoAudioEnabled !== info.isMonoAudioEnabled) {
- mobileAccessibility._isMonoAudioEnabled = info.isMonoAudioEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.MONO_AUDIO_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isReduceMotionEnabled !== info.isReduceMotionEnabled) {
- mobileAccessibility._isReduceMotionEnabled = info.isReduceMotionEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.REDUCE_MOTION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isReduceTransparencyEnabled !== info.isReduceTransparencyEnabled) {
- mobileAccessibility._isReduceTransparencyEnabled = info.isReduceTransparencyEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.REDUCE_TRANSPARENCY_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isScreenReaderRunning !== info.isScreenReaderRunning) {
- mobileAccessibility._isScreenReaderRunning = info.isScreenReaderRunning;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SCREEN_READER_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSpeakScreenEnabled !== info.isSpeakScreenEnabled) {
- mobileAccessibility._isSpeakScreenEnabled = info.isSpeakScreenEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SPEAK_SCREEN_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSpeakSelectionEnabled !== info.isSpeakSelectionEnabled) {
- mobileAccessibility._isSpeakSelectionEnabled = info.isSpeakSelectionEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SPEAK_SELECTION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSwitchControlRunning !== info.isSwitchControlRunning) {
- mobileAccessibility._isSwitchControlRunning = info.isSwitchControlRunning;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SWITCH_CONTROL_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isTouchExplorationEnabled !== info.isTouchExplorationEnabled) {
- mobileAccessibility._isTouchExplorationEnabled = info.isTouchExplorationEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.TOUCH_EXPLORATION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isHighContrastEnabled !== info.isHighContrastEnabled) {
- mobileAccessibility._isHighContrastEnabled = info.isHighContrastEnabled;
- mobileAccessibility._highContrastScheme = info.highContrastScheme;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.HIGH_CONTRAST_CHANGED, info);
- }
- }
-};
-
-/**
- * Error callback for MobileAccessibility start
- */
-MobileAccessibility.prototype._error = function(e) {
- console.log("Error initializing MobileAccessibility: " + e);
-};
-
-var mobileAccessibility = new MobileAccessibility();
-
-module.exports = mobileAccessibility;
-
-});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js b/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js
deleted file mode 100644
index a5315486..00000000
--- a/StoneIsland/platforms/android/assets/www/plugins/phonegap-plugin-push/www/push.js
+++ /dev/null
@@ -1,329 +0,0 @@
-cordova.define("phonegap-plugin-push.PushNotification", function(require, exports, module) {
-/* global cordova:false */
-/* globals window */
-
-/*!
- * Module dependencies.
- */
-
-var exec = cordova.require('cordova/exec');
-
-/**
- * PushNotification constructor.
- *
- * @param {Object} options to initiate Push Notifications.
- * @return {PushNotification} instance that can be monitored and cancelled.
- */
-
-var PushNotification = function(options) {
- this._handlers = {
- 'registration': [],
- 'notification': [],
- 'error': []
- };
-
- // require options parameter
- if (typeof options === 'undefined') {
- throw new Error('The options argument is required.');
- }
-
- // store the options to this object instance
- this.options = options;
-
- // triggered on registration and notification
- var that = this;
- var success = function(result) {
- if (result && typeof result.registrationId !== 'undefined') {
- that.emit('registration', result);
- } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
- var executeFuctionOrEmitEventByName = function(callbackName, context, arg) {
- var namespaces = callbackName.split('.');
- var func = namespaces.pop();
- for (var i = 0; i < namespaces.length; i++) {
- context = context[namespaces[i]];
- }
-
- if (typeof context[func] === 'function') {
- context[func].call(context, arg);
- } else {
- that.emit(callbackName, arg);
- }
- };
-
- executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
- } else if (result) {
- that.emit('notification', result);
- }
- };
-
- // triggered on error
- var fail = function(msg) {
- var e = (typeof msg === 'string') ? new Error(msg) : msg;
- that.emit('error', e);
- };
-
- // wait at least one process tick to allow event subscriptions
- setTimeout(function() {
- exec(success, fail, 'PushNotification', 'init', [options]);
- }, 10);
-};
-
-/**
- * Unregister from push notifications
- */
-
-PushNotification.prototype.unregister = function(successCallback, errorCallback, options) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.unregister failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unregister failure: success callback parameter must be a function');
- return;
- }
-
- var that = this;
- var cleanHandlersAndPassThrough = function() {
- if (!options) {
- that._handlers = {
- 'registration': [],
- 'notification': [],
- 'error': []
- };
- }
- successCallback();
- };
-
- exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
-};
-
-/**
- * subscribe to a topic
- * @param {String} topic topic to subscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
-PushNotification.prototype.subscribe = function(topic, successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.subscribe failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.subscribe failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
-};
-
-/**
- * unsubscribe to a topic
- * @param {String} topic topic to unsubscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
-PushNotification.prototype.unsubscribe = function(topic, successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
-};
-
-/**
- * Call this to set the application icon badge
- */
-
-PushNotification.prototype.setApplicationIconBadgeNumber = function(successCallback, errorCallback, badge) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{badge: badge}]);
-};
-
-/**
- * Get the application icon badge
- */
-
-PushNotification.prototype.getApplicationIconBadgeNumber = function(successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
-};
-
-/**
- * Get the application icon badge
- */
-
-PushNotification.prototype.clearAllNotifications = function(successCallback, errorCallback) {
- if (!successCallback) { successCallback = function() {}; }
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
-};
-
-/**
- * Listen for an event.
- *
- * Any event is supported, but the following are built-in:
- *
- * - registration
- * - notification
- * - error
- *
- * @param {String} eventName to subscribe to.
- * @param {Function} callback triggered on the event.
- */
-
-PushNotification.prototype.on = function(eventName, callback) {
- if (!this._handlers.hasOwnProperty(eventName)) {
- this._handlers[eventName] = [];
- }
- this._handlers[eventName].push(callback);
-};
-
-/**
- * Remove event listener.
- *
- * @param {String} eventName to match subscription.
- * @param {Function} handle function associated with event.
- */
-
-PushNotification.prototype.off = function (eventName, handle) {
- if (this._handlers.hasOwnProperty(eventName)) {
- var handleIndex = this._handlers[eventName].indexOf(handle);
- if (handleIndex >= 0) {
- this._handlers[eventName].splice(handleIndex, 1);
- }
- }
-};
-
-/**
- * Emit an event.
- *
- * This is intended for internal use only.
- *
- * @param {String} eventName is the event to trigger.
- * @param {*} all arguments are passed to the event listeners.
- *
- * @return {Boolean} is true when the event is triggered otherwise false.
- */
-
-PushNotification.prototype.emit = function() {
- var args = Array.prototype.slice.call(arguments);
- var eventName = args.shift();
-
- if (!this._handlers.hasOwnProperty(eventName)) {
- return false;
- }
-
- for (var i = 0, length = this._handlers[eventName].length; i < length; i++) {
- var callback = this._handlers[eventName][i];
- if (typeof callback === 'function') {
- callback.apply(undefined,args);
- } else {
- console.log('event handler: ' + eventName + ' must be a function');
- }
- }
-
- return true;
-};
-
-PushNotification.prototype.finish = function(successCallback, errorCallback, id) {
- if (!successCallback) { successCallback = function() {}; }
- if (!errorCallback) { errorCallback = function() {}; }
- if (!id) { id = 'handler'; }
-
- if (typeof successCallback !== 'function') {
- console.log('finish failure: success callback parameter must be a function');
- return;
- }
-
- if (typeof errorCallback !== 'function') {
- console.log('finish failure: failure parameter not a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
-};
-
-/*!
- * Push Notification Plugin.
- */
-
-module.exports = {
- /**
- * Register for Push Notifications.
- *
- * This method will instantiate a new copy of the PushNotification object
- * and start the registration process.
- *
- * @param {Object} options
- * @return {PushNotification} instance
- */
-
- init: function(options) {
- return new PushNotification(options);
- },
-
- hasPermission: function(successCallback, errorCallback) {
- exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
- },
-
- /**
- * PushNotification Object.
- *
- * Expose the PushNotification object for direct use
- * and testing. Typically, you should use the
- * .init helper method.
- */
-
- PushNotification: PushNotification
-};
-
-});
diff --git a/StoneIsland/platforms/android/build.gradle b/StoneIsland/platforms/android/build.gradle
deleted file mode 100644
index b9163fbd..00000000
--- a/StoneIsland/platforms/android/build.gradle
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-apply plugin: 'com.android.application'
-
-buildscript {
- repositories {
- mavenCentral()
- jcenter()
- }
-
- // Switch the Android Gradle plugin version requirement depending on the
- // installed version of Gradle. This dependency is documented at
- // http://tools.android.com/tech-docs/new-build-system/version-compatibility
- // and https://issues.apache.org/jira/browse/CB-8143
- dependencies {
- classpath 'com.android.tools.build:gradle:2.2.3'
- }
-}
-
-// Allow plugins to declare Maven dependencies via build-extras.gradle.
-allprojects {
- repositories {
- mavenCentral();
- jcenter()
- }
-}
-
-task wrapper(type: Wrapper) {
- gradleVersion = '2.14.1'
-}
-
-// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.
-// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html
-ext {
- apply from: 'CordovaLib/cordova.gradle'
- // The value for android.compileSdkVersion.
- if (!project.hasProperty('cdvCompileSdkVersion')) {
- cdvCompileSdkVersion = null;
- }
- // The value for android.buildToolsVersion.
- if (!project.hasProperty('cdvBuildToolsVersion')) {
- cdvBuildToolsVersion = null;
- }
- // Sets the versionCode to the given value.
- if (!project.hasProperty('cdvVersionCode')) {
- cdvVersionCode = null
- }
- // Sets the minSdkVersion to the given value.
- if (!project.hasProperty('cdvMinSdkVersion')) {
- cdvMinSdkVersion = null
- }
- // Whether to build architecture-specific APKs.
- if (!project.hasProperty('cdvBuildMultipleApks')) {
- cdvBuildMultipleApks = null
- }
- // .properties files to use for release signing.
- if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) {
- cdvReleaseSigningPropertiesFile = null
- }
- // .properties files to use for debug signing.
- if (!project.hasProperty('cdvDebugSigningPropertiesFile')) {
- cdvDebugSigningPropertiesFile = null
- }
- // Set by build.js script.
- if (!project.hasProperty('cdvBuildArch')) {
- cdvBuildArch = null
- }
-
- // Plugin gradle extensions can append to this to have code run at the end.
- cdvPluginPostBuildExtras = []
-}
-
-// PLUGIN GRADLE EXTENSIONS START
-apply from: "phonegap-plugin-push/stoneisland-push.gradle"
-// PLUGIN GRADLE EXTENSIONS END
-
-def hasBuildExtras = file('build-extras.gradle').exists()
-if (hasBuildExtras) {
- apply from: 'build-extras.gradle'
-}
-
-// Set property defaults after extension .gradle files.
-if (ext.cdvCompileSdkVersion == null) {
- ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget()
-}
-if (ext.cdvBuildToolsVersion == null) {
- ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
-}
-if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) {
- ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties'
-}
-if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) {
- ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties'
-}
-
-// Cast to appropriate types.
-ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean();
-ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion)
-ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)
-
-def computeBuildTargetName(debugBuild) {
- def ret = 'assemble'
- if (cdvBuildMultipleApks && cdvBuildArch) {
- def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch
- ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1);
- }
- return ret + (debugBuild ? 'Debug' : 'Release')
-}
-
-// Make cdvBuild a task that depends on the debug/arch-sepecific task.
-task cdvBuildDebug
-cdvBuildDebug.dependsOn {
- return computeBuildTargetName(true)
-}
-
-task cdvBuildRelease
-cdvBuildRelease.dependsOn {
- return computeBuildTargetName(false)
-}
-
-task cdvPrintProps << {
- println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
- println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
- println('cdvVersionCode=' + cdvVersionCode)
- println('cdvMinSdkVersion=' + cdvMinSdkVersion)
- println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
- println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
- println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
- println('cdvBuildArch=' + cdvBuildArch)
- println('computedVersionCode=' + android.defaultConfig.versionCode)
- android.productFlavors.each { flavor ->
- println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
- }
-}
-
-android {
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- jniLibs.srcDirs = ['libs']
- }
- }
-
- defaultConfig {
- versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode"))
- applicationId privateHelpers.extractStringFromManifest("package")
-
- if (cdvMinSdkVersion != null) {
- minSdkVersion cdvMinSdkVersion
- }
- }
-
- lintOptions {
- abortOnError false;
- }
-
- compileSdkVersion cdvCompileSdkVersion
- buildToolsVersion cdvBuildToolsVersion
-
- if (Boolean.valueOf(cdvBuildMultipleApks)) {
- productFlavors {
- armv7 {
- versionCode defaultConfig.versionCode*10 + 2
- ndk {
- abiFilters "armeabi-v7a", ""
- }
- }
- x86 {
- versionCode defaultConfig.versionCode*10 + 4
- ndk {
- abiFilters "x86", ""
- }
- }
- all {
- ndk {
- abiFilters "all", ""
- }
- }
- }
- }
- /*
-
- ELSE NOTHING! DON'T MESS WITH THE VERSION CODE IF YOU DON'T HAVE TO!
-
- else if (!cdvVersionCode) {
- def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion")
- // Vary versionCode by the two most common API levels:
- // 14 is ICS, which is the lowest API level for many apps.
- // 20 is Lollipop, which is the lowest API level for the updatable system webview.
- if (minSdkVersion >= 20) {
- defaultConfig.versionCode += 9
- } else if (minSdkVersion >= 14) {
- defaultConfig.versionCode += 8
- }
- }
- */
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_6
- targetCompatibility JavaVersion.VERSION_1_6
- }
-
- if (cdvReleaseSigningPropertiesFile) {
- signingConfigs {
- release {
- // These must be set or Gradle will complain (even if they are overridden).
- keyAlias = ""
- keyPassword = "__unset" // And these must be set to non-empty in order to have the signing step added to the task graph.
- storeFile = null
- storePassword = "__unset"
- }
- }
- buildTypes {
- release {
- signingConfig signingConfigs.release
- }
- }
- addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release)
- }
- if (cdvDebugSigningPropertiesFile) {
- addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug)
- }
-}
-
-dependencies {
- compile fileTree(dir: 'libs', include: '*.jar')
- // SUB-PROJECT DEPENDENCIES START
- debugCompile(project(path: "CordovaLib", configuration: "debug"))
- releaseCompile(project(path: "CordovaLib", configuration: "release"))
- compile "com.android.support:support-v13:23+"
- compile "com.google.android.gms:play-services-gcm:9.8+"
- compile "me.leolin:ShortcutBadger:1.1.11@aar"
- // SUB-PROJECT DEPENDENCIES END
-}
-
-def promptForReleaseKeyPassword() {
- if (!cdvReleaseSigningPropertiesFile) {
- return;
- }
- if ('__unset'.equals(android.signingConfigs.release.storePassword)) {
- android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ')
- }
- if ('__unset'.equals(android.signingConfigs.release.keyPassword)) {
- android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: ');
- }
-}
-
-gradle.taskGraph.whenReady { taskGraph ->
- taskGraph.getAllTasks().each() { task ->
- if (task.name == 'validateReleaseSigning' || task.name == 'validateSigningRelease') {
- promptForReleaseKeyPassword()
- }
- }
-}
-
-def addSigningProps(propsFilePath, signingConfig) {
- def propsFile = file(propsFilePath)
- def props = new Properties()
- propsFile.withReader { reader ->
- props.load(reader)
- }
-
- def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile'))
- if (!storeFile.isAbsolute()) {
- storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile())
- }
- if (!storeFile.exists()) {
- throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath())
- }
- signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias')
- signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword))
- signingConfig.storeFile = storeFile
- signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword))
- def storeType = props.get('storeType', props.get('key.store.type', ''))
- if (!storeType) {
- def filename = storeFile.getName().toLowerCase();
- if (filename.endsWith('.p12') || filename.endsWith('.pfx')) {
- storeType = 'pkcs12'
- } else {
- storeType = signingConfig.storeType // "jks"
- }
- }
- signingConfig.storeType = storeType
-}
-
-for (def func : cdvPluginPostBuildExtras) {
- func()
-}
-
-// This can be defined within build-extras.gradle as:
-// ext.postBuildExtras = { ... code here ... }
-if (hasProperty('postBuildExtras')) {
- postBuildExtras()
-}
diff --git a/StoneIsland/platforms/android/cordova/.jshintrc b/StoneIsland/platforms/android/cordova/.jshintrc
deleted file mode 100644
index 89a121cf..00000000
--- a/StoneIsland/platforms/android/cordova/.jshintrc
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "node": true
- , "bitwise": true
- , "undef": true
- , "trailing": true
- , "quotmark": true
- , "indent": 4
- , "unused": "vars"
- , "latedef": "nofunc"
-}
diff --git a/StoneIsland/platforms/android/cordova/Api.js b/StoneIsland/platforms/android/cordova/Api.js
deleted file mode 100644
index 8e4711cb..00000000
--- a/StoneIsland/platforms/android/cordova/Api.js
+++ /dev/null
@@ -1,415 +0,0 @@
-/**
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var path = require('path');
-var Q = require('q');
-
-var AndroidProject = require('./lib/AndroidProject');
-var AndroidStudio = require('./lib/AndroidStudio');
-var PluginManager = require('cordova-common').PluginManager;
-
-var CordovaLogger = require('cordova-common').CordovaLogger;
-var selfEvents = require('cordova-common').events;
-
-var PLATFORM = 'android';
-
-
-function setupEvents(externalEventEmitter) {
- if (externalEventEmitter) {
- // This will make the platform internal events visible outside
- selfEvents.forwardEventsTo(externalEventEmitter);
- return externalEventEmitter;
- }
-
- // There is no logger if external emitter is not present,
- // so attach a console logger
- CordovaLogger.get().subscribe(selfEvents);
- return selfEvents;
-}
-
-
-/**
- * Class, that acts as abstraction over particular platform. Encapsulates the
- * platform's properties and methods.
- *
- * Platform that implements own PlatformApi instance _should implement all
- * prototype methods_ of this class to be fully compatible with cordova-lib.
- *
- * The PlatformApi instance also should define the following field:
- *
- * * platform: String that defines a platform name.
- */
-function Api(platform, platformRootDir, events) {
- this.platform = PLATFORM;
- this.root = path.resolve(__dirname, '..');
-
- setupEvents(events);
-
- var self = this;
-
- this.locations = {
- root: self.root,
- www: path.join(self.root, 'assets/www'),
- res: path.join(self.root, 'res'),
- platformWww: path.join(self.root, 'platform_www'),
- configXml: path.join(self.root, 'res/xml/config.xml'),
- defaultConfigXml: path.join(self.root, 'cordova/defaults.xml'),
- strings: path.join(self.root, 'res/values/strings.xml'),
- manifest: path.join(self.root, 'AndroidManifest.xml'),
- build: path.join(self.root, 'build'),
- // NOTE: Due to platformApi spec we need to return relative paths here
- cordovaJs: 'bin/templates/project/assets/www/cordova.js',
- cordovaJsSrc: 'cordova-js-src'
- };
-
- // XXX Override some locations for Android Studio projects
- if(AndroidStudio.isAndroidStudioProject(self.root) === true) {
- selfEvents.emit('log', 'Android Studio project detected');
- this.android_studio = true;
- this.locations.configXml = path.join(self.root, 'app/src/main/res/xml/config.xml');
- this.locations.strings = path.join(self.root, 'app/src/main/res/xml/strings.xml');
- this.locations.manifest = path.join(self.root, 'app/src/main/AndroidManifest.xml');
- this.locations.www = path.join(self.root, 'app/src/main/assets/www');
- this.locations.res = path.join(self.root, 'app/src/main/res');
- }
-}
-
-/**
- * Installs platform to specified directory and creates a platform project.
- *
- * @param {String} destination Destination directory, where insatll platform to
- * @param {ConfigParser} [config] ConfgiParser instance, used to retrieve
- * project creation options, such as package id and project name.
- * @param {Object} [options] An options object. The most common options are:
- * @param {String} [options.customTemplate] A path to custom template, that
- * should override the default one from platform.
- * @param {Boolean} [options.link] Flag that indicates that platform's
- * sources will be linked to installed platform instead of copying.
- * @param {EventEmitter} [events] An EventEmitter instance that will be used for
- * logging purposes. If no EventEmitter provided, all events will be logged to
- * console
- *
- * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
- * instance or rejected with CordovaError.
- */
-Api.createPlatform = function (destination, config, options, events) {
- events = setupEvents(events);
- var result;
- try {
- result = require('../../lib/create')
- .create(destination, config, options, events)
- .then(function (destination) {
- var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
- return new PlatformApi(PLATFORM, destination, events);
- });
- }
- catch (e) {
- events.emit('error','createPlatform is not callable from the android project API.');
- throw(e);
- }
- return result;
-};
-
-/**
- * Updates already installed platform.
- *
- * @param {String} destination Destination directory, where platform installed
- * @param {Object} [options] An options object. The most common options are:
- * @param {String} [options.customTemplate] A path to custom template, that
- * should override the default one from platform.
- * @param {Boolean} [options.link] Flag that indicates that platform's
- * sources will be linked to installed platform instead of copying.
- * @param {EventEmitter} [events] An EventEmitter instance that will be used for
- * logging purposes. If no EventEmitter provided, all events will be logged to
- * console
- *
- * @return {Promise<PlatformApi>} Promise either fulfilled with PlatformApi
- * instance or rejected with CordovaError.
- */
-Api.updatePlatform = function (destination, options, events) {
- events = setupEvents(events);
- var result;
- try {
- result = require('../../lib/create')
- .update(destination, options, events)
- .then(function (destination) {
- var PlatformApi = require(path.resolve(destination, 'cordova/Api'));
- return new PlatformApi('android', destination, events);
- });
- }
- catch (e) {
- events.emit('error','updatePlatform is not callable from the android project API, you will need to do this manually.');
- throw(e);
- }
- return result;
-};
-
-/**
- * Gets a CordovaPlatform object, that represents the platform structure.
- *
- * @return {CordovaPlatform} A structure that contains the description of
- * platform's file structure and other properties of platform.
- */
-Api.prototype.getPlatformInfo = function () {
- var result = {};
- result.locations = this.locations;
- result.root = this.root;
- result.name = this.platform;
- result.version = require('./version');
- result.projectConfig = this._config;
-
- return result;
-};
-
-/**
- * Updates installed platform with provided www assets and new app
- * configuration. This method is required for CLI workflow and will be called
- * each time before build, so the changes, made to app configuration and www
- * code, will be applied to platform.
- *
- * @param {CordovaProject} cordovaProject A CordovaProject instance, that defines a
- * project structure and configuration, that should be applied to platform
- * (contains project's www location and ConfigParser instance for project's
- * config).
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.prepare = function (cordovaProject, prepareOptions) {
- return require('./lib/prepare').prepare.call(this, cordovaProject, prepareOptions);
-};
-
-/**
- * Installs a new plugin into platform. This method only copies non-www files
- * (sources, libs, etc.) to platform. It also doesn't resolves the
- * dependencies of plugin. Both of handling of www files, such as assets and
- * js-files and resolving dependencies are the responsibility of caller.
- *
- * @param {PluginInfo} plugin A PluginInfo instance that represents plugin
- * that will be installed.
- * @param {Object} installOptions An options object. Possible options below:
- * @param {Boolean} installOptions.link: Flag that specifies that plugin
- * sources will be symlinked to app's directory instead of copying (if
- * possible).
- * @param {Object} installOptions.variables An object that represents
- * variables that will be used to install plugin. See more details on plugin
- * variables in documentation:
- * https://cordova.apache.org/docs/en/4.0.0/plugin_ref_spec.md.html
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.addPlugin = function (plugin, installOptions) {
- var project = AndroidProject.getProjectFile(this.root);
- var self = this;
-
- installOptions = installOptions || {};
- installOptions.variables = installOptions.variables || {};
- // Add PACKAGE_NAME variable into vars
- if (!installOptions.variables.PACKAGE_NAME) {
- installOptions.variables.PACKAGE_NAME = project.getPackageName();
- }
-
- if(this.android_studio === true) {
- installOptions.android_studio = true;
- }
-
- return Q()
- .then(function () {
- //CB-11964: Do a clean when installing the plugin code to get around
- //the Gradle bug introduced by the Android Gradle Plugin Version 2.2
- //TODO: Delete when the next version of Android Gradle plugin comes out
-
- // Since clean doesn't just clean the build, it also wipes out www, we need
- // to pass additional options.
-
- // Do some basic argument parsing
- var opts = {};
-
- // Skip cleaning prepared files when not invoking via cordova CLI.
- opts.noPrepare = true;
-
- if(!AndroidStudio.isAndroidStudioProject(self.root) && !project.isClean()) {
- return self.clean(opts);
- }
- })
- .then(function () {
- return PluginManager.get(self.platform, self.locations, project)
- .addPlugin(plugin, installOptions);
- })
- .then(function () {
- if (plugin.getFrameworks(this.platform).length === 0) return;
-
- selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
- require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
- }.bind(this))
- // CB-11022 Return truthy value to prevent running prepare after
- .thenResolve(true);
-};
-
-/**
- * Removes an installed plugin from platform.
- *
- * Since method accepts PluginInfo instance as input parameter instead of plugin
- * id, caller shoud take care of managing/storing PluginInfo instances for
- * future uninstalls.
- *
- * @param {PluginInfo} plugin A PluginInfo instance that represents plugin
- * that will be installed.
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError instance.
- */
-Api.prototype.removePlugin = function (plugin, uninstallOptions) {
- var project = AndroidProject.getProjectFile(this.root);
-
- if(uninstallOptions && uninstallOptions.usePlatformWww === true && this.android_studio === true) {
- uninstallOptions.usePlatformWww = false;
- uninstallOptions.android_studio = true;
- }
-
- return PluginManager.get(this.platform, this.locations, project)
- .removePlugin(plugin, uninstallOptions)
- .then(function () {
- if (plugin.getFrameworks(this.platform).length === 0) return;
-
- selfEvents.emit('verbose', 'Updating build files since android plugin contained <framework>');
- require('./lib/builders/builders').getBuilder('gradle').prepBuildFiles();
- }.bind(this))
- // CB-11022 Return truthy value to prevent running prepare after
- .thenResolve(true);
-};
-
-/**
- * Builds an application package for current platform.
- *
- * @param {Object} buildOptions A build options. This object's structure is
- * highly depends on platform's specific. The most common options are:
- * @param {Boolean} buildOptions.debug Indicates that packages should be
- * built with debug configuration. This is set to true by default unless the
- * 'release' option is not specified.
- * @param {Boolean} buildOptions.release Indicates that packages should be
- * built with release configuration. If not set to true, debug configuration
- * will be used.
- * @param {Boolean} buildOptions.device Specifies that built app is intended
- * to run on device
- * @param {Boolean} buildOptions.emulator: Specifies that built app is
- * intended to run on emulator
- * @param {String} buildOptions.target Specifies the device id that will be
- * used to run built application.
- * @param {Boolean} buildOptions.nobuild Indicates that this should be a
- * dry-run call, so no build artifacts will be produced.
- * @param {String[]} buildOptions.archs Specifies chip architectures which
- * app packages should be built for. List of valid architectures is depends on
- * platform.
- * @param {String} buildOptions.buildConfig The path to build configuration
- * file. The format of this file is depends on platform.
- * @param {String[]} buildOptions.argv Raw array of command-line arguments,
- * passed to `build` command. The purpose of this property is to pass a
- * platform-specific arguments, and eventually let platform define own
- * arguments processing logic.
- *
- * @return {Promise<Object[]>} A promise either fulfilled with an array of build
- * artifacts (application packages) if package was built successfully,
- * or rejected with CordovaError. The resultant build artifact objects is not
- * strictly typed and may conatin arbitrary set of fields as in sample below.
- *
- * {
- * architecture: 'x86',
- * buildType: 'debug',
- * path: '/path/to/build',
- * type: 'app'
- * }
- *
- * The return value in most cases will contain only one item but in some cases
- * there could be multiple items in output array, e.g. when multiple
- * arhcitectures is specified.
- */
-Api.prototype.build = function (buildOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/build').run.call(self, buildOptions);
- })
- .then(function (buildResults) {
- // Cast build result to array of build artifacts
- return buildResults.apkPaths.map(function (apkPath) {
- return {
- buildType: buildResults.buildType,
- buildMethod: buildResults.buildMethod,
- path: apkPath,
- type: 'apk'
- };
- });
- });
-};
-
-/**
- * Builds an application package for current platform and runs it on
- * specified/default device. If no 'device'/'emulator'/'target' options are
- * specified, then tries to run app on default device if connected, otherwise
- * runs the app on emulator.
- *
- * @param {Object} runOptions An options object. The structure is the same
- * as for build options.
- *
- * @return {Promise} A promise either fulfilled if package was built and ran
- * successfully, or rejected with CordovaError.
- */
-Api.prototype.run = function(runOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/run').run.call(self, runOptions);
- });
-};
-
-/**
- * Cleans out the build artifacts from platform's directory, and also
- * cleans out the platform www directory if called without options specified.
- *
- * @return {Promise} Return a promise either fulfilled, or rejected with
- * CordovaError.
- */
-Api.prototype.clean = function(cleanOptions) {
- var self = this;
- return require('./lib/check_reqs').run()
- .then(function () {
- return require('./lib/build').runClean.call(self, cleanOptions);
- })
- .then(function () {
- return require('./lib/prepare').clean.call(self, cleanOptions);
- });
-};
-
-
-
-/**
- * Performs a requirements check for current platform. Each platform defines its
- * own set of requirements, which should be resolved before platform can be
- * built successfully.
- *
- * @return {Promise<Requirement[]>} Promise, resolved with set of Requirement
- * objects for current platform.
- */
-Api.prototype.requirements = function() {
- return require('./lib/check_reqs').check_all();
-};
-
-module.exports = Api;
diff --git a/StoneIsland/platforms/android/cordova/android_sdk_version b/StoneIsland/platforms/android/cordova/android_sdk_version
deleted file mode 100755
index 34ed28fe..00000000
--- a/StoneIsland/platforms/android/cordova/android_sdk_version
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var android_sdk = require('./lib/android_sdk');
-
-android_sdk.print_newest_available_sdk_target().done(null, function(err) {
- console.error(err);
- process.exit(2);
-});
-
-
diff --git a/StoneIsland/platforms/android/cordova/android_sdk_version.bat b/StoneIsland/platforms/android/cordova/android_sdk_version.bat
deleted file mode 100644
index 33a1fa25..00000000
--- a/StoneIsland/platforms/android/cordova/android_sdk_version.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0android_sdk_version"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'android_sdk_version' script in 'bin' folder, aborting...>&2
- EXIT /B 1
-)
diff --git a/StoneIsland/platforms/android/cordova/build b/StoneIsland/platforms/android/cordova/build
deleted file mode 100755
index 222e84a0..00000000
--- a/StoneIsland/platforms/android/cordova/build
+++ /dev/null
@@ -1,50 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var args = process.argv;
-var Api = require('./Api');
-var nopt = require('nopt');
-var path = require('path');
-
-// Support basic help commands
-if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0)
- require('./lib/build').help();
-
-// Do some basic argument parsing
-var buildOpts = nopt({
- 'verbose' : Boolean,
- 'silent' : Boolean,
- 'debug' : Boolean,
- 'release' : Boolean,
- 'nobuild': Boolean,
- 'buildConfig' : path
-}, { 'd' : '--verbose' });
-
-// Make buildOptions compatible with PlatformApi build method spec
-buildOpts.argv = buildOpts.argv.original;
-
-require('./loggingHelper').adjustLoggerLevel(buildOpts);
-
-new Api().build(buildOpts)
-.catch(function(err) {
- console.error(err.stack);
- process.exit(2);
-});
diff --git a/StoneIsland/platforms/android/cordova/build.bat b/StoneIsland/platforms/android/cordova/build.bat
deleted file mode 100644
index 46e966af..00000000
--- a/StoneIsland/platforms/android/cordova/build.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0build"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'build' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/check_reqs b/StoneIsland/platforms/android/cordova/check_reqs
deleted file mode 100755
index 372a3830..00000000
--- a/StoneIsland/platforms/android/cordova/check_reqs
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var check_reqs = require('./lib/check_reqs');
-
-check_reqs.run().done(
- function success() {
- console.log('Looks like your environment fully supports cordova-android development!');
- }, function fail(err) {
- console.log(err);
- process.exit(2);
- }
-);
diff --git a/StoneIsland/platforms/android/cordova/check_reqs.bat b/StoneIsland/platforms/android/cordova/check_reqs.bat
deleted file mode 100644
index cb2c6f54..00000000
--- a/StoneIsland/platforms/android/cordova/check_reqs.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0check_reqs"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'check_reqs' script in 'bin' folder, aborting...>&2
- EXIT /B 1
-)
diff --git a/StoneIsland/platforms/android/cordova/clean b/StoneIsland/platforms/android/cordova/clean
deleted file mode 100755
index 22065cc5..00000000
--- a/StoneIsland/platforms/android/cordova/clean
+++ /dev/null
@@ -1,51 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Api = require('./Api');
-var path = require('path');
-var nopt = require('nopt');
-
-// Support basic help commands
-if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0) {
- console.log('Usage: ' + path.relative(process.cwd(), process.argv[1]));
- console.log('Cleans the project directory.');
- process.exit(0);
-}
-
-// Do some basic argument parsing
-var opts = nopt({
- 'verbose' : Boolean,
- 'silent' : Boolean
-}, { 'd' : '--verbose' });
-
-// Make buildOptions compatible with PlatformApi clean method spec
-opts.argv = opts.argv.original;
-
-// Skip cleaning prepared files when not invoking via cordova CLI.
-opts.noPrepare = true;
-
-require('./loggingHelper').adjustLoggerLevel(opts);
-
-new Api().clean(opts)
-.catch(function(err) {
- console.error(err.stack);
- process.exit(2);
-});
diff --git a/StoneIsland/platforms/android/cordova/clean.bat b/StoneIsland/platforms/android/cordova/clean.bat
deleted file mode 100644
index 445ef6e1..00000000
--- a/StoneIsland/platforms/android/cordova/clean.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0clean"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'clean' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/defaults.xml b/StoneIsland/platforms/android/cordova/defaults.xml
deleted file mode 100644
index 5286ab9c..00000000
--- a/StoneIsland/platforms/android/cordova/defaults.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
--->
-<widget xmlns = "http://www.w3.org/ns/widgets"
- id = "io.cordova.helloCordova"
- version = "2.0.0">
-
- <!-- Preferences for Android -->
- <preference name="loglevel" value="DEBUG" />
-</widget>
diff --git a/StoneIsland/platforms/android/cordova/lib/Adb.js b/StoneIsland/platforms/android/cordova/lib/Adb.js
deleted file mode 100644
index 84ae707e..00000000
--- a/StoneIsland/platforms/android/cordova/lib/Adb.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q');
-var os = require('os');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-var Adb = {};
-
-function isDevice(line) {
- return line.match(/\w+\tdevice/) && !line.match(/emulator/);
-}
-
-function isEmulator(line) {
- return line.match(/device/) && line.match(/emulator/);
-}
-
-/**
- * Lists available/connected devices and emulators
- *
- * @param {Object} opts Various options
- * @param {Boolean} opts.emulators Specifies whether this method returns
- * emulators only
- *
- * @return {Promise<String[]>} list of available/connected
- * devices/emulators
- */
-Adb.devices = function (opts) {
- return spawn('adb', ['devices'], {cwd: os.tmpdir()})
- .then(function(output) {
- return output.split('\n').filter(function (line) {
- // Filter out either real devices or emulators, depending on options
- return (line && opts && opts.emulators) ? isEmulator(line) : isDevice(line);
- }).map(function (line) {
- return line.replace(/\tdevice/, '').replace('\r', '');
- });
- });
-};
-
-Adb.install = function (target, packagePath, opts) {
- events.emit('verbose', 'Installing apk ' + packagePath + ' on target ' + target + '...');
- var args = ['-s', target, 'install'];
- if (opts && opts.replace) args.push('-r');
- return spawn('adb', args.concat(packagePath), {cwd: os.tmpdir()})
- .then(function(output) {
- // 'adb install' seems to always returns no error, even if installation fails
- // so we catching output to detect installation failure
- if (output.match(/Failure/)) {
- if (output.match(/INSTALL_PARSE_FAILED_NO_CERTIFICATES/)) {
- output += '\n\n' + 'Sign the build using \'-- --keystore\' or \'--buildConfig\'' +
- ' or sign and deploy the unsigned apk manually using Android tools.';
- } else if (output.match(/INSTALL_FAILED_VERSION_DOWNGRADE/)) {
- output += '\n\n' + 'You\'re trying to install apk with a lower versionCode that is already installed.' +
- '\nEither uninstall an app or increment the versionCode.';
- }
-
- return Q.reject(new CordovaError('Failed to install apk to device: ' + output));
- }
- });
-};
-
-Adb.uninstall = function (target, packageId) {
- events.emit('verbose', 'Uninstalling package ' + packageId + ' from target ' + target + '...');
- return spawn('adb', ['-s', target, 'uninstall', packageId], {cwd: os.tmpdir()});
-};
-
-Adb.shell = function (target, shellCommand) {
- events.emit('verbose', 'Running adb shell command "' + shellCommand + '" on target ' + target + '...');
- var args = ['-s', target, 'shell'];
- shellCommand = shellCommand.split(/\s+/);
- return spawn('adb', args.concat(shellCommand), {cwd: os.tmpdir()})
- .catch(function (output) {
- return Q.reject(new CordovaError('Failed to execute shell command "' +
- shellCommand + '"" on device: ' + output));
- });
-};
-
-Adb.start = function (target, activityName) {
- events.emit('verbose', 'Starting application "' + activityName + '" on target ' + target + '...');
- return Adb.shell(target, 'am start -W -a android.intent.action.MAIN -n' + activityName)
- .catch(function (output) {
- return Q.reject(new CordovaError('Failed to start application "' +
- activityName + '"" on device: ' + output));
- });
-};
-
-module.exports = Adb;
diff --git a/StoneIsland/platforms/android/cordova/lib/AndroidManifest.js b/StoneIsland/platforms/android/cordova/lib/AndroidManifest.js
deleted file mode 100644
index 8248f593..00000000
--- a/StoneIsland/platforms/android/cordova/lib/AndroidManifest.js
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var fs = require('fs');
-var et = require('elementtree');
-var xml= require('cordova-common').xmlHelpers;
-
-var DEFAULT_ORIENTATION = 'default';
-
-/** Wraps an AndroidManifest file */
-function AndroidManifest(path) {
- this.path = path;
- this.doc = xml.parseElementtreeSync(path);
- if (this.doc.getroot().tag !== 'manifest') {
- throw new Error('AndroidManifest at ' + path + ' has incorrect root node name (expected "manifest")');
- }
-}
-
-AndroidManifest.prototype.getVersionName = function() {
- return this.doc.getroot().attrib['android:versionName'];
-};
-
-AndroidManifest.prototype.setVersionName = function(versionName) {
- this.doc.getroot().attrib['android:versionName'] = versionName;
- return this;
-};
-
-AndroidManifest.prototype.getVersionCode = function() {
- return this.doc.getroot().attrib['android:versionCode'];
-};
-
-AndroidManifest.prototype.setVersionCode = function(versionCode) {
- this.doc.getroot().attrib['android:versionCode'] = versionCode;
- return this;
-};
-
-AndroidManifest.prototype.getPackageId = function() {
- /*jshint -W069 */
- return this.doc.getroot().attrib['package'];
- /*jshint +W069 */
-};
-
-AndroidManifest.prototype.setPackageId = function(pkgId) {
- /*jshint -W069 */
- this.doc.getroot().attrib['package'] = pkgId;
- /*jshint +W069 */
- return this;
-};
-
-AndroidManifest.prototype.getActivity = function() {
- var activity = this.doc.getroot().find('./application/activity');
- return {
- getName: function () {
- return activity.attrib['android:name'];
- },
- setName: function (name) {
- if (!name) {
- delete activity.attrib['android:name'];
- } else {
- activity.attrib['android:name'] = name;
- }
- return this;
- },
- getOrientation: function () {
- return activity.attrib['android:screenOrientation'];
- },
- setOrientation: function (orientation) {
- if (!orientation || orientation.toLowerCase() === DEFAULT_ORIENTATION) {
- delete activity.attrib['android:screenOrientation'];
- } else {
- activity.attrib['android:screenOrientation'] = orientation;
- }
- return this;
- },
- getLaunchMode: function () {
- return activity.attrib['android:launchMode'];
- },
- setLaunchMode: function (launchMode) {
- if (!launchMode) {
- delete activity.attrib['android:launchMode'];
- } else {
- activity.attrib['android:launchMode'] = launchMode;
- }
- return this;
- }
- };
-};
-
-['minSdkVersion', 'maxSdkVersion', 'targetSdkVersion']
-.forEach(function(sdkPrefName) {
- // Copy variable reference to avoid closure issues
- var prefName = sdkPrefName;
-
- AndroidManifest.prototype['get' + capitalize(prefName)] = function() {
- var usesSdk = this.doc.getroot().find('./uses-sdk');
- return usesSdk && usesSdk.attrib['android:' + prefName];
- };
-
- AndroidManifest.prototype['set' + capitalize(prefName)] = function(prefValue) {
- var usesSdk = this.doc.getroot().find('./uses-sdk');
-
- if (!usesSdk && prefValue) { // if there is no required uses-sdk element, we should create it first
- usesSdk = new et.Element('uses-sdk');
- this.doc.getroot().append(usesSdk);
- }
-
- if (prefValue) {
- usesSdk.attrib['android:' + prefName] = prefValue;
- }
-
- return this;
- };
-});
-
-AndroidManifest.prototype.getDebuggable = function() {
- return this.doc.getroot().find('./application').attrib['android:debuggable'] === 'true';
-};
-
-AndroidManifest.prototype.setDebuggable = function(value) {
- var application = this.doc.getroot().find('./application');
- if (value) {
- application.attrib['android:debuggable'] = 'true';
- } else {
- // The default value is "false", so we can remove attribute at all.
- delete application.attrib['android:debuggable'];
- }
- return this;
-};
-
-/**
- * Writes manifest to disk syncronously. If filename is specified, then manifest
- * will be written to that file
- *
- * @param {String} [destPath] File to write manifest to. If omitted,
- * manifest will be written to file it has been read from.
- */
-AndroidManifest.prototype.write = function(destPath) {
- fs.writeFileSync(destPath || this.path, this.doc.write({indent: 4}), 'utf-8');
-};
-
-module.exports = AndroidManifest;
-
-function capitalize (str) {
- return str.charAt(0).toUpperCase() + str.slice(1);
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/AndroidProject.js b/StoneIsland/platforms/android/cordova/lib/AndroidProject.js
deleted file mode 100644
index fa1c6129..00000000
--- a/StoneIsland/platforms/android/cordova/lib/AndroidProject.js
+++ /dev/null
@@ -1,210 +0,0 @@
-/**
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var fs = require('fs');
-var path = require('path');
-var properties_parser = require('properties-parser');
-var AndroidManifest = require('./AndroidManifest');
-var AndroidStudio = require('./AndroidStudio');
-var pluginHandlers = require('./pluginHandlers');
-
-var projectFileCache = {};
-
-function addToPropertyList(projectProperties, key, value) {
- var i = 1;
- while (projectProperties.get(key + '.' + i))
- i++;
-
- projectProperties.set(key + '.' + i, value);
- projectProperties.dirty = true;
-}
-
-function removeFromPropertyList(projectProperties, key, value) {
- var i = 1;
- var currentValue;
- while ((currentValue = projectProperties.get(key + '.' + i))) {
- if (currentValue === value) {
- while ((currentValue = projectProperties.get(key + '.' + (i + 1)))) {
- projectProperties.set(key + '.' + i, currentValue);
- i++;
- }
- projectProperties.set(key + '.' + i);
- break;
- }
- i++;
- }
- projectProperties.dirty = true;
-}
-
-function getRelativeLibraryPath (parentDir, subDir) {
- var libraryPath = path.relative(parentDir, subDir);
- return (path.sep == '\\') ? libraryPath.replace(/\\/g, '/') : libraryPath;
-}
-
-function AndroidProject(projectDir) {
- this._propertiesEditors = {};
- this._subProjectDirs = {};
- this._dirty = false;
- this.projectDir = projectDir;
- this.platformWww = path.join(this.projectDir, 'platform_www');
- this.www = path.join(this.projectDir, 'assets/www');
- if(AndroidStudio.isAndroidStudioProject(projectDir) === true) {
- this.www = path.join(this.projectDir, 'app/src/main/assets/www');
- }
-}
-
-AndroidProject.getProjectFile = function (projectDir) {
- if (!projectFileCache[projectDir]) {
- projectFileCache[projectDir] = new AndroidProject(projectDir);
- }
-
- return projectFileCache[projectDir];
-};
-
-AndroidProject.purgeCache = function (projectDir) {
- if (projectDir) {
- delete projectFileCache[projectDir];
- } else {
- projectFileCache = {};
- }
-};
-
-/**
- * Reads the package name out of the Android Manifest file
- *
- * @param {String} projectDir The absolute path to the directory containing the project
- *
- * @return {String} The name of the package
- */
-AndroidProject.prototype.getPackageName = function() {
- var manifestPath = path.join(this.projectDir, 'AndroidManifest.xml');
- if(AndroidStudio.isAndroidStudioProject(this.projectDir) === true) {
- manifestPath = path.join(this.projectDir, 'app/src/main/AndroidManifest.xml');
- }
- return new AndroidManifest(manifestPath).getPackageId();
-};
-
-AndroidProject.prototype.getCustomSubprojectRelativeDir = function(plugin_id, src) {
- // All custom subprojects are prefixed with the last portion of the package id.
- // This is to avoid collisions when opening multiple projects in Eclipse that have subprojects with the same name.
- var packageName = this.getPackageName();
- var lastDotIndex = packageName.lastIndexOf('.');
- var prefix = packageName.substring(lastDotIndex + 1);
- var subRelativeDir = path.join(plugin_id, prefix + '-' + path.basename(src));
- return subRelativeDir;
-};
-
-AndroidProject.prototype.addSubProject = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var subProjectFile = path.resolve(subDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- // TODO: Setting the target needs to happen only for pre-3.7.0 projects
- if (fs.existsSync(subProjectFile)) {
- var subProperties = this._getPropertiesFile(subProjectFile);
- subProperties.set('target', parentProperties.get('target'));
- subProperties.dirty = true;
- this._subProjectDirs[subDir] = true;
- }
- addToPropertyList(parentProperties, 'android.library.reference', getRelativeLibraryPath(parentDir, subDir));
-
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeSubProject = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'android.library.reference', getRelativeLibraryPath(parentDir, subDir));
- delete this._subProjectDirs[subDir];
- this._dirty = true;
-};
-
-AndroidProject.prototype.addGradleReference = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- addToPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir));
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeGradleReference = function(parentDir, subDir) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'cordova.gradle.include', getRelativeLibraryPath(parentDir, subDir));
- this._dirty = true;
-};
-
-AndroidProject.prototype.addSystemLibrary = function(parentDir, value) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- addToPropertyList(parentProperties, 'cordova.system.library', value);
- this._dirty = true;
-};
-
-AndroidProject.prototype.removeSystemLibrary = function(parentDir, value) {
- var parentProjectFile = path.resolve(parentDir, 'project.properties');
- var parentProperties = this._getPropertiesFile(parentProjectFile);
- removeFromPropertyList(parentProperties, 'cordova.system.library', value);
- this._dirty = true;
-};
-
-AndroidProject.prototype.write = function() {
- if (!this._dirty) {
- return;
- }
- this._dirty = false;
-
- for (var filename in this._propertiesEditors) {
- var editor = this._propertiesEditors[filename];
- if (editor.dirty) {
- fs.writeFileSync(filename, editor.toString());
- editor.dirty = false;
- }
- }
-};
-
-AndroidProject.prototype._getPropertiesFile = function (filename) {
- if (!this._propertiesEditors[filename]) {
- if (fs.existsSync(filename)) {
- this._propertiesEditors[filename] = properties_parser.createEditor(filename);
- } else {
- this._propertiesEditors[filename] = properties_parser.createEditor();
- }
- }
-
- return this._propertiesEditors[filename];
-};
-
-AndroidProject.prototype.getInstaller = function (type) {
- return pluginHandlers.getInstaller(type);
-};
-
-AndroidProject.prototype.getUninstaller = function (type) {
- return pluginHandlers.getUninstaller(type);
-};
-
-/*
- * This checks if an Android project is clean or has old build artifacts
- */
-
-AndroidProject.prototype.isClean = function() {
- var build_path = path.join(this.projectDir, 'build');
- //If the build directory doesn't exist, it's clean
- return !(fs.existsSync(build_path));
-};
-
-module.exports = AndroidProject;
diff --git a/StoneIsland/platforms/android/cordova/lib/AndroidStudio.js b/StoneIsland/platforms/android/cordova/lib/AndroidStudio.js
deleted file mode 100644
index 335b334b..00000000
--- a/StoneIsland/platforms/android/cordova/lib/AndroidStudio.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * This is a simple routine that checks if project is an Android Studio Project
- *
- * @param {String} root Root folder of the project
- */
-
-/*jshint esnext: false */
-
-var path = require('path');
-var fs = require('fs');
-var CordovaError = require('cordova-common').CordovaError;
-
-module.exports.isAndroidStudioProject = function isAndroidStudioProject(root) {
- var eclipseFiles = ['AndroidManifest.xml', 'libs', 'res', 'project.properties', 'platform_www'];
- var androidStudioFiles = ['app', 'gradle', 'app/src/main/res'];
-
- // assume it is an AS project and not an Eclipse project
- var isEclipse = false;
- var isAS = true;
-
- if(!fs.existsSync(root)) {
- throw new CordovaError('AndroidStudio.js:inAndroidStudioProject root does not exist: ' + root);
- }
-
- // if any of the following exists, then we are not an ASProj
- eclipseFiles.forEach(function(file) {
- if(fs.existsSync(path.join(root, file))) {
- isEclipse = true;
- }
- });
-
- // if it is NOT an eclipse project, check that all required files exist
- if(!isEclipse) {
- androidStudioFiles.forEach(function(file){
- if(!fs.existsSync(path.join(root, file))) {
- console.log('missing file :: ' + file);
- isAS = false;
- }
- });
- }
- return (!isEclipse && isAS);
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/android_sdk.js b/StoneIsland/platforms/android/cordova/lib/android_sdk.js
deleted file mode 100755
index a1a806a6..00000000
--- a/StoneIsland/platforms/android/cordova/lib/android_sdk.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q'),
- superspawn = require('cordova-common').superspawn;
-
-var suffix_number_regex = /(\d+)$/;
-// Used for sorting Android targets, example strings to sort:
-// android-19
-// android-L
-// Google Inc.:Google APIs:20
-// Google Inc.:Glass Development Kit Preview:20
-// The idea is to sort based on largest "suffix" number - meaning the bigger
-// the number at the end, the more recent the target, the closer to the
-// start of the array.
-function sort_by_largest_numerical_suffix(a, b) {
- var suffix_a = a.match(suffix_number_regex);
- var suffix_b = b.match(suffix_number_regex);
- if (suffix_a && suffix_b) {
- // If the two targets being compared have suffixes, return less than
- // zero, or greater than zero, based on which suffix is larger.
- return (parseInt(suffix_a[1]) > parseInt(suffix_b[1]) ? -1 : 1);
- } else {
- // If no suffix numbers were detected, leave the order as-is between
- // elements a and b.
- return 0;
- }
-}
-
-module.exports.print_newest_available_sdk_target = function() {
- return module.exports.list_targets()
- .then(function(targets) {
- targets.sort(sort_by_largest_numerical_suffix);
- console.log(targets[0]);
- });
-};
-
-module.exports.version_string_to_api_level = {
- '4.0': 14,
- '4.0.3': 15,
- '4.1': 16,
- '4.2': 17,
- '4.3': 18,
- '4.4': 19,
- '4.4W': 20,
- '5.0': 21,
- '5.1': 22,
- '6.0': 23,
- '7.0': 24,
- '7.1.1': 25
-};
-
-function parse_targets(output) {
- var target_out = output.split('\n');
- var targets = [];
- for (var i = target_out.length - 1; i >= 0; i--) {
- if(target_out[i].match(/id:/)) { // if "id:" is in the line...
- targets.push(target_out[i].match(/"(.+)"/)[1]); //.. match whatever is in quotes.
- }
- }
- return targets;
-}
-
-module.exports.list_targets_with_android = function() {
- return superspawn.spawn('android', ['list', 'target'])
- .then(parse_targets);
-};
-
-module.exports.list_targets_with_avdmanager = function() {
- return superspawn.spawn('avdmanager', ['list', 'target'])
- .then(parse_targets);
-};
-
-module.exports.list_targets = function() {
- return module.exports.list_targets_with_avdmanager()
- .catch(function(err) {
- // If there's an error, like avdmanager could not be found, we can try
- // as a last resort, to run `android`, in case this is a super old
- // SDK installation.
- if (err && (err.code == 'ENOENT' || (err.stderr && err.stderr.match(/not recognized/)))) {
- return module.exports.list_targets_with_android();
- } else throw err;
- })
- .then(function(targets) {
- if (targets.length === 0) {
- return Q.reject(new Error('No android targets (SDKs) installed!'));
- }
- return targets;
- });
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/build.js b/StoneIsland/platforms/android/cordova/lib/build.js
deleted file mode 100644
index bd613da2..00000000
--- a/StoneIsland/platforms/android/cordova/lib/build.js
+++ /dev/null
@@ -1,301 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q'),
- path = require('path'),
- fs = require('fs'),
- nopt = require('nopt');
-
-var Adb = require('./Adb');
-
-var builders = require('./builders/builders');
-var events = require('cordova-common').events;
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-
-function parseOpts(options, resolvedTarget, projectRoot) {
- options = options || {};
- options.argv = nopt({
- gradle: Boolean,
- ant: Boolean,
- prepenv: Boolean,
- versionCode: String,
- minSdkVersion: String,
- gradleArg: [String, Array],
- keystore: path,
- alias: String,
- storePassword: String,
- password: String,
- keystoreType: String
- }, {}, options.argv, 0);
-
- var ret = {
- buildType: options.release ? 'release' : 'debug',
- buildMethod: process.env.ANDROID_BUILD || 'gradle',
- prepEnv: options.argv.prepenv,
- arch: resolvedTarget && resolvedTarget.arch,
- extraArgs: []
- };
-
- if (options.argv.ant || options.argv.gradle)
- ret.buildMethod = options.argv.ant ? 'ant' : 'gradle';
-
- if (options.nobuild) ret.buildMethod = 'none';
-
- if (options.argv.versionCode)
- ret.extraArgs.push('-PcdvVersionCode=' + options.argv.versionCode);
-
- if (options.argv.minSdkVersion)
- ret.extraArgs.push('-PcdvMinSdkVersion=' + options.argv.minSdkVersion);
-
- if (options.argv.gradleArg) {
- ret.extraArgs = ret.extraArgs.concat(options.argv.gradleArg);
- }
-
- var packageArgs = {};
-
- if (options.argv.keystore)
- packageArgs.keystore = path.relative(projectRoot, path.resolve(options.argv.keystore));
-
- ['alias','storePassword','password','keystoreType'].forEach(function (flagName) {
- if (options.argv[flagName])
- packageArgs[flagName] = options.argv[flagName];
- });
-
- var buildConfig = options.buildConfig;
-
- // If some values are not specified as command line arguments - use build config to supplement them.
- // Command line arguemnts have precedence over build config.
- if (buildConfig) {
- if (!fs.existsSync(buildConfig)) {
- throw new Error('Specified build config file does not exist: ' + buildConfig);
- }
- events.emit('log', 'Reading build config file: '+ path.resolve(buildConfig));
- var buildjson = fs.readFileSync(buildConfig, 'utf8');
- var config = JSON.parse(buildjson.replace(/^\ufeff/, '')); // Remove BOM
- if (config.android && config.android[ret.buildType]) {
- var androidInfo = config.android[ret.buildType];
- if(androidInfo.keystore && !packageArgs.keystore) {
- if(androidInfo.keystore.substr(0,1) === '~') {
- androidInfo.keystore = process.env.HOME + androidInfo.keystore.substr(1);
- }
- packageArgs.keystore = path.resolve(path.dirname(buildConfig), androidInfo.keystore);
- events.emit('log', 'Reading the keystore from: ' + packageArgs.keystore);
- }
-
- ['alias', 'storePassword', 'password','keystoreType'].forEach(function (key){
- packageArgs[key] = packageArgs[key] || androidInfo[key];
- });
- }
- }
-
- if (packageArgs.keystore && packageArgs.alias) {
- ret.packageInfo = new PackageInfo(packageArgs.keystore, packageArgs.alias, packageArgs.storePassword,
- packageArgs.password, packageArgs.keystoreType);
- }
-
- if(!ret.packageInfo) {
- if(Object.keys(packageArgs).length > 0) {
- events.emit('warn', '\'keystore\' and \'alias\' need to be specified to generate a signed archive.');
- }
- }
-
- return ret;
-}
-
-/*
- * Builds the project with the specifed options
- * Returns a promise.
- */
-module.exports.runClean = function(options) {
- var opts = parseOpts(options, null, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- return builder.clean(opts);
- });
-};
-
-/**
- * Builds the project with the specifed options.
- *
- * @param {BuildOptions} options A set of options. See PlatformApi.build
- * method documentation for reference.
- * @param {Object} optResolvedTarget A deployment target. Used to pass
- * target architecture from upstream 'run' call. TODO: remove this option in
- * favor of setting buildOptions.archs field.
- *
- * @return {Promise<Object>} Promise, resolved with built packages
- * information.
- */
-module.exports.run = function(options, optResolvedTarget) {
- var opts = parseOpts(options, optResolvedTarget, this.root);
- var builder = builders.getBuilder(opts.buildMethod);
- return builder.prepEnv(opts)
- .then(function() {
- if (opts.prepEnv) {
- events.emit('verbose', 'Build file successfully prepared.');
- return;
- }
- return builder.build(opts)
- .then(function() {
- var apkPaths = builder.findOutputApks(opts.buildType, opts.arch);
- events.emit('log', 'Built the following apk(s): \n\t' + apkPaths.join('\n\t'));
- return {
- apkPaths: apkPaths,
- buildType: opts.buildType,
- buildMethod: opts.buildMethod
- };
- });
- });
-};
-
-/*
- * Detects the architecture of a device/emulator
- * Returns "arm" or "x86".
- */
-module.exports.detectArchitecture = function(target) {
- function helper() {
- return Adb.shell(target, 'cat /proc/cpuinfo')
- .then(function(output) {
- return /intel/i.exec(output) ? 'x86' : 'arm';
- });
- }
- // It sometimes happens (at least on OS X), that this command will hang forever.
- // To fix it, either unplug & replug device, or restart adb server.
- return helper()
- .timeout(1000, new CordovaError('Device communication timed out. Try unplugging & replugging the device.'))
- .then(null, function(err) {
- if (/timed out/.exec('' + err)) {
- // adb kill-server doesn't seem to do the trick.
- // Could probably find a x-platform version of killall, but I'm not actually
- // sure that this scenario even happens on non-OSX machines.
- events.emit('verbose', 'adb timed out while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- // The double kill is sadly often necessary, at least on mac.
- events.emit('warn', 'adb timed out a second time while detecting device/emulator architecture. Killing adb and trying again.');
- return spawn('killall', ['adb'])
- .then(function() {
- return helper()
- .then(null, function() {
- return Q.reject(new CordovaError('adb timed out a third time while detecting device/emulator architecture. Try unplugging & replugging the device.'));
- });
- });
- });
- }, function() {
- // For non-killall OS's.
- return Q.reject(err);
- });
- }
- throw err;
- });
-};
-
-module.exports.findBestApkForArchitecture = function(buildResults, arch) {
- var paths = buildResults.apkPaths.filter(function(p) {
- var apkName = path.basename(p);
- if (buildResults.buildType == 'debug') {
- return /-debug/.exec(apkName);
- }
- return !/-debug/.exec(apkName);
- });
- var archPattern = new RegExp('-' + arch);
- var hasArchPattern = /-x86|-arm/;
- for (var i = 0; i < paths.length; ++i) {
- var apkName = path.basename(paths[i]);
- if (hasArchPattern.exec(apkName)) {
- if (archPattern.exec(apkName)) {
- return paths[i];
- }
- } else {
- return paths[i];
- }
- }
- throw new Error('Could not find apk architecture: ' + arch + ' build-type: ' + buildResults.buildType);
-};
-
-function PackageInfo(keystore, alias, storePassword, password, keystoreType) {
- this.keystore = {
- 'name': 'key.store',
- 'value': keystore
- };
- this.alias = {
- 'name': 'key.alias',
- 'value': alias
- };
- if (storePassword) {
- this.storePassword = {
- 'name': 'key.store.password',
- 'value': storePassword
- };
- }
- if (password) {
- this.password = {
- 'name': 'key.alias.password',
- 'value': password
- };
- }
- if (keystoreType) {
- this.keystoreType = {
- 'name': 'key.store.type',
- 'value': keystoreType
- };
- }
-}
-
-PackageInfo.prototype = {
- toProperties: function() {
- var self = this;
- var result = '';
- Object.keys(self).forEach(function(key) {
- result += self[key].name;
- result += '=';
- result += self[key].value.replace(/\\/g, '\\\\');
- result += '\n';
- });
- return result;
- }
-};
-
-module.exports.help = function() {
- console.log('Usage: ' + path.relative(process.cwd(), path.join('../build')) + ' [flags] [Signed APK flags]');
- console.log('Flags:');
- console.log(' \'--debug\': will build project in debug mode (default)');
- console.log(' \'--release\': will build project for release');
- console.log(' \'--ant\': will build project with ant');
- console.log(' \'--gradle\': will build project with gradle (default)');
- console.log(' \'--nobuild\': will skip build process (useful when using run command)');
- console.log(' \'--prepenv\': don\'t build, but copy in build scripts where necessary');
- console.log(' \'--versionCode=#\': Override versionCode for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--minSdkVersion=#\': Override minSdkVersion for this build. Useful for uploading multiple APKs. Requires --gradle.');
- console.log(' \'--gradleArg=<gradle command line arg>\': Extra args to pass to the gradle command. Use one flag per arg. Ex. --gradleArg=-PcdvBuildMultipleApks=true');
- console.log('');
- console.log('Signed APK flags (overwrites debug/release-signing.proprties) :');
- console.log(' \'--keystore=<path to keystore>\': Key store used to build a signed archive. (Required)');
- console.log(' \'--alias=\': Alias for the key store. (Required)');
- console.log(' \'--storePassword=\': Password for the key store. (Optional - prompted)');
- console.log(' \'--password=\': Password for the key. (Optional - prompted)');
- console.log(' \'--keystoreType\': Type of the keystore. (Optional)');
- process.exit(0);
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/builders/AntBuilder.js b/StoneIsland/platforms/android/cordova/lib/builders/AntBuilder.js
deleted file mode 100644
index 4e0f71ab..00000000
--- a/StoneIsland/platforms/android/cordova/lib/builders/AntBuilder.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q');
-var fs = require('fs');
-var path = require('path');
-var util = require('util');
-var shell = require('shelljs');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var check_reqs = require('../check_reqs');
-
-var SIGNING_PROPERTIES = '-signing.properties';
-var MARKER = 'YOUR CHANGES WILL BE ERASED!';
-var TEMPLATE =
- '# This file is automatically generated.\n' +
- '# Do not modify this file -- ' + MARKER + '\n';
-
-var GenericBuilder = require('./GenericBuilder');
-
-function AntBuilder (projectRoot) {
- GenericBuilder.call(this, projectRoot);
-
- this.binDirs = {ant: this.binDirs.ant};
-}
-
-util.inherits(AntBuilder, GenericBuilder);
-
-AntBuilder.prototype.getArgs = function(cmd, opts) {
- var args = [cmd, '-f', path.join(this.root, 'build.xml')];
- // custom_rules.xml is required for incremental builds.
- if (hasCustomRules(this.root)) {
- args.push('-Dout.dir=ant-build', '-Dgen.absolute.dir=ant-gen');
- }
- if(opts.packageInfo) {
- args.push('-propertyfile=' + path.join(this.root, opts.buildType + SIGNING_PROPERTIES));
- }
- return args;
-};
-
-AntBuilder.prototype.prepEnv = function(opts) {
- var self = this;
- return check_reqs.check_ant()
- .then(function() {
- // Copy in build.xml on each build so that:
- // A) we don't require the Android SDK at project creation time, and
- // B) we always use the SDK's latest version of it.
- /*jshint -W069 */
- var sdkDir = process.env['ANDROID_HOME'];
- /*jshint +W069 */
- var buildTemplate = fs.readFileSync(path.join(sdkDir, 'tools', 'lib', 'build.template'), 'utf8');
- function writeBuildXml(projectPath) {
- var newData = buildTemplate.replace('PROJECT_NAME', self.extractRealProjectNameFromManifest());
- fs.writeFileSync(path.join(projectPath, 'build.xml'), newData);
- if (!fs.existsSync(path.join(projectPath, 'local.properties'))) {
- fs.writeFileSync(path.join(projectPath, 'local.properties'), TEMPLATE);
- }
- }
- writeBuildXml(self.root);
- var propertiesObj = self.readProjectProperties();
- var subProjects = propertiesObj.libs;
- for (var i = 0; i < subProjects.length; ++i) {
- writeBuildXml(path.join(self.root, subProjects[i]));
- }
- if (propertiesObj.systemLibs.length > 0) {
- throw new CordovaError('Project contains at least one plugin that requires a system library. This is not supported with ANT. Use gradle instead.');
- }
-
- var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
- var propertiesFilePath = path.join(self.root, propertiesFile);
- if (opts.packageInfo) {
- fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
- } else if(isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
- });
-};
-
-/*
- * Builds the project with ant.
- * Returns a promise.
- */
-AntBuilder.prototype.build = function(opts) {
- // Without our custom_rules.xml, we need to clean before building.
- var ret = Q();
- if (!hasCustomRules(this.root)) {
- // clean will call check_ant() for us.
- ret = this.clean(opts);
- }
-
- var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
- return check_reqs.check_ant()
- .then(function() {
- return spawn('ant', args, {stdio: 'pipe'});
- }).progress(function (stdio){
- if (stdio.stderr) {
- process.stderr.write(stdio.stderr);
- } else {
- process.stdout.write(stdio.stdout);
- }
- }).catch(function (error) {
- if (error.toString().indexOf('Unable to resolve project target') >= 0) {
- return check_reqs.check_android_target(error).then(function() {
- // If due to some odd reason - check_android_target succeeds
- // we should still fail here.
- return Q.reject(error);
- });
- }
- return Q.reject(error);
- });
-};
-
-AntBuilder.prototype.clean = function(opts) {
- var args = this.getArgs('clean', opts);
- var self = this;
- return check_reqs.check_ant()
- .then(function() {
- return spawn('ant', args, {stdio: 'inherit'});
- })
- .then(function () {
- shell.rm('-rf', path.join(self.root, 'out'));
-
- ['debug', 'release'].forEach(function(config) {
- var propertiesFilePath = path.join(self.root, config + SIGNING_PROPERTIES);
- if(isAutoGenerated(propertiesFilePath)){
- shell.rm('-f', propertiesFilePath);
- }
- });
- });
-};
-
-module.exports = AntBuilder;
-
-function hasCustomRules(projectRoot) {
- return fs.existsSync(path.join(projectRoot, 'custom_rules.xml'));
-}
-
-function isAutoGenerated(file) {
- return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0;
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/builders/GenericBuilder.js b/StoneIsland/platforms/android/cordova/lib/builders/GenericBuilder.js
deleted file mode 100644
index 362da431..00000000
--- a/StoneIsland/platforms/android/cordova/lib/builders/GenericBuilder.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q');
-var fs = require('fs');
-var path = require('path');
-var shell = require('shelljs');
-var events = require('cordova-common').events;
-var CordovaError = require('cordova-common').CordovaError;
-
-function GenericBuilder (projectDir) {
- this.root = projectDir || path.resolve(__dirname, '../../..');
- this.binDirs = {
- ant: path.join(this.root, hasCustomRules(this.root) ? 'ant-build' : 'bin'),
- gradle: path.join(this.root, 'build', 'outputs', 'apk')
- };
-}
-
-function hasCustomRules(projectRoot) {
- return fs.existsSync(path.join(projectRoot, 'custom_rules.xml'));
-}
-
-GenericBuilder.prototype.prepEnv = function() {
- return Q();
-};
-
-GenericBuilder.prototype.build = function() {
- events.emit('log', 'Skipping build...');
- return Q(null);
-};
-
-GenericBuilder.prototype.clean = function() {
- return Q();
-};
-
-GenericBuilder.prototype.findOutputApks = function(build_type, arch) {
- var self = this;
- return Object.keys(this.binDirs)
- .reduce(function (result, builderName) {
- var binDir = self.binDirs[builderName];
- return result.concat(findOutputApksHelper(binDir, build_type, builderName === 'ant' ? null : arch));
- }, [])
- .sort(apkSorter);
-};
-
-GenericBuilder.prototype.readProjectProperties = function () {
- function findAllUniq(data, r) {
- var s = {};
- var m;
- while ((m = r.exec(data))) {
- s[m[1]] = 1;
- }
- return Object.keys(s);
- }
-
- var data = fs.readFileSync(path.join(this.root, 'project.properties'), 'utf8');
- return {
- libs: findAllUniq(data, /^\s*android\.library\.reference\.\d+=(.*)(?:\s|$)/mg),
- gradleIncludes: findAllUniq(data, /^\s*cordova\.gradle\.include\.\d+=(.*)(?:\s|$)/mg),
- systemLibs: findAllUniq(data, /^\s*cordova\.system\.library\.\d+=(.*)(?:\s|$)/mg)
- };
-};
-
-GenericBuilder.prototype.extractRealProjectNameFromManifest = function () {
- var manifestPath = path.join(this.root, 'AndroidManifest.xml');
- var manifestData = fs.readFileSync(manifestPath, 'utf8');
- var m = /<manifest[\s\S]*?package\s*=\s*"(.*?)"/i.exec(manifestData);
- if (!m) {
- throw new CordovaError('Could not find package name in ' + manifestPath);
- }
-
- var packageName=m[1];
- var lastDotIndex = packageName.lastIndexOf('.');
- return packageName.substring(lastDotIndex + 1);
-};
-
-module.exports = GenericBuilder;
-
-function apkSorter(fileA, fileB) {
- // De-prioritize unsigned builds
- var unsignedRE = /-unsigned/;
- if (unsignedRE.exec(fileA)) {
- return 1;
- } else if (unsignedRE.exec(fileB)) {
- return -1;
- }
-
- var timeDiff = fs.statSync(fileA).mtime - fs.statSync(fileB).mtime;
- return timeDiff === 0 ? fileA.length - fileB.length : timeDiff;
-}
-
-function findOutputApksHelper(dir, build_type, arch) {
- var shellSilent = shell.config.silent;
- shell.config.silent = true;
-
- var ret = shell.ls(path.join(dir, '*.apk'))
- .filter(function(candidate) {
- var apkName = path.basename(candidate);
- // Need to choose between release and debug .apk.
- if (build_type === 'debug') {
- return /-debug/.exec(apkName) && !/-unaligned|-unsigned/.exec(apkName);
- }
- if (build_type === 'release') {
- return /-release/.exec(apkName) && !/-unaligned/.exec(apkName);
- }
- return true;
- })
- .sort(apkSorter);
-
- shellSilent = shellSilent;
-
- if (ret.length === 0) {
- return ret;
- }
- // Assume arch-specific build if newest apk has -x86 or -arm.
- var archSpecific = !!/-x86|-arm/.exec(path.basename(ret[0]));
- // And show only arch-specific ones (or non-arch-specific)
- ret = ret.filter(function(p) {
- /*jshint -W018 */
- return !!/-x86|-arm/.exec(path.basename(p)) == archSpecific;
- /*jshint +W018 */
- });
-
- if (archSpecific && ret.length > 1 && arch) {
- ret = ret.filter(function(p) {
- return path.basename(p).indexOf('-' + arch) != -1;
- });
- }
-
- return ret;
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/builders/GradleBuilder.js b/StoneIsland/platforms/android/cordova/lib/builders/GradleBuilder.js
deleted file mode 100644
index 5b5ce13d..00000000
--- a/StoneIsland/platforms/android/cordova/lib/builders/GradleBuilder.js
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q');
-var fs = require('fs');
-var util = require('util');
-var path = require('path');
-var shell = require('shelljs');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var check_reqs = require('../check_reqs');
-
-var GenericBuilder = require('./GenericBuilder');
-
-var MARKER = 'YOUR CHANGES WILL BE ERASED!';
-var SIGNING_PROPERTIES = '-signing.properties';
-var TEMPLATE =
- '# This file is automatically generated.\n' +
- '# Do not modify this file -- ' + MARKER + '\n';
-
-function GradleBuilder (projectRoot) {
- GenericBuilder.call(this, projectRoot);
-
- this.binDirs = {gradle: this.binDirs.gradle};
-}
-
-util.inherits(GradleBuilder, GenericBuilder);
-
-GradleBuilder.prototype.getArgs = function(cmd, opts) {
- if (cmd == 'release') {
- cmd = 'cdvBuildRelease';
- } else if (cmd == 'debug') {
- cmd = 'cdvBuildDebug';
- }
- var args = [cmd, '-b', path.join(this.root, 'build.gradle')];
- if (opts.arch) {
- args.push('-PcdvBuildArch=' + opts.arch);
- }
-
- // 10 seconds -> 6 seconds
- args.push('-Dorg.gradle.daemon=true');
- // to allow dex in process
- args.push('-Dorg.gradle.jvmargs=-Xmx2048m');
- // allow NDK to be used - required by Gradle 1.5 plugin
- args.push('-Pandroid.useDeprecatedNdk=true');
- args.push.apply(args, opts.extraArgs);
- // Shaves another 100ms, but produces a "try at own risk" warning. Not worth it (yet):
- // args.push('-Dorg.gradle.parallel=true');
- return args;
-};
-
-/*
- * This returns a promise
- */
-
-GradleBuilder.prototype.runGradleWrapper = function(gradle_cmd) {
- var gradlePath = path.join(this.root, 'gradlew');
- var wrapperGradle = path.join(this.root, 'wrapper.gradle');
- if(fs.existsSync(gradlePath)) {
- //Literally do nothing, for some reason this works, while !fs.existsSync didn't on Windows
- } else {
- return spawn(gradle_cmd, ['-p', this.root, 'wrapper', '-b', wrapperGradle], {stdio: 'inherit'});
- }
-};
-
-
-// Makes the project buildable, minus the gradle wrapper.
-GradleBuilder.prototype.prepBuildFiles = function() {
- // Update the version of build.gradle in each dependent library.
- var pluginBuildGradle = path.join(this.root, 'cordova', 'lib', 'plugin-build.gradle');
- var propertiesObj = this.readProjectProperties();
- var subProjects = propertiesObj.libs;
- var checkAndCopy = function(subProject, root) {
- var subProjectGradle = path.join(root, subProject, 'build.gradle');
- // This is the future-proof way of checking if a file exists
- // This must be synchronous to satisfy a Travis test
- try {
- fs.accessSync(subProjectGradle, fs.F_OK);
- } catch (e) {
- shell.cp('-f', pluginBuildGradle, subProjectGradle);
- }
- };
- for (var i = 0; i < subProjects.length; ++i) {
- if (subProjects[i] !== 'CordovaLib') {
- checkAndCopy(subProjects[i], this.root);
- }
- }
- var name = this.extractRealProjectNameFromManifest();
- //Remove the proj.id/name- prefix from projects: https://issues.apache.org/jira/browse/CB-9149
- var settingsGradlePaths = subProjects.map(function(p){
- var realDir=p.replace(/[/\\]/g, ':');
- var libName=realDir.replace(name+'-','');
- var str='include ":'+libName+'"\n';
- if(realDir.indexOf(name+'-')!==-1)
- str+='project(":'+libName+'").projectDir = new File("'+p+'")\n';
- return str;
- });
-
- // Write the settings.gradle file.
- fs.writeFileSync(path.join(this.root, 'settings.gradle'),
- '// GENERATED FILE - DO NOT EDIT\n' +
- 'include ":"\n' + settingsGradlePaths.join(''));
- // Update dependencies within build.gradle.
- var buildGradle = fs.readFileSync(path.join(this.root, 'build.gradle'), 'utf8');
- var depsList = '';
- var root = this.root;
- var insertExclude = function(p) {
- var gradlePath = path.join(root, p, 'build.gradle');
- var projectGradleFile = fs.readFileSync(gradlePath, 'utf-8');
- if(projectGradleFile.indexOf('CordovaLib') != -1) {
- depsList += '{\n exclude module:("CordovaLib")\n }\n';
- }
- else {
- depsList +='\n';
- }
- };
- subProjects.forEach(function(p) {
- console.log('Subproject Path: ' + p);
- var libName=p.replace(/[/\\]/g, ':').replace(name+'-','');
- depsList += ' debugCompile(project(path: "' + libName + '", configuration: "debug"))';
- insertExclude(p);
- depsList += ' releaseCompile(project(path: "' + libName + '", configuration: "release"))';
- insertExclude(p);
- });
- // For why we do this mapping: https://issues.apache.org/jira/browse/CB-8390
- var SYSTEM_LIBRARY_MAPPINGS = [
- [/^\/?extras\/android\/support\/(.*)$/, 'com.android.support:support-$1:+'],
- [/^\/?google\/google_play_services\/libproject\/google-play-services_lib\/?$/, 'com.google.android.gms:play-services:+']
- ];
- propertiesObj.systemLibs.forEach(function(p) {
- var mavenRef;
- // It's already in gradle form if it has two ':'s
- if (/:.*:/.exec(p)) {
- mavenRef = p;
- } else {
- for (var i = 0; i < SYSTEM_LIBRARY_MAPPINGS.length; ++i) {
- var pair = SYSTEM_LIBRARY_MAPPINGS[i];
- if (pair[0].exec(p)) {
- mavenRef = p.replace(pair[0], pair[1]);
- break;
- }
- }
- if (!mavenRef) {
- throw new CordovaError('Unsupported system library (does not work with gradle): ' + p);
- }
- }
- depsList += ' compile "' + mavenRef + '"\n';
- });
- buildGradle = buildGradle.replace(/(SUB-PROJECT DEPENDENCIES START)[\s\S]*(\/\/ SUB-PROJECT DEPENDENCIES END)/, '$1\n' + depsList + ' $2');
- var includeList = '';
- propertiesObj.gradleIncludes.forEach(function(includePath) {
- includeList += 'apply from: "' + includePath + '"\n';
- });
- buildGradle = buildGradle.replace(/(PLUGIN GRADLE EXTENSIONS START)[\s\S]*(\/\/ PLUGIN GRADLE EXTENSIONS END)/, '$1\n' + includeList + '$2');
- fs.writeFileSync(path.join(this.root, 'build.gradle'), buildGradle);
-};
-
-GradleBuilder.prototype.prepEnv = function(opts) {
- var self = this;
- return check_reqs.check_gradle()
- .then(function(gradlePath) {
- return self.runGradleWrapper(gradlePath);
- }).then(function() {
- return self.prepBuildFiles();
- }).then(function() {
- // We now copy the gradle out of the framework
- // This is a dirty patch to get the build working
- /*
- var wrapperDir = path.join(self.root, 'CordovaLib');
- if (process.platform == 'win32') {
- shell.rm('-f', path.join(self.root, 'gradlew.bat'));
- shell.cp(path.join(wrapperDir, 'gradlew.bat'), self.root);
- } else {
- shell.rm('-f', path.join(self.root, 'gradlew'));
- shell.cp(path.join(wrapperDir, 'gradlew'), self.root);
- }
- shell.rm('-rf', path.join(self.root, 'gradle', 'wrapper'));
- shell.mkdir('-p', path.join(self.root, 'gradle'));
- shell.cp('-r', path.join(wrapperDir, 'gradle', 'wrapper'), path.join(self.root, 'gradle'));
-*/
- // If the gradle distribution URL is set, make sure it points to version we want.
- // If it's not set, do nothing, assuming that we're using a future version of gradle that we don't want to mess with.
- // For some reason, using ^ and $ don't work. This does the job, though.
- var distributionUrlRegex = /distributionUrl.*zip/;
- /*jshint -W069 */
- var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-3.3-all.zip';
- /*jshint +W069 */
- var gradleWrapperPropertiesPath = path.join(self.root, 'gradle', 'wrapper', 'gradle-wrapper.properties');
- shell.chmod('u+w', gradleWrapperPropertiesPath);
- shell.sed('-i', distributionUrlRegex, 'distributionUrl='+distributionUrl, gradleWrapperPropertiesPath);
-
- var propertiesFile = opts.buildType + SIGNING_PROPERTIES;
- var propertiesFilePath = path.join(self.root, propertiesFile);
- if (opts.packageInfo) {
- fs.writeFileSync(propertiesFilePath, TEMPLATE + opts.packageInfo.toProperties());
- } else if (isAutoGenerated(propertiesFilePath)) {
- shell.rm('-f', propertiesFilePath);
- }
- });
-};
-
-/*
- * Builds the project with gradle.
- * Returns a promise.
- */
-GradleBuilder.prototype.build = function(opts) {
- var wrapper = path.join(this.root, 'gradlew');
- var args = this.getArgs(opts.buildType == 'debug' ? 'debug' : 'release', opts);
-
- return spawn(wrapper, args, {stdio: 'pipe'})
- .progress(function (stdio){
- if (stdio.stderr) {
- /*
- * Workaround for the issue with Java printing some unwanted information to
- * stderr instead of stdout.
- * This function suppresses 'Picked up _JAVA_OPTIONS' message from being
- * printed to stderr. See https://issues.apache.org/jira/browse/CB-9971 for
- * explanation.
- */
- var suppressThisLine = /^Picked up _JAVA_OPTIONS: /i.test(stdio.stderr.toString());
- if (suppressThisLine) {
- return;
- }
- process.stderr.write(stdio.stderr);
- } else {
- process.stdout.write(stdio.stdout);
- }
- }).catch(function (error) {
- if (error.toString().indexOf('failed to find target with hash string') >= 0) {
- return check_reqs.check_android_target(error).then(function() {
- // If due to some odd reason - check_android_target succeeds
- // we should still fail here.
- return Q.reject(error);
- });
- }
- return Q.reject(error);
- });
-};
-
-GradleBuilder.prototype.clean = function(opts) {
- var builder = this;
- var wrapper = path.join(this.root, 'gradlew');
- var args = builder.getArgs('clean', opts);
- return Q().then(function() {
- return spawn(wrapper, args, {stdio: 'inherit'});
- })
- .then(function () {
- shell.rm('-rf', path.join(builder.root, 'out'));
-
- ['debug', 'release'].forEach(function(config) {
- var propertiesFilePath = path.join(builder.root, config + SIGNING_PROPERTIES);
- if(isAutoGenerated(propertiesFilePath)){
- shell.rm('-f', propertiesFilePath);
- }
- });
- });
-};
-
-module.exports = GradleBuilder;
-
-function isAutoGenerated(file) {
- return fs.existsSync(file) && fs.readFileSync(file, 'utf8').indexOf(MARKER) > 0;
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/builders/builders.js b/StoneIsland/platforms/android/cordova/lib/builders/builders.js
deleted file mode 100644
index 4921c49a..00000000
--- a/StoneIsland/platforms/android/cordova/lib/builders/builders.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var CordovaError = require('cordova-common').CordovaError;
-
-var knownBuilders = {
- ant: 'AntBuilder',
- gradle: 'GradleBuilder',
- none: 'GenericBuilder'
-};
-
-/**
- * Helper method that instantiates and returns a builder for specified build
- * type.
- *
- * @param {String} builderType Builder name to construct and return. Must
- * be one of 'ant', 'gradle' or 'none'
- *
- * @return {Builder} A builder instance for specified build type.
- */
-module.exports.getBuilder = function (builderType, projectRoot) {
- if (!knownBuilders[builderType])
- throw new CordovaError('Builder ' + builderType + ' is not supported.');
-
- try {
- var Builder = require('./' + knownBuilders[builderType]);
- return new Builder(projectRoot);
- } catch (err) {
- throw new CordovaError('Failed to instantiate ' + knownBuilders[builderType] + ' builder: ' + err);
- }
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/check_reqs.js b/StoneIsland/platforms/android/cordova/lib/check_reqs.js
deleted file mode 100644
index 1fd397ad..00000000
--- a/StoneIsland/platforms/android/cordova/lib/check_reqs.js
+++ /dev/null
@@ -1,432 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/* jshint sub:true */
-
-var shelljs = require('shelljs'),
- child_process = require('child_process'),
- Q = require('q'),
- path = require('path'),
- fs = require('fs'),
- os = require('os'),
- REPO_ROOT = path.join(__dirname, '..', '..', '..', '..'),
- PROJECT_ROOT = path.join(__dirname, '..', '..');
-var CordovaError = require('cordova-common').CordovaError;
-var superspawn = require('cordova-common').superspawn;
-var android_sdk = require('./android_sdk');
-
-function forgivingWhichSync(cmd) {
- try {
- return fs.realpathSync(shelljs.which(cmd));
- } catch (e) {
- return '';
- }
-}
-
-function tryCommand(cmd, errMsg, catchStderr) {
- var d = Q.defer();
- child_process.exec(cmd, function(err, stdout, stderr) {
- if (err) d.reject(new CordovaError(errMsg));
- // Sometimes it is necessary to return an stderr instead of stdout in case of success, since
- // some commands prints theirs output to stderr instead of stdout. 'javac' is the example
- else d.resolve((catchStderr ? stderr : stdout).trim());
- });
- return d.promise;
-}
-
-module.exports.isWindows = function() {
- return (os.platform() == 'win32');
-};
-
-module.exports.isDarwin = function() {
- return (os.platform() == 'darwin');
-};
-
-// Get valid target from framework/project.properties if run from this repo
-// Otherwise get target from project.properties file within a generated cordova-android project
-module.exports.get_target = function() {
- function extractFromFile(filePath) {
- var target = shelljs.grep(/\btarget=/, filePath);
- if (!target) {
- throw new Error('Could not find android target within: ' + filePath);
- }
- return target.split('=')[1].trim();
- }
- var repo_file = path.join(REPO_ROOT, 'framework', 'project.properties');
- if (fs.existsSync(repo_file)) {
- return extractFromFile(repo_file);
- }
- var project_file = path.join(PROJECT_ROOT, 'project.properties');
- if (fs.existsSync(project_file)) {
- // if no target found, we're probably in a project and project.properties is in PROJECT_ROOT.
- return extractFromFile(project_file);
- }
- throw new Error('Could not find android target in either ' + repo_file + ' nor ' + project_file);
-};
-
-// Returns a promise. Called only by build and clean commands.
-module.exports.check_ant = function() {
- return superspawn.spawn('ant', ['-version'])
- .then(function(output) {
- // Parse Ant version from command output
- return /version ((?:\d+\.)+(?:\d+))/i.exec(output)[1];
- }).catch(function(err) {
- throw new CordovaError('Failed to run `ant -version`. Make sure you have `ant` on your $PATH.');
- });
-};
-
-module.exports.get_gradle_wrapper = function() {
- var androidStudioPath;
- var i = 0;
- var foundStudio = false;
- var program_dir;
- if (module.exports.isDarwin()) {
- program_dir = fs.readdirSync('/Applications');
- while (i < program_dir.length && !foundStudio) {
- if (program_dir[i].startsWith('Android Studio')) {
- //TODO: Check for a specific Android Studio version, make sure it's not Canary
- androidStudioPath = path.join('/Applications', program_dir[i], 'Contents', 'gradle');
- foundStudio = true;
- } else { ++i; }
- }
- } else if (module.exports.isWindows()) {
- var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/';
- if (fs.existsSync(androidPath)) {
- program_dir = fs.readdirSync(androidPath);
- while (i < program_dir.length && !foundStudio) {
- if (program_dir[i].startsWith('Android Studio')) {
- foundStudio = true;
- androidStudioPath = path.join(process.env['ProgramFiles'], 'Android', program_dir[i], 'gradle');
- } else { ++i; }
- }
- }
- }
-
- if (androidStudioPath !== null && fs.existsSync(androidStudioPath)) {
- var dirs = fs.readdirSync(androidStudioPath);
- if(dirs[0].split('-')[0] == 'gradle') {
- return path.join(androidStudioPath, dirs[0], 'bin', 'gradle');
- }
- } else {
- //OK, let's try to check for Gradle!
- return forgivingWhichSync('gradle');
- }
-};
-
-// Returns a promise. Called only by build and clean commands.
-module.exports.check_gradle = function() {
- var sdkDir = process.env['ANDROID_HOME'];
- var d = Q.defer();
- if (!sdkDir)
- return Q.reject(new CordovaError('Could not find gradle wrapper within Android SDK. Could not find Android SDK directory.\n' +
- 'Might need to install Android SDK or set up \'ANDROID_HOME\' env variable.'));
-
- var gradlePath = module.exports.get_gradle_wrapper();
- if (gradlePath.length !== 0)
- d.resolve(gradlePath);
- else
- d.reject(new CordovaError('Could not find an installed version of Gradle either in Android Studio,\n' +
- 'or on your system to install the gradle wrapper. Please include gradle \n' +
- 'in your path, or install Android Studio'));
- return d.promise;
-};
-
-// Returns a promise.
-module.exports.check_java = function() {
- var javacPath = forgivingWhichSync('javac');
- var hasJavaHome = !!process.env['JAVA_HOME'];
- return Q().then(function() {
- if (hasJavaHome) {
- // Windows java installer doesn't add javac to PATH, nor set JAVA_HOME (ugh).
- if (!javacPath) {
- process.env['PATH'] += path.delimiter + path.join(process.env['JAVA_HOME'], 'bin');
- }
- } else {
- if (javacPath) {
- // OS X has a command for finding JAVA_HOME.
- var find_java = '/usr/libexec/java_home';
- var default_java_error_msg = 'Failed to find \'JAVA_HOME\' environment variable. Try setting setting it manually.';
- if (fs.existsSync(find_java)) {
- return superspawn.spawn(find_java)
- .then(function(stdout) {
- process.env['JAVA_HOME'] = stdout.trim();
- }).catch(function(err) {
- throw new CordovaError(default_java_error_msg);
- });
- } else {
- // See if we can derive it from javac's location.
- // fs.realpathSync is require on Ubuntu, which symplinks from /usr/bin -> JDK
- var maybeJavaHome = path.dirname(path.dirname(javacPath));
- if (fs.existsSync(path.join(maybeJavaHome, 'lib', 'tools.jar'))) {
- process.env['JAVA_HOME'] = maybeJavaHome;
- } else {
- throw new CordovaError(default_java_error_msg);
- }
- }
- } else if (module.exports.isWindows()) {
- // Try to auto-detect java in the default install paths.
- var oldSilent = shelljs.config.silent;
- shelljs.config.silent = true;
- var firstJdkDir =
- shelljs.ls(process.env['ProgramFiles'] + '\\java\\jdk*')[0] ||
- shelljs.ls('C:\\Program Files\\java\\jdk*')[0] ||
- shelljs.ls('C:\\Program Files (x86)\\java\\jdk*')[0];
- shelljs.config.silent = oldSilent;
- if (firstJdkDir) {
- // shelljs always uses / in paths.
- firstJdkDir = firstJdkDir.replace(/\//g, path.sep);
- if (!javacPath) {
- process.env['PATH'] += path.delimiter + path.join(firstJdkDir, 'bin');
- }
- process.env['JAVA_HOME'] = firstJdkDir;
- }
- }
- }
- }).then(function() {
- var msg =
- 'Failed to run "javac -version", make sure that you have a JDK installed.\n' +
- 'You can get it from: http://www.oracle.com/technetwork/java/javase/downloads.\n';
- if (process.env['JAVA_HOME']) {
- msg += 'Your JAVA_HOME is invalid: ' + process.env['JAVA_HOME'] + '\n';
- }
- // We use tryCommand with catchStderr = true, because
- // javac writes version info to stderr instead of stdout
- return tryCommand('javac -version', msg, true)
- .then(function (output) {
- //Let's check for at least Java 8, and keep it future proof so we can support Java 10
- var match = /javac ((?:1\.)(?:[8-9]\.)(?:\d+))|((?:1\.)(?:[1-9]\d+\.)(?:\d+))/i.exec(output);
- return match && match[1];
- });
- });
-};
-
-// Returns a promise.
-module.exports.check_android = function() {
- return Q().then(function() {
- var androidCmdPath = forgivingWhichSync('android');
- var adbInPath = forgivingWhichSync('adb');
- var avdmanagerInPath = forgivingWhichSync('avdmanager');
- var hasAndroidHome = !!process.env['ANDROID_HOME'] && fs.existsSync(process.env['ANDROID_HOME']);
- function maybeSetAndroidHome(value) {
- if (!hasAndroidHome && fs.existsSync(value)) {
- hasAndroidHome = true;
- process.env['ANDROID_HOME'] = value;
- }
- }
- // First ensure ANDROID_HOME is set
- // If we have no hints (nothing in PATH), try a few default locations
- if (!hasAndroidHome && !androidCmdPath && !adbInPath && !avdmanagerInPath) {
- if (module.exports.isWindows()) {
- // Android Studio 1.0 installer
- maybeSetAndroidHome(path.join(process.env['LOCALAPPDATA'], 'Android', 'sdk'));
- maybeSetAndroidHome(path.join(process.env['ProgramFiles'], 'Android', 'sdk'));
- // Android Studio pre-1.0 installer
- maybeSetAndroidHome(path.join(process.env['LOCALAPPDATA'], 'Android', 'android-studio', 'sdk'));
- maybeSetAndroidHome(path.join(process.env['ProgramFiles'], 'Android', 'android-studio', 'sdk'));
- // Stand-alone installer
- maybeSetAndroidHome(path.join(process.env['LOCALAPPDATA'], 'Android', 'android-sdk'));
- maybeSetAndroidHome(path.join(process.env['ProgramFiles'], 'Android', 'android-sdk'));
- } else if (module.exports.isDarwin()) {
- // Android Studio 1.0 installer
- maybeSetAndroidHome(path.join(process.env['HOME'], 'Library', 'Android', 'sdk'));
- // Android Studio pre-1.0 installer
- maybeSetAndroidHome('/Applications/Android Studio.app/sdk');
- // Stand-alone zip file that user might think to put under /Applications
- maybeSetAndroidHome('/Applications/android-sdk-macosx');
- maybeSetAndroidHome('/Applications/android-sdk');
- }
- if (process.env['HOME']) {
- // Stand-alone zip file that user might think to put under their home directory
- maybeSetAndroidHome(path.join(process.env['HOME'], 'android-sdk-macosx'));
- maybeSetAndroidHome(path.join(process.env['HOME'], 'android-sdk'));
- }
- }
- if (!hasAndroidHome) {
- // If we dont have ANDROID_HOME, but we do have some tools on the PATH, try to infer from the tooling PATH.
- var parentDir, grandParentDir;
- if (androidCmdPath) {
- parentDir = path.dirname(androidCmdPath);
- grandParentDir = path.dirname(parentDir);
- if (path.basename(parentDir) == 'tools' || fs.existsSync(path.join(grandParentDir, 'tools', 'android'))) {
- maybeSetAndroidHome(grandParentDir);
- } else {
- throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' +
- 'Detected \'android\' command at ' + parentDir + ' but no \'tools\' directory found near.\n' +
- 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'tools directory.');
- }
- }
- if (adbInPath) {
- parentDir = path.dirname(adbInPath);
- grandParentDir = path.dirname(parentDir);
- if (path.basename(parentDir) == 'platform-tools') {
- maybeSetAndroidHome(grandParentDir);
- } else {
- throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' +
- 'Detected \'adb\' command at ' + parentDir + ' but no \'platform-tools\' directory found near.\n' +
- 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'platform-tools directory.');
- }
- }
- if (avdmanagerInPath) {
- parentDir = path.dirname(avdmanagerInPath);
- grandParentDir = path.dirname(parentDir);
- if (path.basename(parentDir) == 'bin' && path.basename(grandParentDir) == 'tools') {
- maybeSetAndroidHome(path.dirname(grandParentDir));
- } else {
- throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' +
- 'Detected \'avdmanager\' command at ' + parentDir + ' but no \'tools' + path.sep + 'bin\' directory found near.\n' +
- 'Try reinstall Android SDK or update your PATH to include valid path to SDK' + path.sep + 'tools' + path.sep + 'bin directory.');
- }
- }
- }
- if (!process.env['ANDROID_HOME']) {
- throw new CordovaError('Failed to find \'ANDROID_HOME\' environment variable. Try setting setting it manually.\n' +
- 'Failed to find \'android\' command in your \'PATH\'. Try update your \'PATH\' to include path to valid SDK directory.');
- }
- if (!fs.existsSync(process.env['ANDROID_HOME'])) {
- throw new CordovaError('\'ANDROID_HOME\' environment variable is set to non-existent path: ' + process.env['ANDROID_HOME'] +
- '\nTry update it manually to point to valid SDK directory.');
- }
- // Next let's make sure relevant parts of the SDK tooling is in our PATH
- if (hasAndroidHome && !androidCmdPath) {
- process.env['PATH'] += path.delimiter + path.join(process.env['ANDROID_HOME'], 'tools');
- }
- if (hasAndroidHome && !adbInPath) {
- process.env['PATH'] += path.delimiter + path.join(process.env['ANDROID_HOME'], 'platform-tools');
- }
- if (hasAndroidHome && !avdmanagerInPath) {
- process.env['PATH'] += path.delimiter + path.join(process.env['ANDROID_HOME'], 'tools', 'bin');
- }
- return hasAndroidHome;
- });
-};
-
-// TODO: is this actually needed?
-module.exports.getAbsoluteAndroidCmd = function () {
- var cmd = forgivingWhichSync('android');
- if (cmd.length === 0) {
- cmd = forgivingWhichSync('sdkmanager');
- }
- if (module.exports.isWindows()) {
- return '"' + cmd + '"';
- }
- return cmd.replace(/(\s)/g, '\\$1');
-};
-
-module.exports.check_android_target = function(originalError) {
- // valid_target can look like:
- // android-19
- // android-L
- // Google Inc.:Google APIs:20
- // Google Inc.:Glass Development Kit Preview:20
- var desired_api_level = module.exports.get_target();
- return android_sdk.list_targets()
- .then(function(targets) {
- if (targets.indexOf(desired_api_level) >= 0) {
- return targets;
- }
- var androidCmd = module.exports.getAbsoluteAndroidCmd();
- var msg = 'Please install Android target / API level: "' + desired_api_level + '".\n\n' +
- 'Hint: Open the SDK manager by running: ' + androidCmd + '\n' +
- 'You will require:\n' +
- '1. "SDK Platform" for API level ' + desired_api_level + '\n' +
- '2. "Android SDK Platform-tools (latest)\n' +
- '3. "Android SDK Build-tools" (latest)';
- if (originalError) {
- msg = originalError + '\n' + msg;
- }
- throw new CordovaError(msg);
- });
-};
-
-// Returns a promise.
-module.exports.run = function() {
- return Q.all([this.check_java(), this.check_android()])
- .then(function(values) {
- console.log('ANDROID_HOME=' + process.env['ANDROID_HOME']);
- console.log('JAVA_HOME=' + process.env['JAVA_HOME']);
-
- if (!values[0]) {
- throw new CordovaError('Requirements check failed for JDK 1.8 or greater');
- }
-
- if (!values[1]) {
- throw new CordovaError('Requirements check failed for Android SDK');
- }
- });
-};
-
-
-/**
- * Object thar represents one of requirements for current platform.
- * @param {String} id The unique identifier for this requirements.
- * @param {String} name The name of requirements. Human-readable field.
- * @param {String} version The version of requirement installed. In some cases could be an array of strings
- * (for example, check_android_target returns an array of android targets installed)
- * @param {Boolean} installed Indicates whether the requirement is installed or not
- */
-var Requirement = function (id, name, version, installed) {
- this.id = id;
- this.name = name;
- this.installed = installed || false;
- this.metadata = {
- version: version,
- };
-};
-
-/**
- * Methods that runs all checks one by one and returns a result of checks
- * as an array of Requirement objects. This method intended to be used by cordova-lib check_reqs method
- *
- * @return Promise<Requirement[]> Array of requirements. Due to implementation, promise is always fulfilled.
- */
-module.exports.check_all = function() {
-
- var requirements = [
- new Requirement('java', 'Java JDK'),
- new Requirement('androidSdk', 'Android SDK'),
- new Requirement('androidTarget', 'Android target'),
- new Requirement('gradle', 'Gradle')
- ];
-
- var checkFns = [
- this.check_java,
- this.check_android,
- this.check_android_target,
- this.check_gradle
- ];
-
- // Then execute requirement checks one-by-one
- return checkFns.reduce(function (promise, checkFn, idx) {
- // Update each requirement with results
- var requirement = requirements[idx];
- return promise.then(checkFn)
- .then(function (version) {
- requirement.installed = true;
- requirement.metadata.version = version;
- }, function (err) {
- requirement.metadata.reason = err instanceof Error ? err.message : err;
- });
- }, Q())
- .then(function () {
- // When chain is completed, return requirements array to upstream API
- return requirements;
- });
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/device.js b/StoneIsland/platforms/android/cordova/lib/device.js
deleted file mode 100644
index 4b171db6..00000000
--- a/StoneIsland/platforms/android/cordova/lib/device.js
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q'),
- build = require('./build');
-var path = require('path');
-var Adb = require('./Adb');
-var AndroidManifest = require('./AndroidManifest');
-var spawn = require('cordova-common').superspawn.spawn;
-var CordovaError = require('cordova-common').CordovaError;
-var events = require('cordova-common').events;
-
-/**
- * Returns a promise for the list of the device ID's found
- * @param lookHarder When true, try restarting adb if no devices are found.
- */
-module.exports.list = function(lookHarder) {
- return Adb.devices()
- .then(function(list) {
- if (list.length === 0 && lookHarder) {
- // adb kill-server doesn't seem to do the trick.
- // Could probably find a x-platform version of killall, but I'm not actually
- // sure that this scenario even happens on non-OSX machines.
- return spawn('killall', ['adb'])
- .then(function() {
- events.emit('verbose', 'Restarting adb to see if more devices are detected.');
- return Adb.devices();
- }, function() {
- // For non-killall OS's.
- return list;
- });
- }
- return list;
- });
-};
-
-module.exports.resolveTarget = function(target) {
- return this.list(true)
- .then(function(device_list) {
- if (!device_list || !device_list.length) {
- return Q.reject(new CordovaError('Failed to deploy to device, no devices found.'));
- }
- // default device
- target = target || device_list[0];
-
- if (device_list.indexOf(target) < 0) {
- return Q.reject('ERROR: Unable to find target \'' + target + '\'.');
- }
-
- return build.detectArchitecture(target)
- .then(function(arch) {
- return { target: target, arch: arch, isEmulator: false };
- });
- });
-};
-
-/*
- * Installs a previously built application on the device
- * and launches it.
- * Returns a promise.
- */
-module.exports.install = function(target, buildResults) {
- return Q().then(function() {
- if (target && typeof target == 'object') {
- return target;
- }
- return module.exports.resolveTarget(target);
- }).then(function(resolvedTarget) {
- var apk_path = build.findBestApkForArchitecture(buildResults, resolvedTarget.arch);
- var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml'));
- var pkgName = manifest.getPackageId();
- var launchName = pkgName + '/.' + manifest.getActivity().getName();
- events.emit('log', 'Using apk: ' + apk_path);
- events.emit('log', 'Package name: ' + pkgName);
-
- return Adb.install(resolvedTarget.target, apk_path, {replace: true})
- .catch(function (error) {
- // CB-9557 CB-10157 only uninstall and reinstall app if the one that
- // is already installed on device was signed w/different certificate
- if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString()))
- throw error;
-
- events.emit('warn', 'Uninstalling app from device and reinstalling it again because the ' +
- 'installed app already signed with different key');
-
- // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
- // or the app doesn't installed at all, so no error catching needed.
- return Adb.uninstall(resolvedTarget.target, pkgName)
- .then(function() {
- return Adb.install(resolvedTarget.target, apk_path, {replace: true});
- });
- })
- .then(function() {
- //unlock screen
- return Adb.shell(resolvedTarget.target, 'input keyevent 82');
- }).then(function() {
- return Adb.start(resolvedTarget.target, launchName);
- }).then(function() {
- events.emit('log', 'LAUNCH SUCCESS');
- });
- });
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/emulator.js b/StoneIsland/platforms/android/cordova/lib/emulator.js
deleted file mode 100644
index 22209aa0..00000000
--- a/StoneIsland/platforms/android/cordova/lib/emulator.js
+++ /dev/null
@@ -1,532 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/* jshint sub:true */
-
-var retry = require('./retry');
-var build = require('./build');
-var path = require('path');
-var Adb = require('./Adb');
-var AndroidManifest = require('./AndroidManifest');
-var events = require('cordova-common').events;
-var superspawn = require('cordova-common').superspawn;
-var CordovaError = require('cordova-common').CordovaError;
-var shelljs = require('shelljs');
-var android_sdk = require('./android_sdk');
-var check_reqs = require('./check_reqs');
-
-var Q = require('q');
-var os = require('os');
-var fs = require('fs');
-var child_process = require('child_process');
-
-// constants
-var ONE_SECOND = 1000; // in milliseconds
-var ONE_MINUTE = 60 * ONE_SECOND; // in milliseconds
-var INSTALL_COMMAND_TIMEOUT = 5 * ONE_MINUTE; // in milliseconds
-var NUM_INSTALL_RETRIES = 3;
-var CHECK_BOOTED_INTERVAL = 3 * ONE_SECOND; // in milliseconds
-var EXEC_KILL_SIGNAL = 'SIGKILL';
-
-function forgivingWhichSync(cmd) {
- try {
- return fs.realpathSync(shelljs.which(cmd));
- } catch (e) {
- return '';
- }
-}
-
-module.exports.list_images_using_avdmanager = function () {
- return superspawn.spawn('avdmanager', ['list', 'avd'])
- .then(function(output) {
- var response = output.split('\n');
- var emulator_list = [];
- for (var i = 1; i < response.length; i++) {
- // To return more detailed information use img_obj
- var img_obj = {};
- if (response[i].match(/Name:\s/)) {
- img_obj['name'] = response[i].split('Name: ')[1].replace('\r', '');
- if (response[i + 1].match(/Device:\s/)) {
- i++;
- img_obj['device'] = response[i].split('Device: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/Path:\s/)) {
- i++;
- img_obj['path'] = response[i].split('Path: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/Target:\s/)) {
- i++;
- if (response[i + 1].match(/ABI:\s/)) {
- img_obj['abi'] = response[i + 1].split('ABI: ')[1].replace('\r', '');
- }
- // This next conditional just aims to match the old output of `android list avd`
- // We do so so that we don't have to change the logic when parsing for the
- // best emulator target to spawn (see below in `best_image`)
- // This allows us to transitionally support both `android` and `avdmanager` binaries,
- // depending on what SDK version the user has
- if (response[i + 1].match(/Based\son:\s/)) {
- img_obj['target'] = response[i + 1].split('Based on:')[1];
- if (img_obj['target'].match(/Tag\/ABI:\s/)) {
- img_obj['target'] = img_obj['target'].split('Tag/ABI:')[0].replace('\r', '').trim();
- if (img_obj['target'].indexOf('(') > -1) {
- img_obj['target'] = img_obj['target'].substr(0, img_obj['target'].indexOf('(') - 1).trim();
- }
- }
- var version_string = img_obj['target'].replace(/Android\s+/, '');
-
- var api_level = android_sdk.version_string_to_api_level[version_string];
- if (api_level) {
- img_obj['target'] += ' (API level ' + api_level + ')';
- }
- }
- }
- if (response[i + 1].match(/Skin:\s/)) {
- i++;
- img_obj['skin'] = response[i].split('Skin: ')[1].replace('\r', '');
- }
-
- emulator_list.push(img_obj);
- }
- /* To just return a list of names use this
- if (response[i].match(/Name:\s/)) {
- emulator_list.push(response[i].split('Name: ')[1].replace('\r', '');
- }*/
-
- }
- return emulator_list;
- });
-};
-
-module.exports.list_images_using_android = function() {
- return superspawn.spawn('android', ['list', 'avd'])
- .then(function(output) {
- var response = output.split('\n');
- var emulator_list = [];
- for (var i = 1; i < response.length; i++) {
- // To return more detailed information use img_obj
- var img_obj = {};
- if (response[i].match(/Name:\s/)) {
- img_obj['name'] = response[i].split('Name: ')[1].replace('\r', '');
- if (response[i + 1].match(/Device:\s/)) {
- i++;
- img_obj['device'] = response[i].split('Device: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/Path:\s/)) {
- i++;
- img_obj['path'] = response[i].split('Path: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/\(API\slevel\s/) || (response[i + 2] && response[i + 2].match(/\(API\slevel\s/))) {
- i++;
- var secondLine = response[i + 1].match(/\(API\slevel\s/) ? response[i + 1] : '';
- img_obj['target'] = (response[i] + secondLine).split('Target: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/ABI:\s/)) {
- i++;
- img_obj['abi'] = response[i].split('ABI: ')[1].replace('\r', '');
- }
- if (response[i + 1].match(/Skin:\s/)) {
- i++;
- img_obj['skin'] = response[i].split('Skin: ')[1].replace('\r', '');
- }
-
- emulator_list.push(img_obj);
- }
- /* To just return a list of names use this
- if (response[i].match(/Name:\s/)) {
- emulator_list.push(response[i].split('Name: ')[1].replace('\r', '');
- }*/
-
- }
- return emulator_list;
- });
-};
-
-/**
- * Returns a Promise for a list of emulator images in the form of objects
- * {
- name : <emulator_name>,
- device : <device>,
- path : <path_to_emulator_image>,
- target : <api_target>,
- abi : <cpu>,
- skin : <skin>
- }
- */
-module.exports.list_images = function() {
- if (forgivingWhichSync('avdmanager')) {
- return module.exports.list_images_using_avdmanager();
- } else if (forgivingWhichSync('android')) {
- return module.exports.list_images_using_android();
- } else {
- return Q().then(function() {
- throw new CordovaError('Could not find either `android` or `avdmanager` on your $PATH! Are you sure the Android SDK is installed and available?');
- });
- }
-};
-
-/**
- * Will return the closest avd to the projects target
- * or undefined if no avds exist.
- * Returns a promise.
- */
-module.exports.best_image = function() {
- return this.list_images()
- .then(function(images) {
- // Just return undefined if there is no images
- if (images.length === 0) return;
-
- var closest = 9999;
- var best = images[0];
- var project_target = check_reqs.get_target().replace('android-', '');
- for (var i in images) {
- var target = images[i].target;
- if(target) {
- var num = target.split('(API level ')[1].replace(')', '');
- if (num == project_target) {
- return images[i];
- } else if (project_target - num < closest && project_target > num) {
- closest = project_target - num;
- best = images[i];
- }
- }
- }
- return best;
- });
-};
-
-// Returns a promise.
-module.exports.list_started = function() {
- return Adb.devices({emulators: true});
-};
-
-// Returns a promise.
-// TODO: we should remove this, there's a more robust method under android_sdk.js
-module.exports.list_targets = function() {
- return superspawn.spawn('android', ['list', 'targets'], {cwd: os.tmpdir()})
- .then(function(output) {
- var target_out = output.split('\n');
- var targets = [];
- for (var i = target_out.length; i >= 0; i--) {
- if(target_out[i].match(/id:/)) {
- targets.push(targets[i].split(' ')[1]);
- }
- }
- return targets;
- });
-};
-
-/*
- * Gets unused port for android emulator, between 5554 and 5584
- * Returns a promise.
- */
-module.exports.get_available_port = function () {
- var self = this;
-
- return self.list_started()
- .then(function (emulators) {
- for (var p = 5584; p >= 5554; p-=2) {
- if (emulators.indexOf('emulator-' + p) === -1) {
- events.emit('verbose', 'Found available port: ' + p);
- return p;
- }
- }
- throw new CordovaError('Could not find an available avd port');
- });
-};
-
-/*
- * Starts an emulator with the given ID,
- * and returns the started ID of that emulator.
- * If no ID is given it will use the first image available,
- * if no image is available it will error out (maybe create one?).
- * If no boot timeout is given or the value is negative it will wait forever for
- * the emulator to boot
- *
- * Returns a promise.
- */
-module.exports.start = function(emulator_ID, boot_timeout) {
- var self = this;
-
- return Q().then(function() {
- if (emulator_ID) return Q(emulator_ID);
-
- return self.best_image()
- .then(function(best) {
- if (best && best.name) {
- events.emit('warn', 'No emulator specified, defaulting to ' + best.name);
- return best.name;
- }
-
- var androidCmd = check_reqs.getAbsoluteAndroidCmd();
- return Q.reject(new CordovaError('No emulator images (avds) found.\n' +
- '1. Download desired System Image by running: ' + androidCmd + ' sdk\n' +
- '2. Create an AVD by running: ' + androidCmd + ' avd\n' +
- 'HINT: For a faster emulator, use an Intel System Image and install the HAXM device driver\n'));
- });
- }).then(function(emulatorId) {
- return self.get_available_port()
- .then(function (port) {
- // Figure out the directory the emulator binary runs in, and set the cwd to that directory.
- // Workaround for https://code.google.com/p/android/issues/detail?id=235461
- var emulator_dir = path.dirname(shelljs.which('emulator'));
- var args = ['-avd', emulatorId, '-port', port];
- // Don't wait for it to finish, since the emulator will probably keep running for a long time.
- child_process
- .spawn('emulator', args, { stdio: 'inherit', detached: true, cwd: emulator_dir })
- .unref();
-
- // wait for emulator to start
- events.emit('log', 'Waiting for emulator to start...');
- return self.wait_for_emulator(port);
- });
- }).then(function(emulatorId) {
- if (!emulatorId)
- return Q.reject(new CordovaError('Failed to start emulator'));
-
- //wait for emulator to boot up
- process.stdout.write('Waiting for emulator to boot (this may take a while)...');
- return self.wait_for_boot(emulatorId, boot_timeout)
- .then(function(success) {
- if (success) {
- events.emit('log','BOOT COMPLETE');
- //unlock screen
- return Adb.shell(emulatorId, 'input keyevent 82')
- .then(function() {
- //return the new emulator id for the started emulators
- return emulatorId;
- });
- } else {
- // We timed out waiting for the boot to happen
- return null;
- }
- });
- });
-};
-
-/*
- * Waits for an emulator to boot on a given port.
- * Returns this emulator's ID in a promise.
- */
-module.exports.wait_for_emulator = function(port) {
- var self = this;
- return Q().then(function() {
- var emulator_id = 'emulator-' + port;
- return Adb.shell(emulator_id, 'getprop dev.bootcomplete')
- .then(function (output) {
- if (output.indexOf('1') >= 0) {
- return emulator_id;
- }
- return self.wait_for_emulator(port);
- }, function (error) {
- if (error && error.message &&
- (error.message.indexOf('not found') > -1) ||
- error.message.indexOf('device offline') > -1) {
- // emulator not yet started, continue waiting
- return self.wait_for_emulator(port);
- } else {
- // something unexpected has happened
- throw error;
- }
- });
- });
-};
-
-/*
- * Waits for the core android process of the emulator to start. Returns a
- * promise that resolves to a boolean indicating success. Not specifying a
- * time_remaining or passing a negative value will cause it to wait forever
- */
-module.exports.wait_for_boot = function(emulator_id, time_remaining) {
- var self = this;
- return Adb.shell(emulator_id, 'ps')
- .then(function(output) {
- if (output.match(/android\.process\.acore/)) {
- return true;
- } else if (time_remaining === 0) {
- return false;
- } else {
- process.stdout.write('.');
-
- // Check at regular intervals
- return Q.delay(time_remaining < CHECK_BOOTED_INTERVAL ? time_remaining : CHECK_BOOTED_INTERVAL).then(function() {
- var updated_time = time_remaining >= 0 ? Math.max(time_remaining - CHECK_BOOTED_INTERVAL, 0) : time_remaining;
- return self.wait_for_boot(emulator_id, updated_time);
- });
- }
- });
-};
-
-/*
- * Create avd
- * TODO : Enter the stdin input required to complete the creation of an avd.
- * Returns a promise.
- */
-module.exports.create_image = function(name, target) {
- console.log('Creating new avd named ' + name);
- if (target) {
- return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', target])
- .then(null, function(error) {
- console.error('ERROR : Failed to create emulator image : ');
- console.error(' Do you have the latest android targets including ' + target + '?');
- console.error(error);
- });
- } else {
- console.log('WARNING : Project target not found, creating avd with a different target but the project may fail to install.');
- // TODO: there's a more robust method for finding targets in android_sdk.js
- return superspawn.spawn('android', ['create', 'avd', '--name', name, '--target', this.list_targets()[0]])
- .then(function() {
- // TODO: This seems like another error case, even though it always happens.
- console.error('ERROR : Unable to create an avd emulator, no targets found.');
- console.error('Ensure you have targets available by running the "android" command');
- return Q.reject();
- }, function(error) {
- console.error('ERROR : Failed to create emulator image : ');
- console.error(error);
- });
- }
-};
-
-module.exports.resolveTarget = function(target) {
- return this.list_started()
- .then(function(emulator_list) {
- if (emulator_list.length < 1) {
- return Q.reject('No running Android emulators found, please start an emulator before deploying your project.');
- }
-
- // default emulator
- target = target || emulator_list[0];
- if (emulator_list.indexOf(target) < 0) {
- return Q.reject('Unable to find target \'' + target + '\'. Failed to deploy to emulator.');
- }
-
- return build.detectArchitecture(target)
- .then(function(arch) {
- return {target:target, arch:arch, isEmulator:true};
- });
- });
-};
-
-/*
- * Installs a previously built application on the emulator and launches it.
- * If no target is specified, then it picks one.
- * If no started emulators are found, error out.
- * Returns a promise.
- */
-module.exports.install = function(givenTarget, buildResults) {
-
- var target;
- var manifest = new AndroidManifest(path.join(__dirname, '../../AndroidManifest.xml'));
- var pkgName = manifest.getPackageId();
-
- // resolve the target emulator
- return Q().then(function () {
- if (givenTarget && typeof givenTarget == 'object') {
- return givenTarget;
- } else {
- return module.exports.resolveTarget(givenTarget);
- }
-
- // set the resolved target
- }).then(function (resolvedTarget) {
- target = resolvedTarget;
-
- // install the app
- }).then(function () {
- // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
- // or the app doesn't installed at all, so no error catching needed.
- return Q.when()
- .then(function() {
-
- var apk_path = build.findBestApkForArchitecture(buildResults, target.arch);
- var execOptions = {
- cwd: os.tmpdir(),
- timeout: INSTALL_COMMAND_TIMEOUT, // in milliseconds
- killSignal: EXEC_KILL_SIGNAL
- };
-
- events.emit('log', 'Using apk: ' + apk_path);
- events.emit('log', 'Package name: ' + pkgName);
- events.emit('verbose', 'Installing app on emulator...');
-
- // A special function to call adb install in specific environment w/ specific options.
- // Introduced as a part of fix for http://issues.apache.org/jira/browse/CB-9119
- // to workaround sporadic emulator hangs
- function adbInstallWithOptions(target, apk, opts) {
- events.emit('verbose', 'Installing apk ' + apk + ' on ' + target + '...');
-
- var command = 'adb -s ' + target + ' install -r "' + apk + '"';
- return Q.promise(function (resolve, reject) {
- child_process.exec(command, opts, function(err, stdout, stderr) {
- if (err) reject(new CordovaError('Error executing "' + command + '": ' + stderr));
- // adb does not return an error code even if installation fails. Instead it puts a specific
- // message to stdout, so we have to use RegExp matching to detect installation failure.
- else if (/Failure/.test(stdout)) {
- if (stdout.match(/INSTALL_PARSE_FAILED_NO_CERTIFICATES/)) {
- stdout += 'Sign the build using \'-- --keystore\' or \'--buildConfig\'' +
- ' or sign and deploy the unsigned apk manually using Android tools.';
- } else if (stdout.match(/INSTALL_FAILED_VERSION_DOWNGRADE/)) {
- stdout += 'You\'re trying to install apk with a lower versionCode that is already installed.' +
- '\nEither uninstall an app or increment the versionCode.';
- }
-
- reject(new CordovaError('Failed to install apk to emulator: ' + stdout));
- } else resolve(stdout);
- });
- });
- }
-
- function installPromise () {
- return adbInstallWithOptions(target.target, apk_path, execOptions)
- .catch(function (error) {
- // CB-9557 CB-10157 only uninstall and reinstall app if the one that
- // is already installed on device was signed w/different certificate
- if (!/INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES/.test(error.toString()))
- throw error;
-
- events.emit('warn', 'Uninstalling app from device and reinstalling it because the ' +
- 'currently installed app was signed with different key');
-
- // This promise is always resolved, even if 'adb uninstall' fails to uninstall app
- // or the app doesn't installed at all, so no error catching needed.
- return Adb.uninstall(target.target, pkgName)
- .then(function() {
- return adbInstallWithOptions(target.target, apk_path, execOptions);
- });
- });
- }
-
- return retry.retryPromise(NUM_INSTALL_RETRIES, installPromise)
- .then(function (output) {
- events.emit('log', 'INSTALL SUCCESS');
- });
- });
- // unlock screen
- }).then(function () {
-
- events.emit('verbose', 'Unlocking screen...');
- return Adb.shell(target.target, 'input keyevent 82');
- }).then(function () {
- Adb.start(target.target, pkgName + '/.' + manifest.getActivity().getName());
- // report success or failure
- }).then(function (output) {
- events.emit('log', 'LAUNCH SUCCESS');
- });
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/install-device b/StoneIsland/platforms/android/cordova/lib/install-device
deleted file mode 100755
index fc4b7841..00000000
--- a/StoneIsland/platforms/android/cordova/lib/install-device
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var device = require('./device'),
- args = process.argv;
-
-if(args.length > 2) {
- var install_target;
- if (args[2].substring(0, 9) == '--target=') {
- install_target = args[2].substring(9, args[2].length);
- device.install(install_target).done(null, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
- } else {
- console.error('ERROR : argument \'' + args[2] + '\' not recognized.');
- process.exit(2);
- }
-} else {
- device.install().done(null, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/install-device.bat b/StoneIsland/platforms/android/cordova/lib/install-device.bat
deleted file mode 100644
index ac7214ac..00000000
--- a/StoneIsland/platforms/android/cordova/lib/install-device.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0install-device"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'install-device' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/lib/install-emulator b/StoneIsland/platforms/android/cordova/lib/install-emulator
deleted file mode 100755
index aa2a34f6..00000000
--- a/StoneIsland/platforms/android/cordova/lib/install-emulator
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var emulator = require('./emulator'),
- args = process.argv;
-
-var install_target;
-if(args.length > 2) {
- if (args[2].substring(0, 9) == '--target=') {
- install_target = args[2].substring(9, args[2].length);
- } else {
- console.error('ERROR : argument \'' + args[2] + '\' not recognized.');
- process.exit(2);
- }
-}
-
-emulator.install(install_target).done(null, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
-});
diff --git a/StoneIsland/platforms/android/cordova/lib/install-emulator.bat b/StoneIsland/platforms/android/cordova/lib/install-emulator.bat
deleted file mode 100644
index 1ec67790..00000000
--- a/StoneIsland/platforms/android/cordova/lib/install-emulator.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0install-emulator"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'install-emulator' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/lib/list-devices b/StoneIsland/platforms/android/cordova/lib/list-devices
deleted file mode 100755
index 8e22c7f2..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-devices
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var devices = require('./device');
-
-// Usage support for when args are given
-require('./check_reqs').check_android().then(function() {
- devices.list().done(function(device_list) {
- device_list && device_list.forEach(function(dev) {
- console.log(dev);
- });
- }, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
-});
diff --git a/StoneIsland/platforms/android/cordova/lib/list-devices.bat b/StoneIsland/platforms/android/cordova/lib/list-devices.bat
deleted file mode 100644
index c0bcdd9a..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-devices.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0list-devices"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'list-devices' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/lib/list-emulator-images b/StoneIsland/platforms/android/cordova/lib/list-emulator-images
deleted file mode 100755
index 25e5c81a..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-emulator-images
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var emulators = require('./emulator');
-
-// Usage support for when args are given
-require('./check_reqs').check_android().then(function() {
- emulators.list_images().done(function(emulator_list) {
- emulator_list && emulator_list.forEach(function(emu) {
- console.log(emu.name);
- });
- }, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
-});
diff --git a/StoneIsland/platforms/android/cordova/lib/list-emulator-images.bat b/StoneIsland/platforms/android/cordova/lib/list-emulator-images.bat
deleted file mode 100644
index 661cbf95..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-emulator-images.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0list-emulator-images"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'list-emulator-images' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-)
diff --git a/StoneIsland/platforms/android/cordova/lib/list-started-emulators b/StoneIsland/platforms/android/cordova/lib/list-started-emulators
deleted file mode 100755
index 43ebda25..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-started-emulators
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var emulators = require('./emulator');
-
-// Usage support for when args are given
-require('./check_reqs').check_android().then(function() {
- emulators.list_started().done(function(emulator_list) {
- emulator_list && emulator_list.forEach(function(emu) {
- console.log(emu);
- });
- }, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
-});
diff --git a/StoneIsland/platforms/android/cordova/lib/list-started-emulators.bat b/StoneIsland/platforms/android/cordova/lib/list-started-emulators.bat
deleted file mode 100644
index a4e88f7d..00000000
--- a/StoneIsland/platforms/android/cordova/lib/list-started-emulators.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0list-started-emulators"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'list-started-emulators' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/lib/log.js b/StoneIsland/platforms/android/cordova/lib/log.js
deleted file mode 100644
index ebf836d5..00000000
--- a/StoneIsland/platforms/android/cordova/lib/log.js
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var path = require('path'),
- os = require('os'),
- Q = require('q'),
- child_process = require('child_process'),
- ROOT = path.join(__dirname, '..', '..');
-
-/*
- * Starts running logcat in the shell.
- * Returns a promise.
- */
-module.exports.run = function() {
- var d = Q.defer();
- var adb = child_process.spawn('adb', ['logcat'], {cwd: os.tmpdir()});
-
- adb.stdout.on('data', function(data) {
- var lines = data ? data.toString().split('\n') : [];
- var out = lines.filter(function(x) { return x.indexOf('nativeGetEnabledTags') < 0; });
- console.log(out.join('\n'));
- });
-
- adb.stderr.on('data', console.error);
- adb.on('close', function(code) {
- if (code > 0) {
- d.reject('Failed to run logcat command.');
- } else d.resolve();
- });
-
- return d.promise;
-};
-
-module.exports.help = function() {
- console.log('Usage: ' + path.relative(process.cwd(), path.join(ROOT, 'cordova', 'log')));
- console.log('Gives the logcat output on the command line.');
- process.exit(0);
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/plugin-build.gradle b/StoneIsland/platforms/android/cordova/lib/plugin-build.gradle
deleted file mode 100644
index d1c63365..00000000
--- a/StoneIsland/platforms/android/cordova/lib/plugin-build.gradle
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-// GENERATED FILE! DO NOT EDIT!
-
-buildscript {
- repositories {
- mavenCentral()
- jcenter()
- }
-
- // Switch the Android Gradle plugin version requirement depending on the
- // installed version of Gradle. This dependency is documented at
- // http://tools.android.com/tech-docs/new-build-system/version-compatibility
- // and https://issues.apache.org/jira/browse/CB-8143
- dependencies {
- classpath 'com.android.tools.build:gradle:1.0.0+'
- }
-}
-
-apply plugin: 'com.android.library'
-
-dependencies {
- compile fileTree(dir: 'libs', include: '*.jar')
- debugCompile project(path: ":CordovaLib", configuration: "debug")
- releaseCompile project(path: ":CordovaLib", configuration: "release")
-}
-
-android {
- compileSdkVersion cdvCompileSdkVersion
- buildToolsVersion cdvBuildToolsVersion
- publishNonDefault true
-
- compileOptions {
- sourceCompatibility JavaVersion.VERSION_1_6
- targetCompatibility JavaVersion.VERSION_1_6
- }
-
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- java.srcDirs = ['src']
- resources.srcDirs = ['src']
- aidl.srcDirs = ['src']
- renderscript.srcDirs = ['src']
- res.srcDirs = ['res']
- assets.srcDirs = ['assets']
- jniLibs.srcDirs = ['libs']
- }
- }
-}
-
-if (file('build-extras.gradle').exists()) {
- apply from: 'build-extras.gradle'
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/pluginHandlers.js b/StoneIsland/platforms/android/cordova/lib/pluginHandlers.js
deleted file mode 100644
index 5e745fd5..00000000
--- a/StoneIsland/platforms/android/cordova/lib/pluginHandlers.js
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- *
- * Copyright 2013 Anis Kadri
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* jshint unused: vars */
-
-var fs = require('fs');
-var path = require('path');
-var shell = require('shelljs');
-var events = require('cordova-common').events;
-var CordovaError = require('cordova-common').CordovaError;
-
-var handlers = {
- 'source-file':{
- install:function(obj, plugin, project, options) {
- if (!obj.src) throw new CordovaError(generateAttributeError('src', 'source-file', plugin.id));
- if (!obj.targetDir) throw new CordovaError(generateAttributeError('target-dir', 'source-file', plugin.id));
-
- var dest = path.join(obj.targetDir, path.basename(obj.src));
-
- if(options && options.android_studio === true) {
- dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
- }
-
- if (options && options.force) {
- copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
- } else {
- copyNewFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
- }
- },
- uninstall:function(obj, plugin, project, options) {
- var dest = path.join(obj.targetDir, path.basename(obj.src));
-
- if(options && options.android_studio === true) {
- dest = path.join('app/src/main/java', obj.targetDir.substring(4), path.basename(obj.src));
- }
-
- deleteJava(project.projectDir, dest);
- }
- },
- 'lib-file':{
- install:function(obj, plugin, project, options) {
- var dest = path.join('libs', path.basename(obj.src));
- if(options && options.android_studio === true) {
- dest = path.join('app/libs', path.basename(obj.src));
- }
- copyFile(plugin.dir, obj.src, project.projectDir, dest, !!(options && options.link));
- },
- uninstall:function(obj, plugin, project, options) {
- var dest = path.join('libs', path.basename(obj.src));
- if(options && options.android_studio === true) {
- dest = path.join('app/libs', path.basename(obj.src));
- }
- removeFile(project.projectDir, dest);
- }
- },
- 'resource-file':{
- install:function(obj, plugin, project, options) {
- copyFile(plugin.dir, obj.src, project.projectDir, path.normalize(obj.target), !!(options && options.link));
- },
- uninstall:function(obj, plugin, project, options) {
- removeFile(project.projectDir, path.normalize(obj.target));
- }
- },
- 'framework': {
- install:function(obj, plugin, project, options) {
- var src = obj.src;
- if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id));
-
- events.emit('verbose', 'Installing Android library: ' + src);
- var parentDir = obj.parent ? path.resolve(project.projectDir, obj.parent) : project.projectDir;
- var subDir;
-
- if (obj.custom) {
- var subRelativeDir = project.getCustomSubprojectRelativeDir(plugin.id, src);
- copyNewFile(plugin.dir, src, project.projectDir, subRelativeDir, !!(options && options.link));
- subDir = path.resolve(project.projectDir, subRelativeDir);
- } else {
- obj.type = 'sys';
- subDir = src;
- }
-
- if (obj.type == 'gradleReference') {
- project.addGradleReference(parentDir, subDir);
- } else if (obj.type == 'sys') {
- project.addSystemLibrary(parentDir, subDir);
- } else {
- project.addSubProject(parentDir, subDir);
- }
- },
- uninstall:function(obj, plugin, project, options) {
- var src = obj.src;
- if (!src) throw new CordovaError(generateAttributeError('src', 'framework', plugin.id));
-
- events.emit('verbose', 'Uninstalling Android library: ' + src);
- var parentDir = obj.parent ? path.resolve(project.projectDir, obj.parent) : project.projectDir;
- var subDir;
-
- if (obj.custom) {
- var subRelativeDir = project.getCustomSubprojectRelativeDir(plugin.id, src);
- removeFile(project.projectDir, subRelativeDir);
- subDir = path.resolve(project.projectDir, subRelativeDir);
- // If it's the last framework in the plugin, remove the parent directory.
- var parDir = path.dirname(subDir);
- if (fs.existsSync(parDir) && fs.readdirSync(parDir).length === 0) {
- fs.rmdirSync(parDir);
- }
- } else {
- obj.type = 'sys';
- subDir = src;
- }
-
- if (obj.type == 'gradleReference') {
- project.removeGradleReference(parentDir, subDir);
- } else if (obj.type == 'sys') {
- project.removeSystemLibrary(parentDir, subDir);
- } else {
- project.removeSubProject(parentDir, subDir);
- }
- }
- },
- asset:{
- install:function(obj, plugin, project, options) {
- if (!obj.src) {
- throw new CordovaError(generateAttributeError('src', 'asset', plugin.id));
- }
- if (!obj.target) {
- throw new CordovaError(generateAttributeError('target', 'asset', plugin.id));
- }
-
- copyFile(plugin.dir, obj.src, project.www, obj.target);
- if (options && options.usePlatformWww) {
- // CB-11022 copy file to both directories if usePlatformWww is specified
- copyFile(plugin.dir, obj.src, project.platformWww, obj.target);
- }
- },
- uninstall:function(obj, plugin, project, options) {
- var target = obj.target || obj.src;
-
- if (!target) throw new CordovaError(generateAttributeError('target', 'asset', plugin.id));
-
- removeFileF(path.resolve(project.www, target));
- removeFileF(path.resolve(project.www, 'plugins', plugin.id));
- if (options && options.usePlatformWww) {
- // CB-11022 remove file from both directories if usePlatformWww is specified
- removeFileF(path.resolve(project.platformWww, target));
- removeFileF(path.resolve(project.platformWww, 'plugins', plugin.id));
- }
- }
- },
- 'js-module': {
- install: function (obj, plugin, project, options) {
- // Copy the plugin's files into the www directory.
- var moduleSource = path.resolve(plugin.dir, obj.src);
- var moduleName = plugin.id + '.' + (obj.name || path.basename(obj.src, path.extname (obj.src)));
-
- // Read in the file, prepend the cordova.define, and write it back out.
- var scriptContent = fs.readFileSync(moduleSource, 'utf-8').replace(/^\ufeff/, ''); // Window BOM
- if (moduleSource.match(/.*\.json$/)) {
- scriptContent = 'module.exports = ' + scriptContent;
- }
- scriptContent = 'cordova.define("' + moduleName + '", function(require, exports, module) {\n' + scriptContent + '\n});\n';
-
- var wwwDest = path.resolve(project.www, 'plugins', plugin.id, obj.src);
- shell.mkdir('-p', path.dirname(wwwDest));
- fs.writeFileSync(wwwDest, scriptContent, 'utf-8');
-
- if (options && options.usePlatformWww) {
- // CB-11022 copy file to both directories if usePlatformWww is specified
- var platformWwwDest = path.resolve(project.platformWww, 'plugins', plugin.id, obj.src);
- shell.mkdir('-p', path.dirname(platformWwwDest));
- fs.writeFileSync(platformWwwDest, scriptContent, 'utf-8');
- }
- },
- uninstall: function (obj, plugin, project, options) {
- var pluginRelativePath = path.join('plugins', plugin.id, obj.src);
- removeFileAndParents(project.www, pluginRelativePath);
- if (options && options.usePlatformWww) {
- // CB-11022 remove file from both directories if usePlatformWww is specified
- removeFileAndParents(project.platformWww, pluginRelativePath);
- }
- }
- }
-};
-
-module.exports.getInstaller = function (type) {
- if (handlers[type] && handlers[type].install) {
- return handlers[type].install;
- }
-
- events.emit('verbose', '<' + type + '> is not supported for android plugins');
-};
-
-module.exports.getUninstaller = function(type) {
- if (handlers[type] && handlers[type].uninstall) {
- return handlers[type].uninstall;
- }
-
- events.emit('verbose', '<' + type + '> is not supported for android plugins');
-};
-
-function copyFile (plugin_dir, src, project_dir, dest, link) {
- src = path.resolve(plugin_dir, src);
- if (!fs.existsSync(src)) throw new CordovaError('"' + src + '" not found!');
-
- // check that src path is inside plugin directory
- var real_path = fs.realpathSync(src);
- var real_plugin_path = fs.realpathSync(plugin_dir);
- if (real_path.indexOf(real_plugin_path) !== 0)
- throw new CordovaError('File "' + src + '" is located outside the plugin directory "' + plugin_dir + '"');
-
- dest = path.resolve(project_dir, dest);
-
- // check that dest path is located in project directory
- if (dest.indexOf(project_dir) !== 0)
- throw new CordovaError('Destination "' + dest + '" for source file "' + src + '" is located outside the project');
-
- shell.mkdir('-p', path.dirname(dest));
- if (link) {
- symlinkFileOrDirTree(src, dest);
- } else if (fs.statSync(src).isDirectory()) {
- // XXX shelljs decides to create a directory when -R|-r is used which sucks. http://goo.gl/nbsjq
- shell.cp('-Rf', src+'/*', dest);
- } else {
- shell.cp('-f', src, dest);
- }
-}
-
-// Same as copy file but throws error if target exists
-function copyNewFile (plugin_dir, src, project_dir, dest, link) {
- var target_path = path.resolve(project_dir, dest);
- if (fs.existsSync(target_path))
- throw new CordovaError('"' + target_path + '" already exists!');
-
- copyFile(plugin_dir, src, project_dir, dest, !!link);
-}
-
-function symlinkFileOrDirTree(src, dest) {
- if (fs.existsSync(dest)) {
- shell.rm('-Rf', dest);
- }
-
- if (fs.statSync(src).isDirectory()) {
- shell.mkdir('-p', dest);
- fs.readdirSync(src).forEach(function(entry) {
- symlinkFileOrDirTree(path.join(src, entry), path.join(dest, entry));
- });
- }
- else {
- fs.symlinkSync(path.relative(fs.realpathSync(path.dirname(dest)), src), dest);
- }
-}
-
-// checks if file exists and then deletes. Error if doesn't exist
-function removeFile (project_dir, src) {
- var file = path.resolve(project_dir, src);
- shell.rm('-Rf', file);
-}
-
-// deletes file/directory without checking
-function removeFileF (file) {
- shell.rm('-Rf', file);
-}
-
-// Sometimes we want to remove some java, and prune any unnecessary empty directories
-function deleteJava (project_dir, destFile) {
- removeFileAndParents(project_dir, destFile, 'src');
-}
-
-function removeFileAndParents (baseDir, destFile, stopper) {
- stopper = stopper || '.';
- var file = path.resolve(baseDir, destFile);
- if (!fs.existsSync(file)) return;
-
- removeFileF(file);
-
- // check if directory is empty
- var curDir = path.dirname(file);
-
- while(curDir !== path.resolve(baseDir, stopper)) {
- if(fs.existsSync(curDir) && fs.readdirSync(curDir).length === 0) {
- fs.rmdirSync(curDir);
- curDir = path.resolve(curDir, '..');
- } else {
- // directory not empty...do nothing
- break;
- }
- }
-}
-
-function generateAttributeError(attribute, element, id) {
- return 'Required attribute "' + attribute + '" not specified in <' + element + '> element from plugin: ' + id;
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/prepare.js b/StoneIsland/platforms/android/cordova/lib/prepare.js
deleted file mode 100644
index 504eb612..00000000
--- a/StoneIsland/platforms/android/cordova/lib/prepare.js
+++ /dev/null
@@ -1,471 +0,0 @@
-/**
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Q = require('q');
-var fs = require('fs');
-var path = require('path');
-var shell = require('shelljs');
-var events = require('cordova-common').events;
-var AndroidManifest = require('./AndroidManifest');
-var xmlHelpers = require('cordova-common').xmlHelpers;
-var CordovaError = require('cordova-common').CordovaError;
-var ConfigParser = require('cordova-common').ConfigParser;
-var FileUpdater = require('cordova-common').FileUpdater;
-var PlatformJson = require('cordova-common').PlatformJson;
-var PlatformMunger = require('cordova-common').ConfigChanges.PlatformMunger;
-var PluginInfoProvider = require('cordova-common').PluginInfoProvider;
-
-module.exports.prepare = function (cordovaProject, options) {
- var self = this;
-
- var platformJson = PlatformJson.load(this.locations.root, this.platform);
- var munger = new PlatformMunger(this.platform, this.locations.root, platformJson, new PluginInfoProvider());
-
- this._config = updateConfigFilesFrom(cordovaProject.projectConfig, munger, this.locations);
-
- // Update own www dir with project's www assets and plugins' assets and js-files
- return Q.when(updateWww(cordovaProject, this.locations))
- .then(function () {
- // update project according to config.xml changes.
- return updateProjectAccordingTo(self._config, self.locations);
- })
- .then(function () {
- updateIcons(cordovaProject, path.relative(cordovaProject.root, self.locations.res));
- updateSplashes(cordovaProject, path.relative(cordovaProject.root, self.locations.res));
- updateFileResources(cordovaProject, path.relative(cordovaProject.root, self.locations.root));
- })
- .then(function () {
- events.emit('verbose', 'Prepared android project successfully');
- });
-};
-
-module.exports.clean = function (options) {
- // A cordovaProject isn't passed into the clean() function, because it might have
- // been called from the platform shell script rather than the CLI. Check for the
- // noPrepare option passed in by the non-CLI clean script. If that's present, or if
- // there's no config.xml found at the project root, then don't clean prepared files.
- var projectRoot = path.resolve(this.root, '../..');
- if ((options && options.noPrepare) || !fs.existsSync(this.locations.configXml) ||
- !fs.existsSync(this.locations.configXml)) {
- return Q();
- }
-
- var projectConfig = new ConfigParser(this.locations.configXml);
-
- var self = this;
- return Q().then(function () {
- cleanWww(projectRoot, self.locations);
- cleanIcons(projectRoot, projectConfig, path.relative(projectRoot, self.locations.res));
- cleanSplashes(projectRoot, projectConfig, path.relative(projectRoot, self.locations.res));
- cleanFileResources(projectRoot, projectConfig, path.relative(projectRoot, self.locations.root));
- });
-};
-
-/**
- * Updates config files in project based on app's config.xml and config munge,
- * generated by plugins.
- *
- * @param {ConfigParser} sourceConfig A project's configuration that will
- * be merged into platform's config.xml
- * @param {ConfigChanges} configMunger An initialized ConfigChanges instance
- * for this platform.
- * @param {Object} locations A map of locations for this platform
- *
- * @return {ConfigParser} An instance of ConfigParser, that
- * represents current project's configuration. When returned, the
- * configuration is already dumped to appropriate config.xml file.
- */
-function updateConfigFilesFrom(sourceConfig, configMunger, locations) {
- events.emit('verbose', 'Generating platform-specific config.xml from defaults for android at ' + locations.configXml);
-
- // First cleanup current config and merge project's one into own
- // Overwrite platform config.xml with defaults.xml.
- shell.cp('-f', locations.defaultConfigXml, locations.configXml);
-
- // Then apply config changes from global munge to all config files
- // in project (including project's config)
- configMunger.reapply_global_munge().save_all();
-
- events.emit('verbose', 'Merging project\'s config.xml into platform-specific android config.xml');
- // Merge changes from app's config.xml into platform's one
- var config = new ConfigParser(locations.configXml);
- xmlHelpers.mergeXml(sourceConfig.doc.getroot(),
- config.doc.getroot(), 'android', /*clobber=*/true);
-
- config.write();
- return config;
-}
-
-/**
- * Logs all file operations via the verbose event stream, indented.
- */
-function logFileOp(message) {
- events.emit('verbose', ' ' + message);
-}
-
-/**
- * Updates platform 'www' directory by replacing it with contents of
- * 'platform_www' and app www. Also copies project's overrides' folder into
- * the platform 'www' folder
- *
- * @param {Object} cordovaProject An object which describes cordova project.
- * @param {Object} destinations An object that contains destination
- * paths for www files.
- */
-function updateWww(cordovaProject, destinations) {
- var sourceDirs = [
- path.relative(cordovaProject.root, cordovaProject.locations.www),
- path.relative(cordovaProject.root, destinations.platformWww)
- ];
-
- // If project contains 'merges' for our platform, use them as another overrides
- var merges_path = path.join(cordovaProject.root, 'merges', 'android');
- if (fs.existsSync(merges_path)) {
- events.emit('verbose', 'Found "merges/android" folder. Copying its contents into the android project.');
- sourceDirs.push(path.join('merges', 'android'));
- }
-
- var targetDir = path.relative(cordovaProject.root, destinations.www);
- events.emit(
- 'verbose', 'Merging and updating files from [' + sourceDirs.join(', ') + '] to ' + targetDir);
- FileUpdater.mergeAndUpdateDir(
- sourceDirs, targetDir, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-/**
- * Cleans all files from the platform 'www' directory.
- */
-function cleanWww(projectRoot, locations) {
- var targetDir = path.relative(projectRoot, locations.www);
- events.emit('verbose', 'Cleaning ' + targetDir);
-
- // No source paths are specified, so mergeAndUpdateDir() will clear the target directory.
- FileUpdater.mergeAndUpdateDir(
- [], targetDir, { rootDir: projectRoot, all: true }, logFileOp);
-}
-
-/**
- * Updates project structure and AndroidManifest according to project's configuration.
- *
- * @param {ConfigParser} platformConfig A project's configuration that will
- * be used to update project
- * @param {Object} locations A map of locations for this platform
- */
-function updateProjectAccordingTo(platformConfig, locations) {
- // Update app name by editing res/values/strings.xml
- var name = platformConfig.name();
- var strings = xmlHelpers.parseElementtreeSync(locations.strings);
- strings.find('string[@name="app_name"]').text = name.replace(/\'/g, '\\\'');
- fs.writeFileSync(locations.strings, strings.write({indent: 4}), 'utf-8');
- events.emit('verbose', 'Wrote out android application name "' + name + '" to ' + locations.strings);
-
- // Java packages cannot support dashes
- var pkg = (platformConfig.android_packageName() || platformConfig.packageName()).replace(/-/g, '_');
-
- var manifest = new AndroidManifest(locations.manifest);
- var orig_pkg = manifest.getPackageId();
-
- manifest.getActivity()
- .setOrientation(platformConfig.getPreference('orientation'))
- .setLaunchMode(findAndroidLaunchModePreference(platformConfig));
-
- manifest.setVersionName(platformConfig.version())
- .setVersionCode(platformConfig.android_versionCode() || default_versionCode(platformConfig.version()))
- .setPackageId(pkg)
- .setMinSdkVersion(platformConfig.getPreference('android-minSdkVersion', 'android'))
- .setMaxSdkVersion(platformConfig.getPreference('android-maxSdkVersion', 'android'))
- .setTargetSdkVersion(platformConfig.getPreference('android-targetSdkVersion', 'android'))
- .write();
-
- var javaPattern = path.join(locations.root, 'src', orig_pkg.replace(/\./g, '/'), '*.java');
- var java_files = shell.ls(javaPattern).filter(function(f) {
- return shell.grep(/extends\s+CordovaActivity/g, f);
- });
-
- if (java_files.length === 0) {
- throw new CordovaError('No Java files found that extend CordovaActivity.');
- } else if(java_files.length > 1) {
- events.emit('log', 'Multiple candidate Java files that extend CordovaActivity found. Guessing at the first one, ' + java_files[0]);
- }
-
- var destFile = path.join(locations.root, 'src', pkg.replace(/\./g, '/'), path.basename(java_files[0]));
- shell.mkdir('-p', path.dirname(destFile));
- shell.sed(/package [\w\.]*;/, 'package ' + pkg + ';', java_files[0]).to(destFile);
- events.emit('verbose', 'Wrote out Android package name "' + pkg + '" to ' + destFile);
-
- if (orig_pkg !== pkg) {
- // If package was name changed we need to remove old java with main activity
- shell.rm('-Rf',java_files[0]);
- // remove any empty directories
- var currentDir = path.dirname(java_files[0]);
- var sourcesRoot = path.resolve(locations.root, 'src');
- while(currentDir !== sourcesRoot) {
- if(fs.existsSync(currentDir) && fs.readdirSync(currentDir).length === 0) {
- fs.rmdirSync(currentDir);
- currentDir = path.resolve(currentDir, '..');
- } else {
- break;
- }
- }
- }
-}
-
-// Consturct the default value for versionCode as
-// PATCH + MINOR * 100 + MAJOR * 10000
-// see http://developer.android.com/tools/publishing/versioning.html
-function default_versionCode(version) {
- var nums = version.split('-')[0].split('.');
- var versionCode = 0;
- if (+nums[0]) {
- versionCode += +nums[0] * 10000;
- }
- if (+nums[1]) {
- versionCode += +nums[1] * 100;
- }
- if (+nums[2]) {
- versionCode += +nums[2];
- }
-
- events.emit('verbose', 'android-versionCode not found in config.xml. Generating a code based on version in config.xml (' + version + '): ' + versionCode);
- return versionCode;
-}
-
-function getImageResourcePath(resourcesDir, type, density, name, sourceName) {
- if (/\.9\.png$/.test(sourceName)) {
- name = name.replace(/\.png$/, '.9.png');
- }
- var resourcePath = path.join(resourcesDir, (density ? type + '-' + density : type), name);
- return resourcePath;
-}
-
-function updateSplashes(cordovaProject, platformResourcesDir) {
- var resources = cordovaProject.projectConfig.getSplashScreens('android');
-
- // if there are "splash" elements in config.xml
- if (resources.length === 0) {
- events.emit('verbose', 'This app does not have splash screens defined');
- return;
- }
-
- var resourceMap = mapImageResources(cordovaProject.root, platformResourcesDir, 'drawable', 'screen.png');
-
- var hadMdpi = false;
- resources.forEach(function (resource) {
- if (!resource.density) {
- return;
- }
- if (resource.density == 'mdpi') {
- hadMdpi = true;
- }
- var targetPath = getImageResourcePath(
- platformResourcesDir, 'drawable', resource.density, 'screen.png', path.basename(resource.src));
- resourceMap[targetPath] = resource.src;
- });
-
- // There's no "default" drawable, so assume default == mdpi.
- if (!hadMdpi && resources.defaultResource) {
- var targetPath = getImageResourcePath(
- platformResourcesDir, 'drawable', 'mdpi', 'screen.png', path.basename(resources.defaultResource.src));
- resourceMap[targetPath] = resources.defaultResource.src;
- }
-
- events.emit('verbose', 'Updating splash screens at ' + platformResourcesDir);
- FileUpdater.updatePaths(
- resourceMap, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-function cleanSplashes(projectRoot, projectConfig, platformResourcesDir) {
- var resources = projectConfig.getSplashScreens('android');
- if (resources.length > 0) {
- var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'drawable', 'screen.png');
- events.emit('verbose', 'Cleaning splash screens at ' + platformResourcesDir);
-
- // No source paths are specified in the map, so updatePaths() will delete the target files.
- FileUpdater.updatePaths(
- resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
- }
-}
-
-function updateIcons(cordovaProject, platformResourcesDir) {
- var icons = cordovaProject.projectConfig.getIcons('android');
-
- // if there are icon elements in config.xml
- if (icons.length === 0) {
- events.emit('verbose', 'This app does not have launcher icons defined');
- return;
- }
-
- var resourceMap = mapImageResources(cordovaProject.root, platformResourcesDir, 'mipmap', 'icon.png');
-
- var android_icons = {};
- var default_icon;
- // http://developer.android.com/design/style/iconography.html
- var sizeToDensityMap = {
- 36: 'ldpi',
- 48: 'mdpi',
- 72: 'hdpi',
- 96: 'xhdpi',
- 144: 'xxhdpi',
- 192: 'xxxhdpi'
- };
- // find the best matching icon for a given density or size
- // @output android_icons
- var parseIcon = function(icon, icon_size) {
- // do I have a platform icon for that density already
- var density = icon.density || sizeToDensityMap[icon_size];
- if (!density) {
- // invalid icon defition ( or unsupported size)
- return;
- }
- var previous = android_icons[density];
- if (previous && previous.platform) {
- return;
- }
- android_icons[density] = icon;
- };
-
- // iterate over all icon elements to find the default icon and call parseIcon
- for (var i=0; i<icons.length; i++) {
- var icon = icons[i];
- var size = icon.width;
- if (!size) {
- size = icon.height;
- }
- if (!size && !icon.density) {
- if (default_icon) {
- events.emit('verbose', 'Found extra default icon: ' + icon.src + ' (ignoring in favor of ' + default_icon.src + ')');
- } else {
- default_icon = icon;
- }
- } else {
- parseIcon(icon, size);
- }
- }
-
- // The source paths for icons and splashes are relative to
- // project's config.xml location, so we use it as base path.
- for (var density in android_icons) {
- var targetPath = getImageResourcePath(
- platformResourcesDir, 'mipmap', density, 'icon.png', path.basename(android_icons[density].src));
- resourceMap[targetPath] = android_icons[density].src;
- }
-
- // There's no "default" drawable, so assume default == mdpi.
- if (default_icon && !android_icons.mdpi) {
- var defaultTargetPath = getImageResourcePath(
- platformResourcesDir, 'mipmap', 'mdpi', 'icon.png', path.basename(default_icon.src));
- resourceMap[defaultTargetPath] = default_icon.src;
- }
-
- events.emit('verbose', 'Updating icons at ' + platformResourcesDir);
- FileUpdater.updatePaths(
- resourceMap, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-function cleanIcons(projectRoot, projectConfig, platformResourcesDir) {
- var icons = projectConfig.getIcons('android');
- if (icons.length > 0) {
- var resourceMap = mapImageResources(projectRoot, platformResourcesDir, 'mipmap', 'icon.png');
- events.emit('verbose', 'Cleaning icons at ' + platformResourcesDir);
-
- // No source paths are specified in the map, so updatePaths() will delete the target files.
- FileUpdater.updatePaths(
- resourceMap, { rootDir: projectRoot, all: true }, logFileOp);
- }
-}
-
-/**
- * Gets a map containing resources of a specified name from all drawable folders in a directory.
- */
-function mapImageResources(rootDir, subDir, type, resourceName) {
- var pathMap = {};
- shell.ls(path.join(rootDir, subDir, type + '-*'))
- .forEach(function (drawableFolder) {
- var imagePath = path.join(subDir, path.basename(drawableFolder), resourceName);
- pathMap[imagePath] = null;
- });
- return pathMap;
-}
-
-
-function updateFileResources(cordovaProject, platformDir) {
- var files = cordovaProject.projectConfig.getFileResources('android');
-
- // if there are resource-file elements in config.xml
- if (files.length === 0) {
- events.emit('verbose', 'This app does not have additional resource files defined');
- return;
- }
-
- var resourceMap = {};
- files.forEach(function(res) {
- var targetPath = path.join(platformDir, res.target);
- resourceMap[targetPath] = res.src;
- });
-
- events.emit('verbose', 'Updating resource files at ' + platformDir);
- FileUpdater.updatePaths(
- resourceMap, { rootDir: cordovaProject.root }, logFileOp);
-}
-
-
-function cleanFileResources(projectRoot, projectConfig, platformDir) {
- var files = projectConfig.getFileResources('android');
- if (files.length > 0) {
- events.emit('verbose', 'Cleaning resource files at ' + platformDir);
-
- var resourceMap = {};
- files.forEach(function(res) {
- var filePath = path.join(platformDir, res.target);
- resourceMap[filePath] = null;
- });
-
- FileUpdater.updatePaths(
- resourceMap, { rootDir: projectRoot, all: true}, logFileOp);
- }
-}
-
-/**
- * Gets and validates 'AndroidLaunchMode' prepference from config.xml. Returns
- * preference value and warns if it doesn't seems to be valid
- *
- * @param {ConfigParser} platformConfig A configParser instance for
- * platform.
- *
- * @return {String} Preference's value from config.xml or
- * default value, if there is no such preference. The default value is
- * 'singleTop'
- */
-function findAndroidLaunchModePreference(platformConfig) {
- var launchMode = platformConfig.getPreference('AndroidLaunchMode');
- if (!launchMode) {
- // Return a default value
- return 'singleTop';
- }
-
- var expectedValues = ['standard', 'singleTop', 'singleTask', 'singleInstance'];
- var valid = expectedValues.indexOf(launchMode) >= 0;
- if (!valid) {
- // Note: warn, but leave the launch mode as developer wanted, in case the list of options changes in the future
- events.emit('warn', 'Unrecognized value for AndroidLaunchMode preference: ' +
- launchMode + '. Expected values are: ' + expectedValues.join(', '));
- }
-
- return launchMode;
-}
diff --git a/StoneIsland/platforms/android/cordova/lib/retry.js b/StoneIsland/platforms/android/cordova/lib/retry.js
deleted file mode 100644
index 3cb49274..00000000
--- a/StoneIsland/platforms/android/cordova/lib/retry.js
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/* jshint node: true */
-
-'use strict';
-
-var events = require('cordova-common').events;
-
-/*
- * Retry a promise-returning function a number of times, propagating its
- * results on success or throwing its error on a failed final attempt.
- *
- * @arg {Number} attemts_left - The number of times to retry the passed call.
- * @arg {Function} promiseFunction - A function that returns a promise.
- * @arg {...} - Arguments to pass to promiseFunction.
- *
- * @returns {Promise}
- */
-module.exports.retryPromise = function (attemts_left, promiseFunction) {
-
- // NOTE:
- // get all trailing arguments, by skipping the first two (attemts_left and
- // promiseFunction) because they shouldn't get passed to promiseFunction
- var promiseFunctionArguments = Array.prototype.slice.call(arguments, 2);
-
- return promiseFunction.apply(undefined, promiseFunctionArguments).then(
-
- // on success pass results through
- function onFulfilled(value) {
- return value;
- },
-
- // on rejection either retry, or throw the error
- function onRejected(error) {
-
- attemts_left -= 1;
-
- if (attemts_left < 1) {
- throw error;
- }
-
- events.emit('verbose', 'A retried call failed. Retrying ' + attemts_left + ' more time(s).');
-
- // retry call self again with the same arguments, except attemts_left is now lower
- var fullArguments = [attemts_left, promiseFunction].concat(promiseFunctionArguments);
- return module.exports.retryPromise.apply(undefined, fullArguments);
- }
- );
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/run.js b/StoneIsland/platforms/android/cordova/lib/run.js
deleted file mode 100644
index 214a1e19..00000000
--- a/StoneIsland/platforms/android/cordova/lib/run.js
+++ /dev/null
@@ -1,141 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-/* jshint loopfunc:true */
-
-var path = require('path'),
- build = require('./build'),
- emulator = require('./emulator'),
- device = require('./device'),
- Q = require('q'),
- events = require('cordova-common').events;
-
-function getInstallTarget(runOptions) {
- var install_target;
- if (runOptions.target) {
- install_target = runOptions.target;
- } else if (runOptions.device) {
- install_target = '--device';
- } else if (runOptions.emulator) {
- install_target = '--emulator';
- }
-
- return install_target;
-}
-
-/**
- * Runs the application on a device if available. If no device is found, it will
- * use a started emulator. If no started emulators are found it will attempt
- * to start an avd. If no avds are found it will error out.
- *
- * @param {Object} runOptions various run/build options. See Api.js build/run
- * methods for reference.
- *
- * @return {Promise}
- */
- module.exports.run = function(runOptions) {
-
- var self = this;
- var install_target = getInstallTarget(runOptions);
-
- return Q()
- .then(function() {
- if (!install_target) {
- // no target given, deploy to device if available, otherwise use the emulator.
- return device.list()
- .then(function(device_list) {
- if (device_list.length > 0) {
- events.emit('warn', 'No target specified, deploying to device \'' + device_list[0] + '\'.');
- install_target = device_list[0];
- } else {
- events.emit('warn', 'No target specified and no devices found, deploying to emulator');
- install_target = '--emulator';
- }
- });
- }
- }).then(function() {
- if (install_target == '--device') {
- return device.resolveTarget(null);
- } else if (install_target == '--emulator') {
- // Give preference to any already started emulators. Else, start one.
- return emulator.list_started()
- .then(function(started) {
- return started && started.length > 0 ? started[0] : emulator.start();
- }).then(function(emulatorId) {
- return emulator.resolveTarget(emulatorId);
- });
- }
- // They specified a specific device/emulator ID.
- return device.list()
- .then(function(devices) {
- if (devices.indexOf(install_target) > -1) {
- return device.resolveTarget(install_target);
- }
- return emulator.list_started()
- .then(function(started_emulators) {
- if (started_emulators.indexOf(install_target) > -1) {
- return emulator.resolveTarget(install_target);
- }
- return emulator.list_images()
- .then(function(avds) {
- // if target emulator isn't started, then start it.
- for (var avd in avds) {
- if (avds[avd].name == install_target) {
- return emulator.start(install_target)
- .then(function(emulatorId) {
- return emulator.resolveTarget(emulatorId);
- });
- }
- }
- return Q.reject('Target \'' + install_target + '\' not found, unable to run project');
- });
- });
- });
- }).then(function(resolvedTarget) {
- // Better just call self.build, but we're doing some processing of
- // build results (according to platformApi spec) so they are in different
- // format than emulator.install expects.
- // TODO: Update emulator/device.install to handle this change
- return build.run.call(self, runOptions, resolvedTarget)
- .then(function(buildResults) {
- if (resolvedTarget.isEmulator) {
- return emulator.wait_for_boot(resolvedTarget.target)
- .then(function () {
- return emulator.install(resolvedTarget, buildResults);
- });
- }
- return device.install(resolvedTarget, buildResults);
- });
- });
-};
-
-module.exports.help = function() {
- console.log('Usage: ' + path.relative(process.cwd(), process.argv[1]) + ' [options]');
- console.log('Build options :');
- console.log(' --debug : Builds project in debug mode');
- console.log(' --release : Builds project in release mode');
- console.log(' --nobuild : Runs the currently built project without recompiling');
- console.log('Deploy options :');
- console.log(' --device : Will deploy the built project to a device');
- console.log(' --emulator : Will deploy the built project to an emulator if one exists');
- console.log(' --target=<target_id> : Installs to the target with the specified id.');
- process.exit(0);
-};
diff --git a/StoneIsland/platforms/android/cordova/lib/start-emulator b/StoneIsland/platforms/android/cordova/lib/start-emulator
deleted file mode 100755
index f96bdc3e..00000000
--- a/StoneIsland/platforms/android/cordova/lib/start-emulator
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var emulator = require('./emulator'),
- args = process.argv;
-
-var install_target;
-if(args.length > 2) {
- if (args[2].substring(0, 9) == '--target=') {
- install_target = args[2].substring(9, args[2].length);
- } else {
- console.error('ERROR : argument \'' + args[2] + '\' not recognized.');
- process.exit(2);
- }
-}
-
-emulator.start(install_target).done(null, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
-});
-
diff --git a/StoneIsland/platforms/android/cordova/lib/start-emulator.bat b/StoneIsland/platforms/android/cordova/lib/start-emulator.bat
deleted file mode 100644
index 9329d951..00000000
--- a/StoneIsland/platforms/android/cordova/lib/start-emulator.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0start-emulator"
-IF EXIST %script_path% (
- node "%script_path%" %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'start-emulator' script in 'cordova\lib' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/log b/StoneIsland/platforms/android/cordova/log
deleted file mode 100755
index 47f06050..00000000
--- a/StoneIsland/platforms/android/cordova/log
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var log = require('./lib/log'),
- reqs = require('./lib/check_reqs'),
- args = process.argv;
-
-// Usage support for when args are given
-if(args.length > 2) {
- log.help();
-} else {
- reqs.run().done(function() {
- return log.run();
- }, function(err) {
- console.error('ERROR: ' + err);
- process.exit(2);
- });
-}
diff --git a/StoneIsland/platforms/android/cordova/log.bat b/StoneIsland/platforms/android/cordova/log.bat
deleted file mode 100644
index 4b2b434e..00000000
--- a/StoneIsland/platforms/android/cordova/log.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0log"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'log' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/loggingHelper.js b/StoneIsland/platforms/android/cordova/loggingHelper.js
deleted file mode 100644
index 32b2ee0a..00000000
--- a/StoneIsland/platforms/android/cordova/loggingHelper.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var CordovaLogger = require('cordova-common').CordovaLogger;
-
-module.exports = {
- adjustLoggerLevel: function (opts) {
- if (opts instanceof Array) {
- opts.silent = opts.indexOf('--silent') !== -1;
- opts.verbose = opts.indexOf('--verbose') !== -1;
- }
-
- if (opts.silent) {
- CordovaLogger.get().setLevel('error');
- }
-
- if (opts.verbose) {
- CordovaLogger.get().setLevel('verbose');
- }
- }
-};
diff --git a/StoneIsland/platforms/android/cordova/run b/StoneIsland/platforms/android/cordova/run
deleted file mode 100755
index 9544c1dc..00000000
--- a/StoneIsland/platforms/android/cordova/run
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-var Api = require('./Api');
-var nopt = require('nopt');
-var path = require('path');
-
-// Support basic help commands
-if(['--help', '/?', '-h', 'help', '-help', '/help'].indexOf(process.argv[2]) >= 0)
- require('./lib/run').help();
-
-// Do some basic argument parsing
-var runOpts = nopt({
- 'verbose' : Boolean,
- 'silent' : Boolean,
- 'debug' : Boolean,
- 'release' : Boolean,
- 'nobuild': Boolean,
- 'buildConfig' : path,
- 'archs' : String,
- 'device' : Boolean,
- 'emulator': Boolean,
- 'target' : String
-}, { 'd' : '--verbose' });
-
-// Make runOptions compatible with PlatformApi run method spec
-runOpts.argv = runOpts.argv.remain;
-
-require('./loggingHelper').adjustLoggerLevel(runOpts);
-
-new Api().run(runOpts)
-.catch(function(err) {
- console.error(err, err.stack);
- process.exit(2);
-});
diff --git a/StoneIsland/platforms/android/cordova/run.bat b/StoneIsland/platforms/android/cordova/run.bat
deleted file mode 100644
index b0bc28b2..00000000
--- a/StoneIsland/platforms/android/cordova/run.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0run"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'run' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-) \ No newline at end of file
diff --git a/StoneIsland/platforms/android/cordova/version b/StoneIsland/platforms/android/cordova/version
deleted file mode 100755
index cdc2e80a..00000000
--- a/StoneIsland/platforms/android/cordova/version
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env node
-
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-// Coho updates this line:
-var VERSION = "6.2.3";
-
-module.exports.version = VERSION;
-
-if (!module.parent) {
- console.log(VERSION);
-}
diff --git a/StoneIsland/platforms/android/cordova/version.bat b/StoneIsland/platforms/android/cordova/version.bat
deleted file mode 100644
index 3610c17b..00000000
--- a/StoneIsland/platforms/android/cordova/version.bat
+++ /dev/null
@@ -1,26 +0,0 @@
-:: Licensed to the Apache Software Foundation (ASF) under one
-:: or more contributor license agreements. See the NOTICE file
-:: distributed with this work for additional information
-:: regarding copyright ownership. The ASF licenses this file
-:: to you under the Apache License, Version 2.0 (the
-:: "License"); you may not use this file except in compliance
-:: with the License. You may obtain a copy of the License at
-::
-:: http://www.apache.org/licenses/LICENSE-2.0
-::
-:: Unless required by applicable law or agreed to in writing,
-:: software distributed under the License is distributed on an
-:: "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-:: KIND, either express or implied. See the License for the
-:: specific language governing permissions and limitations
-:: under the License.
-
-@ECHO OFF
-SET script_path="%~dp0version"
-IF EXIST %script_path% (
- node %script_path% %*
-) ELSE (
- ECHO.
- ECHO ERROR: Could not find 'version' script in 'cordova' folder, aborting...>&2
- EXIT /B 1
-)
diff --git a/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle b/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle
deleted file mode 100644
index 11e735ae..00000000
--- a/StoneIsland/platforms/android/phonegap-plugin-push/stoneisland-push.gradle
+++ /dev/null
@@ -1,21 +0,0 @@
-import java.util.regex.Pattern
-
-def doExtractStringFromManifest(name) {
- def manifestFile = file(android.sourceSets.main.manifest.srcFile)
- def pattern = Pattern.compile(name + "=\"(.*?)\"")
- def matcher = pattern.matcher(manifestFile.getText())
- matcher.find()
- return matcher.group(1)
-}
-
-android {
- sourceSets {
- main {
- manifest.srcFile 'AndroidManifest.xml'
- }
- }
-
- defaultConfig {
- applicationId = doExtractStringFromManifest("package")
- }
-}
diff --git a/StoneIsland/platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js b/StoneIsland/platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js
deleted file mode 100644
index 2e9aa67b..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-/**
- * Exports the ExposedJsApi.java object if available, otherwise exports the PromptBasedNativeApi.
- */
-
-var nativeApi = this._cordovaNative || require('cordova/android/promptbasednativeapi');
-var currentApi = nativeApi;
-
-module.exports = {
- get: function() { return currentApi; },
- setPreferPrompt: function(value) {
- currentApi = value ? require('cordova/android/promptbasednativeapi') : nativeApi;
- },
- // Used only by tests.
- set: function(value) {
- currentApi = value;
- }
-};
diff --git a/StoneIsland/platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js b/StoneIsland/platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js
deleted file mode 100644
index f7fb6bc7..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
-*/
-
-/**
- * Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
- * This is used pre-JellyBean, where addJavascriptInterface() is disabled.
- */
-
-module.exports = {
- exec: function(bridgeSecret, service, action, callbackId, argsJson) {
- return prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, service, action, callbackId]));
- },
- setNativeToJsBridgeMode: function(bridgeSecret, value) {
- prompt(value, 'gap_bridge_mode:' + bridgeSecret);
- },
- retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
- return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
- }
-};
diff --git a/StoneIsland/platforms/android/platform_www/cordova-js-src/exec.js b/StoneIsland/platforms/android/platform_www/cordova-js-src/exec.js
deleted file mode 100644
index f73d87a1..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova-js-src/exec.js
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Execute a cordova command. It is up to the native side whether this action
- * is synchronous or asynchronous. The native side can return:
- * Synchronous: PluginResult object as a JSON string
- * Asynchronous: Empty string ""
- * If async, the native side will cordova.callbackSuccess or cordova.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success The success callback
- * @param {Function} fail The fail callback
- * @param {String} service The name of the service to use
- * @param {String} action Action to be run in cordova
- * @param {String[]} [args] Zero or more arguments to pass to the method
- */
-var cordova = require('cordova'),
- nativeApiProvider = require('cordova/android/nativeapiprovider'),
- utils = require('cordova/utils'),
- base64 = require('cordova/base64'),
- channel = require('cordova/channel'),
- jsToNativeModes = {
- PROMPT: 0,
- JS_OBJECT: 1
- },
- nativeToJsModes = {
- // Polls for messages using the JS->Native bridge.
- POLLING: 0,
- // For LOAD_URL to be viable, it would need to have a work-around for
- // the bug where the soft-keyboard gets dismissed when a message is sent.
- LOAD_URL: 1,
- // For the ONLINE_EVENT to be viable, it would need to intercept all event
- // listeners (both through addEventListener and window.ononline) as well
- // as set the navigator property itself.
- ONLINE_EVENT: 2,
- EVAL_BRIDGE: 3
- },
- jsToNativeBridgeMode, // Set lazily.
- nativeToJsBridgeMode = nativeToJsModes.EVAL_BRIDGE,
- pollEnabled = false,
- bridgeSecret = -1;
-
-var messagesFromNative = [];
-var isProcessing = false;
-var resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();
-var nextTick = resolvedPromise ? function(fn) { resolvedPromise.then(fn); } : function(fn) { setTimeout(fn); };
-
-function androidExec(success, fail, service, action, args) {
- if (bridgeSecret < 0) {
- // If we ever catch this firing, we'll need to queue up exec()s
- // and fire them once we get a secret. For now, I don't think
- // it's possible for exec() to be called since plugins are parsed but
- // not run until until after onNativeReady.
- throw new Error('exec() called without bridgeSecret');
- }
- // Set default bridge modes if they have not already been set.
- // By default, we use the failsafe, since addJavascriptInterface breaks too often
- if (jsToNativeBridgeMode === undefined) {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- }
-
- // If args is not provided, default to an empty array
- args = args || [];
-
- // Process any ArrayBuffers in the args into a string.
- for (var i = 0; i < args.length; i++) {
- if (utils.typeName(args[i]) == 'ArrayBuffer') {
- args[i] = base64.fromArrayBuffer(args[i]);
- }
- }
-
- var callbackId = service + cordova.callbackId++,
- argsJson = JSON.stringify(args);
- if (success || fail) {
- cordova.callbacks[callbackId] = {success:success, fail:fail};
- }
-
- var msgs = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);
- // If argsJson was received by Java as null, try again with the PROMPT bridge mode.
- // This happens in rare circumstances, such as when certain Unicode characters are passed over the bridge on a Galaxy S2. See CB-2666.
- if (jsToNativeBridgeMode == jsToNativeModes.JS_OBJECT && msgs === "@Null arguments.") {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.PROMPT);
- androidExec(success, fail, service, action, args);
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- } else if (msgs) {
- messagesFromNative.push(msgs);
- // Always process async to avoid exceptions messing up stack.
- nextTick(processMessages);
- }
-}
-
-androidExec.init = function() {
- //CB-11828
- //This failsafe checks the version of Android and if it's Jellybean, it switches it to
- //using the Online Event bridge for communicating from Native to JS
- //
- //It's ugly, but it's necessary.
- var check = navigator.userAgent.toLowerCase().match(/android\s[0-9].[0-9]/);
- var version_code = check && check[0].match(/4.[0-3].*/);
- if (version_code != null && nativeToJsBridgeMode == nativeToJsModes.EVAL_BRIDGE) {
- nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT;
- }
-
- bridgeSecret = +prompt('', 'gap_init:' + nativeToJsBridgeMode);
- channel.onNativeReady.fire();
-};
-
-function pollOnceFromOnlineEvent() {
- pollOnce(true);
-}
-
-function pollOnce(opt_fromOnlineEvent) {
- if (bridgeSecret < 0) {
- // This can happen when the NativeToJsMessageQueue resets the online state on page transitions.
- // We know there's nothing to retrieve, so no need to poll.
- return;
- }
- var msgs = nativeApiProvider.get().retrieveJsMessages(bridgeSecret, !!opt_fromOnlineEvent);
- if (msgs) {
- messagesFromNative.push(msgs);
- // Process sync since we know we're already top-of-stack.
- processMessages();
- }
-}
-
-function pollingTimerFunc() {
- if (pollEnabled) {
- pollOnce();
- setTimeout(pollingTimerFunc, 50);
- }
-}
-
-function hookOnlineApis() {
- function proxyEvent(e) {
- cordova.fireWindowEvent(e.type);
- }
- // The network module takes care of firing online and offline events.
- // It currently fires them only on document though, so we bridge them
- // to window here (while first listening for exec()-releated online/offline
- // events).
- window.addEventListener('online', pollOnceFromOnlineEvent, false);
- window.addEventListener('offline', pollOnceFromOnlineEvent, false);
- cordova.addWindowEventHandler('online');
- cordova.addWindowEventHandler('offline');
- document.addEventListener('online', proxyEvent, false);
- document.addEventListener('offline', proxyEvent, false);
-}
-
-hookOnlineApis();
-
-androidExec.jsToNativeModes = jsToNativeModes;
-androidExec.nativeToJsModes = nativeToJsModes;
-
-androidExec.setJsToNativeBridgeMode = function(mode) {
- if (mode == jsToNativeModes.JS_OBJECT && !window._cordovaNative) {
- mode = jsToNativeModes.PROMPT;
- }
- nativeApiProvider.setPreferPrompt(mode == jsToNativeModes.PROMPT);
- jsToNativeBridgeMode = mode;
-};
-
-androidExec.setNativeToJsBridgeMode = function(mode) {
- if (mode == nativeToJsBridgeMode) {
- return;
- }
- if (nativeToJsBridgeMode == nativeToJsModes.POLLING) {
- pollEnabled = false;
- }
-
- nativeToJsBridgeMode = mode;
- // Tell the native side to switch modes.
- // Otherwise, it will be set by androidExec.init()
- if (bridgeSecret >= 0) {
- nativeApiProvider.get().setNativeToJsBridgeMode(bridgeSecret, mode);
- }
-
- if (mode == nativeToJsModes.POLLING) {
- pollEnabled = true;
- setTimeout(pollingTimerFunc, 1);
- }
-};
-
-function buildPayload(payload, message) {
- var payloadKind = message.charAt(0);
- if (payloadKind == 's') {
- payload.push(message.slice(1));
- } else if (payloadKind == 't') {
- payload.push(true);
- } else if (payloadKind == 'f') {
- payload.push(false);
- } else if (payloadKind == 'N') {
- payload.push(null);
- } else if (payloadKind == 'n') {
- payload.push(+message.slice(1));
- } else if (payloadKind == 'A') {
- var data = message.slice(1);
- payload.push(base64.toArrayBuffer(data));
- } else if (payloadKind == 'S') {
- payload.push(window.atob(message.slice(1)));
- } else if (payloadKind == 'M') {
- var multipartMessages = message.slice(1);
- while (multipartMessages !== "") {
- var spaceIdx = multipartMessages.indexOf(' ');
- var msgLen = +multipartMessages.slice(0, spaceIdx);
- var multipartMessage = multipartMessages.substr(spaceIdx + 1, msgLen);
- multipartMessages = multipartMessages.slice(spaceIdx + msgLen + 1);
- buildPayload(payload, multipartMessage);
- }
- } else {
- payload.push(JSON.parse(message));
- }
-}
-
-// Processes a single message, as encoded by NativeToJsMessageQueue.java.
-function processMessage(message) {
- var firstChar = message.charAt(0);
- if (firstChar == 'J') {
- // This is deprecated on the .java side. It doesn't work with CSP enabled.
- eval(message.slice(1));
- } else if (firstChar == 'S' || firstChar == 'F') {
- var success = firstChar == 'S';
- var keepCallback = message.charAt(1) == '1';
- var spaceIdx = message.indexOf(' ', 2);
- var status = +message.slice(2, spaceIdx);
- var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
- var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
- var payloadMessage = message.slice(nextSpaceIdx + 1);
- var payload = [];
- buildPayload(payload, payloadMessage);
- cordova.callbackFromNative(callbackId, success, status, payload, keepCallback);
- } else {
- console.log("processMessage failed: invalid message: " + JSON.stringify(message));
- }
-}
-
-function processMessages() {
- // Check for the reentrant case.
- if (isProcessing) {
- return;
- }
- if (messagesFromNative.length === 0) {
- return;
- }
- isProcessing = true;
- try {
- var msg = popMessageFromQueue();
- // The Java side can send a * message to indicate that it
- // still has messages waiting to be retrieved.
- if (msg == '*' && messagesFromNative.length === 0) {
- nextTick(pollOnce);
- return;
- }
- processMessage(msg);
- } finally {
- isProcessing = false;
- if (messagesFromNative.length > 0) {
- nextTick(processMessages);
- }
- }
-}
-
-function popMessageFromQueue() {
- var messageBatch = messagesFromNative.shift();
- if (messageBatch == '*') {
- return '*';
- }
-
- var spaceIdx = messageBatch.indexOf(' ');
- var msgLen = +messageBatch.slice(0, spaceIdx);
- var message = messageBatch.substr(spaceIdx + 1, msgLen);
- messageBatch = messageBatch.slice(spaceIdx + msgLen + 1);
- if (messageBatch) {
- messagesFromNative.unshift(messageBatch);
- }
- return message;
-}
-
-module.exports = androidExec;
diff --git a/StoneIsland/platforms/android/platform_www/cordova-js-src/platform.js b/StoneIsland/platforms/android/platform_www/cordova-js-src/platform.js
deleted file mode 100644
index 2bfd0247..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova-js-src/platform.js
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT 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 last resume event that was received that had the result of a plugin call.
-var lastResumeEvent = null;
-
-module.exports = {
- id: 'android',
- bootstrap: function() {
- var channel = require('cordova/channel'),
- cordova = require('cordova'),
- exec = require('cordova/exec'),
- modulemapper = require('cordova/modulemapper');
-
- // Get the shared secret needed to use the bridge.
- exec.init();
-
- // TODO: Extract this as a proper plugin.
- modulemapper.clobbers('cordova/plugin/android/app', 'navigator.app');
-
- var APP_PLUGIN_NAME = Number(cordova.platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
- // Inject a listener for the backbutton on the document.
- var backButtonChannel = cordova.addDocumentEventHandler('backbutton');
- backButtonChannel.onHasSubscribersChange = function() {
- // If we just attached the first handler or detached the last handler,
- // let native know we need to override the back button.
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [this.numHandlers == 1]);
- };
-
- // Add hardware MENU and SEARCH button handlers
- cordova.addDocumentEventHandler('menubutton');
- cordova.addDocumentEventHandler('searchbutton');
-
- function bindButtonChannel(buttonName) {
- // generic button bind used for volumeup/volumedown buttons
- var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
- volumeButtonChannel.onHasSubscribersChange = function() {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [buttonName, this.numHandlers == 1]);
- };
- }
- // Inject a listener for the volume buttons on the document.
- bindButtonChannel('volumeup');
- bindButtonChannel('volumedown');
-
- // The resume event is not "sticky", but it is possible that the event
- // will contain the result of a plugin call. We need to ensure that the
- // plugin result is delivered even after the event is fired (CB-10498)
- var cordovaAddEventListener = document.addEventListener;
-
- document.addEventListener = function(evt, handler, capture) {
- cordovaAddEventListener(evt, handler, capture);
-
- if (evt === 'resume' && lastResumeEvent) {
- handler(lastResumeEvent);
- }
- };
-
- // Let native code know we are all done on the JS side.
- // Native code will then un-hide the WebView.
- channel.onCordovaReady.subscribe(function() {
- exec(onMessageFromNative, null, APP_PLUGIN_NAME, 'messageChannel', []);
- exec(null, null, APP_PLUGIN_NAME, "show", []);
- });
- }
-};
-
-function onMessageFromNative(msg) {
- var cordova = require('cordova');
- var action = msg.action;
-
- switch (action)
- {
- // Button events
- case 'backbutton':
- case 'menubutton':
- case 'searchbutton':
- // App life cycle events
- case 'pause':
- // Volume events
- case 'volumedownbutton':
- case 'volumeupbutton':
- cordova.fireDocumentEvent(action);
- break;
- case 'resume':
- if(arguments.length > 1 && msg.pendingResult) {
- if(arguments.length === 2) {
- msg.pendingResult.result = arguments[1];
- } else {
- // The plugin returned a multipart message
- var res = [];
- for(var i = 1; i < arguments.length; i++) {
- res.push(arguments[i]);
- }
- msg.pendingResult.result = res;
- }
-
- // Save the plugin result so that it can be delivered to the js
- // even if they miss the initial firing of the event
- lastResumeEvent = msg;
- }
- cordova.fireDocumentEvent(action, msg);
- break;
- default:
- throw new Error('Unknown event action ' + action);
- }
-}
diff --git a/StoneIsland/platforms/android/platform_www/cordova-js-src/plugin/android/app.js b/StoneIsland/platforms/android/platform_www/cordova-js-src/plugin/android/app.js
deleted file mode 100644
index 22cf96e8..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova-js-src/plugin/android/app.js
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-var APP_PLUGIN_NAME = Number(require('cordova').platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
-module.exports = {
- /**
- * Clear the resource cache.
- */
- clearCache:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearCache", []);
- },
-
- /**
- * Load the url into the webview or into new browser instance.
- *
- * @param url The URL to load
- * @param props Properties that can be passed in to the activity:
- * wait: int => wait msec before loading URL
- * loadingDialog: "Title,Message" => display a native loading dialog
- * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
- * clearHistory: boolean => clear webview history (default=false)
- * openExternal: boolean => open in a new browser (default=false)
- *
- * Example:
- * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
- loadUrl:function(url, props) {
- exec(null, null, APP_PLUGIN_NAME, "loadUrl", [url, props]);
- },
-
- /**
- * Cancel loadUrl that is waiting to be loaded.
- */
- cancelLoadUrl:function() {
- exec(null, null, APP_PLUGIN_NAME, "cancelLoadUrl", []);
- },
-
- /**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
- clearHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearHistory", []);
- },
-
- /**
- * Go to previous page displayed.
- * This is the same as pressing the backbutton on Android device.
- */
- backHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "backHistory", []);
- },
-
- /**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "backbutton" event, this is automatically done.
- *
- * @param override T=override, F=cancel override
- */
- overrideBackbutton:function(override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [override]);
- },
-
- /**
- * Override the default behavior of the Android volume button.
- * If overridden, when the volume button is pressed, the "volume[up|down]button"
- * JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "volume[up|down]button" event, this is automatically done.
- *
- * @param button volumeup, volumedown
- * @param override T=override, F=cancel override
- */
- overrideButton:function(button, override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [button, override]);
- },
-
- /**
- * Exit and terminate the application.
- */
- exitApp:function() {
- return exec(null, null, APP_PLUGIN_NAME, "exitApp", []);
- }
-};
diff --git a/StoneIsland/platforms/android/platform_www/cordova.js b/StoneIsland/platforms/android/platform_www/cordova.js
deleted file mode 100644
index bda7c3e5..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova.js
+++ /dev/null
@@ -1,2208 +0,0 @@
-// Platform: android
-// 7ef9f9c03167a4dde4372d869472241b6816fee9
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT 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() {
-var PLATFORM_VERSION_BUILD_LABEL = '6.2.3';
-// file: src/scripts/require.js
-
-/*jshint -W079 */
-/*jshint -W020 */
-
-var require,
- define;
-
-(function () {
- var modules = {},
- // Stack of moduleIds currently being built.
- requireStack = [],
- // Map of module ID -> index into requireStack of modules currently being built.
- inProgressModules = {},
- SEPARATOR = ".";
-
-
-
- function build(module) {
- var factory = module.factory,
- localRequire = function (id) {
- var resultantId = id;
- //Its a relative path, so lop off the last portion and add the id (minus "./")
- if (id.charAt(0) === ".") {
- resultantId = module.id.slice(0, module.id.lastIndexOf(SEPARATOR)) + SEPARATOR + id.slice(2);
- }
- return require(resultantId);
- };
- module.exports = {};
- delete module.factory;
- factory(localRequire, module.exports, module);
- return module.exports;
- }
-
- require = function (id) {
- if (!modules[id]) {
- throw "module " + id + " not found";
- } else if (id in inProgressModules) {
- var cycle = requireStack.slice(inProgressModules[id]).join('->') + '->' + id;
- throw "Cycle in require graph: " + cycle;
- }
- if (modules[id].factory) {
- try {
- inProgressModules[id] = requireStack.length;
- requireStack.push(id);
- return build(modules[id]);
- } finally {
- delete inProgressModules[id];
- requireStack.pop();
- }
- }
- return modules[id].exports;
- };
-
- define = function (id, factory) {
- if (modules[id]) {
- throw "module " + id + " already defined";
- }
-
- modules[id] = {
- id: id,
- factory: factory
- };
- };
-
- define.remove = function (id) {
- delete modules[id];
- };
-
- define.moduleMap = modules;
-})();
-
-//Export for use in node
-if (typeof module === "object" && typeof require === "function") {
- module.exports.require = require;
- module.exports.define = define;
-}
-
-// file: src/cordova.js
-define("cordova", function(require, exports, module) {
-
-// Workaround for Windows 10 in hosted environment case
-// http://www.w3.org/html/wg/drafts/html/master/browsers.html#named-access-on-the-window-object
-if (window.cordova && !(window.cordova instanceof HTMLElement)) {
- throw new Error("cordova already defined");
-}
-
-
-var channel = require('cordova/channel');
-var platform = require('cordova/platform');
-
-
-/**
- * Intercept calls to addEventListener + removeEventListener and handle deviceready,
- * resume, and pause events.
- */
-var m_document_addEventListener = document.addEventListener;
-var m_document_removeEventListener = document.removeEventListener;
-var m_window_addEventListener = window.addEventListener;
-var m_window_removeEventListener = window.removeEventListener;
-
-/**
- * Houses custom event handlers to intercept on document + window event listeners.
- */
-var documentEventHandlers = {},
- windowEventHandlers = {};
-
-document.addEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- if (typeof documentEventHandlers[e] != 'undefined') {
- documentEventHandlers[e].subscribe(handler);
- } else {
- m_document_addEventListener.call(document, evt, handler, capture);
- }
-};
-
-window.addEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- if (typeof windowEventHandlers[e] != 'undefined') {
- windowEventHandlers[e].subscribe(handler);
- } else {
- m_window_addEventListener.call(window, evt, handler, capture);
- }
-};
-
-document.removeEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- // If unsubscribing from an event that is handled by a plugin
- if (typeof documentEventHandlers[e] != "undefined") {
- documentEventHandlers[e].unsubscribe(handler);
- } else {
- m_document_removeEventListener.call(document, evt, handler, capture);
- }
-};
-
-window.removeEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- // If unsubscribing from an event that is handled by a plugin
- if (typeof windowEventHandlers[e] != "undefined") {
- windowEventHandlers[e].unsubscribe(handler);
- } else {
- m_window_removeEventListener.call(window, evt, handler, capture);
- }
-};
-
-function createEvent(type, data) {
- var event = document.createEvent('Events');
- event.initEvent(type, false, false);
- if (data) {
- for (var i in data) {
- if (data.hasOwnProperty(i)) {
- event[i] = data[i];
- }
- }
- }
- return event;
-}
-
-
-var cordova = {
- define:define,
- require:require,
- version:PLATFORM_VERSION_BUILD_LABEL,
- platformVersion:PLATFORM_VERSION_BUILD_LABEL,
- platformId:platform.id,
- /**
- * Methods to add/remove your own addEventListener hijacking on document + window.
- */
- addWindowEventHandler:function(event) {
- return (windowEventHandlers[event] = channel.create(event));
- },
- addStickyDocumentEventHandler:function(event) {
- return (documentEventHandlers[event] = channel.createSticky(event));
- },
- addDocumentEventHandler:function(event) {
- return (documentEventHandlers[event] = channel.create(event));
- },
- removeWindowEventHandler:function(event) {
- delete windowEventHandlers[event];
- },
- removeDocumentEventHandler:function(event) {
- delete documentEventHandlers[event];
- },
- /**
- * Retrieve original event handlers that were replaced by Cordova
- *
- * @return object
- */
- getOriginalHandlers: function() {
- return {'document': {'addEventListener': m_document_addEventListener, 'removeEventListener': m_document_removeEventListener},
- 'window': {'addEventListener': m_window_addEventListener, 'removeEventListener': m_window_removeEventListener}};
- },
- /**
- * Method to fire event from native code
- * bNoDetach is required for events which cause an exception which needs to be caught in native code
- */
- fireDocumentEvent: function(type, data, bNoDetach) {
- var evt = createEvent(type, data);
- if (typeof documentEventHandlers[type] != 'undefined') {
- if( bNoDetach ) {
- documentEventHandlers[type].fire(evt);
- }
- else {
- setTimeout(function() {
- // Fire deviceready on listeners that were registered before cordova.js was loaded.
- if (type == 'deviceready') {
- document.dispatchEvent(evt);
- }
- documentEventHandlers[type].fire(evt);
- }, 0);
- }
- } else {
- document.dispatchEvent(evt);
- }
- },
- fireWindowEvent: function(type, data) {
- var evt = createEvent(type,data);
- if (typeof windowEventHandlers[type] != 'undefined') {
- setTimeout(function() {
- windowEventHandlers[type].fire(evt);
- }, 0);
- } else {
- window.dispatchEvent(evt);
- }
- },
-
- /**
- * Plugin callback mechanism.
- */
- // Randomize the starting callbackId to avoid collisions after refreshing or navigating.
- // This way, it's very unlikely that any new callback would get the same callbackId as an old callback.
- callbackId: Math.floor(Math.random() * 2000000000),
- callbacks: {},
- callbackStatus: {
- NO_RESULT: 0,
- OK: 1,
- CLASS_NOT_FOUND_EXCEPTION: 2,
- ILLEGAL_ACCESS_EXCEPTION: 3,
- INSTANTIATION_EXCEPTION: 4,
- MALFORMED_URL_EXCEPTION: 5,
- IO_EXCEPTION: 6,
- INVALID_ACTION: 7,
- JSON_EXCEPTION: 8,
- ERROR: 9
- },
-
- /**
- * Called by native code when returning successful result from an action.
- */
- callbackSuccess: function(callbackId, args) {
- cordova.callbackFromNative(callbackId, true, args.status, [args.message], args.keepCallback);
- },
-
- /**
- * Called by native code when returning error result from an action.
- */
- callbackError: function(callbackId, args) {
- // TODO: Deprecate callbackSuccess and callbackError in favour of callbackFromNative.
- // Derive success from status.
- cordova.callbackFromNative(callbackId, false, args.status, [args.message], args.keepCallback);
- },
-
- /**
- * Called by native code when returning the result from an action.
- */
- callbackFromNative: function(callbackId, isSuccess, status, args, keepCallback) {
- try {
- var callback = cordova.callbacks[callbackId];
- if (callback) {
- if (isSuccess && status == cordova.callbackStatus.OK) {
- callback.success && callback.success.apply(null, args);
- } else if (!isSuccess) {
- callback.fail && callback.fail.apply(null, args);
- }
- /*
- else
- Note, this case is intentionally not caught.
- this can happen if isSuccess is true, but callbackStatus is NO_RESULT
- which is used to remove a callback from the list without calling the callbacks
- typically keepCallback is false in this case
- */
- // Clear callback if not expecting any more results
- if (!keepCallback) {
- delete cordova.callbacks[callbackId];
- }
- }
- }
- catch (err) {
- var msg = "Error in " + (isSuccess ? "Success" : "Error") + " callbackId: " + callbackId + " : " + err;
- console && console.log && console.log(msg);
- cordova.fireWindowEvent("cordovacallbackerror", { 'message': msg });
- throw err;
- }
- },
- addConstructor: function(func) {
- channel.onCordovaReady.subscribe(function() {
- try {
- func();
- } catch(e) {
- console.log("Failed to run constructor: " + e);
- }
- });
- }
-};
-
-
-module.exports = cordova;
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/android/nativeapiprovider.js
-define("cordova/android/nativeapiprovider", function(require, exports, module) {
-
-/**
- * Exports the ExposedJsApi.java object if available, otherwise exports the PromptBasedNativeApi.
- */
-
-var nativeApi = this._cordovaNative || require('cordova/android/promptbasednativeapi');
-var currentApi = nativeApi;
-
-module.exports = {
- get: function() { return currentApi; },
- setPreferPrompt: function(value) {
- currentApi = value ? require('cordova/android/promptbasednativeapi') : nativeApi;
- },
- // Used only by tests.
- set: function(value) {
- currentApi = value;
- }
-};
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/android/promptbasednativeapi.js
-define("cordova/android/promptbasednativeapi", function(require, exports, module) {
-
-/**
- * Implements the API of ExposedJsApi.java, but uses prompt() to communicate.
- * This is used pre-JellyBean, where addJavascriptInterface() is disabled.
- */
-
-module.exports = {
- exec: function(bridgeSecret, service, action, callbackId, argsJson) {
- return prompt(argsJson, 'gap:'+JSON.stringify([bridgeSecret, service, action, callbackId]));
- },
- setNativeToJsBridgeMode: function(bridgeSecret, value) {
- prompt(value, 'gap_bridge_mode:' + bridgeSecret);
- },
- retrieveJsMessages: function(bridgeSecret, fromOnlineEvent) {
- return prompt(+fromOnlineEvent, 'gap_poll:' + bridgeSecret);
- }
-};
-
-});
-
-// file: src/common/argscheck.js
-define("cordova/argscheck", function(require, exports, module) {
-
-var utils = require('cordova/utils');
-
-var moduleExports = module.exports;
-
-var typeMap = {
- 'A': 'Array',
- 'D': 'Date',
- 'N': 'Number',
- 'S': 'String',
- 'F': 'Function',
- 'O': 'Object'
-};
-
-function extractParamName(callee, argIndex) {
- return (/.*?\((.*?)\)/).exec(callee)[1].split(', ')[argIndex];
-}
-
-function checkArgs(spec, functionName, args, opt_callee) {
- if (!moduleExports.enableChecks) {
- return;
- }
- var errMsg = null;
- var typeName;
- for (var i = 0; i < spec.length; ++i) {
- var c = spec.charAt(i),
- cUpper = c.toUpperCase(),
- arg = args[i];
- // Asterix means allow anything.
- if (c == '*') {
- continue;
- }
- typeName = utils.typeName(arg);
- if ((arg === null || arg === undefined) && c == cUpper) {
- continue;
- }
- if (typeName != typeMap[cUpper]) {
- errMsg = 'Expected ' + typeMap[cUpper];
- break;
- }
- }
- if (errMsg) {
- errMsg += ', but got ' + typeName + '.';
- errMsg = 'Wrong type for parameter "' + extractParamName(opt_callee || args.callee, i) + '" of ' + functionName + ': ' + errMsg;
- // Don't log when running unit tests.
- if (typeof jasmine == 'undefined') {
- console.error(errMsg);
- }
- throw TypeError(errMsg);
- }
-}
-
-function getValue(value, defaultValue) {
- return value === undefined ? defaultValue : value;
-}
-
-moduleExports.checkArgs = checkArgs;
-moduleExports.getValue = getValue;
-moduleExports.enableChecks = true;
-
-
-});
-
-// file: src/common/base64.js
-define("cordova/base64", function(require, exports, module) {
-
-var base64 = exports;
-
-base64.fromArrayBuffer = function(arrayBuffer) {
- var array = new Uint8Array(arrayBuffer);
- return uint8ToBase64(array);
-};
-
-base64.toArrayBuffer = function(str) {
- var decodedStr = typeof atob != 'undefined' ? atob(str) : new Buffer(str,'base64').toString('binary');
- var arrayBuffer = new ArrayBuffer(decodedStr.length);
- var array = new Uint8Array(arrayBuffer);
- for (var i=0, len=decodedStr.length; i < len; i++) {
- array[i] = decodedStr.charCodeAt(i);
- }
- return arrayBuffer;
-};
-
-//------------------------------------------------------------------------------
-
-/* This code is based on the performance tests at http://jsperf.com/b64tests
- * This 12-bit-at-a-time algorithm was the best performing version on all
- * platforms tested.
- */
-
-var b64_6bit = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-var b64_12bit;
-
-var b64_12bitTable = function() {
- b64_12bit = [];
- for (var i=0; i<64; i++) {
- for (var j=0; j<64; j++) {
- b64_12bit[i*64+j] = b64_6bit[i] + b64_6bit[j];
- }
- }
- b64_12bitTable = function() { return b64_12bit; };
- return b64_12bit;
-};
-
-function uint8ToBase64(rawData) {
- var numBytes = rawData.byteLength;
- var output="";
- var segment;
- var table = b64_12bitTable();
- for (var i=0;i<numBytes-2;i+=3) {
- segment = (rawData[i] << 16) + (rawData[i+1] << 8) + rawData[i+2];
- output += table[segment >> 12];
- output += table[segment & 0xfff];
- }
- if (numBytes - i == 2) {
- segment = (rawData[i] << 16) + (rawData[i+1] << 8);
- output += table[segment >> 12];
- output += b64_6bit[(segment & 0xfff) >> 6];
- output += '=';
- } else if (numBytes - i == 1) {
- segment = (rawData[i] << 16);
- output += table[segment >> 12];
- output += '==';
- }
- return output;
-}
-
-});
-
-// file: src/common/builder.js
-define("cordova/builder", function(require, exports, module) {
-
-var utils = require('cordova/utils');
-
-function each(objects, func, context) {
- for (var prop in objects) {
- if (objects.hasOwnProperty(prop)) {
- func.apply(context, [objects[prop], prop]);
- }
- }
-}
-
-function clobber(obj, key, value) {
- exports.replaceHookForTesting(obj, key);
- var needsProperty = false;
- try {
- obj[key] = value;
- } catch (e) {
- needsProperty = true;
- }
- // Getters can only be overridden by getters.
- if (needsProperty || obj[key] !== value) {
- utils.defineGetter(obj, key, function() {
- return value;
- });
- }
-}
-
-function assignOrWrapInDeprecateGetter(obj, key, value, message) {
- if (message) {
- utils.defineGetter(obj, key, function() {
- console.log(message);
- delete obj[key];
- clobber(obj, key, value);
- return value;
- });
- } else {
- clobber(obj, key, value);
- }
-}
-
-function include(parent, objects, clobber, merge) {
- each(objects, function (obj, key) {
- try {
- var result = obj.path ? require(obj.path) : {};
-
- if (clobber) {
- // Clobber if it doesn't exist.
- if (typeof parent[key] === 'undefined') {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- } else if (typeof obj.path !== 'undefined') {
- // If merging, merge properties onto parent, otherwise, clobber.
- if (merge) {
- recursiveMerge(parent[key], result);
- } else {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- }
- }
- result = parent[key];
- } else {
- // Overwrite if not currently defined.
- if (typeof parent[key] == 'undefined') {
- assignOrWrapInDeprecateGetter(parent, key, result, obj.deprecated);
- } else {
- // Set result to what already exists, so we can build children into it if they exist.
- result = parent[key];
- }
- }
-
- if (obj.children) {
- include(result, obj.children, clobber, merge);
- }
- } catch(e) {
- utils.alert('Exception building Cordova JS globals: ' + e + ' for key "' + key + '"');
- }
- });
-}
-
-/**
- * Merge properties from one object onto another recursively. Properties from
- * the src object will overwrite existing target property.
- *
- * @param target Object to merge properties into.
- * @param src Object to merge properties from.
- */
-function recursiveMerge(target, src) {
- for (var prop in src) {
- if (src.hasOwnProperty(prop)) {
- if (target.prototype && target.prototype.constructor === target) {
- // If the target object is a constructor override off prototype.
- clobber(target.prototype, prop, src[prop]);
- } else {
- if (typeof src[prop] === 'object' && typeof target[prop] === 'object') {
- recursiveMerge(target[prop], src[prop]);
- } else {
- clobber(target, prop, src[prop]);
- }
- }
- }
- }
-}
-
-exports.buildIntoButDoNotClobber = function(objects, target) {
- include(target, objects, false, false);
-};
-exports.buildIntoAndClobber = function(objects, target) {
- include(target, objects, true, false);
-};
-exports.buildIntoAndMerge = function(objects, target) {
- include(target, objects, true, true);
-};
-exports.recursiveMerge = recursiveMerge;
-exports.assignOrWrapInDeprecateGetter = assignOrWrapInDeprecateGetter;
-exports.replaceHookForTesting = function() {};
-
-});
-
-// file: src/common/channel.js
-define("cordova/channel", function(require, exports, module) {
-
-var utils = require('cordova/utils'),
- nextGuid = 1;
-
-/**
- * Custom pub-sub "channel" that can have functions subscribed to it
- * This object is used to define and control firing of events for
- * cordova initialization, as well as for custom events thereafter.
- *
- * The order of events during page load and Cordova startup is as follows:
- *
- * onDOMContentLoaded* Internal event that is received when the web page is loaded and parsed.
- * onNativeReady* Internal event that indicates the Cordova native side is ready.
- * onCordovaReady* Internal event fired when all Cordova JavaScript objects have been created.
- * onDeviceReady* User event fired to indicate that Cordova is ready
- * onResume User event fired to indicate a start/resume lifecycle event
- * onPause User event fired to indicate a pause lifecycle event
- *
- * The events marked with an * are sticky. Once they have fired, they will stay in the fired state.
- * All listeners that subscribe after the event is fired will be executed right away.
- *
- * The only Cordova events that user code should register for are:
- * deviceready Cordova native code is initialized and Cordova APIs can be called from JavaScript
- * pause App has moved to background
- * resume App has returned to foreground
- *
- * Listeners can be registered as:
- * document.addEventListener("deviceready", myDeviceReadyListener, false);
- * document.addEventListener("resume", myResumeListener, false);
- * document.addEventListener("pause", myPauseListener, false);
- *
- * The DOM lifecycle events should be used for saving and restoring state
- * window.onload
- * window.onunload
- *
- */
-
-/**
- * Channel
- * @constructor
- * @param type String the channel name
- */
-var Channel = function(type, sticky) {
- this.type = type;
- // Map of guid -> function.
- this.handlers = {};
- // 0 = Non-sticky, 1 = Sticky non-fired, 2 = Sticky fired.
- this.state = sticky ? 1 : 0;
- // Used in sticky mode to remember args passed to fire().
- this.fireArgs = null;
- // Used by onHasSubscribersChange to know if there are any listeners.
- this.numHandlers = 0;
- // Function that is called when the first listener is subscribed, or when
- // the last listener is unsubscribed.
- this.onHasSubscribersChange = null;
-},
- channel = {
- /**
- * Calls the provided function only after all of the channels specified
- * have been fired. All channels must be sticky channels.
- */
- join: function(h, c) {
- var len = c.length,
- i = len,
- f = function() {
- if (!(--i)) h();
- };
- for (var j=0; j<len; j++) {
- if (c[j].state === 0) {
- throw Error('Can only use join with sticky channels.');
- }
- c[j].subscribe(f);
- }
- if (!len) h();
- },
- create: function(type) {
- return channel[type] = new Channel(type, false);
- },
- createSticky: function(type) {
- return channel[type] = new Channel(type, true);
- },
-
- /**
- * cordova Channels that must fire before "deviceready" is fired.
- */
- deviceReadyChannelsArray: [],
- deviceReadyChannelsMap: {},
-
- /**
- * Indicate that a feature needs to be initialized before it is ready to be used.
- * This holds up Cordova's "deviceready" event until the feature has been initialized
- * and Cordova.initComplete(feature) is called.
- *
- * @param feature {String} The unique feature name
- */
- waitForInitialization: function(feature) {
- if (feature) {
- var c = channel[feature] || this.createSticky(feature);
- this.deviceReadyChannelsMap[feature] = c;
- this.deviceReadyChannelsArray.push(c);
- }
- },
-
- /**
- * Indicate that initialization code has completed and the feature is ready to be used.
- *
- * @param feature {String} The unique feature name
- */
- initializationComplete: function(feature) {
- var c = this.deviceReadyChannelsMap[feature];
- if (c) {
- c.fire();
- }
- }
- };
-
-function checkSubscriptionArgument(argument) {
- if (typeof argument !== "function" && typeof argument.handleEvent !== "function") {
- throw new Error(
- "Must provide a function or an EventListener object " +
- "implementing the handleEvent interface."
- );
- }
-}
-
-/**
- * Subscribes the given function to the channel. Any time that
- * Channel.fire is called so too will the function.
- * Optionally specify an execution context for the function
- * and a guid that can be used to stop subscribing to the channel.
- * Returns the guid.
- */
-Channel.prototype.subscribe = function(eventListenerOrFunction, eventListener) {
- checkSubscriptionArgument(eventListenerOrFunction);
- var handleEvent, guid;
-
- if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
- // Received an EventListener object implementing the handleEvent interface
- handleEvent = eventListenerOrFunction.handleEvent;
- eventListener = eventListenerOrFunction;
- } else {
- // Received a function to handle event
- handleEvent = eventListenerOrFunction;
- }
-
- if (this.state == 2) {
- handleEvent.apply(eventListener || this, this.fireArgs);
- return;
- }
-
- guid = eventListenerOrFunction.observer_guid;
- if (typeof eventListener === "object") {
- handleEvent = utils.close(eventListener, handleEvent);
- }
-
- if (!guid) {
- // First time any channel has seen this subscriber
- guid = '' + nextGuid++;
- }
- handleEvent.observer_guid = guid;
- eventListenerOrFunction.observer_guid = guid;
-
- // Don't add the same handler more than once.
- if (!this.handlers[guid]) {
- this.handlers[guid] = handleEvent;
- this.numHandlers++;
- if (this.numHandlers == 1) {
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-/**
- * Unsubscribes the function with the given guid from the channel.
- */
-Channel.prototype.unsubscribe = function(eventListenerOrFunction) {
- checkSubscriptionArgument(eventListenerOrFunction);
- var handleEvent, guid, handler;
-
- if (eventListenerOrFunction && typeof eventListenerOrFunction === "object") {
- // Received an EventListener object implementing the handleEvent interface
- handleEvent = eventListenerOrFunction.handleEvent;
- } else {
- // Received a function to handle event
- handleEvent = eventListenerOrFunction;
- }
-
- guid = handleEvent.observer_guid;
- handler = this.handlers[guid];
- if (handler) {
- delete this.handlers[guid];
- this.numHandlers--;
- if (this.numHandlers === 0) {
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-/**
- * Calls all functions subscribed to this channel.
- */
-Channel.prototype.fire = function(e) {
- var fail = false,
- fireArgs = Array.prototype.slice.call(arguments);
- // Apply stickiness.
- if (this.state == 1) {
- this.state = 2;
- this.fireArgs = fireArgs;
- }
- if (this.numHandlers) {
- // Copy the values first so that it is safe to modify it from within
- // callbacks.
- var toCall = [];
- for (var item in this.handlers) {
- toCall.push(this.handlers[item]);
- }
- for (var i = 0; i < toCall.length; ++i) {
- toCall[i].apply(this, fireArgs);
- }
- if (this.state == 2 && this.numHandlers) {
- this.numHandlers = 0;
- this.handlers = {};
- this.onHasSubscribersChange && this.onHasSubscribersChange();
- }
- }
-};
-
-
-// defining them here so they are ready super fast!
-// DOM event that is received when the web page is loaded and parsed.
-channel.createSticky('onDOMContentLoaded');
-
-// Event to indicate the Cordova native side is ready.
-channel.createSticky('onNativeReady');
-
-// Event to indicate that all Cordova JavaScript objects have been created
-// and it's time to run plugin constructors.
-channel.createSticky('onCordovaReady');
-
-// Event to indicate that all automatically loaded JS plugins are loaded and ready.
-// FIXME remove this
-channel.createSticky('onPluginsReady');
-
-// Event to indicate that Cordova is ready
-channel.createSticky('onDeviceReady');
-
-// Event to indicate a resume lifecycle event
-channel.create('onResume');
-
-// Event to indicate a pause lifecycle event
-channel.create('onPause');
-
-// Channels that must fire before "deviceready" is fired.
-channel.waitForInitialization('onCordovaReady');
-channel.waitForInitialization('onDOMContentLoaded');
-
-module.exports = channel;
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/exec.js
-define("cordova/exec", function(require, exports, module) {
-
-/**
- * Execute a cordova command. It is up to the native side whether this action
- * is synchronous or asynchronous. The native side can return:
- * Synchronous: PluginResult object as a JSON string
- * Asynchronous: Empty string ""
- * If async, the native side will cordova.callbackSuccess or cordova.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success The success callback
- * @param {Function} fail The fail callback
- * @param {String} service The name of the service to use
- * @param {String} action Action to be run in cordova
- * @param {String[]} [args] Zero or more arguments to pass to the method
- */
-var cordova = require('cordova'),
- nativeApiProvider = require('cordova/android/nativeapiprovider'),
- utils = require('cordova/utils'),
- base64 = require('cordova/base64'),
- channel = require('cordova/channel'),
- jsToNativeModes = {
- PROMPT: 0,
- JS_OBJECT: 1
- },
- nativeToJsModes = {
- // Polls for messages using the JS->Native bridge.
- POLLING: 0,
- // For LOAD_URL to be viable, it would need to have a work-around for
- // the bug where the soft-keyboard gets dismissed when a message is sent.
- LOAD_URL: 1,
- // For the ONLINE_EVENT to be viable, it would need to intercept all event
- // listeners (both through addEventListener and window.ononline) as well
- // as set the navigator property itself.
- ONLINE_EVENT: 2,
- EVAL_BRIDGE: 3
- },
- jsToNativeBridgeMode, // Set lazily.
- nativeToJsBridgeMode = nativeToJsModes.EVAL_BRIDGE,
- pollEnabled = false,
- bridgeSecret = -1;
-
-var messagesFromNative = [];
-var isProcessing = false;
-var resolvedPromise = typeof Promise == 'undefined' ? null : Promise.resolve();
-var nextTick = resolvedPromise ? function(fn) { resolvedPromise.then(fn); } : function(fn) { setTimeout(fn); };
-
-function androidExec(success, fail, service, action, args) {
- if (bridgeSecret < 0) {
- // If we ever catch this firing, we'll need to queue up exec()s
- // and fire them once we get a secret. For now, I don't think
- // it's possible for exec() to be called since plugins are parsed but
- // not run until until after onNativeReady.
- throw new Error('exec() called without bridgeSecret');
- }
- // Set default bridge modes if they have not already been set.
- // By default, we use the failsafe, since addJavascriptInterface breaks too often
- if (jsToNativeBridgeMode === undefined) {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- }
-
- // If args is not provided, default to an empty array
- args = args || [];
-
- // Process any ArrayBuffers in the args into a string.
- for (var i = 0; i < args.length; i++) {
- if (utils.typeName(args[i]) == 'ArrayBuffer') {
- args[i] = base64.fromArrayBuffer(args[i]);
- }
- }
-
- var callbackId = service + cordova.callbackId++,
- argsJson = JSON.stringify(args);
- if (success || fail) {
- cordova.callbacks[callbackId] = {success:success, fail:fail};
- }
-
- var msgs = nativeApiProvider.get().exec(bridgeSecret, service, action, callbackId, argsJson);
- // If argsJson was received by Java as null, try again with the PROMPT bridge mode.
- // This happens in rare circumstances, such as when certain Unicode characters are passed over the bridge on a Galaxy S2. See CB-2666.
- if (jsToNativeBridgeMode == jsToNativeModes.JS_OBJECT && msgs === "@Null arguments.") {
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.PROMPT);
- androidExec(success, fail, service, action, args);
- androidExec.setJsToNativeBridgeMode(jsToNativeModes.JS_OBJECT);
- } else if (msgs) {
- messagesFromNative.push(msgs);
- // Always process async to avoid exceptions messing up stack.
- nextTick(processMessages);
- }
-}
-
-androidExec.init = function() {
- //CB-11828
- //This failsafe checks the version of Android and if it's Jellybean, it switches it to
- //using the Online Event bridge for communicating from Native to JS
- //
- //It's ugly, but it's necessary.
- var check = navigator.userAgent.toLowerCase().match(/android\s[0-9].[0-9]/);
- var version_code = check && check[0].match(/4.[0-3].*/);
- if (version_code != null && nativeToJsBridgeMode == nativeToJsModes.EVAL_BRIDGE) {
- nativeToJsBridgeMode = nativeToJsModes.ONLINE_EVENT;
- }
-
- bridgeSecret = +prompt('', 'gap_init:' + nativeToJsBridgeMode);
- channel.onNativeReady.fire();
-};
-
-function pollOnceFromOnlineEvent() {
- pollOnce(true);
-}
-
-function pollOnce(opt_fromOnlineEvent) {
- if (bridgeSecret < 0) {
- // This can happen when the NativeToJsMessageQueue resets the online state on page transitions.
- // We know there's nothing to retrieve, so no need to poll.
- return;
- }
- var msgs = nativeApiProvider.get().retrieveJsMessages(bridgeSecret, !!opt_fromOnlineEvent);
- if (msgs) {
- messagesFromNative.push(msgs);
- // Process sync since we know we're already top-of-stack.
- processMessages();
- }
-}
-
-function pollingTimerFunc() {
- if (pollEnabled) {
- pollOnce();
- setTimeout(pollingTimerFunc, 50);
- }
-}
-
-function hookOnlineApis() {
- function proxyEvent(e) {
- cordova.fireWindowEvent(e.type);
- }
- // The network module takes care of firing online and offline events.
- // It currently fires them only on document though, so we bridge them
- // to window here (while first listening for exec()-releated online/offline
- // events).
- window.addEventListener('online', pollOnceFromOnlineEvent, false);
- window.addEventListener('offline', pollOnceFromOnlineEvent, false);
- cordova.addWindowEventHandler('online');
- cordova.addWindowEventHandler('offline');
- document.addEventListener('online', proxyEvent, false);
- document.addEventListener('offline', proxyEvent, false);
-}
-
-hookOnlineApis();
-
-androidExec.jsToNativeModes = jsToNativeModes;
-androidExec.nativeToJsModes = nativeToJsModes;
-
-androidExec.setJsToNativeBridgeMode = function(mode) {
- if (mode == jsToNativeModes.JS_OBJECT && !window._cordovaNative) {
- mode = jsToNativeModes.PROMPT;
- }
- nativeApiProvider.setPreferPrompt(mode == jsToNativeModes.PROMPT);
- jsToNativeBridgeMode = mode;
-};
-
-androidExec.setNativeToJsBridgeMode = function(mode) {
- if (mode == nativeToJsBridgeMode) {
- return;
- }
- if (nativeToJsBridgeMode == nativeToJsModes.POLLING) {
- pollEnabled = false;
- }
-
- nativeToJsBridgeMode = mode;
- // Tell the native side to switch modes.
- // Otherwise, it will be set by androidExec.init()
- if (bridgeSecret >= 0) {
- nativeApiProvider.get().setNativeToJsBridgeMode(bridgeSecret, mode);
- }
-
- if (mode == nativeToJsModes.POLLING) {
- pollEnabled = true;
- setTimeout(pollingTimerFunc, 1);
- }
-};
-
-function buildPayload(payload, message) {
- var payloadKind = message.charAt(0);
- if (payloadKind == 's') {
- payload.push(message.slice(1));
- } else if (payloadKind == 't') {
- payload.push(true);
- } else if (payloadKind == 'f') {
- payload.push(false);
- } else if (payloadKind == 'N') {
- payload.push(null);
- } else if (payloadKind == 'n') {
- payload.push(+message.slice(1));
- } else if (payloadKind == 'A') {
- var data = message.slice(1);
- payload.push(base64.toArrayBuffer(data));
- } else if (payloadKind == 'S') {
- payload.push(window.atob(message.slice(1)));
- } else if (payloadKind == 'M') {
- var multipartMessages = message.slice(1);
- while (multipartMessages !== "") {
- var spaceIdx = multipartMessages.indexOf(' ');
- var msgLen = +multipartMessages.slice(0, spaceIdx);
- var multipartMessage = multipartMessages.substr(spaceIdx + 1, msgLen);
- multipartMessages = multipartMessages.slice(spaceIdx + msgLen + 1);
- buildPayload(payload, multipartMessage);
- }
- } else {
- payload.push(JSON.parse(message));
- }
-}
-
-// Processes a single message, as encoded by NativeToJsMessageQueue.java.
-function processMessage(message) {
- var firstChar = message.charAt(0);
- if (firstChar == 'J') {
- // This is deprecated on the .java side. It doesn't work with CSP enabled.
- eval(message.slice(1));
- } else if (firstChar == 'S' || firstChar == 'F') {
- var success = firstChar == 'S';
- var keepCallback = message.charAt(1) == '1';
- var spaceIdx = message.indexOf(' ', 2);
- var status = +message.slice(2, spaceIdx);
- var nextSpaceIdx = message.indexOf(' ', spaceIdx + 1);
- var callbackId = message.slice(spaceIdx + 1, nextSpaceIdx);
- var payloadMessage = message.slice(nextSpaceIdx + 1);
- var payload = [];
- buildPayload(payload, payloadMessage);
- cordova.callbackFromNative(callbackId, success, status, payload, keepCallback);
- } else {
- console.log("processMessage failed: invalid message: " + JSON.stringify(message));
- }
-}
-
-function processMessages() {
- // Check for the reentrant case.
- if (isProcessing) {
- return;
- }
- if (messagesFromNative.length === 0) {
- return;
- }
- isProcessing = true;
- try {
- var msg = popMessageFromQueue();
- // The Java side can send a * message to indicate that it
- // still has messages waiting to be retrieved.
- if (msg == '*' && messagesFromNative.length === 0) {
- nextTick(pollOnce);
- return;
- }
- processMessage(msg);
- } finally {
- isProcessing = false;
- if (messagesFromNative.length > 0) {
- nextTick(processMessages);
- }
- }
-}
-
-function popMessageFromQueue() {
- var messageBatch = messagesFromNative.shift();
- if (messageBatch == '*') {
- return '*';
- }
-
- var spaceIdx = messageBatch.indexOf(' ');
- var msgLen = +messageBatch.slice(0, spaceIdx);
- var message = messageBatch.substr(spaceIdx + 1, msgLen);
- messageBatch = messageBatch.slice(spaceIdx + msgLen + 1);
- if (messageBatch) {
- messagesFromNative.unshift(messageBatch);
- }
- return message;
-}
-
-module.exports = androidExec;
-
-});
-
-// file: src/common/exec/proxy.js
-define("cordova/exec/proxy", function(require, exports, module) {
-
-
-// internal map of proxy function
-var CommandProxyMap = {};
-
-module.exports = {
-
- // example: cordova.commandProxy.add("Accelerometer",{getCurrentAcceleration: function(successCallback, errorCallback, options) {...},...);
- add:function(id,proxyObj) {
- console.log("adding proxy for " + id);
- CommandProxyMap[id] = proxyObj;
- return proxyObj;
- },
-
- // cordova.commandProxy.remove("Accelerometer");
- remove:function(id) {
- var proxy = CommandProxyMap[id];
- delete CommandProxyMap[id];
- CommandProxyMap[id] = null;
- return proxy;
- },
-
- get:function(service,action) {
- return ( CommandProxyMap[service] ? CommandProxyMap[service][action] : null );
- }
-};
-});
-
-// file: src/common/init.js
-define("cordova/init", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var modulemapper = require('cordova/modulemapper');
-var platform = require('cordova/platform');
-var pluginloader = require('cordova/pluginloader');
-var utils = require('cordova/utils');
-
-var platformInitChannelsArray = [channel.onNativeReady, channel.onPluginsReady];
-
-function logUnfiredChannels(arr) {
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i].state != 2) {
- console.log('Channel not fired: ' + arr[i].type);
- }
- }
-}
-
-window.setTimeout(function() {
- if (channel.onDeviceReady.state != 2) {
- console.log('deviceready has not fired after 5 seconds.');
- logUnfiredChannels(platformInitChannelsArray);
- logUnfiredChannels(channel.deviceReadyChannelsArray);
- }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
- var CordovaNavigator = function() {};
- CordovaNavigator.prototype = origNavigator;
- var newNavigator = new CordovaNavigator();
- // This work-around really only applies to new APIs that are newer than Function.bind.
- // Without it, APIs such as getGamepads() break.
- if (CordovaNavigator.bind) {
- for (var key in origNavigator) {
- if (typeof origNavigator[key] == 'function') {
- newNavigator[key] = origNavigator[key].bind(origNavigator);
- }
- else {
- (function(k) {
- utils.defineGetterSetter(newNavigator,key,function() {
- return origNavigator[k];
- });
- })(key);
- }
- }
- }
- return newNavigator;
-}
-
-if (window.navigator) {
- window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
- window.console = {
- log: function(){}
- };
-}
-if (!window.console.warn) {
- window.console.warn = function(msg) {
- this.log("warn: " + msg);
- };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onActivated = cordova.addDocumentEventHandler('activated');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
- channel.onDOMContentLoaded.fire();
-} else {
- document.addEventListener('DOMContentLoaded', function() {
- channel.onDOMContentLoaded.fire();
- }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
- channel.onNativeReady.fire();
-}
-
-modulemapper.clobbers('cordova', 'cordova');
-modulemapper.clobbers('cordova/exec', 'cordova.exec');
-modulemapper.clobbers('cordova/exec', 'Cordova.exec');
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-// Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
-// The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
- pluginloader.load(function() {
- channel.onPluginsReady.fire();
- });
-}, 0);
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
- modulemapper.mapModules(window);
-
- platform.initialize && platform.initialize();
-
- // Fire event to notify that all objects are created
- channel.onCordovaReady.fire();
-
- // Fire onDeviceReady event once page has fully loaded, all
- // constructors have run and cordova info has been received from native
- // side.
- channel.join(function() {
- require('cordova').fireDocumentEvent('deviceready');
- }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-
-});
-
-// file: src/common/init_b.js
-define("cordova/init_b", function(require, exports, module) {
-
-var channel = require('cordova/channel');
-var cordova = require('cordova');
-var modulemapper = require('cordova/modulemapper');
-var platform = require('cordova/platform');
-var pluginloader = require('cordova/pluginloader');
-var utils = require('cordova/utils');
-
-var platformInitChannelsArray = [channel.onDOMContentLoaded, channel.onNativeReady, channel.onPluginsReady];
-
-// setting exec
-cordova.exec = require('cordova/exec');
-
-function logUnfiredChannels(arr) {
- for (var i = 0; i < arr.length; ++i) {
- if (arr[i].state != 2) {
- console.log('Channel not fired: ' + arr[i].type);
- }
- }
-}
-
-window.setTimeout(function() {
- if (channel.onDeviceReady.state != 2) {
- console.log('deviceready has not fired after 5 seconds.');
- logUnfiredChannels(platformInitChannelsArray);
- logUnfiredChannels(channel.deviceReadyChannelsArray);
- }
-}, 5000);
-
-// Replace navigator before any modules are required(), to ensure it happens as soon as possible.
-// We replace it so that properties that can't be clobbered can instead be overridden.
-function replaceNavigator(origNavigator) {
- var CordovaNavigator = function() {};
- CordovaNavigator.prototype = origNavigator;
- var newNavigator = new CordovaNavigator();
- // This work-around really only applies to new APIs that are newer than Function.bind.
- // Without it, APIs such as getGamepads() break.
- if (CordovaNavigator.bind) {
- for (var key in origNavigator) {
- if (typeof origNavigator[key] == 'function') {
- newNavigator[key] = origNavigator[key].bind(origNavigator);
- }
- else {
- (function(k) {
- utils.defineGetterSetter(newNavigator,key,function() {
- return origNavigator[k];
- });
- })(key);
- }
- }
- }
- return newNavigator;
-}
-if (window.navigator) {
- window.navigator = replaceNavigator(window.navigator);
-}
-
-if (!window.console) {
- window.console = {
- log: function(){}
- };
-}
-if (!window.console.warn) {
- window.console.warn = function(msg) {
- this.log("warn: " + msg);
- };
-}
-
-// Register pause, resume and deviceready channels as events on document.
-channel.onPause = cordova.addDocumentEventHandler('pause');
-channel.onResume = cordova.addDocumentEventHandler('resume');
-channel.onActivated = cordova.addDocumentEventHandler('activated');
-channel.onDeviceReady = cordova.addStickyDocumentEventHandler('deviceready');
-
-// Listen for DOMContentLoaded and notify our channel subscribers.
-if (document.readyState == 'complete' || document.readyState == 'interactive') {
- channel.onDOMContentLoaded.fire();
-} else {
- document.addEventListener('DOMContentLoaded', function() {
- channel.onDOMContentLoaded.fire();
- }, false);
-}
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any cordova JS is ready.
-if (window._nativeReady) {
- channel.onNativeReady.fire();
-}
-
-// Call the platform-specific initialization.
-platform.bootstrap && platform.bootstrap();
-
-// Wrap in a setTimeout to support the use-case of having plugin JS appended to cordova.js.
-// The delay allows the attached modules to be defined before the plugin loader looks for them.
-setTimeout(function() {
- pluginloader.load(function() {
- channel.onPluginsReady.fire();
- });
-}, 0);
-
-/**
- * Create all cordova objects once native side is ready.
- */
-channel.join(function() {
- modulemapper.mapModules(window);
-
- platform.initialize && platform.initialize();
-
- // Fire event to notify that all objects are created
- channel.onCordovaReady.fire();
-
- // Fire onDeviceReady event once page has fully loaded, all
- // constructors have run and cordova info has been received from native
- // side.
- channel.join(function() {
- require('cordova').fireDocumentEvent('deviceready');
- }, channel.deviceReadyChannelsArray);
-
-}, platformInitChannelsArray);
-
-});
-
-// file: src/common/modulemapper.js
-define("cordova/modulemapper", function(require, exports, module) {
-
-var builder = require('cordova/builder'),
- moduleMap = define.moduleMap,
- symbolList,
- deprecationMap;
-
-exports.reset = function() {
- symbolList = [];
- deprecationMap = {};
-};
-
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
- if (!(moduleName in moduleMap)) {
- throw new Error('Module ' + moduleName + ' does not exist.');
- }
- symbolList.push(strategy, moduleName, symbolPath);
- if (opt_deprecationMessage) {
- deprecationMap[symbolPath] = opt_deprecationMessage;
- }
-}
-
-// Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.runs = function(moduleName) {
- addEntry('r', moduleName, null);
-};
-
-function prepareNamespace(symbolPath, context) {
- if (!symbolPath) {
- return context;
- }
- var parts = symbolPath.split('.');
- var cur = context;
- for (var i = 0, part; part = parts[i]; ++i) {
- cur = cur[part] = cur[part] || {};
- }
- return cur;
-}
-
-exports.mapModules = function(context) {
- var origSymbols = {};
- context.CDV_origSymbols = origSymbols;
- for (var i = 0, len = symbolList.length; i < len; i += 3) {
- var strategy = symbolList[i];
- var moduleName = symbolList[i + 1];
- var module = require(moduleName);
- // <runs/>
- if (strategy == 'r') {
- continue;
- }
- var symbolPath = symbolList[i + 2];
- var lastDot = symbolPath.lastIndexOf('.');
- var namespace = symbolPath.substr(0, lastDot);
- var lastName = symbolPath.substr(lastDot + 1);
-
- var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;
- var parentObj = prepareNamespace(namespace, context);
- var target = parentObj[lastName];
-
- if (strategy == 'm' && target) {
- builder.recursiveMerge(target, module);
- } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
- if (!(symbolPath in origSymbols)) {
- origSymbols[symbolPath] = target;
- }
- builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);
- }
- }
-};
-
-exports.getOriginalSymbol = function(context, symbolPath) {
- var origSymbols = context.CDV_origSymbols;
- if (origSymbols && (symbolPath in origSymbols)) {
- return origSymbols[symbolPath];
- }
- var parts = symbolPath.split('.');
- var obj = context;
- for (var i = 0; i < parts.length; ++i) {
- obj = obj && obj[parts[i]];
- }
- return obj;
-};
-
-exports.reset();
-
-
-});
-
-// file: src/common/modulemapper_b.js
-define("cordova/modulemapper_b", function(require, exports, module) {
-
-var builder = require('cordova/builder'),
- symbolList = [],
- deprecationMap;
-
-exports.reset = function() {
- symbolList = [];
- deprecationMap = {};
-};
-
-function addEntry(strategy, moduleName, symbolPath, opt_deprecationMessage) {
- symbolList.push(strategy, moduleName, symbolPath);
- if (opt_deprecationMessage) {
- deprecationMap[symbolPath] = opt_deprecationMessage;
- }
-}
-
-// Note: Android 2.3 does have Function.bind().
-exports.clobbers = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('c', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.merges = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('m', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.defaults = function(moduleName, symbolPath, opt_deprecationMessage) {
- addEntry('d', moduleName, symbolPath, opt_deprecationMessage);
-};
-
-exports.runs = function(moduleName) {
- addEntry('r', moduleName, null);
-};
-
-function prepareNamespace(symbolPath, context) {
- if (!symbolPath) {
- return context;
- }
- var parts = symbolPath.split('.');
- var cur = context;
- for (var i = 0, part; part = parts[i]; ++i) {
- cur = cur[part] = cur[part] || {};
- }
- return cur;
-}
-
-exports.mapModules = function(context) {
- var origSymbols = {};
- context.CDV_origSymbols = origSymbols;
- for (var i = 0, len = symbolList.length; i < len; i += 3) {
- var strategy = symbolList[i];
- var moduleName = symbolList[i + 1];
- var module = require(moduleName);
- // <runs/>
- if (strategy == 'r') {
- continue;
- }
- var symbolPath = symbolList[i + 2];
- var lastDot = symbolPath.lastIndexOf('.');
- var namespace = symbolPath.substr(0, lastDot);
- var lastName = symbolPath.substr(lastDot + 1);
-
- var deprecationMsg = symbolPath in deprecationMap ? 'Access made to deprecated symbol: ' + symbolPath + '. ' + deprecationMsg : null;
- var parentObj = prepareNamespace(namespace, context);
- var target = parentObj[lastName];
-
- if (strategy == 'm' && target) {
- builder.recursiveMerge(target, module);
- } else if ((strategy == 'd' && !target) || (strategy != 'd')) {
- if (!(symbolPath in origSymbols)) {
- origSymbols[symbolPath] = target;
- }
- builder.assignOrWrapInDeprecateGetter(parentObj, lastName, module, deprecationMsg);
- }
- }
-};
-
-exports.getOriginalSymbol = function(context, symbolPath) {
- var origSymbols = context.CDV_origSymbols;
- if (origSymbols && (symbolPath in origSymbols)) {
- return origSymbols[symbolPath];
- }
- var parts = symbolPath.split('.');
- var obj = context;
- for (var i = 0; i < parts.length; ++i) {
- obj = obj && obj[parts[i]];
- }
- return obj;
-};
-
-exports.reset();
-
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/platform.js
-define("cordova/platform", function(require, exports, module) {
-
-// The last resume event that was received that had the result of a plugin call.
-var lastResumeEvent = null;
-
-module.exports = {
- id: 'android',
- bootstrap: function() {
- var channel = require('cordova/channel'),
- cordova = require('cordova'),
- exec = require('cordova/exec'),
- modulemapper = require('cordova/modulemapper');
-
- // Get the shared secret needed to use the bridge.
- exec.init();
-
- // TODO: Extract this as a proper plugin.
- modulemapper.clobbers('cordova/plugin/android/app', 'navigator.app');
-
- var APP_PLUGIN_NAME = Number(cordova.platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
- // Inject a listener for the backbutton on the document.
- var backButtonChannel = cordova.addDocumentEventHandler('backbutton');
- backButtonChannel.onHasSubscribersChange = function() {
- // If we just attached the first handler or detached the last handler,
- // let native know we need to override the back button.
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [this.numHandlers == 1]);
- };
-
- // Add hardware MENU and SEARCH button handlers
- cordova.addDocumentEventHandler('menubutton');
- cordova.addDocumentEventHandler('searchbutton');
-
- function bindButtonChannel(buttonName) {
- // generic button bind used for volumeup/volumedown buttons
- var volumeButtonChannel = cordova.addDocumentEventHandler(buttonName + 'button');
- volumeButtonChannel.onHasSubscribersChange = function() {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [buttonName, this.numHandlers == 1]);
- };
- }
- // Inject a listener for the volume buttons on the document.
- bindButtonChannel('volumeup');
- bindButtonChannel('volumedown');
-
- // The resume event is not "sticky", but it is possible that the event
- // will contain the result of a plugin call. We need to ensure that the
- // plugin result is delivered even after the event is fired (CB-10498)
- var cordovaAddEventListener = document.addEventListener;
-
- document.addEventListener = function(evt, handler, capture) {
- cordovaAddEventListener(evt, handler, capture);
-
- if (evt === 'resume' && lastResumeEvent) {
- handler(lastResumeEvent);
- }
- };
-
- // Let native code know we are all done on the JS side.
- // Native code will then un-hide the WebView.
- channel.onCordovaReady.subscribe(function() {
- exec(onMessageFromNative, null, APP_PLUGIN_NAME, 'messageChannel', []);
- exec(null, null, APP_PLUGIN_NAME, "show", []);
- });
- }
-};
-
-function onMessageFromNative(msg) {
- var cordova = require('cordova');
- var action = msg.action;
-
- switch (action)
- {
- // Button events
- case 'backbutton':
- case 'menubutton':
- case 'searchbutton':
- // App life cycle events
- case 'pause':
- // Volume events
- case 'volumedownbutton':
- case 'volumeupbutton':
- cordova.fireDocumentEvent(action);
- break;
- case 'resume':
- if(arguments.length > 1 && msg.pendingResult) {
- if(arguments.length === 2) {
- msg.pendingResult.result = arguments[1];
- } else {
- // The plugin returned a multipart message
- var res = [];
- for(var i = 1; i < arguments.length; i++) {
- res.push(arguments[i]);
- }
- msg.pendingResult.result = res;
- }
-
- // Save the plugin result so that it can be delivered to the js
- // even if they miss the initial firing of the event
- lastResumeEvent = msg;
- }
- cordova.fireDocumentEvent(action, msg);
- break;
- default:
- throw new Error('Unknown event action ' + action);
- }
-}
-
-});
-
-// file: /Users/maj/src/cordova-android/cordova-js-src/plugin/android/app.js
-define("cordova/plugin/android/app", function(require, exports, module) {
-
-var exec = require('cordova/exec');
-var APP_PLUGIN_NAME = Number(require('cordova').platformVersion.split('.')[0]) >= 4 ? 'CoreAndroid' : 'App';
-
-module.exports = {
- /**
- * Clear the resource cache.
- */
- clearCache:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearCache", []);
- },
-
- /**
- * Load the url into the webview or into new browser instance.
- *
- * @param url The URL to load
- * @param props Properties that can be passed in to the activity:
- * wait: int => wait msec before loading URL
- * loadingDialog: "Title,Message" => display a native loading dialog
- * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
- * clearHistory: boolean => clear webview history (default=false)
- * openExternal: boolean => open in a new browser (default=false)
- *
- * Example:
- * navigator.app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
- loadUrl:function(url, props) {
- exec(null, null, APP_PLUGIN_NAME, "loadUrl", [url, props]);
- },
-
- /**
- * Cancel loadUrl that is waiting to be loaded.
- */
- cancelLoadUrl:function() {
- exec(null, null, APP_PLUGIN_NAME, "cancelLoadUrl", []);
- },
-
- /**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
- clearHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "clearHistory", []);
- },
-
- /**
- * Go to previous page displayed.
- * This is the same as pressing the backbutton on Android device.
- */
- backHistory:function() {
- exec(null, null, APP_PLUGIN_NAME, "backHistory", []);
- },
-
- /**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "backbutton" event, this is automatically done.
- *
- * @param override T=override, F=cancel override
- */
- overrideBackbutton:function(override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideBackbutton", [override]);
- },
-
- /**
- * Override the default behavior of the Android volume button.
- * If overridden, when the volume button is pressed, the "volume[up|down]button"
- * JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "volume[up|down]button" event, this is automatically done.
- *
- * @param button volumeup, volumedown
- * @param override T=override, F=cancel override
- */
- overrideButton:function(button, override) {
- exec(null, null, APP_PLUGIN_NAME, "overrideButton", [button, override]);
- },
-
- /**
- * Exit and terminate the application.
- */
- exitApp:function() {
- return exec(null, null, APP_PLUGIN_NAME, "exitApp", []);
- }
-};
-
-});
-
-// file: src/common/pluginloader.js
-define("cordova/pluginloader", function(require, exports, module) {
-
-var modulemapper = require('cordova/modulemapper');
-var urlutil = require('cordova/urlutil');
-
-// Helper function to inject a <script> tag.
-// Exported for testing.
-exports.injectScript = function(url, onload, onerror) {
- var script = document.createElement("script");
- // onload fires even when script fails loads with an error.
- script.onload = onload;
- // onerror fires for malformed URLs.
- script.onerror = onerror;
- script.src = url;
- document.head.appendChild(script);
-};
-
-function injectIfNecessary(id, url, onload, onerror) {
- onerror = onerror || onload;
- if (id in define.moduleMap) {
- onload();
- } else {
- exports.injectScript(url, function() {
- if (id in define.moduleMap) {
- onload();
- } else {
- onerror();
- }
- }, onerror);
- }
-}
-
-function onScriptLoadingComplete(moduleList, finishPluginLoading) {
- // Loop through all the plugins and then through their clobbers and merges.
- for (var i = 0, module; module = moduleList[i]; i++) {
- if (module.clobbers && module.clobbers.length) {
- for (var j = 0; j < module.clobbers.length; j++) {
- modulemapper.clobbers(module.id, module.clobbers[j]);
- }
- }
-
- if (module.merges && module.merges.length) {
- for (var k = 0; k < module.merges.length; k++) {
- modulemapper.merges(module.id, module.merges[k]);
- }
- }
-
- // Finally, if runs is truthy we want to simply require() the module.
- if (module.runs) {
- modulemapper.runs(module.id);
- }
- }
-
- finishPluginLoading();
-}
-
-// Handler for the cordova_plugins.js content.
-// See plugman's plugin_loader.js for the details of this object.
-// This function is only called if the really is a plugins array that isn't empty.
-// Otherwise the onerror response handler will just call finishPluginLoading().
-function handlePluginsObject(path, moduleList, finishPluginLoading) {
- // Now inject the scripts.
- var scriptCounter = moduleList.length;
-
- if (!scriptCounter) {
- finishPluginLoading();
- return;
- }
- function scriptLoadedCallback() {
- if (!--scriptCounter) {
- onScriptLoadingComplete(moduleList, finishPluginLoading);
- }
- }
-
- for (var i = 0; i < moduleList.length; i++) {
- injectIfNecessary(moduleList[i].id, path + moduleList[i].file, scriptLoadedCallback);
- }
-}
-
-function findCordovaPath() {
- var path = null;
- var scripts = document.getElementsByTagName('script');
- var term = '/cordova.js';
- for (var n = scripts.length-1; n>-1; n--) {
- var src = scripts[n].src.replace(/\?.*$/, ''); // Strip any query param (CB-6007).
- if (src.indexOf(term) == (src.length - term.length)) {
- path = src.substring(0, src.length - term.length) + '/';
- break;
- }
- }
- return path;
-}
-
-// Tries to load all plugins' js-modules.
-// This is an async process, but onDeviceReady is blocked on onPluginsReady.
-// onPluginsReady is fired when there are no plugins to load, or they are all done.
-exports.load = function(callback) {
- var pathPrefix = findCordovaPath();
- if (pathPrefix === null) {
- console.log('Could not find cordova.js script tag. Plugin loading may fail.');
- pathPrefix = '';
- }
- injectIfNecessary('cordova/plugin_list', pathPrefix + 'cordova_plugins.js', function() {
- var moduleList = require("cordova/plugin_list");
- handlePluginsObject(pathPrefix, moduleList, callback);
- }, callback);
-};
-
-
-});
-
-// file: src/common/pluginloader_b.js
-define("cordova/pluginloader_b", function(require, exports, module) {
-
-var modulemapper = require('cordova/modulemapper');
-
-// Handler for the cordova_plugins.js content.
-// See plugman's plugin_loader.js for the details of this object.
-function handlePluginsObject(moduleList) {
- // if moduleList is not defined or empty, we've nothing to do
- if (!moduleList || !moduleList.length) {
- return;
- }
-
- // Loop through all the modules and then through their clobbers and merges.
- for (var i = 0, module; module = moduleList[i]; i++) {
- if (module.clobbers && module.clobbers.length) {
- for (var j = 0; j < module.clobbers.length; j++) {
- modulemapper.clobbers(module.id, module.clobbers[j]);
- }
- }
-
- if (module.merges && module.merges.length) {
- for (var k = 0; k < module.merges.length; k++) {
- modulemapper.merges(module.id, module.merges[k]);
- }
- }
-
- // Finally, if runs is truthy we want to simply require() the module.
- if (module.runs) {
- modulemapper.runs(module.id);
- }
- }
-}
-
-// Loads all plugins' js-modules. Plugin loading is syncronous in browserified bundle
-// but the method accepts callback to be compatible with non-browserify flow.
-// onDeviceReady is blocked on onPluginsReady. onPluginsReady is fired when there are
-// no plugins to load, or they are all done.
-exports.load = function(callback) {
- var moduleList = require("cordova/plugin_list");
- handlePluginsObject(moduleList);
-
- callback();
-};
-
-
-});
-
-// file: src/common/urlutil.js
-define("cordova/urlutil", function(require, exports, module) {
-
-
-/**
- * For already absolute URLs, returns what is passed in.
- * For relative URLs, converts them to absolute ones.
- */
-exports.makeAbsolute = function makeAbsolute(url) {
- var anchorEl = document.createElement('a');
- anchorEl.href = url;
- return anchorEl.href;
-};
-
-
-});
-
-// file: src/common/utils.js
-define("cordova/utils", function(require, exports, module) {
-
-var utils = exports;
-
-/**
- * Defines a property getter / setter for obj[key].
- */
-utils.defineGetterSetter = function(obj, key, getFunc, opt_setFunc) {
- if (Object.defineProperty) {
- var desc = {
- get: getFunc,
- configurable: true
- };
- if (opt_setFunc) {
- desc.set = opt_setFunc;
- }
- Object.defineProperty(obj, key, desc);
- } else {
- obj.__defineGetter__(key, getFunc);
- if (opt_setFunc) {
- obj.__defineSetter__(key, opt_setFunc);
- }
- }
-};
-
-/**
- * Defines a property getter for obj[key].
- */
-utils.defineGetter = utils.defineGetterSetter;
-
-utils.arrayIndexOf = function(a, item) {
- if (a.indexOf) {
- return a.indexOf(item);
- }
- var len = a.length;
- for (var i = 0; i < len; ++i) {
- if (a[i] == item) {
- return i;
- }
- }
- return -1;
-};
-
-/**
- * Returns whether the item was found in the array.
- */
-utils.arrayRemove = function(a, item) {
- var index = utils.arrayIndexOf(a, item);
- if (index != -1) {
- a.splice(index, 1);
- }
- return index != -1;
-};
-
-utils.typeName = function(val) {
- return Object.prototype.toString.call(val).slice(8, -1);
-};
-
-/**
- * Returns an indication of whether the argument is an array or not
- */
-utils.isArray = Array.isArray ||
- function(a) {return utils.typeName(a) == 'Array';};
-
-/**
- * Returns an indication of whether the argument is a Date or not
- */
-utils.isDate = function(d) {
- return (d instanceof Date);
-};
-
-/**
- * Does a deep clone of the object.
- */
-utils.clone = function(obj) {
- if(!obj || typeof obj == 'function' || utils.isDate(obj) || typeof obj != 'object') {
- return obj;
- }
-
- var retVal, i;
-
- if(utils.isArray(obj)){
- retVal = [];
- for(i = 0; i < obj.length; ++i){
- retVal.push(utils.clone(obj[i]));
- }
- return retVal;
- }
-
- retVal = {};
- for(i in obj){
- // https://issues.apache.org/jira/browse/CB-11522 'unknown' type may be returned in
- // custom protocol activation case on Windows Phone 8.1 causing "No such interface supported" exception
- // on cloning.
- if((!(i in retVal) || retVal[i] != obj[i]) && typeof obj[i] != 'undefined' && typeof obj[i] != 'unknown') {
- retVal[i] = utils.clone(obj[i]);
- }
- }
- return retVal;
-};
-
-/**
- * Returns a wrapped version of the function
- */
-utils.close = function(context, func, params) {
- return function() {
- var args = params || arguments;
- return func.apply(context, args);
- };
-};
-
-//------------------------------------------------------------------------------
-function UUIDcreatePart(length) {
- var uuidpart = "";
- for (var i=0; i<length; i++) {
- var uuidchar = parseInt((Math.random() * 256), 10).toString(16);
- if (uuidchar.length == 1) {
- uuidchar = "0" + uuidchar;
- }
- uuidpart += uuidchar;
- }
- return uuidpart;
-}
-
-/**
- * Create a UUID
- */
-utils.createUUID = function() {
- return UUIDcreatePart(4) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(2) + '-' +
- UUIDcreatePart(6);
-};
-
-
-/**
- * Extends a child object from a parent object using classical inheritance
- * pattern.
- */
-utils.extend = (function() {
- // proxy used to establish prototype chain
- var F = function() {};
- // extend Child from Parent
- return function(Child, Parent) {
-
- F.prototype = Parent.prototype;
- Child.prototype = new F();
- Child.__super__ = Parent.prototype;
- Child.prototype.constructor = Child;
- };
-}());
-
-/**
- * Alerts a message in any available way: alert or console.log.
- */
-utils.alert = function(msg) {
- if (window.alert) {
- window.alert(msg);
- } else if (console && console.log) {
- console.log(msg);
- }
-};
-
-
-
-
-
-});
-
-window.cordova = require('cordova');
-// file: src/scripts/bootstrap.js
-
-require('cordova/init');
-
-})(); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/platform_www/cordova_plugins.js b/StoneIsland/platforms/android/platform_www/cordova_plugins.js
deleted file mode 100755
index 2b01e07f..00000000
--- a/StoneIsland/platforms/android/platform_www/cordova_plugins.js
+++ /dev/null
@@ -1,170 +0,0 @@
-cordova.define('cordova/plugin_list', function(require, exports, module) {
-module.exports = [
- {
- "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
- "id": "cordova-plugin-inappbrowser.inappbrowser",
- "pluginId": "cordova-plugin-inappbrowser",
- "clobbers": [
- "cordova.InAppBrowser.open",
- "window.open"
- ]
- },
- {
- "file": "plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js",
- "id": "cordova-plugin-x-socialsharing.SocialSharing",
- "pluginId": "cordova-plugin-x-socialsharing",
- "clobbers": [
- "window.plugins.socialsharing"
- ]
- },
- {
- "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
- "id": "cordova-plugin-customurlscheme.LaunchMyApp",
- "pluginId": "cordova-plugin-customurlscheme",
- "clobbers": [
- "window.plugins.launchmyapp"
- ]
- },
- {
- "file": "plugins/cordova-plugin-device/www/device.js",
- "id": "cordova-plugin-device.device",
- "pluginId": "cordova-plugin-device",
- "clobbers": [
- "device"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/network.js",
- "id": "cordova-plugin-network-information.network",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "navigator.connection",
- "navigator.network.connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-network-information/www/Connection.js",
- "id": "cordova-plugin-network-information.Connection",
- "pluginId": "cordova-plugin-network-information",
- "clobbers": [
- "Connection"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/notification.js",
- "id": "cordova-plugin-dialogs.notification",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-dialogs/www/android/notification.js",
- "id": "cordova-plugin-dialogs.notification_android",
- "pluginId": "cordova-plugin-dialogs",
- "merges": [
- "navigator.notification"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
- "id": "cordova-plugin-geolocation.geolocation",
- "pluginId": "cordova-plugin-geolocation",
- "clobbers": [
- "navigator.geolocation"
- ]
- },
- {
- "file": "plugins/cordova-plugin-geolocation/www/PositionError.js",
- "id": "cordova-plugin-geolocation.PositionError",
- "pluginId": "cordova-plugin-geolocation",
- "runs": true
- },
- {
- "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js",
- "id": "ionic-plugin-keyboard.keyboard",
- "pluginId": "ionic-plugin-keyboard",
- "clobbers": [
- "cordova.plugins.Keyboard"
- ],
- "runs": true
- },
- {
- "id": "cordova-plugin-statusbar.statusbar",
- "file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
- "pluginId": "cordova-plugin-statusbar",
- "clobbers": [
- "window.StatusBar"
- ]
- },
- {
- "id": "cordova-plugin-splashscreen.SplashScreen",
- "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
- "pluginId": "cordova-plugin-splashscreen",
- "clobbers": [
- "navigator.splashscreen"
- ]
- },
- {
- "id": "phonegap-plugin-push.PushNotification",
- "file": "plugins/phonegap-plugin-push/www/push.js",
- "pluginId": "phonegap-plugin-push",
- "clobbers": [
- "PushNotification"
- ]
- },
- {
- "id": "cordova-plugin-sim.Sim",
- "file": "plugins/cordova-plugin-sim/www/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "cordova-plugin-sim.SimAndroid",
- "file": "plugins/cordova-plugin-sim/www/android/sim.js",
- "pluginId": "cordova-plugin-sim",
- "merges": [
- "window.plugins.sim"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.mobile-accessibility",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "window.MobileAccessibility"
- ]
- },
- {
- "id": "phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications",
- "file": "plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js",
- "pluginId": "phonegap-plugin-mobile-accessibility",
- "clobbers": [
- "MobileAccessibilityNotifications"
- ]
- }
-];
-module.exports.metadata =
-// TOP OF METADATA
-{
- "cordova-plugin-inappbrowser": "1.5.0",
- "cordova-plugin-x-socialsharing": "5.1.3",
- "cordova-plugin-customurlscheme": "4.2.0",
- "cordova-plugin-whitelist": "1.3.0",
- "cordova-plugin-device": "1.1.3",
- "cordova-plugin-network-information": "1.3.0",
- "cordova-plugin-dialogs": "1.3.0",
- "cordova-plugin-compat": "1.1.0",
- "cordova-plugin-geolocation": "2.4.0",
- "ionic-plugin-keyboard": "2.2.1",
- "cordova-plugin-statusbar": "2.2.3",
- "cordova-plugin-app-name": "1.0.4",
- "cordova-plugin-splashscreen": "4.0.3",
- "phonegap-plugin-push": "1.9.2",
- "cordova-plugin-sim": "1.3.3",
- "phonegap-plugin-mobile-accessibility": "1.0.5-dev"
-};
-// BOTTOM OF METADATA
-}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js b/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js
deleted file mode 100644
index 8229b168..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js
+++ /dev/null
@@ -1,1778 +0,0 @@
-// Copyright 2013 Google 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.
-var goog=goog||{};goog.global=this;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||void 0===b?c=c[d]?c[d]:c[d]={}:c[d]=b};goog.define=function(a,b){var c=b;goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.provide=function(a){goog.exportPath_(a)};
-goog.setTestOnly=function(a){if(!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");};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};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
-goog.addDependency=function(a,b,c){if(goog.DEPENDENCIES_ENABLED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};goog.useStrictRequires=!1;goog.ENABLE_DEBUG_LOADER=!0;goog.require=function(){};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a){return a};
-goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.DEPENDENCIES_ENABLED=!1;
-goog.DEPENDENCIES_ENABLED&&(goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return"undefined"!=typeof a&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document,a=a.getElementsByTagName("script"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?
-c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==b.readyState){if(b=/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}b.write('<script type="text/javascript" src="'+
-a+'">\x3c/script>');return!0}return!1},goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.visited)&&(d.visited[e]=!0,e in d.requires))for(var g in d.requires[e])if(!goog.isProvided_(g))if(g in d.nameToPath)a(d.nameToPath[g]);else throw Error("Undefined nameToPath for "+g);e in c||(c[e]=!0,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("Undefined script input");
-},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));
-goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isDef=function(a){return void 0!==a};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};
-goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
-goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},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.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
-goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
-goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval)if(null==goog.evalWorksForGlobals_&&(goog.global.eval("var _et_ = 1;"),"undefined"!=typeof goog.global._et_?(delete goog.global._et_,goog.evalWorksForGlobals_=!0):goog.evalWorksForGlobals_=!1),goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.body.appendChild(c);
-b.body.removeChild(c)}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a};return b?a+"-"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};
-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.getMsgWithFallback=function(a){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};
-goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.DEBUG&&!d)throw Error("arguments.caller not defined. goog.base() expects not to be running in strict mode. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_)return d.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,1));for(var e=Array.prototype.slice.call(arguments,2),f=!1,g=a.constructor;g;g=g.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.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 method of a different name");};goog.scope=function(a){a.call(goog.global)};goog.MODIFY_FUNCTION_PROTOTYPES=!0;
-goog.MODIFY_FUNCTION_PROTOTYPES&&(Function.prototype.bind=Function.prototype.bind||function(a,b){if(1<arguments.length){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return goog.bind.apply(null,c)}return goog.bind(this,a)},Function.prototype.partial=function(a){var b=Array.prototype.slice.call(arguments);b.unshift(this,null);return goog.bind.apply(null,b)},Function.prototype.inherits=function(a){goog.inherits(this,a)},Function.prototype.mixin=function(a){goog.mixin(this.prototype,
-a)});var cvox={VERBOSITY_VERBOSE:0,VERBOSITY_BRIEF:1,ChromeVox:function(){}};cvox.ChromeVox.host=null;cvox.ChromeVox.msgs=null;cvox.ChromeVox.isActive=!0;cvox.ChromeVox.version=null;cvox.ChromeVox.earcons=null;cvox.ChromeVox.navigationManager=null;cvox.ChromeVox.serializer=null;cvox.ChromeVox.isStickyOn=!1;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVox.verbosity=cvox.VERBOSITY_VERBOSE;cvox.ChromeVox.typingEcho=0;cvox.ChromeVox.keyEcho={};cvox.ChromeVox.position={};cvox.ChromeVox.isChromeOS=-1!=navigator.userAgent.indexOf("CrOS");
-cvox.ChromeVox.isMac=-1!=navigator.platform.indexOf("Mac");cvox.ChromeVox.modKeyStr=cvox.ChromeVox.isChromeOS?"Shift+Search":cvox.ChromeVox.isMac?"Ctrl+Cmd":"Ctrl+Meta";cvox.ChromeVox.sequenceSwitchKeyCodes=[];cvox.ChromeVox.visitedUrls={};cvox.ChromeVox.markInUserCommand=function(){};cvox.ChromeVox.syncToNode=function(){};cvox.ChromeVox.speakNode=function(){};cvox.ChromeVox.executeUserCommand=function(){};cvox.ChromeVox.entireDocumentIsHidden=!1;
-cvox.ChromeVox.storeOn=function(a){a.isStickyOn=cvox.ChromeVox.isStickyOn;cvox.ChromeVox.navigationManager.storeOn(a)};cvox.ChromeVox.readFrom=function(a){cvox.ChromeVox.isStickyOn=a.isStickyOn;cvox.ChromeVox.navigationManager.readFrom(a)};cvox.Cursor=function(a,b,c){this.node=a;this.index=b;this.text=c};cvox.Cursor.prototype.clone=function(){return new cvox.Cursor(this.node,this.index,this.text)};cvox.Cursor.prototype.copyFrom=function(a){this.node=a.node;this.index=a.index;this.text=a.text};cvox.Cursor.prototype.equals=function(a){return this.node==a.node&&this.index==a.index&&this.text==a.text};goog.debug={};goog.debug.Error=function(a){Error.captureStackTrace?Error.captureStackTrace(this,goog.debug.Error):this.stack=Error().stack||"";a&&(this.message=String(a))};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};
-goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptySafe=function(a){return goog.string.isEmpty(goog.string.makeSafe(a))};
-goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};
-goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};
-goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;
-goog.string.numerateCompare=function(a,b){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var c=a.toLowerCase().match(goog.string.numerateCompareRegExp_),d=b.toLowerCase().match(goog.string.numerateCompareRegExp_),e=Math.min(c.length,d.length),f=0;f<e;f++){var g=c[f],h=d[f];if(g!=h)return c=parseInt(g,10),!isNaN(c)&&(d=parseInt(h,10),!isNaN(d)&&c-d)?c-d:g<h?-1:1}return c.length!=d.length?c.length-d.length:a<b?-1:1};goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};
-goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
-goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");if(!goog.string.allRe_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.amperRe_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.ltRe_,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.gtRe_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.quotRe_,"&quot;"));return a};
-goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
-goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'},d;d=b?b.createElement("div"):document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var g=c[a];if(g)return g;if("#"==b.charAt(0)){var h=Number("0"+b.substr(1));isNaN(h)||(g=String.fromCharCode(h))}g||(d.innerHTML=a+" ",g=d.firstChild.nodeValue.slice(0,-1));return c[a]=g})};
-goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==c.charAt(0)){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
-goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
-goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;b-=d;a=a.substring(0,b)+"..."+a.substring(e)}else a.length>b&&(e=Math.floor(b/2),d=a.length-e,e+=b%2,a=a.substring(0,e)+"..."+a.substring(d));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"};
-goog.string.quote=function(a){a=String(a);if(a.quote)return a.quote();for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
-goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.toMap=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=!0;return b};
-goog.string.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};goog.string.removeAll=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};
-goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};
-goog.string.getRandomString=function(){var a=2147483648;return Math.floor(Math.random()*a).toString(36)+Math.abs(Math.floor(Math.random()*a)^goog.now()).toString(36)};
-goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=/(\d*)(\D*)/g,m=/(\d*)(\D*)/g;do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;var c=0==p[1].length?0:parseInt(p[1],10),n=0==q[1].length?0:parseInt(q[1],10),c=goog.string.compareElements_(c,n)||goog.string.compareElements_(0==p[2].length,0==q[2].length)||
-goog.string.compareElements_(p[2],q[2])}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c),b%=goog.string.HASHCODE_MAX_;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
-goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmpty(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};
-goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s",c=c?"|["+c+"]+":"",c=RegExp("(^"+c+")([a-z])","g");return a.replace(c,function(a,b,c){return b+c.toUpperCase()})};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift()};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new goog.asserts.AssertionError(""+e,f||[]);};
-goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.fail=function(a,b){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};
-goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("instanceof check failed.",null,c,Array.prototype.slice.call(arguments,3));return a};
-goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.peek=function(a){return a[a.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype;
-goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
-goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(a,b,c){goog.asserts.assert(null!=a.length);c=null==c?a.length-1:c;return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(a,b,c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
-goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};
-goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};
-goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
-goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduce?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduceRight?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
-goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};
-goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};
-goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};
-goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};
-goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.concat=function(a){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;
-goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c],e;if(goog.isArray(d)||(e=goog.isArrayLike(d))&&Object.prototype.hasOwnProperty.call(d,"callee"))a.push.apply(a,d);else if(e)for(var f=a.length,g=d.length,h=0;h<g;h++)a[f+h]=d[h];else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.splice.apply(a,goog.array.slice(arguments,1))};
-goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?goog.array.ARRAY_PROTOTYPE_.slice.call(a,b):goog.array.ARRAY_PROTOTYPE_.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};
-goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.sort.call(a,b||goog.array.defaultCompare)};
-goog.array.stableSort=function(a,b){function c(a,b){return e(a.value,b.value)||a.index-b.index}for(var d=0;d<a.length;d++)a[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(a,c);for(d=0;d<a.length;d++)a[d]=a[d].value};goog.array.sortObjectsByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(a[b],c[b])})};
-goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare=function(a,b,c){return goog.array.equals(a,b,c)};
-goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};
-goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(g=d[g]||(d[g]=[]),g.push(f))}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};
-goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];goog.isArray(d)?b.push.apply(b,goog.array.flatten.apply(null,d)):b.push(d)}return b};
-goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?goog.array.ARRAY_PROTOTYPE_.unshift.apply(a,a.splice(-b,b)):0>b&&goog.array.ARRAY_PROTOTYPE_.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1);goog.array.ARRAY_PROTOTYPE_.splice.call(a,c,0,b[0])};
-goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=0;;c++){for(var d=[],e=0;e<arguments.length;e++){var f=arguments[e];if(c>=f.length)return b;d.push(f[c])}b.push(d)}};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
-goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};
-goog.math.sign=function(a){return 0==a?0:0>a?-1:1};goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k<f+1;k++)g[0][k]=0;for(h=1;h<=e;h++)for(k=1;k<=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0<h&&0<k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]>g[h][k-1]?h--:k--;return l};
-goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return b=goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};
-goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.floor(a+(b||2E-15))};goog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.ceil(a-(b||2E-15))};goog.i18n={};
-goog.i18n.CompactNumberFormatSymbols_af={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0m"},1E7:{other:"00\u00a0m"},1E8:{other:"000\u00a0m"},1E9:{other:"0\u00a0mjd"},1E10:{other:"00\u00a0mjd"},1E11:{other:"000\u00a0mjd"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duisend"},1E4:{other:"00 duisend"},1E5:{other:"000 duisend"},1E6:{other:"0 miljoen"},1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},
-1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_af_ZA=goog.i18n.CompactNumberFormatSymbols_af;
-goog.i18n.CompactNumberFormatSymbols_am={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u123a"},1E4:{other:"00\u00a0\u123a"},1E5:{other:"000\u00a0\u123a"},1E6:{other:"0\u00a0\u121c\u1275\u122d"},1E7:{other:"00\u00a0\u121c\u1275\u122d"},1E8:{other:"000\u00a0\u121c\u1275\u122d"},1E9:{other:"0\u00a0\u1262"},1E10:{other:"00\u00a0\u1262"},1E11:{other:"000\u00a0\u1262"},1E12:{other:"0\u00a0\u1275"},1E13:{other:"00\u00a0\u1275"},1E14:{other:"000\u00a0\u1275"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u123a"},
-1E4:{other:"00 \u123a"},1E5:{other:"000 \u123a"},1E6:{other:"0 \u121a\u120a\u12ee\u1295"},1E7:{other:"00 \u121a\u120a\u12ee\u1295"},1E8:{other:"000 \u121a\u120a\u12ee\u1295"},1E9:{other:"0 \u1262\u120a\u12ee\u1295"},1E10:{other:"00 \u1262\u120a\u12ee\u1295"},1E11:{other:"000 \u1262\u120a\u12ee\u1295"},1E12:{other:"0 \u1275\u122a\u120a\u12ee\u1295"},1E13:{other:"00 \u1275\u122a\u120a\u12ee\u1295"},1E14:{other:"000 \u1275\u122a\u120a\u12ee\u1295"}}};goog.i18n.CompactNumberFormatSymbols_am_ET=goog.i18n.CompactNumberFormatSymbols_am;
-goog.i18n.CompactNumberFormatSymbols_ar={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0623\u0644\u0641"},1E4:{other:"00\u00a0\u0623\u0644\u0641"},1E5:{other:"000\u00a0\u0623\u0644\u0641"},1E6:{other:"0\u00a0\u0645\u0644\u064a\u0648"},1E7:{other:"00\u00a0\u0645\u0644\u064a\u0648"},1E8:{other:"000\u00a0\u0645\u0644\u064a\u0648"},1E9:{other:"0\u00a0\u0628\u0644\u064a\u0648"},1E10:{other:"00\u00a0\u0628\u0644\u064a\u0648"},1E11:{other:"000\u00a0\u0628\u0644\u064a\u0648"},1E12:{other:"0\u00a0\u062a\u0631\u0644\u064a\u0648"},
-1E13:{other:"00\u00a0\u062a\u0631\u0644\u064a\u0648"},1E14:{other:"000\u00a0\u062a\u0631\u0644\u064a\u0648"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0623\u0644\u0641"},1E4:{other:"00 \u0623\u0644\u0641"},1E5:{other:"000 \u0623\u0644\u0641"},1E6:{other:"0 \u0645\u0644\u064a\u0648\u0646"},1E7:{other:"00 \u0645\u0644\u064a\u0648\u0646"},1E8:{other:"000 \u0645\u0644\u064a\u0648\u0646"},1E9:{other:"0 \u0628\u0644\u064a\u0648\u0646"},1E10:{other:"00 \u0628\u0644\u064a\u0648\u0646"},1E11:{other:"000 \u0628\u0644\u064a\u0648\u0646"},
-1E12:{other:"0 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E13:{other:"00 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E14:{other:"000 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"}}};goog.i18n.CompactNumberFormatSymbols_ar_001=goog.i18n.CompactNumberFormatSymbols_ar;goog.i18n.CompactNumberFormatSymbols_ar_EG=goog.i18n.CompactNumberFormatSymbols_ar;
-goog.i18n.CompactNumberFormatSymbols_bg={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0425"},1E4:{other:"00\u00a0\u0425"},1E5:{other:"000\u00a0\u0425"},1E6:{other:"0\u00a0\u041c"},1E7:{other:"00\u00a0\u041c"},1E8:{other:"000\u00a0\u041c"},1E9:{other:"0\u00a0\u0411"},1E10:{other:"00\u00a0\u0411"},1E11:{other:"000\u00a0\u0411"},1E12:{other:"0\u00a0\u0422"},1E13:{other:"00\u00a0\u0422"},1E14:{other:"000\u00a0\u0422"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u043b\u044f\u0434\u0438"},
-1E4:{other:"00 \u0445\u0438\u043b\u044f\u0434\u0438"},1E5:{other:"000 \u0445\u0438\u043b\u044f\u0434\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},
-1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_bg_BG=goog.i18n.CompactNumberFormatSymbols_bg;
-goog.i18n.CompactNumberFormatSymbols_bn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u09b9\u09be\u099c\u09be\u09b0"},1E4:{other:"00 \u09b9\u09be\u099c\u09be\u09b0"},1E5:{other:"000 \u09b9\u09be\u099c\u09be\u09b0"},1E6:{other:"0 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},
-1E7:{other:"00 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E8:{other:"000 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E9:{other:"0 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E10:{other:"00 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E11:{other:"000 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E12:{other:"0 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E13:{other:"00 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E14:{other:"000 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"}}};
-goog.i18n.CompactNumberFormatSymbols_bn_BD=goog.i18n.CompactNumberFormatSymbols_bn;goog.i18n.CompactNumberFormatSymbols_br={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_br_FR=goog.i18n.CompactNumberFormatSymbols_br;
-goog.i18n.CompactNumberFormatSymbols_ca={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milions"},1E7:{other:"00 milions"},
-1E8:{other:"000 milions"},1E9:{other:"0 miliards"},1E10:{other:"00 miliards"},1E11:{other:"000 miliards"},1E12:{other:"0 bilions"},1E13:{other:"00 bilions"},1E14:{other:"000 bilions"}}};goog.i18n.CompactNumberFormatSymbols_ca_AD=goog.i18n.CompactNumberFormatSymbols_ca;goog.i18n.CompactNumberFormatSymbols_ca_ES=goog.i18n.CompactNumberFormatSymbols_ca;
-goog.i18n.CompactNumberFormatSymbols_chr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_chr_US=goog.i18n.CompactNumberFormatSymbols_chr;
-goog.i18n.CompactNumberFormatSymbols_cs={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 milion\u016f"},1E7:{other:"00 milion\u016f"},1E8:{other:"000 milion\u016f"},1E9:{other:"0 miliard"},1E10:{other:"00 miliard"},1E11:{other:"000 miliard"},1E12:{other:"0 bilion\u016f"},1E13:{other:"00 bilion\u016f"},1E14:{other:"000 bilion\u016f"}}};goog.i18n.CompactNumberFormatSymbols_cs_CZ=goog.i18n.CompactNumberFormatSymbols_cs;
-goog.i18n.CompactNumberFormatSymbols_cy={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 miliwn"},1E7:{other:"00 miliwn"},1E8:{other:"000 miliwn"},1E9:{other:"0 biliwn"},1E10:{other:"00 biliwn"},
-1E11:{other:"000 biliwn"},1E12:{other:"0 triliwn"},1E13:{other:"00 triliwn"},1E14:{other:"000 triliwn"}}};goog.i18n.CompactNumberFormatSymbols_cy_GB=goog.i18n.CompactNumberFormatSymbols_cy;
-goog.i18n.CompactNumberFormatSymbols_da={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mio"},1E7:{other:"00\u00a0mio"},1E8:{other:"000\u00a0mio"},1E9:{other:"0\u00a0mia"},1E10:{other:"00\u00a0mia"},1E11:{other:"000\u00a0mia"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusind"},1E4:{other:"00 tusind"},1E5:{other:"000 tusind"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_da_DK=goog.i18n.CompactNumberFormatSymbols_da;
-goog.i18n.CompactNumberFormatSymbols_de={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};
-goog.i18n.CompactNumberFormatSymbols_de_AT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_BE=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_de_CH={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_DE=goog.i18n.CompactNumberFormatSymbols_de;goog.i18n.CompactNumberFormatSymbols_de_LU=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_el={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u03c7\u03b9\u03bb."},1E4:{other:"00\u00a0\u03c7\u03b9\u03bb."},1E5:{other:"000\u00a0\u03c7\u03b9\u03bb."},1E6:{other:"0\u00a0\u03b5\u03ba."},1E7:{other:"00\u00a0\u03b5\u03ba."},1E8:{other:"000\u00a0\u03b5\u03ba."},1E9:{other:"0\u00a0\u03b4\u03b9\u03c2"},1E10:{other:"00\u00a0\u03b4\u03b9\u03c2"},1E11:{other:"000\u00a0\u03b4\u03b9\u03c2"},1E12:{other:"0\u00a0\u03c4\u03c1\u03b9\u03c2"},1E13:{other:"00\u00a0\u03c4\u03c1\u03b9\u03c2"},
-1E14:{other:"000\u00a0\u03c4\u03c1\u03b9\u03c2"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E4:{other:"00 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E5:{other:"000 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E6:{other:"0 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E7:{other:"00 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E8:{other:"000 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E9:{other:"0 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E10:{other:"00 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E11:{other:"000 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E12:{other:"0 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E13:{other:"00 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E14:{other:"000 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"}}};goog.i18n.CompactNumberFormatSymbols_el_GR=goog.i18n.CompactNumberFormatSymbols_el;
-goog.i18n.CompactNumberFormatSymbols_en={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_AS=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_AU={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_FM=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_GB={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_GU=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_IE={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_en_IN={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_MH=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_MP=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PR=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PW=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_SG={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_TC=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_UM=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_VG=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_VI=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_ZA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_es={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00\u00a0K\u00a0M"},1E11:{other:"000\u00a0K\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},
-1E7:{other:"00 millones"},1E8:{other:"000 millones"},1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};
-goog.i18n.CompactNumberFormatSymbols_es_419={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0k\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},1E7:{other:"00 millones"},1E8:{other:"000 millones"},
-1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};goog.i18n.CompactNumberFormatSymbols_es_EA=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_ES=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_IC=goog.i18n.CompactNumberFormatSymbols_es;
-goog.i18n.CompactNumberFormatSymbols_et={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tuh"},1E4:{other:"00\u00a0tuh"},1E5:{other:"000\u00a0tuh"},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0trl"},1E13:{other:"00\u00a0trl"},1E14:{other:"000\u00a0trl"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhat"},1E4:{other:"00 tuhat"},1E5:{other:"000 tuhat"},1E6:{other:"0 miljonit"},
-1E7:{other:"00 miljonit"},1E8:{other:"000 miljonit"},1E9:{other:"0 miljardit"},1E10:{other:"00 miljardit"},1E11:{other:"000 miljardit"},1E12:{other:"0 triljonit"},1E13:{other:"00 triljonit"},1E14:{other:"000 triljonit"}}};goog.i18n.CompactNumberFormatSymbols_et_EE=goog.i18n.CompactNumberFormatSymbols_et;
-goog.i18n.CompactNumberFormatSymbols_eu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milioi"},1E7:{other:"00 milioi"},1E8:{other:"000 milioi"},1E9:{other:"0000 milioi"},
-1E10:{other:"00000 milioi"},1E11:{other:"000000 milioi"},1E12:{other:"0 bilioi"},1E13:{other:"00 bilioi"},1E14:{other:"000 bilioi"}}};goog.i18n.CompactNumberFormatSymbols_eu_ES=goog.i18n.CompactNumberFormatSymbols_eu;
-goog.i18n.CompactNumberFormatSymbols_fa={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0647\u0632\u0627\u0631"},1E4:{other:"00 \u0647\u0632\u0627\u0631"},1E5:{other:"000 \u0647\u0632\u0627\u0631"},1E6:{other:"0 \u0645\u06cc\u0644\u06cc\u0648\u0646"},
-1E7:{other:"00 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E8:{other:"000 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E9:{other:"0 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E10:{other:"00 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E11:{other:"000 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E12:{other:"0 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E13:{other:"00 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E14:{other:"000 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"}}};
-goog.i18n.CompactNumberFormatSymbols_fa_IR=goog.i18n.CompactNumberFormatSymbols_fa;
-goog.i18n.CompactNumberFormatSymbols_fi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t."},1E4:{other:"00\u00a0t."},1E5:{other:"000\u00a0t."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bilj."},1E13:{other:"00\u00a0bilj."},1E14:{other:"000\u00a0bilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhatta"},1E4:{other:"00 tuhatta"},1E5:{other:"000 tuhatta"},
-1E6:{other:"0 miljoonaa"},1E7:{other:"00 miljoonaa"},1E8:{other:"000 miljoonaa"},1E9:{other:"0 miljardia"},1E10:{other:"00 miljardia"},1E11:{other:"000 miljardia"},1E12:{other:"0 biljoonaa"},1E13:{other:"00 biljoonaa"},1E14:{other:"000 biljoonaa"}}};goog.i18n.CompactNumberFormatSymbols_fi_FI=goog.i18n.CompactNumberFormatSymbols_fi;
-goog.i18n.CompactNumberFormatSymbols_fil={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};goog.i18n.CompactNumberFormatSymbols_fil_PH=goog.i18n.CompactNumberFormatSymbols_fil;
-goog.i18n.CompactNumberFormatSymbols_fr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_BL=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_CA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_FR=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GP=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MC=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_MF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MQ=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_RE=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_YT=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_gl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 mill\u00f3ns"},1E7:{other:"00 mill\u00f3ns"},
-1E8:{other:"000 mill\u00f3ns"},1E9:{other:"0 mil mill\u00f3ns"},1E10:{other:"00 mil mill\u00f3ns"},1E11:{other:"000 mil mill\u00f3ns"},1E12:{other:"0 bill\u00f3ns"},1E13:{other:"00 bill\u00f3ns"},1E14:{other:"000 bill\u00f3ns"}}};goog.i18n.CompactNumberFormatSymbols_gl_ES=goog.i18n.CompactNumberFormatSymbols_gl;
-goog.i18n.CompactNumberFormatSymbols_gsw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tsd"},1E4:{other:"00\u00a0tsd"},1E5:{other:"000\u00a0tsd"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tausend"},1E4:{other:"00 tausend"},1E5:{other:"000 tausend"},1E6:{other:"0 Millionen"},
-1E7:{other:"00 Millionen"},1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_gsw_CH=goog.i18n.CompactNumberFormatSymbols_gsw;
-goog.i18n.CompactNumberFormatSymbols_gu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0ab9\u0a9c\u0abe\u0ab0"},1E4:{other:"00 \u0ab9\u0a9c\u0abe\u0ab0"},1E5:{other:"000 \u0ab9\u0a9c\u0abe\u0ab0"},1E6:{other:"0 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},
-1E7:{other:"00 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E8:{other:"000 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E9:{other:"0 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E10:{other:"00 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E11:{other:"000 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E12:{other:"0 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E13:{other:"00 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E14:{other:"000 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"}}};
-goog.i18n.CompactNumberFormatSymbols_gu_IN=goog.i18n.CompactNumberFormatSymbols_gu;goog.i18n.CompactNumberFormatSymbols_haw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_haw_US=goog.i18n.CompactNumberFormatSymbols_haw;
-goog.i18n.CompactNumberFormatSymbols_he={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};goog.i18n.CompactNumberFormatSymbols_he_IL=goog.i18n.CompactNumberFormatSymbols_he;
-goog.i18n.CompactNumberFormatSymbols_hi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0L"},1E6:{other:"00L"},1E7:{other:"0Cr"},1E8:{other:"00Cr"},1E9:{other:"000Cr"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093c\u093e\u0930"},1E5:{other:"0 \u0932\u093e\u0916"},1E6:{other:"00 \u0932\u093e\u0916"},1E7:{other:"0 \u0915\u0930\u094b\u0921\u093c"},
-1E8:{other:"00 \u0915\u0930\u094b\u0921\u093c"},1E9:{other:"0 \u0905\u0930\u092c"},1E10:{other:"00 \u0905\u0930\u092c"},1E11:{other:"0 \u0916\u0930\u092c"},1E12:{other:"00 \u0916\u0930\u092c"},1E13:{other:"000 \u0916\u0930\u092c"},1E14:{other:"0000 \u0916\u0930\u092c"}}};goog.i18n.CompactNumberFormatSymbols_hi_IN=goog.i18n.CompactNumberFormatSymbols_hi;
-goog.i18n.CompactNumberFormatSymbols_hr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mlr."},1E10:{other:"00\u00a0mlr."},1E11:{other:"000\u00a0mlr."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milijuna"},1E7:{other:"00 milijuna"},1E8:{other:"000 milijuna"},
-1E9:{other:"0 milijarda"},1E10:{other:"00 milijarda"},1E11:{other:"000 milijarda"},1E12:{other:"0 bilijuna"},1E13:{other:"00 bilijuna"},1E14:{other:"000 bilijuna"}}};goog.i18n.CompactNumberFormatSymbols_hr_HR=goog.i18n.CompactNumberFormatSymbols_hr;
-goog.i18n.CompactNumberFormatSymbols_hu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0E"},1E4:{other:"00\u00a0E"},1E5:{other:"000\u00a0E"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ezer"},1E4:{other:"00 ezer"},1E5:{other:"000 ezer"},1E6:{other:"0 milli\u00f3"},1E7:{other:"00 milli\u00f3"},
-1E8:{other:"000 milli\u00f3"},1E9:{other:"0 milli\u00e1rd"},1E10:{other:"00 milli\u00e1rd"},1E11:{other:"000 milli\u00e1rd"},1E12:{other:"0 billi\u00f3"},1E13:{other:"00 billi\u00f3"},1E14:{other:"000 billi\u00f3"}}};goog.i18n.CompactNumberFormatSymbols_hu_HU=goog.i18n.CompactNumberFormatSymbols_hu;
-goog.i18n.CompactNumberFormatSymbols_id={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};goog.i18n.CompactNumberFormatSymbols_id_ID=goog.i18n.CompactNumberFormatSymbols_id;
-goog.i18n.CompactNumberFormatSymbols_in={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};
-goog.i18n.CompactNumberFormatSymbols_is={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u00fe."},1E4:{other:"00\u00a0\u00fe."},1E5:{other:"000\u00a0\u00fe."},1E6:{other:"0\u00a0m."},1E7:{other:"00\u00a0m."},1E8:{other:"000\u00a0m."},1E9:{other:"0\u00a0ma."},1E10:{other:"00\u00a0ma."},1E11:{other:"000\u00a0ma."},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u00fe\u00fasund"},1E4:{other:"00 \u00fe\u00fasund"},1E5:{other:"000 \u00fe\u00fasund"},
-1E6:{other:"0 millj\u00f3nir"},1E7:{other:"00 millj\u00f3nir"},1E8:{other:"000 millj\u00f3nir"},1E9:{other:"0 milljar\u00f0ar"},1E10:{other:"00 milljar\u00f0ar"},1E11:{other:"000 milljar\u00f0ar"},1E12:{other:"0 billj\u00f3nir"},1E13:{other:"00 billj\u00f3nir"},1E14:{other:"000 billj\u00f3nir"}}};goog.i18n.CompactNumberFormatSymbols_is_IS=goog.i18n.CompactNumberFormatSymbols_is;
-goog.i18n.CompactNumberFormatSymbols_it={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mln"},1E7:{other:"00\u00a0Mln"},1E8:{other:"000\u00a0Mln"},1E9:{other:"0\u00a0Mld"},1E10:{other:"00\u00a0Mld"},1E11:{other:"000\u00a0Mld"},1E12:{other:"0\u00a0Bln"},1E13:{other:"00\u00a0Bln"},1E14:{other:"000\u00a0Bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 migliaia"},1E4:{other:"00 migliaia"},1E5:{other:"000 migliaia"},1E6:{other:"0 milioni"},1E7:{other:"00 milioni"},
-1E8:{other:"000 milioni"},1E9:{other:"0 miliardi"},1E10:{other:"00 miliardi"},1E11:{other:"000 miliardi"},1E12:{other:"0 bilioni"},1E13:{other:"00 bilioni"},1E14:{other:"000 bilioni"}}};goog.i18n.CompactNumberFormatSymbols_it_IT=goog.i18n.CompactNumberFormatSymbols_it;goog.i18n.CompactNumberFormatSymbols_it_SM=goog.i18n.CompactNumberFormatSymbols_it;
-goog.i18n.CompactNumberFormatSymbols_iw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};
-goog.i18n.CompactNumberFormatSymbols_ja={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_ja_JP=goog.i18n.CompactNumberFormatSymbols_ja;
-goog.i18n.CompactNumberFormatSymbols_kn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E4:{other:"00 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E5:{other:"000 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E6:{other:"0 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},
-1E7:{other:"00 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E8:{other:"000 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E9:{other:"0 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E10:{other:"00 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E11:{other:"000 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E12:{other:"0 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E13:{other:"00 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E14:{other:"000 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"}}};
-goog.i18n.CompactNumberFormatSymbols_kn_IN=goog.i18n.CompactNumberFormatSymbols_kn;
-goog.i18n.CompactNumberFormatSymbols_ko={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},
-1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}}};goog.i18n.CompactNumberFormatSymbols_ko_KR=goog.i18n.CompactNumberFormatSymbols_ko;
-goog.i18n.CompactNumberFormatSymbols_ln={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_ln_CD=goog.i18n.CompactNumberFormatSymbols_ln;
-goog.i18n.CompactNumberFormatSymbols_lt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0G"},1E10:{other:"00\u00a0G"},1E11:{other:"000\u00a0G"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bkstan\u010di\u0173"},1E4:{other:"00 t\u016bkstan\u010di\u0173"},1E5:{other:"000 t\u016bkstan\u010di\u0173"},
-1E6:{other:"0 milijon\u0173"},1E7:{other:"00 milijon\u0173"},1E8:{other:"000 milijon\u0173"},1E9:{other:"0 milijard\u0173"},1E10:{other:"00 milijard\u0173"},1E11:{other:"000 milijard\u0173"},1E12:{other:"0 trilijon\u0173"},1E13:{other:"00 trilijon\u0173"},1E14:{other:"000 trilijon\u0173"}}};goog.i18n.CompactNumberFormatSymbols_lt_LT=goog.i18n.CompactNumberFormatSymbols_lt;
-goog.i18n.CompactNumberFormatSymbols_lv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t\u016bkst."},1E4:{other:"00\u00a0t\u016bkst."},1E5:{other:"000\u00a0t\u016bkst."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0trilj."},1E13:{other:"00\u00a0trilj."},1E14:{other:"000\u00a0trilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bksto\u0161i"},1E4:{other:"00 t\u016bksto\u0161i"},
-1E5:{other:"000 t\u016bksto\u0161i"},1E6:{other:"0 miljoni"},1E7:{other:"00 miljoni"},1E8:{other:"000 miljoni"},1E9:{other:"0 miljardi"},1E10:{other:"00 miljardi"},1E11:{other:"000 miljardi"},1E12:{other:"0 trilj."},1E13:{other:"00 trilj."},1E14:{other:"000 trilj."}}};goog.i18n.CompactNumberFormatSymbols_lv_LV=goog.i18n.CompactNumberFormatSymbols_lv;
-goog.i18n.CompactNumberFormatSymbols_ml={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E4:{other:"00 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E5:{other:"000 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E6:{other:"0 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},
-1E7:{other:"00 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E8:{other:"000 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E9:{other:"0 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E10:{other:"00 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E11:{other:"000 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E12:{other:"0 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E13:{other:"00 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E14:{other:"000 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"}}};
-goog.i18n.CompactNumberFormatSymbols_ml_IN=goog.i18n.CompactNumberFormatSymbols_ml;
-goog.i18n.CompactNumberFormatSymbols_mr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093e\u0930"},1E5:{other:"000 \u0939\u091c\u093e\u0930"},1E6:{other:"0 \u0926\u0936\u0932\u0915\u094d\u0937"},
-1E7:{other:"00 \u0926\u0936\u0932\u0915\u094d\u0937"},1E8:{other:"000 \u0926\u0936\u0932\u0915\u094d\u0937"},1E9:{other:"0 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E10:{other:"00 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E11:{other:"000 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E12:{other:"0 \u0926\u0939\u093e \u0916\u0930\u092c"},1E13:{other:"00 \u0926\u0939\u093e \u0916\u0930\u092c"},1E14:{other:"000 \u0926\u0939\u093e \u0916\u0930\u092c"}}};
-goog.i18n.CompactNumberFormatSymbols_mr_IN=goog.i18n.CompactNumberFormatSymbols_mr;
-goog.i18n.CompactNumberFormatSymbols_ms={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0J"},1E7:{other:"00J"},1E8:{other:"000J"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},1E8:{other:"000 juta"},1E9:{other:"0 bilion"},1E10:{other:"00 bilion"},
-1E11:{other:"000 bilion"},1E12:{other:"0 trilion"},1E13:{other:"00 trilion"},1E14:{other:"000 trilion"}}};goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY=goog.i18n.CompactNumberFormatSymbols_ms;goog.i18n.CompactNumberFormatSymbols_mt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_mt_MT=goog.i18n.CompactNumberFormatSymbols_mt;
-goog.i18n.CompactNumberFormatSymbols_nb={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_nb_NO=goog.i18n.CompactNumberFormatSymbols_nb;
-goog.i18n.CompactNumberFormatSymbols_nl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0\u00a0mln."},1E7:{other:"00\u00a0mln."},1E8:{other:"000\u00a0mln."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bln."},1E13:{other:"00\u00a0bln."},1E14:{other:"000\u00a0bln."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duizend"},1E4:{other:"00 duizend"},1E5:{other:"000 duizend"},1E6:{other:"0 miljoen"},
-1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_nl_NL=goog.i18n.CompactNumberFormatSymbols_nl;
-goog.i18n.CompactNumberFormatSymbols_no={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_or={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_or_IN=goog.i18n.CompactNumberFormatSymbols_or;
-goog.i18n.CompactNumberFormatSymbols_pl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tys."},1E4:{other:"00\u00a0tys."},1E5:{other:"000\u00a0tys."},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0bln"},1E13:{other:"00\u00a0bln"},1E14:{other:"000\u00a0bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tysi\u0105ca"},1E4:{other:"00 tysi\u0105ca"},1E5:{other:"000 tysi\u0105ca"},
-1E6:{other:"0 miliona"},1E7:{other:"00 miliona"},1E8:{other:"000 miliona"},1E9:{other:"0 miliarda"},1E10:{other:"00 miliarda"},1E11:{other:"000 miliarda"},1E12:{other:"0 biliona"},1E13:{other:"00 biliona"},1E14:{other:"000 biliona"}}};goog.i18n.CompactNumberFormatSymbols_pl_PL=goog.i18n.CompactNumberFormatSymbols_pl;
-goog.i18n.CompactNumberFormatSymbols_pt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0mi"},1E7:{other:"00\u00a0mi"},1E8:{other:"000\u00a0mi"},1E9:{other:"0\u00a0bi"},1E10:{other:"00\u00a0bi"},1E11:{other:"000\u00a0bi"},1E12:{other:"0\u00a0tri"},1E13:{other:"00\u00a0tri"},1E14:{other:"000\u00a0tri"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 bilh\u00f5es"},1E10:{other:"00 bilh\u00f5es"},1E11:{other:"000 bilh\u00f5es"},1E12:{other:"0 trilh\u00f5es"},1E13:{other:"00 trilh\u00f5es"},1E14:{other:"000 trilh\u00f5es"}}};goog.i18n.CompactNumberFormatSymbols_pt_BR=goog.i18n.CompactNumberFormatSymbols_pt;
-goog.i18n.CompactNumberFormatSymbols_pt_PT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0MM"},1E10:{other:"00\u00a0MM"},1E11:{other:"000\u00a0MM"},1E12:{other:"0\u00a0Bi"},1E13:{other:"00\u00a0Bi"},1E14:{other:"000\u00a0Bi"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 mil milh\u00f5es"},1E10:{other:"00 mil milh\u00f5es"},1E11:{other:"000 mil milh\u00f5es"},1E12:{other:"0 bili\u00f5es"},1E13:{other:"00 bili\u00f5es"},1E14:{other:"000 bili\u00f5es"}}};
-goog.i18n.CompactNumberFormatSymbols_ro={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 de mii"},1E4:{other:"00 de mii"},1E5:{other:"000 de mii"},1E6:{other:"0 de milioane"},
-1E7:{other:"00 de milioane"},1E8:{other:"000 de milioane"},1E9:{other:"0 de miliarde"},1E10:{other:"00 de miliarde"},1E11:{other:"000 de miliarde"},1E12:{other:"0 de trilioane"},1E13:{other:"00 de trilioane"},1E14:{other:"000 de trilioane"}}};goog.i18n.CompactNumberFormatSymbols_ro_RO=goog.i18n.CompactNumberFormatSymbols_ro;
-goog.i18n.CompactNumberFormatSymbols_ru={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u044b\u0441."},1E4:{other:"00\u00a0\u0442\u044b\u0441."},1E5:{other:"000\u00a0\u0442\u044b\u0441."},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u044b\u0441\u044f\u0447\u0438"},1E4:{other:"00 \u0442\u044b\u0441\u044f\u0447\u0438"},1E5:{other:"000 \u0442\u044b\u0441\u044f\u0447\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_ru_RU=goog.i18n.CompactNumberFormatSymbols_ru;
-goog.i18n.CompactNumberFormatSymbols_sk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tis\u00edc"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 mili\u00f3nov"},1E7:{other:"00 mili\u00f3nov"},1E8:{other:"000 mili\u00f3nov"},1E9:{other:"0 miliard"},1E10:{other:"00 mili\u00e1rd"},1E11:{other:"000 mili\u00e1rd"},1E12:{other:"0 bili\u00f3nov"},1E13:{other:"00 bili\u00f3nov"},1E14:{other:"000 bili\u00f3nov"}}};goog.i18n.CompactNumberFormatSymbols_sk_SK=goog.i18n.CompactNumberFormatSymbols_sk;
-goog.i18n.CompactNumberFormatSymbols_sl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mio."},1E7:{other:"00\u00a0mio."},1E8:{other:"000\u00a0mio."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tiso\u010d"},1E4:{other:"00 tiso\u010d"},1E5:{other:"000 tiso\u010d"},
-1E6:{other:"0 milijonov"},1E7:{other:"00 milijonov"},1E8:{other:"000 milijonov"},1E9:{other:"0 milijard"},1E10:{other:"00 milijard"},1E11:{other:"000 milijard"},1E12:{other:"0 bilijonov"},1E13:{other:"00 bilijonov"},1E14:{other:"000 bilijonov"}}};goog.i18n.CompactNumberFormatSymbols_sl_SI=goog.i18n.CompactNumberFormatSymbols_sl;
-goog.i18n.CompactNumberFormatSymbols_sq={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_sq_AL=goog.i18n.CompactNumberFormatSymbols_sq;
-goog.i18n.CompactNumberFormatSymbols_sr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0\u0445\u0438\u0459"},1E5:{other:"000\u00a0\u0445\u0438\u0459"},1E6:{other:"0\u00a0\u043c\u0438\u043b"},1E7:{other:"00\u00a0\u043c\u0438\u043b"},1E8:{other:"000\u00a0\u043c\u0438\u043b"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0431\u0438\u043b"},1E13:{other:"00\u00a0\u0431\u0438\u043b"},
-1E14:{other:"000\u00a0\u0431\u0438\u043b"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u0459\u0430\u0434\u0430"},1E4:{other:"00 \u0445\u0438\u0459\u0430\u0434\u0430"},1E5:{other:"000 \u0445\u0438\u0459\u0430\u0434\u0430"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},
-1E11:{other:"000 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS=goog.i18n.CompactNumberFormatSymbols_sr;
-goog.i18n.CompactNumberFormatSymbols_sv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tn"},1E4:{other:"00\u00a0tn"},1E5:{other:"000\u00a0tn"},1E6:{other:"0\u00a0mn"},1E7:{other:"00\u00a0mn"},1E8:{other:"000\u00a0mn"},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 miljoner"},
-1E7:{other:"00 miljoner"},1E8:{other:"000 miljoner"},1E9:{other:"0 miljarder"},1E10:{other:"00 miljarder"},1E11:{other:"000 miljarder"},1E12:{other:"0 biljoner"},1E13:{other:"00 biljoner"},1E14:{other:"000 biljoner"}}};goog.i18n.CompactNumberFormatSymbols_sv_SE=goog.i18n.CompactNumberFormatSymbols_sv;
-goog.i18n.CompactNumberFormatSymbols_sw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"elfu\u00a00"},1E4:{other:"elfu\u00a000"},1E5:{other:"laki0"},1E6:{other:"M0"},1E7:{other:"M00"},1E8:{other:"M000"},1E9:{other:"B0"},1E10:{other:"B00"},1E11:{other:"B000"},1E12:{other:"T0"},1E13:{other:"T00"},1E14:{other:"T000"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"Elfu 0"},1E4:{other:"Elfu 00"},1E5:{other:"Elfu 000"},1E6:{other:"Milioni 0"},1E7:{other:"Milioni 00"},1E8:{other:"Milioni 000"},1E9:{other:"Bilioni 0"},
-1E10:{other:"Bilioni 00"},1E11:{other:"Bilioni 000"},1E12:{other:"Trilioni 0"},1E13:{other:"Trilioni 00"},1E14:{other:"Trilioni 000"}}};goog.i18n.CompactNumberFormatSymbols_sw_TZ=goog.i18n.CompactNumberFormatSymbols_sw;
-goog.i18n.CompactNumberFormatSymbols_ta={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E4:{other:"00 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E5:{other:"000 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E6:{other:"0 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E7:{other:"00 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E8:{other:"000 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E9:{other:"0 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E10:{other:"00 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E11:{other:"000 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E12:{other:"0 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E13:{other:"00 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E14:{other:"000 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"}}};goog.i18n.CompactNumberFormatSymbols_ta_IN=goog.i18n.CompactNumberFormatSymbols_ta;
-goog.i18n.CompactNumberFormatSymbols_te={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0c35\u0c47\u0c32\u0c41"},1E4:{other:"00 \u0c35\u0c47\u0c32\u0c41"},1E5:{other:"000 \u0c35\u0c47\u0c32\u0c41"},1E6:{other:"0 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},
-1E7:{other:"00 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E8:{other:"000 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E9:{other:"0 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E10:{other:"00 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E11:{other:"000 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E12:{other:"0 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E13:{other:"00 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E14:{other:"000 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"}}};
-goog.i18n.CompactNumberFormatSymbols_te_IN=goog.i18n.CompactNumberFormatSymbols_te;
-goog.i18n.CompactNumberFormatSymbols_th={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0e1e."},1E4:{other:"0\u00a0\u0e21."},1E5:{other:"0\u00a0\u0e2a."},1E6:{other:"0\u00a0\u0e25."},1E7:{other:"00\u00a0\u0e25."},1E8:{other:"000\u00a0\u0e25."},1E9:{other:"0\u00a0\u0e1e.\u0e25."},1E10:{other:"0\u00a0\u0e21.\u0e25."},1E11:{other:"0\u00a0\u0e2a.\u0e25."},1E12:{other:"0\u00a0\u0e25.\u0e25."},1E13:{other:"00\u00a0\u0e25.\u0e25."},1E14:{other:"000\u00a0\u0e25.\u0e25."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0e1e\u0e31\u0e19"},
-1E4:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19"},1E5:{other:"0 \u0e41\u0e2a\u0e19"},1E6:{other:"0 \u0e25\u0e49\u0e32\u0e19"},1E7:{other:"00 \u0e25\u0e49\u0e32\u0e19"},1E8:{other:"000 \u0e25\u0e49\u0e32\u0e19"},1E9:{other:"0 \u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19"},1E10:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19\u0e25\u0e49\u0e32\u0e19"},1E11:{other:"0 \u0e41\u0e2a\u0e19\u0e25\u0e49\u0e32\u0e19"},1E12:{other:"0 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},1E13:{other:"00 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},
-1E14:{other:"000 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"}}};goog.i18n.CompactNumberFormatSymbols_th_TH=goog.i18n.CompactNumberFormatSymbols_th;
-goog.i18n.CompactNumberFormatSymbols_tl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};
-goog.i18n.CompactNumberFormatSymbols_tr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0B"},1E5:{other:"000\u00a0B"},1E6:{other:"0\u00a0Mn"},1E7:{other:"00\u00a0Mn"},1E8:{other:"000\u00a0Mn"},1E9:{other:"0\u00a0Mr"},1E10:{other:"00\u00a0Mr"},1E11:{other:"000\u00a0Mr"},1E12:{other:"0\u00a0Tn"},1E13:{other:"00\u00a0Tn"},1E14:{other:"000\u00a0Tn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 bin"},1E4:{other:"00 bin"},1E5:{other:"000 bin"},1E6:{other:"0 milyon"},1E7:{other:"00 milyon"},
-1E8:{other:"000 milyon"},1E9:{other:"0 milyar"},1E10:{other:"00 milyar"},1E11:{other:"000 milyar"},1E12:{other:"0 trilyon"},1E13:{other:"00 trilyon"},1E14:{other:"000 trilyon"}}};goog.i18n.CompactNumberFormatSymbols_tr_TR=goog.i18n.CompactNumberFormatSymbols_tr;
-goog.i18n.CompactNumberFormatSymbols_uk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u0438\u0441"},1E4:{other:"00\u00a0\u0442\u0438\u0441"},1E5:{other:"000\u00a0\u0442\u0438\u0441"},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u0438\u0441\u044f\u0447\u0456"},1E4:{other:"00 \u0442\u0438\u0441\u044f\u0447\u0456"},1E5:{other:"000 \u0442\u0438\u0441\u044f\u0447\u0456"},1E6:{other:"0 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_uk_UA=goog.i18n.CompactNumberFormatSymbols_uk;
-goog.i18n.CompactNumberFormatSymbols_ur={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u06c1\u0632\u0627\u0631"},1E4:{other:"00\u00a0\u06c1\u0632\u0627\u0631"},1E5:{other:"0\u00a0\u0644\u0627\u06a9\u06be"},1E6:{other:"00\u00a0\u0644\u0627\u06a9\u06be"},1E7:{other:"0\u00a0\u06a9\u0631\u0648\u0691"},1E8:{other:"00\u00a0\u06a9\u0631\u0648\u0691"},1E9:{other:"0\u00a0\u0627\u0631\u0628"},1E10:{other:"00\u00a0\u0627\u0631\u0628"},1E11:{other:"0\u00a0\u06a9\u06be\u0631\u0628"},1E12:{other:"00\u00a0\u06a9\u06be\u0631\u0628"},
-1E13:{other:"000\u00a0\u06a9\u06be\u0631\u0628"},1E14:{other:"0000\u00a0\u06a9\u06be\u0631\u0628"}}};goog.i18n.CompactNumberFormatSymbols_ur_PK=goog.i18n.CompactNumberFormatSymbols_ur;
-goog.i18n.CompactNumberFormatSymbols_vi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0N"},1E4:{other:"00\u00a0N"},1E5:{other:"000\u00a0N"},1E6:{other:"0\u00a0Tr"},1E7:{other:"00\u00a0Tr"},1E8:{other:"000\u00a0Tr"},1E9:{other:"0\u00a0T"},1E10:{other:"00\u00a0T"},1E11:{other:"000\u00a0T"},1E12:{other:"0\u00a0NT"},1E13:{other:"00\u00a0NT"},1E14:{other:"000\u00a0NT"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ngh\u00ecn"},1E4:{other:"00 ngh\u00ecn"},1E5:{other:"000 ngh\u00ecn"},1E6:{other:"0 tri\u1ec7u"},
-1E7:{other:"00 tri\u1ec7u"},1E8:{other:"000 tri\u1ec7u"},1E9:{other:"0 t\u1ef7"},1E10:{other:"00 t\u1ef7"},1E11:{other:"000 t\u1ef7"},1E12:{other:"0 ngh\u00ecn t\u1ef7"},1E13:{other:"00 ngh\u00ecn t\u1ef7"},1E14:{other:"000 ngh\u00ecn t\u1ef7"}}};goog.i18n.CompactNumberFormatSymbols_vi_VN=goog.i18n.CompactNumberFormatSymbols_vi;
-goog.i18n.CompactNumberFormatSymbols_zh={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}}};goog.i18n.CompactNumberFormatSymbols_zh_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_HK={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_TW={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};
-goog.i18n.CompactNumberFormatSymbols_zu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 inkulungwane"},1E4:{other:"00 inkulungwane"},1E5:{other:"000 inkulungwane"},1E6:{other:"0 isigidi"},1E7:{other:"00 isigidi"},1E8:{other:"000 isigidi"},1E9:{other:"0 isigidi sezigidi"},
-1E10:{other:"00 isigidi sezigidi"},1E11:{other:"000 isigidi sezigidi"},1E12:{other:"0 isigidintathu"},1E13:{other:"00 isigidintathu"},1E14:{other:"000 isigidintathu"}}};goog.i18n.CompactNumberFormatSymbols_zu_ZA=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;"af"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af);
-if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg;
-"bn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn);if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca);
-if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr;
-"cs"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs;"cy"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da);
-if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el);
-if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_AU;
-if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_GB;if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_SG;if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et;
-"eu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu);if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi);
-if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi;"fil"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr);
-if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr_CA;if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl);if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl;
-"gsw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he;
-"hi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi);if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu);
-if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu;"id"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is);
-if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is;"it"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;
-"iw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja);if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn;
-"ko"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko;"ln"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt);
-if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv);if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml);
-if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr;"ms"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms);
-if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt);
-if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro;
-"ru"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru;"sk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl);
-if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq);if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr);
-if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv;"sw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw);
-if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur);
-if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur;"vi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_HK;if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_TW;
-"zu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.currency={};goog.i18n.currency.PRECISION_MASK_=7;goog.i18n.currency.POSITION_FLAG_=16;goog.i18n.currency.SPACE_FLAG_=32;goog.i18n.currency.tier2Enabled_=!1;goog.i18n.currency.addTier2Support=function(){if(!goog.i18n.currency.tier2Enabled_){for(var a in goog.i18n.currency.CurrencyInfoTier2)goog.i18n.currency.CurrencyInfo[a]=goog.i18n.currency.CurrencyInfoTier2[a];goog.i18n.currency.tier2Enabled_=!0}};
-goog.i18n.currency.getGlobalCurrencyPattern=function(a){var b=goog.i18n.currency.CurrencyInfo[a],c=b[0];return a==b[1]?goog.i18n.currency.getCurrencyPattern_(c,b[1]):a+" "+goog.i18n.currency.getCurrencyPattern_(c,b[1])};goog.i18n.currency.getGlobalCurrencySign=function(a){var b=goog.i18n.currency.CurrencyInfo[a];return a==b[1]?a:a+" "+b[1]};goog.i18n.currency.getLocalCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[1])};
-goog.i18n.currency.getLocalCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][1]};goog.i18n.currency.getPortableCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[2])};goog.i18n.currency.getPortableCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][2]};goog.i18n.currency.isPrefixSignPosition=function(a){return 0==(goog.i18n.currency.CurrencyInfo[a][0]&goog.i18n.currency.POSITION_FLAG_)};
-goog.i18n.currency.getCurrencyPattern_=function(a,b){var c=["#,##0"],d=a&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}0==(a&goog.i18n.currency.POSITION_FLAG_)?(c.unshift(a&goog.i18n.currency.SPACE_FLAG_?"' ":"'"),c.unshift(b),c.unshift("'")):c.push(a&goog.i18n.currency.SPACE_FLAG_?" '":"'",b,"'");return c.join("")};
-goog.i18n.currency.adjustPrecision=function(a,b){var c=["0"],d=goog.i18n.currency.CurrencyInfo[b],d=d[0]&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}return a.replace(/0.00/g,c.join(""))};
-goog.i18n.currency.CurrencyInfo={AED:[2,"dh","\u062f.\u0625.","DH"],ALL:[0,"Lek","Lek"],AUD:[2,"$","AU$"],BDT:[2,"\u09f3","Tk"],BGN:[2,"lev","lev"],BRL:[2,"R$","R$"],CAD:[2,"$","C$"],CDF:[2,"FrCD","CDF"],CHF:[2,"CHF","CHF"],CLP:[0,"$","CL$"],CNY:[2,"\u00a5","RMB\u00a5"],COP:[0,"$","COL$"],CRC:[0,"\u20a1","CR\u20a1"],CZK:[50,"K\u010d","K\u010d"],DKK:[18,"kr","kr"],DOP:[2,"$","RD$"],EGP:[2,"\u00a3","LE"],ETB:[2,"Birr","Birr"],EUR:[2,"\u20ac","\u20ac"],GBP:[2,"\u00a3","GB\u00a3"],HKD:[2,"$","HK$"],HRK:[2,
-"kn","kn"],HUF:[0,"Ft","Ft"],IDR:[0,"Rp","Rp"],ILS:[2,"\u20aa","IL\u20aa"],INR:[2,"\u20b9","Rs"],IRR:[0,"Rial","IRR"],ISK:[0,"kr","kr"],JMD:[2,"$","JA$"],JPY:[0,"\u00a5","JP\u00a5"],KRW:[0,"\u20a9","KR\u20a9"],LKR:[2,"Rs","SLRs"],LTL:[2,"Lt","Lt"],LVL:[2,"Ls","Ls"],MNT:[0,"\u20ae","MN\u20ae"],MXN:[2,"$","Mex$"],MYR:[2,"RM","RM"],NOK:[50,"kr","NOkr"],PAB:[2,"B/.","B/."],PEN:[2,"S/.","S/."],PHP:[2,"\u20b1","Php"],PKR:[0,"Rs","PKRs."],PLN:[50,"z\u0142","z\u0142"],RON:[2,"RON","RON"],RSD:[0,"din","RSD"],
-RUB:[50,"\u0440\u0443\u0431.","\u0440\u0443\u0431."],SAR:[2,"Rial","Rial"],SEK:[2,"kr","kr"],SGD:[2,"$","S$"],THB:[2,"\u0e3f","THB"],TRY:[2,"TL","YTL"],TWD:[2,"NT$","NT$"],TZS:[0,"TSh","TSh"],UAH:[2,"\u20b4","UAH"],USD:[2,"$","US$"],UYU:[2,"$","$U"],VND:[0,"\u20ab","VN\u20ab"],YER:[0,"Rial","Rial"],ZAR:[2,"R","ZAR"]};
-goog.i18n.currency.CurrencyInfoTier2={AFN:[48,"Af.","AFN"],AMD:[0,"Dram","dram"],AOA:[2,"Kz","Kz"],ARS:[2,"$","AR$"],AWG:[2,"Afl.","Afl."],AZN:[2,"man.","man."],BAM:[2,"KM","KM"],BBD:[2,"$","Bds$"],BHD:[3,"din","din"],BIF:[0,"FBu","FBu"],BMD:[2,"$","BD$"],BND:[2,"$","B$"],BOB:[2,"Bs","Bs"],BSD:[2,"$","BS$"],BTN:[2,"Nu.","Nu."],BWP:[2,"P","pula"],BYR:[0,"BYR","BYR"],BZD:[2,"$","BZ$"],CUC:[1,"$","CUC$"],CUP:[2,"$","CU$"],CVE:[2,"CVE","Esc"],DJF:[0,"Fdj","Fdj"],DZD:[2,"din","din"],ERN:[2,"Nfk","Nfk"],
-FJD:[2,"$","FJ$"],FKP:[2,"\u00a3","FK\u00a3"],GEL:[2,"GEL","GEL"],GHS:[2,"GHS","GHS"],GIP:[2,"\u00a3","GI\u00a3"],GMD:[2,"GMD","GMD"],GNF:[0,"FG","FG"],GTQ:[2,"Q","GTQ"],GYD:[0,"$","GY$"],HNL:[2,"L","HNL"],HTG:[2,"HTG","HTG"],IQD:[0,"din","IQD"],JOD:[3,"din","JOD"],KES:[2,"Ksh","Ksh"],KGS:[2,"KGS","KGS"],KHR:[2,"Riel","KHR"],KMF:[0,"CF","KMF"],KPW:[0,"\u20a9KP","KPW"],KWD:[3,"din","KWD"],KYD:[2,"$","KY$"],KZT:[2,"\u20b8","KZT"],LAK:[0,"\u20ad","\u20ad"],LBP:[0,"L\u00a3","LBP"],LRD:[2,"$","L$"],LSL:[2,
-"LSL","LSL"],LYD:[3,"din","LD"],MAD:[2,"dh","MAD"],MDL:[2,"MDL","MDL"],MGA:[0,"Ar","MGA"],MKD:[2,"din","MKD"],MMK:[0,"K","MMK"],MOP:[2,"MOP","MOP$"],MRO:[0,"MRO","MRO"],MUR:[0,"MURs","MURs"],MWK:[2,"MWK","MWK"],MZN:[2,"MTn","MTn"],NAD:[2,"$","N$"],NGN:[2,"\u20a6","NG\u20a6"],NIO:[2,"C$","C$"],NPR:[2,"Rs","NPRs"],NZD:[2,"$","NZ$"],OMR:[3,"Rial","OMR"],PGK:[2,"PGK","PGK"],PYG:[0,"Gs","PYG"],QAR:[2,"Rial","QR"],RWF:[0,"RF","RF"],SBD:[2,"$","SI$"],SCR:[2,"SCR","SCR"],SDG:[2,"SDG","SDG"],SHP:[2,"\u00a3",
-"SH\u00a3"],SLL:[0,"SLL","SLL"],SOS:[0,"SOS","SOS"],SRD:[2,"$","SR$"],STD:[0,"Db","Db"],SYP:[0,"\u00a3","SY\u00a3"],SZL:[2,"SZL","SZL"],TJS:[2,"Som","TJS"],TND:[3,"din","DT"],TOP:[2,"T$","T$"],TTD:[2,"$","TT$"],UGX:[0,"UGX","UGX"],UZS:[0,"so\u02bcm","UZS"],VEF:[2,"Bs","Bs"],VUV:[0,"VUV","VUV"],WST:[2,"WST","WST"],XAF:[0,"FCFA","FCFA"],XCD:[2,"$","EC$"],XOF:[0,"CFA","CFA"],XPF:[0,"FCFP","FCFP"],ZMK:[0,"ZMK","ZMK"]};goog.i18n.NumberFormatSymbols_af={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_af_ZA=goog.i18n.NumberFormatSymbols_af;
-goog.i18n.NumberFormatSymbols_am={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ETB"};goog.i18n.NumberFormatSymbols_am_ET=goog.i18n.NumberFormatSymbols_am;
-goog.i18n.NumberFormatSymbols_ar={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u0660",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0627\u0633",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0644\u064a\u0633\u00a0\u0631\u0642\u0645",DECIMAL_PATTERN:"#0.###;#0.###-",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#0.00;\u00a4\u00a0#0.00-",DEF_CURRENCY_CODE:"EGP"};goog.i18n.NumberFormatSymbols_ar_001=goog.i18n.NumberFormatSymbols_ar;
-goog.i18n.NumberFormatSymbols_ar_EG=goog.i18n.NumberFormatSymbols_ar;goog.i18n.NumberFormatSymbols_bg={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"BGN"};goog.i18n.NumberFormatSymbols_bg_BG=goog.i18n.NumberFormatSymbols_bg;
-goog.i18n.NumberFormatSymbols_bn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u09e6",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u09b8\u0982\u0996\u09cd\u09af\u09be\u00a0\u09a8\u09be",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4;(#,##,##0.00\u00a4)",DEF_CURRENCY_CODE:"BDT"};goog.i18n.NumberFormatSymbols_bn_BD=goog.i18n.NumberFormatSymbols_bn;
-goog.i18n.NumberFormatSymbols_br={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_br_FR=goog.i18n.NumberFormatSymbols_br;
-goog.i18n.NumberFormatSymbols_ca={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_ca_AD=goog.i18n.NumberFormatSymbols_ca;goog.i18n.NumberFormatSymbols_ca_ES=goog.i18n.NumberFormatSymbols_ca;
-goog.i18n.NumberFormatSymbols_chr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_chr_US=goog.i18n.NumberFormatSymbols_chr;
-goog.i18n.NumberFormatSymbols_cs={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CZK"};goog.i18n.NumberFormatSymbols_cs_CZ=goog.i18n.NumberFormatSymbols_cs;
-goog.i18n.NumberFormatSymbols_cy={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_cy_GB=goog.i18n.NumberFormatSymbols_cy;
-goog.i18n.NumberFormatSymbols_da={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"DKK"};goog.i18n.NumberFormatSymbols_da_DK=goog.i18n.NumberFormatSymbols_da;
-goog.i18n.NumberFormatSymbols_de={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_de_AT={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_de_BE=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_de_CH={DECIMAL_SEP:".",GROUP_SEP:"'",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4-#,##0.00",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_de_DE=goog.i18n.NumberFormatSymbols_de;goog.i18n.NumberFormatSymbols_de_LU=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_el={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"[#E0]",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_el_GR=goog.i18n.NumberFormatSymbols_el;
-goog.i18n.NumberFormatSymbols_en={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_en_AS=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_AU={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"AUD"};goog.i18n.NumberFormatSymbols_en_Dsrt_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_FM=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_GB={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_en_GU=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_IE={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_en_IN={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_en_MH=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_MP=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_PR=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_PW=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_SG={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"SGD"};
-goog.i18n.NumberFormatSymbols_en_TC=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_UM=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VG=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VI=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_ZA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};
-goog.i18n.NumberFormatSymbols_es={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_es_419={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"MXN"};goog.i18n.NumberFormatSymbols_es_EA=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_ES=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_IC=goog.i18n.NumberFormatSymbols_es;
-goog.i18n.NumberFormatSymbols_et={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_et_EE=goog.i18n.NumberFormatSymbols_et;
-goog.i18n.NumberFormatSymbols_eu={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%\u00a0#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_eu_ES=goog.i18n.NumberFormatSymbols_eu;
-goog.i18n.NumberFormatSymbols_fa={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u06f0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d7\u06f1\u06f0^",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0646\u0627\u0639\u062f\u062f",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u200e\u00a4#,##0.00;\u200e(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"IRR"};goog.i18n.NumberFormatSymbols_fa_IR=goog.i18n.NumberFormatSymbols_fa;
-goog.i18n.NumberFormatSymbols_fi={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"ep\u00e4luku",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fi_FI=goog.i18n.NumberFormatSymbols_fi;
-goog.i18n.NumberFormatSymbols_fil={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};goog.i18n.NumberFormatSymbols_fil_PH=goog.i18n.NumberFormatSymbols_fil;
-goog.i18n.NumberFormatSymbols_fr={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fr_BL=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_CA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"CAD"};goog.i18n.NumberFormatSymbols_fr_FR=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_GF=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_GP=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MC=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MF=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MQ=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_RE=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_YT=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_gl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_gl_ES=goog.i18n.NumberFormatSymbols_gl;
-goog.i18n.NumberFormatSymbols_gsw={DECIMAL_SEP:".",GROUP_SEP:"\u2019",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_gsw_CH=goog.i18n.NumberFormatSymbols_gsw;
-goog.i18n.NumberFormatSymbols_gu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_gu_IN=goog.i18n.NumberFormatSymbols_gu;
-goog.i18n.NumberFormatSymbols_haw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_haw_US=goog.i18n.NumberFormatSymbols_haw;
-goog.i18n.NumberFormatSymbols_he={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};goog.i18n.NumberFormatSymbols_he_IL=goog.i18n.NumberFormatSymbols_he;
-goog.i18n.NumberFormatSymbols_hi={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_hi_IN=goog.i18n.NumberFormatSymbols_hi;
-goog.i18n.NumberFormatSymbols_hr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HRK"};goog.i18n.NumberFormatSymbols_hr_HR=goog.i18n.NumberFormatSymbols_hr;
-goog.i18n.NumberFormatSymbols_hu={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HUF"};goog.i18n.NumberFormatSymbols_hu_HU=goog.i18n.NumberFormatSymbols_hu;
-goog.i18n.NumberFormatSymbols_id={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};goog.i18n.NumberFormatSymbols_id_ID=goog.i18n.NumberFormatSymbols_id;
-goog.i18n.NumberFormatSymbols_in={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};
-goog.i18n.NumberFormatSymbols_is={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ISK"};goog.i18n.NumberFormatSymbols_is_IS=goog.i18n.NumberFormatSymbols_is;
-goog.i18n.NumberFormatSymbols_it={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_it_IT=goog.i18n.NumberFormatSymbols_it;goog.i18n.NumberFormatSymbols_it_SM=goog.i18n.NumberFormatSymbols_it;
-goog.i18n.NumberFormatSymbols_iw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};
-goog.i18n.NumberFormatSymbols_ja={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"JPY"};goog.i18n.NumberFormatSymbols_ja_JP=goog.i18n.NumberFormatSymbols_ja;
-goog.i18n.NumberFormatSymbols_kn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0c88",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_kn_IN=goog.i18n.NumberFormatSymbols_kn;
-goog.i18n.NumberFormatSymbols_ko={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"KRW"};goog.i18n.NumberFormatSymbols_ko_KR=goog.i18n.NumberFormatSymbols_ko;
-goog.i18n.NumberFormatSymbols_ln={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CDF"};goog.i18n.NumberFormatSymbols_ln_CD=goog.i18n.NumberFormatSymbols_ln;
-goog.i18n.NumberFormatSymbols_lt={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2013",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"LTL"};goog.i18n.NumberFormatSymbols_lt_LT=goog.i18n.NumberFormatSymbols_lt;
-goog.i18n.NumberFormatSymbols_lv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"nav\u00a0skaitlis",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"LVL"};goog.i18n.NumberFormatSymbols_lv_LV=goog.i18n.NumberFormatSymbols_lv;
-goog.i18n.NumberFormatSymbols_ml={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ml_IN=goog.i18n.NumberFormatSymbols_ml;
-goog.i18n.NumberFormatSymbols_mr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u0966",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_mr_IN=goog.i18n.NumberFormatSymbols_mr;
-goog.i18n.NumberFormatSymbols_ms={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"MYR"};goog.i18n.NumberFormatSymbols_ms_Latn_MY=goog.i18n.NumberFormatSymbols_ms;
-goog.i18n.NumberFormatSymbols_mt={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_mt_MT=goog.i18n.NumberFormatSymbols_mt;
-goog.i18n.NumberFormatSymbols_nb={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};goog.i18n.NumberFormatSymbols_nb_NO=goog.i18n.NumberFormatSymbols_nb;
-goog.i18n.NumberFormatSymbols_nl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_nl_NL=goog.i18n.NumberFormatSymbols_nl;
-goog.i18n.NumberFormatSymbols_no={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};
-goog.i18n.NumberFormatSymbols_or={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_or_IN=goog.i18n.NumberFormatSymbols_or;
-goog.i18n.NumberFormatSymbols_pl={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"PLN"};goog.i18n.NumberFormatSymbols_pl_PL=goog.i18n.NumberFormatSymbols_pl;
-goog.i18n.NumberFormatSymbols_pt={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"BRL"};goog.i18n.NumberFormatSymbols_pt_BR=goog.i18n.NumberFormatSymbols_pt;
-goog.i18n.NumberFormatSymbols_pt_PT={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_ro={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RON"};goog.i18n.NumberFormatSymbols_ro_RO=goog.i18n.NumberFormatSymbols_ro;
-goog.i18n.NumberFormatSymbols_ru={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RUB"};goog.i18n.NumberFormatSymbols_ru_RU=goog.i18n.NumberFormatSymbols_ru;
-goog.i18n.NumberFormatSymbols_sk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sk_SK=goog.i18n.NumberFormatSymbols_sk;
-goog.i18n.NumberFormatSymbols_sl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sl_SI=goog.i18n.NumberFormatSymbols_sl;
-goog.i18n.NumberFormatSymbols_sq={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"ALL"};goog.i18n.NumberFormatSymbols_sq_AL=goog.i18n.NumberFormatSymbols_sq;
-goog.i18n.NumberFormatSymbols_sr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RSD"};goog.i18n.NumberFormatSymbols_sr_Cyrl_RS=goog.i18n.NumberFormatSymbols_sr;
-goog.i18n.NumberFormatSymbols_sv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d710^",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u00a4\u00a4\u00a4",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"SEK"};goog.i18n.NumberFormatSymbols_sv_SE=goog.i18n.NumberFormatSymbols_sv;
-goog.i18n.NumberFormatSymbols_sw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"TZS"};goog.i18n.NumberFormatSymbols_sw_TZ=goog.i18n.NumberFormatSymbols_sw;
-goog.i18n.NumberFormatSymbols_ta={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ta_IN=goog.i18n.NumberFormatSymbols_ta;
-goog.i18n.NumberFormatSymbols_te={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_te_IN=goog.i18n.NumberFormatSymbols_te;
-goog.i18n.NumberFormatSymbols_th={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"THB"};goog.i18n.NumberFormatSymbols_th_TH=goog.i18n.NumberFormatSymbols_th;
-goog.i18n.NumberFormatSymbols_tl={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};
-goog.i18n.NumberFormatSymbols_tr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"TRY"};goog.i18n.NumberFormatSymbols_tr_TR=goog.i18n.NumberFormatSymbols_tr;
-goog.i18n.NumberFormatSymbols_uk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0415",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u041d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"UAH"};goog.i18n.NumberFormatSymbols_uk_UA=goog.i18n.NumberFormatSymbols_uk;
-goog.i18n.NumberFormatSymbols_ur={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"PKR"};goog.i18n.NumberFormatSymbols_ur_PK=goog.i18n.NumberFormatSymbols_ur;
-goog.i18n.NumberFormatSymbols_vi={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"VND"};goog.i18n.NumberFormatSymbols_vi_VN=goog.i18n.NumberFormatSymbols_vi;
-goog.i18n.NumberFormatSymbols_zh={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"CNY"};goog.i18n.NumberFormatSymbols_zh_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_HK={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"HKD"};goog.i18n.NumberFormatSymbols_zh_Hans_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_TW={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"TWD"};
-goog.i18n.NumberFormatSymbols_zu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"I-NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_zu_ZA=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-"af"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af);if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg;"bn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn);
-if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca);if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;
-if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr;"cs"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs;
-"cy"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da);if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de);
-if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;
-if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el);if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_AU;if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_GB;
-if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_SG;
-if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et;"eu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu);
-if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi);if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi;
-"fil"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr);if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr_CA;
-if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;
-if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl);
-if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl;"gsw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he;"hi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi);
-if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu);if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu;
-"id"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is);if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is;
-"it"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;"iw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja);
-if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn;"ko"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko;
-"ln"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt);if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv);
-if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml);if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr;
-"ms"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms);if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro;"ru"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru;
-"sk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl);if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq);
-if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr);if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv;
-"sw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw);if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur);if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur;
-"vi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_HK;
-if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormat=function(a,b,c){this.intlCurrencyCode_=b||goog.i18n.NumberFormatSymbols.DEF_CURRENCY_CODE;this.currencyStyle_=c||goog.i18n.NumberFormat.CurrencyStyle.LOCAL;this.maximumIntegerDigits_=40;this.minimumIntegerDigits_=1;this.significantDigits_=0;this.maximumFractionDigits_=3;this.minExponentDigits_=this.minimumFractionDigits_=0;this.showTrailingZeros_=this.useSignForPositiveExponent_=!1;this.positiveSuffix_=this.positivePrefix_="";this.negativePrefix_="-";this.negativeSuffix_="";
-this.multiplier_=1;this.groupingSize_=3;this.useExponentialNotation_=this.decimalSeparatorAlwaysShown_=!1;this.compactStyle_=goog.i18n.NumberFormat.CompactStyle.NONE;this.baseFormattingNumber_=null;"number"==typeof a?this.applyStandardPattern_(a):this.applyPattern_(a)};goog.i18n.NumberFormat.Format={DECIMAL:1,SCIENTIFIC:2,PERCENT:3,CURRENCY:4,COMPACT_SHORT:5,COMPACT_LONG:6};goog.i18n.NumberFormat.CurrencyStyle={LOCAL:0,PORTABLE:1,GLOBAL:2};goog.i18n.NumberFormat.CompactStyle={NONE:0,SHORT:1,LONG:2};
-goog.i18n.NumberFormat.enforceAsciiDigits_=!1;goog.i18n.NumberFormat.setEnforceAsciiDigits=function(a){goog.i18n.NumberFormat.enforceAsciiDigits_=a};goog.i18n.NumberFormat.isEnforceAsciiDigits=function(){return goog.i18n.NumberFormat.enforceAsciiDigits_};goog.i18n.NumberFormat.prototype.setMinimumFractionDigits=function(a){if(0<this.significantDigits_&&0<a)throw Error("Can't combine significant digits and minimum fraction digits");this.minimumFractionDigits_=a};
-goog.i18n.NumberFormat.prototype.setMaximumFractionDigits=function(a){this.maximumFractionDigits_=a};goog.i18n.NumberFormat.prototype.setSignificantDigits=function(a){if(0<this.minimumFractionDigits_&&0<=a)throw Error("Can't combine significant digits and minimum fraction digits");this.significantDigits_=a};
-goog.i18n.NumberFormat.prototype.applyPattern_=function(a){a.replace(/ /g,"\u00a0");var b=[0];this.positivePrefix_=this.parseAffix_(a,b);var c=b[0];this.parseTrunk_(a,b);c=b[0]-c;this.positiveSuffix_=this.parseAffix_(a,b);b[0]<a.length&&a.charAt(b[0])==goog.i18n.NumberFormat.PATTERN_SEPARATOR_?(b[0]++,this.negativePrefix_=this.parseAffix_(a,b),b[0]+=c,this.negativeSuffix_=this.parseAffix_(a,b)):(this.negativePrefix_=this.positivePrefix_+this.negativePrefix_,this.negativeSuffix_+=this.positiveSuffix_)};
-goog.i18n.NumberFormat.prototype.applyStandardPattern_=function(a){switch(a){case goog.i18n.NumberFormat.Format.DECIMAL:this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);break;case goog.i18n.NumberFormat.Format.SCIENTIFIC:this.applyPattern_(goog.i18n.NumberFormatSymbols.SCIENTIFIC_PATTERN);break;case goog.i18n.NumberFormat.Format.PERCENT:this.applyPattern_(goog.i18n.NumberFormatSymbols.PERCENT_PATTERN);break;case goog.i18n.NumberFormat.Format.CURRENCY:this.applyPattern_(goog.i18n.currency.adjustPrecision(goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN,
-this.intlCurrencyCode_));break;case goog.i18n.NumberFormat.Format.COMPACT_SHORT:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.SHORT);break;case goog.i18n.NumberFormat.Format.COMPACT_LONG:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.LONG);break;default:throw Error("Unsupported pattern type.");}};
-goog.i18n.NumberFormat.prototype.applyCompactStyle_=function(a){this.compactStyle_=a;this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);this.setMinimumFractionDigits(0);this.setMaximumFractionDigits(2);this.setSignificantDigits(2)};
-goog.i18n.NumberFormat.prototype.parse=function(a,b){var c=b||[0];if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact numbers is unimplemented");var d=NaN;a=a.replace(/ /g,"\u00a0");var e=a.indexOf(this.positivePrefix_,c[0])==c[0],f=a.indexOf(this.negativePrefix_,c[0])==c[0];e&&f&&(this.positivePrefix_.length>this.negativePrefix_.length?f=!1:this.positivePrefix_.length<this.negativePrefix_.length&&(e=!1));e?c[0]+=this.positivePrefix_.length:f&&(c[0]+=this.negativePrefix_.length);
-a.indexOf(goog.i18n.NumberFormatSymbols.INFINITY,c[0])==c[0]?(c[0]+=goog.i18n.NumberFormatSymbols.INFINITY.length,d=Infinity):d=this.parseNumber_(a,c);if(e){if(a.indexOf(this.positiveSuffix_,c[0])!=c[0])return NaN;c[0]+=this.positiveSuffix_.length}else if(f){if(a.indexOf(this.negativeSuffix_,c[0])!=c[0])return NaN;c[0]+=this.negativeSuffix_.length}return f?-d:d};
-goog.i18n.NumberFormat.prototype.parseNumber_=function(a,b){var c=!1,d=!1,e=!1,f=1,g=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,h=goog.i18n.NumberFormatSymbols.GROUP_SEP,k=goog.i18n.NumberFormatSymbols.EXP_SYMBOL;if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact style numbers is not implemented");for(var l="";b[0]<a.length;b[0]++){var m=a.charAt(b[0]),p=this.getDigit_(m);if(0<=p&&9>=p)l+=p,e=!0;else if(m==g.charAt(0)){if(c||d)break;l+=".";c=!0}else if(m==
-h.charAt(0)&&("\u00a0"!=h.charAt(0)||b[0]+1<a.length&&0<=this.getDigit_(a.charAt(b[0]+1)))){if(c||d)break}else if(m==k.charAt(0)){if(d)break;l+="E";d=!0}else if("+"==m||"-"==m)l+=m;else if(m==goog.i18n.NumberFormatSymbols.PERCENT.charAt(0)){if(1!=f)break;f=100;if(e){b[0]++;break}}else if(m==goog.i18n.NumberFormatSymbols.PERMILL.charAt(0)){if(1!=f)break;f=1E3;if(e){b[0]++;break}}else break}return parseFloat(l)/f};
-goog.i18n.NumberFormat.prototype.format=function(a){if(isNaN(a))return goog.i18n.NumberFormatSymbols.NAN;var b=[],c=goog.isNull(this.baseFormattingNumber_)?a:this.baseFormattingNumber_,c=this.getUnitAfterRounding_(c,a);a/=Math.pow(10,c.divisorBase);b.push(c.prefix);var d=0>a||0==a&&0>1/a;b.push(d?this.negativePrefix_:this.positivePrefix_);isFinite(a)?(a*=d?-1:1,a*=this.multiplier_,this.useExponentialNotation_?this.subformatExponential_(a,b):this.subformatFixed_(a,this.minimumIntegerDigits_,b)):b.push(goog.i18n.NumberFormatSymbols.INFINITY);
-b.push(d?this.negativeSuffix_:this.positiveSuffix_);b.push(c.suffix);return b.join("")};goog.i18n.NumberFormat.prototype.roundNumber_=function(a){var b=Math.pow(10,this.maximumFractionDigits_),c=0>=this.significantDigits_?Math.round(a*b):Math.floor(this.roundToSignificantDigits_(a*b,this.significantDigits_,this.maximumFractionDigits_));isFinite(c)?(a=Math.floor(c/b),b=Math.floor(c-a*b)):b=0;return{intValue:a,fracValue:b}};
-goog.i18n.NumberFormat.prototype.subformatFixed_=function(a,b,c){if(this.minimumFractionDigits_>this.maximumFractionDigits_)throw Error("Min value must be less than max value");a=this.roundNumber_(a);var d=Math.pow(10,this.maximumFractionDigits_),e=a.intValue,f=a.fracValue,g=0==e?0:this.intLog10_(e)+1,h=0<this.minimumFractionDigits_||0<f||this.showTrailingZeros_&&g<this.significantDigits_;a=this.minimumFractionDigits_;h&&(a=this.showTrailingZeros_&&0<this.significantDigits_?this.significantDigits_-
-g:this.minimumFractionDigits_);for(var k="",g=e;1E20<g;)k="0"+k,g=Math.round(g/10);var k=g+k,l=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,m=goog.i18n.NumberFormatSymbols.GROUP_SEP,g=goog.i18n.NumberFormat.enforceAsciiDigits_?48:goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0),p=k.length;if(0<e||0<b){for(e=p;e<b;e++)c.push(String.fromCharCode(g));for(e=0;e<p;e++)c.push(String.fromCharCode(g+1*k.charAt(e))),1<p-e&&0<this.groupingSize_&&1==(p-e)%this.groupingSize_&&c.push(m)}else h||c.push(String.fromCharCode(g));
-(this.decimalSeparatorAlwaysShown_||h)&&c.push(l);b=""+(f+d);for(d=b.length;"0"==b.charAt(d-1)&&d>a+1;)d--;for(e=1;e<d;e++)c.push(String.fromCharCode(g+1*b.charAt(e)))};
-goog.i18n.NumberFormat.prototype.addExponentPart_=function(a,b){b.push(goog.i18n.NumberFormatSymbols.EXP_SYMBOL);0>a?(a=-a,b.push(goog.i18n.NumberFormatSymbols.MINUS_SIGN)):this.useSignForPositiveExponent_&&b.push(goog.i18n.NumberFormatSymbols.PLUS_SIGN);for(var c=""+a,d=goog.i18n.NumberFormat.enforceAsciiDigits_?"0":goog.i18n.NumberFormatSymbols.ZERO_DIGIT,e=c.length;e<this.minExponentDigits_;e++)b.push(d);b.push(c)};
-goog.i18n.NumberFormat.prototype.subformatExponential_=function(a,b){if(0==a)this.subformatFixed_(a,this.minimumIntegerDigits_,b),this.addExponentPart_(0,b);else{var c=goog.math.safeFloor(Math.log(a)/Math.log(10));a/=Math.pow(10,c);var d=this.minimumIntegerDigits_;if(1<this.maximumIntegerDigits_&&this.maximumIntegerDigits_>this.minimumIntegerDigits_){for(;0!=c%this.maximumIntegerDigits_;)a*=10,c--;d=1}else 1>this.minimumIntegerDigits_?(c++,a/=10):(c-=this.minimumIntegerDigits_-1,a*=Math.pow(10,this.minimumIntegerDigits_-
-1));this.subformatFixed_(a,d,b);this.addExponentPart_(c,b)}};goog.i18n.NumberFormat.prototype.getDigit_=function(a){a=a.charCodeAt(0);if(48<=a&&58>a)return a-48;var b=goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0);return b<=a&&a<b+10?a-b:-1};goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_="0";goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_=",";goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_=".";goog.i18n.NumberFormat.PATTERN_PER_MILLE_="\u2030";goog.i18n.NumberFormat.PATTERN_PERCENT_="%";
-goog.i18n.NumberFormat.PATTERN_DIGIT_="#";goog.i18n.NumberFormat.PATTERN_SEPARATOR_=";";goog.i18n.NumberFormat.PATTERN_EXPONENT_="E";goog.i18n.NumberFormat.PATTERN_PLUS_="+";goog.i18n.NumberFormat.PATTERN_MINUS_="-";goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_="\u00a4";goog.i18n.NumberFormat.QUOTE_="'";
-goog.i18n.NumberFormat.prototype.parseAffix_=function(a,b){for(var c="",d=!1,e=a.length;b[0]<e;b[0]++){var f=a.charAt(b[0]);if(f==goog.i18n.NumberFormat.QUOTE_)b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.QUOTE_?(b[0]++,c+="'"):d=!d;else if(d)c+=f;else switch(f){case goog.i18n.NumberFormat.PATTERN_DIGIT_:case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_SEPARATOR_:return c;
-case goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_:if(b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_)b[0]++,c+=this.intlCurrencyCode_;else switch(this.currencyStyle_){case goog.i18n.NumberFormat.CurrencyStyle.LOCAL:c+=goog.i18n.currency.getLocalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.GLOBAL:c+=goog.i18n.currency.getGlobalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.PORTABLE:c+=goog.i18n.currency.getPortableCurrencySign(this.intlCurrencyCode_)}break;
-case goog.i18n.NumberFormat.PATTERN_PERCENT_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=100;c+=goog.i18n.NumberFormatSymbols.PERCENT;break;case goog.i18n.NumberFormat.PATTERN_PER_MILLE_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=1E3;c+=goog.i18n.NumberFormatSymbols.PERMILL;break;default:c+=f}}return c};
-goog.i18n.NumberFormat.prototype.parseTrunk_=function(a,b){for(var c=-1,d=0,e=0,f=0,g=-1,h=a.length,k=!0;b[0]<h&&k;b[0]++){var l=a.charAt(b[0]);switch(l){case goog.i18n.NumberFormat.PATTERN_DIGIT_:0<e?f++:d++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:if(0<f)throw Error('Unexpected "0" in pattern "'+a+'"');e++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:g=0;break;case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:if(0<=c)throw Error('Multiple decimal separators in pattern "'+
-a+'"');c=d+e+f;break;case goog.i18n.NumberFormat.PATTERN_EXPONENT_:if(this.useExponentialNotation_)throw Error('Multiple exponential symbols in pattern "'+a+'"');this.useExponentialNotation_=!0;this.minExponentDigits_=0;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_PLUS_&&(b[0]++,this.useSignForPositiveExponent_=!0);for(;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_;)b[0]++,this.minExponentDigits_++;if(1>d+e||1>this.minExponentDigits_)throw Error('Malformed exponential pattern "'+
-a+'"');k=!1;break;default:b[0]--,k=!1}}0==e&&0<d&&0<=c&&(e=c,0==e&&e++,f=d-e,d=e-1,e=1);if(0>c&&0<f||0<=c&&(c<d||c>d+e)||0==g)throw Error('Malformed pattern "'+a+'"');f=d+e+f;this.maximumFractionDigits_=0<=c?f-c:0;0<=c&&(this.minimumFractionDigits_=d+e-c,0>this.minimumFractionDigits_&&(this.minimumFractionDigits_=0));e=0<=c?c:f;this.minimumIntegerDigits_=e-d;this.useExponentialNotation_&&(this.maximumIntegerDigits_=d+this.minimumIntegerDigits_,0==this.maximumFractionDigits_&&0==this.minimumIntegerDigits_&&
-(this.minimumIntegerDigits_=1));this.groupingSize_=Math.max(0,g);this.decimalSeparatorAlwaysShown_=0==c||c==f};goog.i18n.NumberFormat.NULL_UNIT_={prefix:"",suffix:"",divisorBase:0};
-goog.i18n.NumberFormat.prototype.getUnitFor_=function(a,b){var c=this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.SHORT?goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_SHORT_PATTERN:goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_LONG_PATTERN;if(3>a)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.min(14,a);c=c[Math.pow(10,a)];if(!c)return goog.i18n.NumberFormat.NULL_UNIT_;c=c[b];return c&&"0"!=c?(c=/([^0]*)(0+)(.*)/.exec(c))?{prefix:c[1],suffix:c[3],divisorBase:a-(c[2].length-1)}:
-goog.i18n.NumberFormat.NULL_UNIT_:goog.i18n.NumberFormat.NULL_UNIT_};
-goog.i18n.NumberFormat.prototype.getUnitAfterRounding_=function(a,b){if(this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.NONE)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.abs(a);b=Math.abs(b);var c=this.pluralForm_(a),d=1>=a?0:this.intLog10_(a),c=this.getUnitFor_(d,c).divisorBase,d=b/Math.pow(10,c),d=this.roundNumber_(d),e=a/Math.pow(10,c),e=this.roundNumber_(e),d=this.pluralForm_(d.intValue+d.fracValue);return this.getUnitFor_(c+this.intLog10_(e.intValue),d)};
-goog.i18n.NumberFormat.prototype.intLog10_=function(a){for(var b=0;1<=(a/=10);)b++;return b};goog.i18n.NumberFormat.prototype.roundToSignificantDigits_=function(a,b,c){if(!a)return a;var d=this.intLog10_(a);b=b-d-1;if(b<-c)return c=Math.pow(10,c),Math.round(a/c)*c;c=Math.pow(10,b);a=Math.round(a*c);return a/c};goog.i18n.NumberFormat.prototype.pluralForm_=function(){return"other"};goog.i18n.ordinalRules={};goog.i18n.ordinalRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.ordinalRules.defaultSelect_=function(){return goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.frSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.huSelect_=function(a){return 1==a||5==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.svSelect_=function(a){return 1!=a%10&&2!=a%10||11==a%100||12==a%100?goog.i18n.ordinalRules.Keyword.OTHER:goog.i18n.ordinalRules.Keyword.ONE};goog.i18n.ordinalRules.enSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.ordinalRules.Keyword.ONE:2==a%10&&12!=a%100?goog.i18n.ordinalRules.Keyword.TWO:3==a%10&&13!=a%100?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.itSelect_=function(a){return 11==a||8==a||80==a||800==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.caSelect_=function(a){return 1==a||3==a?goog.i18n.ordinalRules.Keyword.ONE:2==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.mrSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.guSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.bnSelect_=function(a){return 1==a||5==a||7==a||8==a||9==a||10==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.zuSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:a==(a|0)&&2<=a&&9>=a?goog.i18n.ordinalRules.Keyword.FEW:a==(a|0)&&(10<=a&&19>=a||100<=a&&199>=a||1E3<=a&&1999>=a)?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"am"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bg"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.bnSelect_);"br"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ca"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.caSelect_);"chr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"cy"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"da"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"de"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"el"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"en"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"et"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fa"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fil"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"fr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_;"gl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gsw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"haw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"he"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"hr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.huSelect_);"id"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"is"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"it"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.itSelect_);"iw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ja"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ln"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ml"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"mr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.mrSelect_);"ms"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-"mt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nb"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"no"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"or"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"pl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"pt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"ro"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"ru"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"sk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sq"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.svSelect_);"sw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ta"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"te"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"th"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ur"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"vi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"zh"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.zuSelect_);goog.i18n.pluralRules={};goog.i18n.pluralRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.pluralRules.defaultSelect_=function(){return goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.arSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&99>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.heSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:0!=a&&0==a%10?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.enSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.filSelect_=function(a){return 0==a||1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.frSelect_=function(a){return 0<=a&&2>=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.lvSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.iuSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gaSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a&&6>=a?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&7<=a&&10>=a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.roSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||1!=a&&a==(a|0)&&1<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.ltSelect_=function(a){return 1==a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&9>=a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.beSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:0==a%10||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&11<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.csSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&4>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.plSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:1!=a&&(0==a%10||1==a%10)||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&12<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.slSelect_=function(a){return 1==a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%100?goog.i18n.pluralRules.Keyword.TWO:3==a%100||4==a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.mtSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||a==(a|0)&&2<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.mkSelect_=function(a){return 1==a%10&&11!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.cySelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:3==a?goog.i18n.pluralRules.Keyword.FEW:6==a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.lagSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:0<=a&&2>=a&&0!=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.shiSelect_=function(a){return 0<=a&&1>=a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&10>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.brSelect_=function(a){return 1==a%10&&11!=a%100&&71!=a%100&&91!=a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%10&&12!=a%100&&72!=a%100&&92!=a%100?goog.i18n.pluralRules.Keyword.TWO:(3==a%10||4==a%10||9==a%10)&&(10>a%100||19<a%100)&&(70>a%100||79<a%100)&&(90>a%100||99<a%100)?goog.i18n.pluralRules.Keyword.FEW:0!=a&&0==a%1E6?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.kshSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.tzmSelect_=function(a){return 0==a||1==a||a==(a|0)&&11<=a&&99>=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.gvSelect_=function(a){return 1==a%10||2==a%10||0==a%20?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gdSelect_=function(a){return 1==a||11==a?goog.i18n.pluralRules.Keyword.ONE:2==a||12==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&(3<=a&&10>=a||13<=a&&19>=a)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"am"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.arSelect_);"bg"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"bn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"br"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.brSelect_);"ca"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"chr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"cy"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.cySelect_);"da"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"de"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"el"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"en"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"et"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fa"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fil"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"fr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_;
-"gl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gsw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"haw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"he"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"hi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"hr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"hu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"id"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"is"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"it"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"iw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"ja"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ln"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"lt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.ltSelect_);
-"lv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.lvSelect_);"ml"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"mr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ms"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"mt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.mtSelect_);"nb"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"nl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"no"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"or"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"pl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.plSelect_);"pt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"ro"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.roSelect_);"ru"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"sl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.slSelect_);"sq"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"sr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"sw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ta"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"te"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"th"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-"tl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"tr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"ur"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"vi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"zh"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);goog.i18n.MessageFormat=function(a){this.literals_=[];this.parsedPattern_=[];this.numberFormatter_=new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);this.parsePattern_(a)};goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_="\ufddf_";goog.i18n.MessageFormat.Element_={STRING:0,BLOCK:1};goog.i18n.MessageFormat.BlockType_={PLURAL:0,ORDINAL:1,SELECT:2,SIMPLE:3,STRING:4,UNKNOWN:5};goog.i18n.MessageFormat.OTHER_="other";goog.i18n.MessageFormat.REGEX_LITERAL_=/'([{}#].*?)'/g;
-goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_=/''/g;goog.i18n.MessageFormat.prototype.format=function(a){return this.format_(a,!1)};goog.i18n.MessageFormat.prototype.format_=function(a,b){if(0==this.parsedPattern_.length)return"";var c=[];this.formatBlock_(this.parsedPattern_,a,b,c);c=c.join("");for(b||goog.asserts.assert(-1==c.search("#"),"Not all # were replaced.");0<this.literals_.length;)c=c.replace(this.buildPlaceholder_(this.literals_),this.literals_.pop());return c};
-goog.i18n.MessageFormat.prototype.formatBlock_=function(a,b,c,d){for(var e=0;e<a.length;e++)switch(a[e].type){case goog.i18n.MessageFormat.BlockType_.STRING:d.push(a[e].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:var f=a[e].value;this.formatSimplePlaceholder_(f,b,d);break;case goog.i18n.MessageFormat.BlockType_.SELECT:f=a[e].value;this.formatSelectBlock_(f,b,c,d);break;case goog.i18n.MessageFormat.BlockType_.PLURAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.pluralRules.select,
-c,d);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.ordinalRules.select,c,d);break;default:goog.asserts.fail("Unrecognized block type.")}};goog.i18n.MessageFormat.prototype.formatSimplePlaceholder_=function(a,b,c){b=b[a];goog.isDef(b)?(this.literals_.push(b),c.push(this.buildPlaceholder_(this.literals_))):c.push("Undefined parameter - "+a)};
-goog.i18n.MessageFormat.prototype.formatSelectBlock_=function(a,b,c,d){var e=a.argumentIndex;goog.isDef(b[e])?(e=a[b[e]],goog.isDef(e)||(e=a[goog.i18n.MessageFormat.OTHER_],goog.asserts.assertArray(e,"Invalid option or missing other option for select block.")),this.formatBlock_(e,b,c,d)):d.push("Undefined parameter - "+e)};
-goog.i18n.MessageFormat.prototype.formatPluralOrdinalBlock_=function(a,b,c,d,e){var f=a.argumentIndex,g=a.argumentOffset,h=+b[f];isNaN(h)?e.push("Undefined or invalid parameter - "+f):(g=h-g,f=a[b[f]],goog.isDef(f)||(goog.asserts.assert(0<=g,"Argument index smaller than offset."),c=c(g),goog.asserts.assertString(c,"Invalid plural key."),f=a[c],goog.isDef(f)||(f=a[goog.i18n.MessageFormat.OTHER_]),goog.asserts.assertArray(f,"Invalid option or missing other option for plural block.")),a=[],this.formatBlock_(f,
-b,d,a),b=a.join(""),goog.asserts.assertString(b,"Empty block in plural."),d?e.push(b):(d=this.numberFormatter_.format(g),e.push(b.replace(/#/g,d))))};goog.i18n.MessageFormat.prototype.parsePattern_=function(a){a&&(a=this.insertPlaceholders_(a),this.parsedPattern_=this.parseBlock_(a))};
-goog.i18n.MessageFormat.prototype.insertPlaceholders_=function(a){var b=this.literals_,c=goog.bind(this.buildPlaceholder_,this);a=a.replace(goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_,function(){b.push("'");return c(b)});return a=a.replace(goog.i18n.MessageFormat.REGEX_LITERAL_,function(a,e){b.push(e);return c(b)})};
-goog.i18n.MessageFormat.prototype.extractParts_=function(a){var b=0,c=[],d=[],e=/[{}]/g;e.lastIndex=0;for(var f;f=e.exec(a);){var g=f.index;"}"==f[0]?(f=c.pop(),goog.asserts.assert(goog.isDef(f)&&"{"==f,"No matching { for }."),0==c.length&&(f={},f.type=goog.i18n.MessageFormat.Element_.BLOCK,f.value=a.substring(b,g),d.push(f),b=g+1)):(0==c.length&&(b=a.substring(b,g),""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b}),b=g+1),c.push("{"))}goog.asserts.assert(0==c.length,"There are mismatched { or } in the pattern.");
-b=a.substring(b);""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b});return d};goog.i18n.MessageFormat.PLURAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*plural\s*,(?:\s*offset:(\d+))?/;goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*selectordinal\s*,/;goog.i18n.MessageFormat.SELECT_BLOCK_RE_=/^\s*(\w+)\s*,\s*select\s*,/;
-goog.i18n.MessageFormat.prototype.parseBlockType_=function(a){return goog.i18n.MessageFormat.PLURAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.PLURAL:goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.ORDINAL:goog.i18n.MessageFormat.SELECT_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.SELECT:/^\s*\w+\s*/.test(a)?goog.i18n.MessageFormat.BlockType_.SIMPLE:goog.i18n.MessageFormat.BlockType_.UNKNOWN};
-goog.i18n.MessageFormat.prototype.parseBlock_=function(a){var b=[];a=this.extractParts_(a);for(var c=0;c<a.length;c++){var d={};if(goog.i18n.MessageFormat.Element_.STRING==a[c].type)d.type=goog.i18n.MessageFormat.BlockType_.STRING,d.value=a[c].value;else if(goog.i18n.MessageFormat.Element_.BLOCK==a[c].type){var e=this.parseBlockType_(a[c].value);switch(e){case goog.i18n.MessageFormat.BlockType_.SELECT:d.type=goog.i18n.MessageFormat.BlockType_.SELECT;d.value=this.parseSelectBlock_(a[c].value);break;
-case goog.i18n.MessageFormat.BlockType_.PLURAL:d.type=goog.i18n.MessageFormat.BlockType_.PLURAL;d.value=this.parsePluralBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:d.type=goog.i18n.MessageFormat.BlockType_.ORDINAL;d.value=this.parseOrdinalBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:d.type=goog.i18n.MessageFormat.BlockType_.SIMPLE;d.value=a[c].value;break;default:goog.asserts.fail("Unknown block type.")}}else goog.asserts.fail("Unknown part of the pattern.");
-b.push(d)}return b};
-goog.i18n.MessageFormat.prototype.parseSelectBlock_=function(a){var b="",c=goog.i18n.MessageFormat.SELECT_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing select key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid select value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");c[e.replace(/\s/g,
-"")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in select statement.");return c};
-goog.i18n.MessageFormat.prototype.parsePluralBlock_=function(a){var b="",c=0,d=goog.i18n.MessageFormat.PLURAL_BLOCK_RE_;a=a.replace(d,function(a,d,e){b=d;e&&(c=parseInt(e,10));return""});d={};d.argumentIndex=b;d.argumentOffset=c;a=this.extractParts_(a);for(var e=0;e<a.length;){var f=a[e].value;goog.asserts.assertString(f,"Missing plural key element.");e++;goog.asserts.assert(e<a.length,"Missing or invalid plural value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[e].type)var g=this.parseBlock_(a[e].value);
-else goog.asserts.fail("Expected block type.");d[f.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=g;e++}goog.asserts.assertArray(d[goog.i18n.MessageFormat.OTHER_],"Missing other key in plural statement.");return d};
-goog.i18n.MessageFormat.prototype.parseOrdinalBlock_=function(a){var b="",c=goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;c.argumentOffset=0;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing ordinal key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid ordinal value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");
-c[e.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in selectordinal statement.");return c};goog.i18n.MessageFormat.prototype.buildPlaceholder_=function(a){goog.asserts.assert(0<a.length,"Literal array is empty.");a=(a.length-1).toString(10);return goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_+a+"_"};cvox.TtsCapturingEventListener=function(){};cvox.TtsInterface=function(){};cvox.TtsInterface.prototype.speak=function(){};cvox.TtsInterface.prototype.isSpeaking=function(){};cvox.TtsInterface.prototype.stop=function(){};cvox.TtsInterface.prototype.increaseOrDecreaseProperty=function(){};cvox.TtsInterface.prototype.getDefaultProperty=function(){};cvox.AbstractTts=function(){this.ttsProperties={};this.propertyDefault={rate:0.5,pitch:0.5,volume:0.5};this.propertyMin={rate:0,pitch:0,volume:0};this.propertyMax={rate:1,pitch:1,volume:1};this.propertyStep={rate:0.1,pitch:0.1,volume:0.1};if(void 0==cvox.AbstractTts.pronunciationDictionaryRegexp_){var a=[],b;for(b in cvox.AbstractTts.PRONUNCIATION_DICTIONARY)a.push(b);a="\\b("+a.join("|")+")\\b";cvox.AbstractTts.pronunciationDictionaryRegexp_=RegExp(a,"ig")}if(void 0==cvox.AbstractTts.substitutionDictionaryRegexp_){var a=
-[],c;for(c in cvox.AbstractTts.SUBSTITUTION_DICTIONARY)a.push(c);a="("+a.join("|")+")";cvox.AbstractTts.substitutionDictionaryRegexp_=RegExp(a,"ig")}};cvox.AbstractTts.prototype.speak=function(){return this};cvox.AbstractTts.prototype.isSpeaking=function(){return!1};cvox.AbstractTts.prototype.stop=function(){};
-cvox.AbstractTts.prototype.increaseOrDecreaseProperty=function(a,b){var c=this.propertyMin[a],d=this.propertyMax[a],e=this.propertyStep[a],f=this.ttsProperties[a],f=b?f+e:f-e;this.ttsProperties[a]=Math.max(Math.min(f,d),c)};
-cvox.AbstractTts.prototype.mergeProperties=function(a){var b={},c;if(this.ttsProperties)for(c in this.ttsProperties)b[c]=this.ttsProperties[c];if(a){c=cvox.AbstractTts;"number"==typeof a[c.VOLUME]&&(b[c.VOLUME]=a[c.VOLUME]);"number"==typeof a[c.PITCH]&&(b[c.PITCH]=a[c.PITCH]);"number"==typeof a[c.RATE]&&(b[c.RATE]=a[c.RATE]);"string"==typeof a[c.LANG]&&(b[c.LANG]=a[c.LANG]);var d=this,e=function(c,e){if("number"==typeof a[e]&&"number"==typeof b[c]){b[c]+=a[e];var h=d.propertyMin[c],k=d.propertyMax[c];
-b[c]>k?b[c]=k:b[c]<h&&(b[c]=h)}};e(c.VOLUME,c.RELATIVE_VOLUME);e(c.PITCH,c.RELATIVE_PITCH);e(c.RATE,c.RELATIVE_RATE)}return b};cvox.AbstractTts.RATE="rate";cvox.AbstractTts.PITCH="pitch";cvox.AbstractTts.VOLUME="volume";cvox.AbstractTts.LANG="lang";cvox.AbstractTts.RELATIVE_RATE="relativeRate";cvox.AbstractTts.RELATIVE_PITCH="relativePitch";cvox.AbstractTts.RELATIVE_VOLUME="relativeVolume";cvox.AbstractTts.COLOR="color";cvox.AbstractTts.FONT_WEIGHT="fontWeight";cvox.AbstractTts.PUNCTUATION_ECHO="punctuationEcho";
-cvox.AbstractTts.PAUSE="pause";cvox.AbstractTts.PERSONALITY_ANNOTATION={relativePitch:-0.25,color:"yellow",punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT={punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ASIDE={relativePitch:-0.1,color:"#669"};cvox.AbstractTts.PERSONALITY_CAPITAL={relativePitch:0.6};cvox.AbstractTts.PERSONALITY_DELETED={punctuationEcho:"none",relativePitch:-0.6};cvox.AbstractTts.PERSONALITY_QUOTE={relativePitch:0.1,color:"#b6b",fontWeight:"bold"};
-cvox.AbstractTts.PERSONALITY_STRONG={relativePitch:0.1,color:"#b66",fontWeight:"bold"};cvox.AbstractTts.PERSONALITY_EMPHASIS={relativeVolume:0.1,relativeRate:-0.1,color:"#6bb",fontWeight:"bold"};cvox.AbstractTts.DEBUG=!0;cvox.AbstractTts.QUEUE_MODE_FLUSH=0;cvox.AbstractTts.QUEUE_MODE_QUEUE=1;
-cvox.AbstractTts.CHARACTER_DICTIONARY={" ":"space","`":"backtick","~":"tilde","!":"exclamation","@":"at","#":"pound",$:"dollar","%":"percent","^":"caret","&":"ampersand","*":"asterisk","(":"open_paren",")":"close_paren","-":"dash",_:"underscore","=":"equals","+":"plus","[":"left_bracket","]":"right_bracket","{":"left_brace","}":"right_brace","|":"pipe",";":"semicolon",":":"colon",",":"comma",".":"dot","<":"less_than",">":"greater_than","/":"slash","?":"question_mark",'"':"quote","'":"apostrophe",
-"\t":"tab","\r":"return","\n":"new line","\\":"backslash"};cvox.AbstractTts.PRONUNCIATION_DICTIONARY={admob:"ad-mob",adsense:"ad-sense",adwords:"ad-words",angularjs:"angular j s",bcc:"B C C",cc:"C C",chromevox:"chrome vox",cr48:"C R 48",ctrl:"control",doubleclick:"double-click",gmail:"gee mail",gtalk:"gee talk",http:"H T T P",https:"H T T P S",igoogle:"eye google",pagerank:"page-rank",username:"user-name",www:"W W W",youtube:"you tube"};
-cvox.AbstractTts.SUBSTITUTION_DICTIONARY={"://":"colon slash slash","\u00bc":"one fourth","\u00bd":"one half","\u200e":"left to right mark","\u2190":"left arrow","\u2191":"up arrow","\u2192":"right arrow","\u2193":"down arrow","\u21d0":"left double arrow","\u21d1":"up double arrow","\u21d2":"right double arrow","\u21d3":"down double arrow","\u21e6":"left arrow","\u21e7":"up arrow","\u21e8":"right arrow","\u21e9":"down arrow","\u2303":"control","\u2318":"command","\u2325":"option","\u25b2":"up triangle",
-"\u25b3":"up triangle","\u25b4":"up triangle","\u25b5":"up triangle","\u25b6":"right triangle","\u25b7":"right triangle","\u25b8":"right triangle","\u25b9":"right triangle","\u25ba":"right pointer","\u25bb":"right pointer","\u25bc":"down triangle","\u25bd":"down triangle","\u25be":"down triangle","\u25bf":"down triangle","\u25c0":"left triangle","\u25c1":"left triangle","\u25c2":"left triangle","\u25c3":"left triangle","\u25c4":"left pointer","\u25c5":"left pointer","\uf8ff":"apple"};
-cvox.AbstractTts.repetitionRegexp_=/([-\/\\|!@#$%^&*\(\)=_+\[\]\{\}.?;'":<>])\1{2,}/g;cvox.AbstractTts.repetitionReplace_=function(a){var b=a.length;return" "+(new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg(cvox.AbstractTts.CHARACTER_DICTIONARY[a[0]]))).format({COUNT:b})+" "};cvox.AbstractTts.prototype.getDefaultProperty=function(a){return this.propertyDefault[a]};cvox.AbstractEarcons=function(){this.enabled=!0};cvox.AbstractEarcons.prototype.playEarcon=function(){};cvox.AbstractEarcons.prototype.playEarconByName=function(a){this.playEarcon(this.getEarconId(a))};cvox.AbstractEarcons.prototype.earconsAvailable=function(){return!0};
-cvox.AbstractEarcons.prototype.getEarconId=function(a){this.earconNamesToIds||(this.earconNamesToIds={},this.earconNamesToIds.ALERT_MODAL=cvox.AbstractEarcons.ALERT_MODAL,this.earconNamesToIds.ALERT_NONMODAL=cvox.AbstractEarcons.ALERT_NONMODAL,this.earconNamesToIds.BULLET=cvox.AbstractEarcons.BULLET,this.earconNamesToIds.BUSY_PROGRESS_LOOP=cvox.AbstractEarcons.BUSY_PROGRESS_LOOP,this.earconNamesToIds.BUSY_WORKING_LOOP=cvox.AbstractEarcons.BUSY_WORKING_LOOP,this.earconNamesToIds.BUTTON=cvox.AbstractEarcons.BUTTON,
-this.earconNamesToIds.CHECK_OFF=cvox.AbstractEarcons.CHECK_OFF,this.earconNamesToIds.CHECK_ON=cvox.AbstractEarcons.CHECK_ON,this.earconNamesToIds.CHROMEVOX_DISABLED=cvox.AbstractEarcons.CHROMEVOX_DISABLED,this.earconNamesToIds.CHROMEVOX_ENABLED=cvox.AbstractEarcons.CHROMEVOX_ENABLED,this.earconNamesToIds.COLLAPSED=cvox.AbstractEarcons.COLLAPSED,this.earconNamesToIds.EDITABLE_TEXT=cvox.AbstractEarcons.EDITABLE_TEXT,this.earconNamesToIds.ELLIPSIS=cvox.AbstractEarcons.ELLIPSIS,this.earconNamesToIds.EXPANDED=
-cvox.AbstractEarcons.EXPANDED,this.earconNamesToIds.FONT_CHANGE=cvox.AbstractEarcons.FONT_CHANGE,this.earconNamesToIds.INVALID_KEYPRESS=cvox.AbstractEarcons.INVALID_KEYPRESS,this.earconNamesToIds.LINK=cvox.AbstractEarcons.LINK,this.earconNamesToIds.LISTBOX=cvox.AbstractEarcons.LISTBOX,this.earconNamesToIds.LIST_ITEM=cvox.AbstractEarcons.LIST_ITEM,this.earconNamesToIds.LONG_DESC=cvox.AbstractEarcons.LONG_DESC,this.earconNamesToIds.NEW_MAIL=cvox.AbstractEarcons.NEW_MAIL,this.earconNamesToIds.OBJECT_CLOSE=
-cvox.AbstractEarcons.OBJECT_CLOSE,this.earconNamesToIds.OBJECT_DELETE=cvox.AbstractEarcons.OBJECT_DELETE,this.earconNamesToIds.OBJECT_DESELECT=cvox.AbstractEarcons.OBJECT_DESELECT,this.earconNamesToIds.OBJECT_ENTER=cvox.AbstractEarcons.OBJECT_ENTER,this.earconNamesToIds.OBJECT_EXIT=cvox.AbstractEarcons.OBJECT_EXIT,this.earconNamesToIds.OBJECT_OPEN=cvox.AbstractEarcons.OBJECT_OPEN,this.earconNamesToIds.OBJECT_SELECT=cvox.AbstractEarcons.OBJECT_SELECT,this.earconNamesToIds.PARAGRAPH_BREAK=cvox.AbstractEarcons.PARAGRAPH_BREAK,
-this.earconNamesToIds.SEARCH_HIT=cvox.AbstractEarcons.SEARCH_HIT,this.earconNamesToIds.SEARCH_MISS=cvox.AbstractEarcons.SEARCH_MISS,this.earconNamesToIds.SECTION=cvox.AbstractEarcons.SECTION,this.earconNamesToIds.SELECTION=cvox.AbstractEarcons.SELECTION,this.earconNamesToIds.SELECTION_REVERSE=cvox.AbstractEarcons.SELECTION_REVERSE,this.earconNamesToIds.SPECIAL_CONTENT=cvox.AbstractEarcons.SPECIAL_CONTENT,this.earconNamesToIds.TASK_SUCCESS=cvox.AbstractEarcons.TASK_SUCCESS,this.earconNamesToIds.WRAP=
-cvox.AbstractEarcons.WRAP,this.earconNamesToIds.WRAP_EDGE=cvox.AbstractEarcons.WRAP_EDGE);return this.earconNamesToIds[a]};cvox.AbstractEarcons.prototype.getEarconFilename=function(a){return cvox.AbstractEarcons.earconMap[a]};cvox.AbstractEarcons.prototype.toggle=function(){return this.enabled=!this.enabled};cvox.AbstractEarcons.ALERT_MODAL=0;cvox.AbstractEarcons.ALERT_NONMODAL=1;cvox.AbstractEarcons.BULLET=2;cvox.AbstractEarcons.BUSY_PROGRESS_LOOP=3;cvox.AbstractEarcons.BUSY_WORKING_LOOP=4;
-cvox.AbstractEarcons.BUTTON=5;cvox.AbstractEarcons.CHECK_OFF=6;cvox.AbstractEarcons.CHECK_ON=7;cvox.AbstractEarcons.CHROMEVOX_DISABLED=8;cvox.AbstractEarcons.CHROMEVOX_ENABLED=9;cvox.AbstractEarcons.COLLAPSED=10;cvox.AbstractEarcons.EDITABLE_TEXT=11;cvox.AbstractEarcons.ELLIPSIS=12;cvox.AbstractEarcons.EXPANDED=13;cvox.AbstractEarcons.FONT_CHANGE=14;cvox.AbstractEarcons.INVALID_KEYPRESS=15;cvox.AbstractEarcons.LINK=16;cvox.AbstractEarcons.LISTBOX=17;cvox.AbstractEarcons.LIST_ITEM=18;
-cvox.AbstractEarcons.LONG_DESC=19;cvox.AbstractEarcons.NEW_MAIL=20;cvox.AbstractEarcons.OBJECT_CLOSE=21;cvox.AbstractEarcons.OBJECT_DELETE=22;cvox.AbstractEarcons.OBJECT_DESELECT=23;cvox.AbstractEarcons.OBJECT_ENTER=24;cvox.AbstractEarcons.OBJECT_EXIT=25;cvox.AbstractEarcons.OBJECT_OPEN=26;cvox.AbstractEarcons.OBJECT_SELECT=27;cvox.AbstractEarcons.PARAGRAPH_BREAK=28;cvox.AbstractEarcons.SEARCH_HIT=29;cvox.AbstractEarcons.SEARCH_MISS=30;cvox.AbstractEarcons.SECTION=31;
-cvox.AbstractEarcons.SELECTION=32;cvox.AbstractEarcons.SELECTION_REVERSE=33;cvox.AbstractEarcons.SPECIAL_CONTENT=34;cvox.AbstractEarcons.TASK_SUCCESS=35;cvox.AbstractEarcons.WRAP=36;cvox.AbstractEarcons.WRAP_EDGE=37;cvox.AbstractEarcons.earconMap={};cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_MODAL]="alert_modal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_NONMODAL]="alert_nonmodal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BULLET]="bullet.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_PROGRESS_LOOP]="busy_progress_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_WORKING_LOOP]="busy_working_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUTTON]="button.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_OFF]="check_off.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_ON]="check_on.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_DISABLED]="chromevox_disabled.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_ENABLED]="chromevox_enabled.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.COLLAPSED]="collapsed.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EDITABLE_TEXT]="editable_text.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ELLIPSIS]="ellipsis.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EXPANDED]="expanded.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.FONT_CHANGE]="font_change.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.INVALID_KEYPRESS]="invalid_keypress.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LINK]="link.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LISTBOX]="listbox.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LIST_ITEM]="bullet.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LONG_DESC]="long_desc.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.NEW_MAIL]="new_mail.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_CLOSE]="object_close.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DELETE]="object_delete.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DESELECT]="object_deselect.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_ENTER]="object_enter.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_EXIT]="object_exit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_OPEN]="object_open.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_SELECT]="object_select.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.PARAGRAPH_BREAK]="paragraph_break.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_HIT]="search_hit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_MISS]="search_miss.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SECTION]="section.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION]="selection.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION_REVERSE]="selection_reverse.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SPECIAL_CONTENT]="special_content.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.TASK_SUCCESS]="task_success.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP]="wrap.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP_EDGE]="wrap_edge.ogg";cvox.NodeStateUtil={};cvox.NodeStateUtil.expand=function(a){try{return a.map(function(a){if(1>a.length)throw Error("cvox.NodeState must have at least one entry");var b=a.slice(1).map(function(a){return"number"==typeof a?cvox.ChromeVox.msgs.getNumber(a):a});return cvox.ChromeVox.msgs.getMsg(a[0],b)}).join(" ")}catch(b){throw Error("error: "+b+" state: "+a);}};cvox.AriaUtil=function(){};cvox.AriaUtil.NO_ROLE_NAME=" ";
-cvox.AriaUtil.WIDGET_ROLE_TO_NAME={alert:"aria_role_alert",alertdialog:"aria_role_alertdialog",button:"aria_role_button",checkbox:"aria_role_checkbox",columnheader:"aria_role_columnheader",combobox:"aria_role_combobox",dialog:"aria_role_dialog",grid:"aria_role_grid",gridcell:"aria_role_gridcell",link:"aria_role_link",listbox:"aria_role_listbox",log:"aria_role_log",marquee:"aria_role_marquee",menu:"aria_role_menu",menubar:"aria_role_menubar",menuitem:"aria_role_menuitem",menuitemcheckbox:"aria_role_menuitemcheckbox",
-menuitemradio:"aria_role_menuitemradio",option:cvox.AriaUtil.NO_ROLE_NAME,progressbar:"aria_role_progressbar",radio:"aria_role_radio",radiogroup:"aria_role_radiogroup",rowheader:"aria_role_rowheader",scrollbar:"aria_role_scrollbar",slider:"aria_role_slider",spinbutton:"aria_role_spinbutton",status:"aria_role_status",tab:"aria_role_tab",tabpanel:"aria_role_tabpanel",textbox:"aria_role_textbox",timer:"aria_role_timer",toolbar:"aria_role_toolbar",tooltip:"aria_role_tooltip",treeitem:"aria_role_treeitem"};
-cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME={article:"aria_role_article",application:"aria_role_application",banner:"aria_role_banner",columnheader:"aria_role_columnheader",complementary:"aria_role_complementary",contentinfo:"aria_role_contentinfo",definition:"aria_role_definition",directory:"aria_role_directory",document:"aria_role_document",form:"aria_role_form",group:"aria_role_group",heading:"aria_role_heading",img:"aria_role_img",list:"aria_role_list",listitem:"aria_role_listitem",main:"aria_role_main",
-math:"aria_role_math",navigation:"aria_role_navigation",note:"aria_role_note",region:"aria_role_region",rowheader:"aria_role_rowheader",search:"aria_role_search",separator:"aria_role_separator"};
-cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS=[{name:"aria-autocomplete",values:{inline:"aria_autocomplete_inline",list:"aria_autocomplete_list",both:"aria_autocomplete_both"}},{name:"aria-checked",values:{"true":"aria_checked_true","false":"aria_checked_false",mixed:"aria_checked_mixed"}},{name:"aria-disabled",values:{"true":"aria_disabled_true"}},{name:"aria-expanded",values:{"true":"aria_expanded_true","false":"aria_expanded_false"}},{name:"aria-invalid",values:{"true":"aria_invalid_true",grammar:"aria_invalid_grammar",
-spelling:"aria_invalid_spelling"}},{name:"aria-multiline",values:{"true":"aria_multiline_true"}},{name:"aria-multiselectable",values:{"true":"aria_multiselectable_true"}},{name:"aria-pressed",values:{"true":"aria_pressed_true","false":"aria_pressed_false",mixed:"aria_pressed_mixed"}},{name:"aria-readonly",values:{"true":"aria_readonly_true"}},{name:"aria-required",values:{"true":"aria_required_true"}},{name:"aria-selected",values:{"true":"aria_selected_true","false":"aria_selected_false"}}];
-cvox.AriaUtil.isHiddenRecursive=function(a){if(cvox.AriaUtil.isHidden(a))return!0;for(a=a.parentElement;a;){if("true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return!0;a=a.parentElement}return!1};cvox.AriaUtil.isHidden=function(a){return!a||a.getAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")?!0:!1};
-cvox.AriaUtil.isForcedVisibleRecursive=function(a){for(;a;){if(a.getAttribute&&a.hasAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return"false"==a.getAttribute("aria-hidden");a=a.parentElement}return!1};cvox.AriaUtil.isLeafElement=function(a){var b=a.getAttribute("role");a=a.hasAttribute("aria-label")&&0<a.getAttribute("aria-label").length;return"img"==b||"progressbar"==b||a};
-cvox.AriaUtil.isDescendantOfRole=function(a,b){for(;a;){if(b&&a&&a.getAttribute("role")==b)return!0;a=a.parentNode}return!1};cvox.AriaUtil.getRoleNameMsgForRole_=function(a){return(a=cvox.AriaUtil.WIDGET_ROLE_TO_NAME[a])?a==cvox.AriaUtil.NO_ROLE_NAME?" ":a:null};cvox.AriaUtil.isButton=function(a){var b=cvox.AriaUtil.getRoleAttribute(a);return"button"==b||"BUTTON"==a.tagName?!0:"INPUT"==a.tagName?"submit"==a.type||"reset"==a.type||"button"==a.type:!1};
-cvox.AriaUtil.getRoleNameMsg=function(a){var b;if(a&&a.getAttribute){var c=cvox.AriaUtil.getRoleAttribute(a);if("true"==a.getAttribute("aria-haspopup")&&cvox.AriaUtil.isButton(a))return"aria_role_popup_button";c&&((b=cvox.AriaUtil.getRoleNameMsgForRole_(c))||(b=cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME[c]));if("menuitem"==c){for(a=a.parentElement;a&&(!a.getAttribute||"menu"!=cvox.AriaUtil.getRoleAttribute(a)&&"menubar"!=cvox.AriaUtil.getRoleAttribute(a));)a=a.parentElement;a&&"menubar"==cvox.AriaUtil.getRoleAttribute(a)&&
-(b=cvox.AriaUtil.getRoleNameMsgForRole_("menu"))}}b||(b="");return b};cvox.AriaUtil.getRoleName=function(a){var b=cvox.AriaUtil.getRoleNameMsg(a),b=cvox.ChromeVox.msgs.getMsg(b),c=cvox.AriaUtil.getRoleAttribute(a);"heading"==c&&a.hasAttribute("aria-level")&&(b+=" "+a.getAttribute("aria-level"));return b?b:""};
-cvox.AriaUtil.getStateMsgs=function(a,b){var c=[];if(!a||!a.getAttribute)return c;for(var d=0,e;e=cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS[d];d++){var f=a.getAttribute(e.name);(e=e.values[f])&&c.push([e])}if("grid"==a.getAttribute("role"))return cvox.AriaUtil.getGridState_(a,a);e=cvox.AriaUtil.getRoleAttribute(a);"true"==a.getAttribute("aria-haspopup")&&("menuitem"==e?c.push(["has_submenu"]):cvox.AriaUtil.isButton(a)||c.push(["has_popup"]));if(d=a.getAttribute("aria-valuetext"))return c.push([d]),
-c;var d=a.getAttribute("aria-valuenow"),f=a.getAttribute("aria-valuemin"),g=a.getAttribute("aria-valuemax");if(null!=d&&null!=f&&null!=g&&("scrollbar"==e||"progressbar"==e)){var h=Math.round(d/(g-f)*100);c.push(["state_percent",h]);return c}null!=d&&c.push(["aria_value_now",d]);null!=f&&c.push(["aria_value_min",f]);null!=g&&c.push(["aria_value_max",g]);f=a;d=null;if(cvox.AriaUtil.isCompositeControl(f)&&b)d=cvox.AriaUtil.getActiveDescendant(f);else if(e=cvox.AriaUtil.getRoleAttribute(a),"option"==
-e||"menuitem"==e||"menuitemcheckbox"==e||"menuitemradio"==e||"radio"==e||"tab"==e||"treeitem"==e)for(d=a,f=a.parentElement;f&&!cvox.AriaUtil.isCompositeControl(f)&&(!(f=f.parentElement)||"treeitem"!=cvox.AriaUtil.getRoleAttribute(f)););if(f&&(cvox.AriaUtil.isCompositeControl(f)||"treeitem"==cvox.AriaUtil.getRoleAttribute(f))&&d){e=cvox.AriaUtil.getRoleAttribute(f);var k;switch(e){case "combobox":case "listbox":k=["option"];break;case "menu":k=["menuitem","menuitemcheck","menuitemradio"];break;case "radiogroup":k=
-["radio"];break;case "tablist":k=["tab"];break;case "tree":case "treegrid":case "treeitem":k=["treeitem"]}if(k){var l;e=parseInt(d.getAttribute("aria-setsize"),10);isNaN(e)||(h=e);e=parseInt(d.getAttribute("aria-posinset"),10);isNaN(e)||(l=e);if(void 0==h||void 0==l)if(k=cvox.AriaUtil.getNextLevel(f,k),void 0==h&&(h=k.length),void 0==l)for(e=0;e<k.length;e++)k[e]==d&&(l=e+1);l&&h&&c.push(["list_position",l,h])}}return c};
-cvox.AriaUtil.getGridState_=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(b);if(c)for(var d='*[role~="row"]',d=b.querySelectorAll(d),e=0;e<d.length;e++)for(var f=d[e].querySelectorAll('*[role~="gridcell"]'),g=0;g<f.length;g++)if(f[g]==c)return[["aria_role_gridcell_pos",e+1,g+1]];return[]};cvox.AriaUtil.getActiveDescendantId_=function(a){return a.getAttribute?(a=a.getAttribute("aria-activedescendant"))?a:null:null};
-cvox.AriaUtil.getNextLevel=function(a,b){for(var c=[],d=a.childNodes,e=0;e<d.length;e++)if(!cvox.AriaUtil.isHidden(d[e])&&cvox.DomUtil.isVisible(d[e])){var f=cvox.AriaUtil.getNextLevelItems(d[e],b);0<f.length&&(c=c.concat(f))}return c};
-cvox.AriaUtil.getNextLevelItems=function(a,b){if(1!=a.nodeType)return[];if(-1!=b.indexOf(cvox.AriaUtil.getRoleAttribute(a)))return[a];var c=a.childNodes,d=c.length;if(0==d)return[];for(var e=[],f=0;f<d;f++){var g=cvox.AriaUtil.getNextLevelItems(c[f],b);0<g.length&&(e=e.concat(g))}return e};cvox.AriaUtil.getActiveDescendant=function(a){for(var b={},c=a;c;){var d=cvox.AriaUtil.getActiveDescendantId_(c);if(!d)break;if(d in b)return null;b[d]=!0;c=document.getElementById(d)}return c==a?null:c};
-cvox.AriaUtil.isControlWidget=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "button":case "checkbox":case "combobox":case "listbox":case "menu":case "menuitemcheckbox":case "menuitemradio":case "radio":case "slider":case "progressbar":case "scrollbar":case "spinbutton":case "tab":case "tablist":case "textbox":return!0}return!1};cvox.AriaUtil.isCompositeControl=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "combobox":case "grid":case "listbox":case "menu":case "menubar":case "radiogroup":case "tablist":case "tree":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getAriaLive=function(a){if(!a.hasAttribute)return null;var b=a.getAttribute("aria-live");if("off"==b)return null;if(b)return b;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "alert":return"assertive";case "log":case "status":return"polite";default:return null}};cvox.AriaUtil.getAriaAtomic=function(a){if(!a.hasAttribute)return!1;var b=a.getAttribute("aria-atomic");if(b)return"true"===b;a=cvox.AriaUtil.getRoleAttribute(a);return"alert"==a?!0:!1};
-cvox.AriaUtil.getAriaBusy=function(a){return a.hasAttribute?(a=a.getAttribute("aria-busy"))?"true"===a:!1:!1};cvox.AriaUtil.getAriaRelevant=function(a,b){if(!a.hasAttribute)return!1;var c;c=a.hasAttribute("aria-relevant")?a.getAttribute("aria-relevant"):"additions text";"all"==c&&(c="additions removals text");c=c.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").split(" ");return"all"==b?0<=c.indexOf("additions")&&0<=c.indexOf("text")&&0<=c.indexOf("removals"):0<=c.indexOf(b)};
-cvox.AriaUtil.getLiveRegions=function(a){var b=[];if(a.querySelectorAll){var c=a.querySelectorAll('[role="alert"], [role="log"], [role="marquee"], [role="status"], [role="timer"], [aria-live]');if(c)for(var d=0;d<c.length;d++)b.push(c[d])}for(;a;){if(cvox.AriaUtil.getAriaLive(a)){b.push(a);break}a=a.parentElement}return b};cvox.AriaUtil.isLandmark=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "application":case "banner":case "complementary":case "contentinfo":case "form":case "main":case "navigation":case "search":return!0}return!1};
-cvox.AriaUtil.isGrid=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "grid":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getEarcon=function(a){if(!a||!a.getAttribute)return null;var b=cvox.AriaUtil.getRoleAttribute(a);switch(b){case "button":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":case "menuitemcheckbox":case "menuitemradio":return a=a.getAttribute("aria-checked"),"true"==a?cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;case "combobox":case "listbox":return cvox.AbstractEarcons.LISTBOX;case "textbox":return cvox.AbstractEarcons.EDITABLE_TEXT;case "listitem":return cvox.AbstractEarcons.BULLET;
-case "link":return cvox.AbstractEarcons.LINK}return null};cvox.AriaUtil.getRoleAttribute=function(a){if(!a.getAttribute)return"";var b=a.getAttribute("role");a.hasAttribute("chromevoxoriginalrole")&&(b=a.getAttribute("chromevoxoriginalrole"));return b};cvox.AriaUtil.isMath=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);return"math"==a};cvox.DomPredicates={};cvox.DomPredicates.checkboxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"checkbox"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"checkbox"==a[b].type)return a[b];return null};cvox.DomPredicates.radioPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"radio"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"radio"==a[b].type)return a[b];return null};
-cvox.DomPredicates.sliderPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"slider"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"range"==a[b].type)return a[b];return null};cvox.DomPredicates.graphicPredicate=function(a){for(var b=0;b<a.length;b++)if("IMG"==a[b].tagName||"INPUT"==a[b].tagName&&"img"==a[b].type)return a[b];return null};
-cvox.DomPredicates.buttonPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"button"==a[b].getAttribute("role")||"BUTTON"==a[b].tagName||"INPUT"==a[b].tagName&&"submit"==a[b].type||"INPUT"==a[b].tagName&&"button"==a[b].type||"INPUT"==a[b].tagName&&"reset"==a[b].type)return a[b];return null};cvox.DomPredicates.comboBoxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"combobox"==a[b].getAttribute("role")||"SELECT"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.editTextPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"textbox"==a[b].getAttribute("role")||"TEXTAREA"==a[b].tagName||a[b].isContentEditable||"INPUT"==a[b].tagName&&cvox.DomUtil.isInputTypeText(a[b]))return a[b];return null};cvox.DomPredicates.headingPredicate=function(a){for(var b=0;b<a.length;b++){if(a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.heading1Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H1")};cvox.DomPredicates.heading2Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H2")};cvox.DomPredicates.heading3Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H3")};cvox.DomPredicates.heading4Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H4")};cvox.DomPredicates.heading5Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H5")};
-cvox.DomPredicates.heading6Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H6")};cvox.DomPredicates.linkPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.tablePredicate=function(a){return(a=cvox.DomUtil.findTableNodeInList(a,{allowCaptions:!0}))&&!cvox.DomUtil.isLayoutTable(a)?a:null};
-cvox.DomPredicates.cellPredicate=function(a){for(var b=a.length-1;0<=b;--b){var c=a[b];if("TD"==c.tagName||"TH"==c.tagName||c.getAttribute&&"gridcell"==c.getAttribute("role"))return c}return null};cvox.DomPredicates.visitedLinkPredicate=function(a){for(var b=a.length-1;0<=b;--b)if(cvox.DomPredicates.linkPredicate([a[b]])&&cvox.ChromeVox.visitedUrls[a[b].href])return a[b]};
-cvox.DomPredicates.listPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"list"==a[b].getAttribute("role")||"UL"==a[b].tagName||"OL"==a[b].tagName)return a[b];return null};cvox.DomPredicates.listItemPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"listitem"==a[b].getAttribute("role")||"LI"==a[b].tagName)return a[b];return null};cvox.DomPredicates.blockquotePredicate=function(a){return cvox.DomPredicates.containsTagName_(a,"BLOCKQUOTE")};
-cvox.DomPredicates.formFieldPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b]))return a[b];return null};cvox.DomPredicates.landmarkPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.AriaUtil.isLandmark(a[b]))return a[b];return null};cvox.DomPredicates.containsTagName_=function(a,b){for(var c=a.length;c--;)if(a[c].tagName==b)return a[c];return null};cvox.DomPredicates.mathPredicate=function(a){return cvox.DomUtil.findMathNodeInList(a)};
-cvox.DomPredicates.sectionPredicate=function(a){for(var b=0;b<a.length;b++){if(cvox.DomUtil.isSemanticElt(a[b])||cvox.AriaUtil.isLandmark(a[b])||a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.controlPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b])||a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.captionPredicate=function(a){for(var b=0;b<a.length;b++)if("CAPTION"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.articlePredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"article"==a[b].getAttribute("role")||"ARTICLE"==a[b].tagName)return a[b];return null};cvox.DomPredicates.mediaPredicate=function(a){for(var b=0;b<a.length;b++)if("AUDIO"==a[b].tagName||"VIDEO"==a[b].tagName)return a[b];return null};cvox.DomPredicates.orderedListPredicate=function(a){for(var b=0;b<a.length;b++)if("OL"==a[b].tagName)return a[b];return null};cvox.XpathUtil=function(){};cvox.XpathUtil.nameSpaces_={xhtml:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML"};cvox.XpathUtil.resolveNameSpace=function(a){return cvox.XpathUtil.nameSpaces_[a]||null};cvox.XpathUtil.evalXPath=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(d){return[]}for(var e=[],f=c.iterateNext();f;f=c.iterateNext())e.push(f);return e};
-cvox.XpathUtil.getLeafNodes=function(a){try{var b=a.ownerDocument.evaluate(".//*[count(*)=0]",a,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(c){return[]}a=[];for(var d=b.iterateNext();d;d=b.iterateNext())a.push(d);return a};cvox.XpathUtil.xpathSupported=function(){return"undefined"==typeof XPathResult?!1:!0};cvox.XpathUtil.evaluateBoolean=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.BOOLEAN_TYPE,null)}catch(d){return!1}return c.booleanValue};
-cvox.XpathUtil.evaluateString=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.STRING_TYPE,null)}catch(d){return""}return c.stringValue};cvox.DomUtil=function(){};
-cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG={button:"input_type_button",checkbox:"input_type_checkbox",color:"input_type_color",datetime:"input_type_datetime","datetime-local":"input_type_datetime_local",date:"input_type_date",email:"input_type_email",file:"input_type_file",image:"input_type_image",month:"input_type_month",number:"input_type_number",password:"input_type_password",radio:"input_type_radio",range:"input_type_range",reset:"input_type_reset",search:"input_type_search",submit:"input_type_submit",
-tel:"input_type_tel",text:"input_type_text",url:"input_type_url",week:"input_type_week"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG={A:"tag_link",ARTICLE:"tag_article",ASIDE:"tag_aside",AUDIO:"tag_audio",BUTTON:"tag_button",FOOTER:"tag_footer",H1:"tag_h1",H2:"tag_h2",H3:"tag_h3",H4:"tag_h4",H5:"tag_h5",H6:"tag_h6",HEADER:"tag_header",HGROUP:"tag_hgroup",LI:"tag_li",MARK:"tag_mark",NAV:"tag_nav",OL:"tag_ol",SECTION:"tag_section",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",TIME:"tag_time",UL:"tag_ul",VIDEO:"tag_video"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG={AUDIO:"tag_audio",BUTTON:"tag_button",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",VIDEO:"tag_video"};cvox.DomUtil.FORMATTING_TAGS="B BIG CITE CODE DFN EM I KBD SAMP SMALL SPAN STRIKE STRONG SUB SUP U VAR".split(" ");
-cvox.DomUtil.isVisible=function(a,b){b=b||{};"undefined"===typeof b.checkAncestors&&(b.checkAncestors=!0);"undefined"===typeof b.checkDescendants&&(b.checkDescendants=!0);if("IFRAME"==a.tagName&&!a.src)return!1;if(cvox.AriaUtil.isForcedVisibleRecursive(a))return!0;if(b.checkAncestors&&cvox.DomUtil.hasInvisibleAncestor_(a))return!1;var c=b.checkDescendants;return cvox.DomUtil.hasVisibleNodeSubtree_(a,c)?!0:!1};
-cvox.DomUtil.hasInvisibleAncestor_=function(a){for(;a=a.parentElement;){var b=document.defaultView.getComputedStyle(a,null);if(cvox.DomUtil.isInvisibleStyle(b,!0))return!0}return!1};
-cvox.DomUtil.hasVisibleNodeSubtree_=function(a,b){if(!(a instanceof Element)){var c=document.defaultView.getComputedStyle(a.parentElement,null);return c=!cvox.DomUtil.isInvisibleStyle(c)}var c=document.defaultView.getComputedStyle(a,null),d=!cvox.DomUtil.isInvisibleStyle(c);if(d)return!0;c=cvox.DomUtil.isInvisibleStyle(c,!0);if(!b||c)return!1;c=a.childNodes;for(d=0;d<c.length;d++){var e=c[d];if(cvox.DomUtil.hasVisibleNodeSubtree_(e,b))return!0}return!1};
-cvox.DomUtil.isInvisibleStyle=function(a,b){return a?"none"!=a.display&&0!=parseFloat(a.opacity)&&(b||"hidden"!=a.visibility&&"collapse"!=a.visibility)?!1:!0:!1};cvox.DomUtil.isDisabled=function(a){if(a.disabled)return!0;for(;a=a.parentElement;)if("FIELDSET"==a.tagName&&a.disabled)return!0;return!1};cvox.DomUtil.isSemanticElt=function(a){return a.tagName&&(a=a.tagName,"SECTION"==a||"NAV"==a||"ARTICLE"==a||"ASIDE"==a||"HGROUP"==a||"HEADER"==a||"FOOTER"==a||"TIME"==a||"MARK"==a)?!0:!1};
-cvox.DomUtil.isLeafNode=function(a,b){if(!(a instanceof Element))return null==a.firstChild;var c=a;if(!b&&!cvox.DomUtil.isVisible(c,{checkAncestors:!1})||!b&&cvox.AriaUtil.isHidden(c)||cvox.AriaUtil.isLeafElement(c))return!0;switch(c.tagName){case "OBJECT":case "EMBED":case "VIDEO":case "AUDIO":case "IFRAME":case "FRAME":return!0}return cvox.DomPredicates.linkPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.headingPredicate([a])}):cvox.DomUtil.isLeafLevelControl(c)||
-!c.firstChild||cvox.DomUtil.isMath(c)?!0:cvox.DomPredicates.headingPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.controlPredicate([a])}):!1};cvox.DomUtil.isDescendantOf=function(a,b,c){for(;a;){if(b&&c&&a.tagName&&a.tagName==b&&a.className&&a.className==c||b&&!c&&a.tagName&&a.tagName==b||!b&&c&&a.className&&a.className==c)return!0;a=a.parentNode}return!1};cvox.DomUtil.isDescendantOfNode=function(a,b){for(;a&&b;){if(a.isSameNode(b))return!0;a=a.parentNode}return!1};
-cvox.DomUtil.collapseWhitespace=function(a){return a.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")};
-cvox.DomUtil.getBaseLabel_=function(a,b,c){var d="";if(a.hasAttribute){if(a.hasAttribute("aria-labelledby"))for(var e=a.getAttribute("aria-labelledby").split(" "),f,g=0;f=e[g];g++)(f=document.getElementById(f))&&(d+=" "+cvox.DomUtil.getName(f,!0,c,!0));else if(a.hasAttribute("aria-label"))d=a.getAttribute("aria-label");else if(a.constructor==HTMLImageElement)d=cvox.DomUtil.getImageTitle(a);else if("FIELDSET"==a.tagName)for(e=a.getElementsByTagName("LEGEND"),d="",g=0;f=e[g];g++)d+=" "+cvox.DomUtil.getName(f,
-!0,c);0==d.length&&a&&a.id&&(a=document.querySelector('label[for="'+a.id+'"]'))&&(d=cvox.DomUtil.getName(a,b,c))}return cvox.DomUtil.collapseWhitespace(d)};cvox.DomUtil.getNearestAncestorLabel_=function(a){for(var b="";a&&"LABEL"!=a.tagName;)a=a.parentElement;a&&!a.hasAttribute("for")&&(b=cvox.DomUtil.getName(a,!0,!1));return b};
-cvox.DomUtil.getInputName_=function(a){var b="";"image"==a.type?b=cvox.DomUtil.getImageTitle(a):"submit"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Submit":"reset"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Reset":"button"==a.type&&a.hasAttribute("value")&&(b=a.getAttribute("value"));return b};
-cvox.DomUtil.getName=function(a,b,c,d){if(!a||!0==a.cvoxGetNameMarked)return"";a.cvoxGetNameMarked=!0;b=cvox.DomUtil.getName_(a,b,c,d);a.cvoxGetNameMarked=!1;a=cvox.DomUtil.getPrefixText(a);return a+b};cvox.DomUtil.hasChildrenBasedName_=function(a,b){return cvox.DomPredicates.linkPredicate([a])||cvox.DomPredicates.headingPredicate([a])||"BUTTON"==a.tagName||cvox.AriaUtil.isControlWidget(a)||!cvox.DomUtil.isLeafNode(a,b)?!0:!1};
-cvox.DomUtil.getName_=function(a,b,c,d){"undefined"===typeof b&&(b=!0);"undefined"===typeof c&&(c=!0);if(a.constructor==Text)return a.data;var e=cvox.DomUtil.getBaseLabel_(a,b,c);0==e.length&&cvox.DomUtil.isControl(a)&&(e=cvox.DomUtil.getNearestAncestorLabel_(a));0==e.length&&a.constructor==HTMLInputElement&&(e=cvox.DomUtil.getInputName_(a));return cvox.DomUtil.isInputTypeText(a)&&a.hasAttribute("placeholder")?(b=a.getAttribute("placeholder"),0<e.length?0<cvox.DomUtil.getValue(a).length?e:e+" with hint "+
-b:b):0<e.length?e:0==cvox.DomUtil.collapseWhitespace(a.textContent).length&&a.hasAttribute&&a.hasAttribute("title")?a.getAttribute("title"):!b||cvox.AriaUtil.isCompositeControl(a)?"":cvox.DomUtil.hasChildrenBasedName_(a,d)?cvox.DomUtil.getNameFromChildren(a,c,d):""};
-cvox.DomUtil.getNameFromChildren=function(a,b,c){void 0==b&&(b=!0);for(var d="",e="",f=0;f<a.childNodes.length;f++){var g=a.childNodes[f],e=a.childNodes[f-1]||g;if(b||!cvox.DomUtil.isControl(g)){var h=cvox.DomUtil.isVisible(g,{checkAncestors:!1});if(c||h&&!cvox.AriaUtil.isHidden(g))e="SPAN"==e.tagName||"SPAN"==g.tagName||"SPAN"==g.parentNode.tagName?"":" ",d+=e+cvox.DomUtil.getName(g,!0,b)}}return d};
-cvox.DomUtil.getPrefixText=function(a,b){b=b||0;for(var c=cvox.DomUtil.getAncestors(a),d="",e=c=cvox.DomPredicates.listItemPredicate(c);e&&e.firstChild;)e=e.firstChild;c&&c.parentNode&&0==b&&"OL"==c.parentNode.tagName&&a==e&&"none"!=document.defaultView.getComputedStyle(c.parentNode).listStyleType&&(d=cvox.DomUtil.toArray(c.parentNode.children).filter(function(a){return"LI"==a.tagName}),d=d.indexOf(c)+1,-1!=document.defaultView.getComputedStyle(c.parentNode).listStyleType.indexOf("latin")&&(d--,d=
-String.fromCharCode(65+d%26)),d+=". ");return d};
-cvox.DomUtil.getControlLabelHeuristics=function(a){if(a.hasAttribute&&(a.hasAttribute("aria-label")&&""==a.getAttribute("aria-label")||a.hasAttribute("aria-title")&&""==a.getAttribute("aria-title")))return"";for(var b=cvox.DomUtil.previousLeafNode(a),c=0;b&&(!cvox.DomUtil.hasContent(b)||cvox.DomUtil.isControl(b));)b=cvox.DomUtil.previousLeafNode(b),c++;for(var c=cvox.DomUtil.directedNextLeafNode(a),d=0;c&&(!cvox.DomUtil.hasContent(c)||cvox.DomUtil.isControl(c));)c=cvox.DomUtil.directedNextLeafNode(c),
-d++;if(b&&c){for(var d=a,e=0;d&&!cvox.DomUtil.isDescendantOfNode(b,d);)d=d.parentNode,e++;d=a;for(a=0;d&&!cvox.DomUtil.isDescendantOfNode(c,d);)d=d.parentNode,a++;b=a<e?c:b}else b=b||c;return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b)):""};
-cvox.DomUtil.getValue=function(a){var b=cvox.AriaUtil.getActiveDescendant(a);if(b)return cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b));if(a.constructor==HTMLSelectElement){var b="",c=a.selectedOptions?a.selectedOptions[0]:null;a=a.selectedOptions?a.selectedOptions[a.selectedOptions.length-1]:null;c&&a&&c!=a?b=cvox.ChromeVox.msgs.getMsg("selected_options_value",[c.text,a.text]):c&&(b=c.text+"");return b}if(a.constructor==HTMLTextAreaElement)return a.value;if(a.constructor==
-HTMLInputElement)switch(a.type){case "hidden":case "image":case "submit":case "reset":case "button":case "checkbox":case "radio":return"";case "password":return a.value.replace(/./g,"dot ");default:return a.value}return a.isContentEditable?cvox.DomUtil.getNameFromChildren(a,!0):""};
-cvox.DomUtil.getImageTitle=function(a){a.hasAttribute("alt")?a=a.alt:a.hasAttribute("title")?a=a.title:(a=a.src,"data"!=a.substring(0,4)?(a=a.substring(a.lastIndexOf("/")+1,a.lastIndexOf(".")),a=1<=a.length&&16>=a.length?a+" Image":"Image"):a="Image");return a};
-cvox.DomUtil.hasContent=function(a){if(8==a.nodeType||cvox.DomUtil.isDescendantOf(a,"HEAD")||cvox.DomUtil.isDescendantOf(a,"SCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOSCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOEMBED")||cvox.DomUtil.isDescendantOf(a,"STYLE")||!cvox.DomUtil.isVisible(a)||cvox.AriaUtil.isHidden(a))return!1;if(cvox.DomUtil.isControl(a)||cvox.DomUtil.isDescendantOf(a,"VIDEO")||cvox.DomUtil.isDescendantOf(a,"AUDIO")||"IFRAME"==a.tagName&&a.src&&0!=a.src.indexOf("javascript:"))return!0;
-for(var b="button,input,select,textarea",c=a.parentElement;c&&"LABEL"!=c.tagName;)c=c.parentElement;if(c){var d=c.querySelector(b);if(c.hasAttribute("for")){if(c=c.getAttribute("for"),(c=document.getElementById(c))&&cvox.DomUtil.isControl(c)&&!d)return!1}else if(d)return!1}for(d=a.parentElement;d&&"LEGEND"!=d.tagName;)d=d.parentElement;if(d){for(c=d.parentElement;c&&"FIELDSET"!=c.tagName;)c=c.parentElement;d=c&&c.querySelector(b);if(c&&!d)return!1}if(cvox.DomPredicates.linkPredicate([a])||"TABLE"==
-a.tagName||cvox.DomUtil.isMath(a)||cvox.DomPredicates.headingPredicate([a]))return!0;b=cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a);a=cvox.DomUtil.getState(a,!0);return b.match(/^\s+$/)&&""===a?!1:!0};cvox.DomUtil.getAncestors=function(a){for(var b=[];a;)b.push(a),a=a.parentNode;for(b.reverse();b.length&&!b[0].tagName&&!b[0].nodeValue;)b.shift();return b};cvox.DomUtil.compareAncestors=function(a,b){for(var c=0;a[c]&&b[c]&&a[c]==b[c];)c++;a[c]||b[c]||(c=-1);return c};
-cvox.DomUtil.getUniqueAncestors=function(a,b,c){a=cvox.DomUtil.getAncestors(a);b=cvox.DomUtil.getAncestors(b);a=cvox.DomUtil.compareAncestors(a,b);a=b.slice(a);return 0==a.length&&c?b:a};
-cvox.DomUtil.getRoleMsg=function(a,b){var c;c=cvox.AriaUtil.getRoleNameMsg(a);c||("INPUT"==a.tagName?c=cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG[a.type]:"A"==a.tagName&&cvox.DomUtil.isInternalLink(a)?c="internal_link":"A"==a.tagName&&a.getAttribute("name")?c="":a.isContentEditable?c="input_type_text":cvox.DomUtil.isMath(a)?c="math_expr":"TABLE"==a.tagName&&cvox.DomUtil.isLayoutTable(a)?c="":b==cvox.VERBOSITY_BRIEF?c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG[a.tagName]:(c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG[a.tagName],
-cvox.DomUtil.hasLongDesc(a)&&(c="image_with_long_desc"),!c&&a.onclick&&(c="clickable")));return c};cvox.DomUtil.getRole=function(a,b){var c=cvox.DomUtil.getRoleMsg(a,b)||"",d=c&&" "!=c?cvox.ChromeVox.msgs.getMsg(c):"";return d?d:c};cvox.DomUtil.getListLength=function(a){var b=0;for(a=a.firstChild;a;a=a.nextSibling)if("LI"==a.tagName||a.getAttribute&&"listitem"==a.getAttribute("role")){if(a.hasAttribute("aria-setsize")){var c=parseInt(a.getAttribute("aria-setsize"),10);if(!isNaN(c))return c}b++}return b};
-cvox.DomUtil.getStateMsgs=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(a);if(c)return cvox.DomUtil.getStateMsgs(c,b);var c=[],d=a.getAttribute?a.getAttribute("role"):"";(c=cvox.AriaUtil.getStateMsgs(a,b))||(c=[]);"INPUT"==a.tagName?a.hasAttribute("aria-checked")||(d={"checkbox-true":"checkbox_checked_state","checkbox-false":"checkbox_unchecked_state","radio-true":"radio_selected_state","radio-false":"radio_unselected_state"},(d=d[a.type+"-"+!!a.checked])&&c.push([d])):"SELECT"==a.tagName?
-a.selectedOptions&&1>=a.selectedOptions.length?c.push(["list_position",cvox.ChromeVox.msgs.getNumber(a.selectedIndex+1),cvox.ChromeVox.msgs.getNumber(a.options.length)]):c.push(["selected_options_state",cvox.ChromeVox.msgs.getNumber(a.selectedOptions.length)]):"UL"!=a.tagName&&"OL"!=a.tagName&&"list"!=d||c.push(["list_with_items",cvox.ChromeVox.msgs.getNumber(cvox.DomUtil.getListLength(a))]);cvox.DomUtil.isDisabled(a)&&c.push(["aria_disabled_true"]);cvox.DomPredicates.linkPredicate([a])&&cvox.ChromeVox.visitedUrls[a.href]&&
-c.push(["visited_url"]);a.accessKey&&c.push(["access_key",a.accessKey]);return c};cvox.DomUtil.getState=function(a,b){return cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,b))};cvox.DomUtil.isFocusable=function(a){return a&&"number"==typeof a.tabIndex&&("A"!=a.tagName||a.hasAttribute("href")||a.hasAttribute("tabindex"))?0<=a.tabIndex||a.hasAttribute&&a.hasAttribute("tabindex")&&"-1"==a.getAttribute("tabindex")?!0:!1:!1};
-cvox.DomUtil.findFocusableDescendant=function(a){return a&&(a=cvox.DomUtil.findNode(a,cvox.DomUtil.isFocusable))?a:null};cvox.DomUtil.countFocusableDescendants=function(a){return a?cvox.DomUtil.countNodes(a,cvox.DomUtil.isFocusable):0};cvox.DomUtil.isAttachedToDocument=function(a){for(;a;){if(a.tagName&&"HTML"==a.tagName)return!0;a=a.parentNode}return!1};
-cvox.DomUtil.clickElem=function(a,b,c,d){var e=cvox.AriaUtil.getActiveDescendant(a);e&&(a=e);if(c){c=null;a.onclick&&(c=a.onclick);!c&&1!=a.nodeType&&a.parentNode&&a.parentNode.onclick&&(c=a.parentNode.onclick);e=!0;if(c)try{e=c()}catch(f){}if(!e)return}c=document.createEvent("MouseEvents");d=d?"dblclick":"mousedown";c.initMouseEvent(d,!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(g){}c=document.createEvent("MouseEvents");c.initMouseEvent("mouseup",
-!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(h){}c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(k){}cvox.DomUtil.isInternalLink(a)&&cvox.DomUtil.syncInternalLink(a)};
-cvox.DomUtil.syncInternalLink=function(a){var b=a.href.split("#")[1];a=document.getElementById(b);a||(b=document.getElementsByName(b),0<b.length&&(a=b[0]));if(a){var b=a.parentNode,c=document.createElement("div");c.setAttribute("tabindex","-1");b.insertBefore(c,a);c.setAttribute("chromevoxignoreariahidden",1);c.focus();cvox.ChromeVox.syncToNode(a,!0)}};
-cvox.DomUtil.isInputTypeText=function(a){if(!a||a.constructor!=HTMLInputElement)return!1;switch(a.type){case "email":case "number":case "password":case "search":case "text":case "tel":case "url":case "":return!0;default:return!1}};cvox.DomUtil.isControl=function(a){if(cvox.AriaUtil.isControlWidget(a)&&cvox.DomUtil.isFocusable(a))return!0;if(a.tagName)switch(a.tagName){case "BUTTON":case "TEXTAREA":case "SELECT":return!0;case "INPUT":return"hidden"!=a.type}return a.isContentEditable?!0:!1};
-cvox.DomUtil.isLeafLevelControl=function(a){return cvox.DomUtil.isControl(a)?!(cvox.AriaUtil.isCompositeControl(a)&&cvox.DomUtil.findFocusableDescendant(a)):!1};cvox.DomUtil.getSurroundingControl=function(a){var b=null;if(!cvox.DomUtil.isControl(a)&&a.hasAttribute&&a.hasAttribute("role"))for(b=a.parentElement;b&&!cvox.AriaUtil.isCompositeControl(b);)b=b.parentElement;return b};
-cvox.DomUtil.directedNextLeafLikeNode=function(a,b,c){if(a!=document.body){for(;!cvox.DomUtil.directedNextSibling(a,b);){if(!a)return null;a=a.parentNode;if(a==document.body)return null}cvox.DomUtil.directedNextSibling(a,b)&&(a=cvox.DomUtil.directedNextSibling(a,b))}for(;cvox.DomUtil.directedFirstChild(a,b)&&!c(a);)a=cvox.DomUtil.directedFirstChild(a,b);return a==document.body?null:a};cvox.DomUtil.directedNextLeafNode=function(a,b){b=!!b;return cvox.DomUtil.directedNextLeafLikeNode(a,b,cvox.DomUtil.isLeafNode)};
-cvox.DomUtil.previousLeafNode=function(a){return cvox.DomUtil.directedNextLeafNode(a,!0)};cvox.DomUtil.directedFindFirstNode=function(a,b,c){for(a=cvox.DomUtil.directedFirstChild(a,b);a;){if(c(a))return a;var d=cvox.DomUtil.directedFindFirstNode(a,b,c);if(d)return d;a=cvox.DomUtil.directedNextSibling(a,b)}return null};cvox.DomUtil.directedFindDeepestNode=function(a,b,c){var d=cvox.DomUtil.directedFindFirstNode(a,b,c);return d?cvox.DomUtil.directedFindDeepestNode(d,b,c):c(a)?a:null};
-cvox.DomUtil.directedFindNextNode=function(a,b,c,d,e,f){e=!!e;f=!!f;if(!cvox.DomUtil.isDescendantOfNode(a,b)||a==b)return null;for(var g=cvox.DomUtil.directedNextSibling(a,c);g;){if(!f&&d(g))return g;var h=(f?cvox.DomUtil.directedFindDeepestNode:cvox.DomUtil.directedFindFirstNode)(g,c,d);if(h)return h;if(f&&d(g))return g;g=cvox.DomUtil.directedNextSibling(g,c)}a=a.parentNode;return e&&d(a)?a:cvox.DomUtil.directedFindNextNode(a,b,c,d,e,f)};
-cvox.DomUtil.getControlValueAndStateString=function(a){var b=cvox.DomUtil.getSurroundingControl(a);return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a)+" "+cvox.DomUtil.getState(a,!0)):cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getState(a,!0))};cvox.DomUtil.isInternalLink=function(a){return 1==a.nodeType&&(a=a.getAttribute("href"))&&-1!=a.indexOf("#")?(a=a.split("#")[0],""==a||a==window.location.pathname):!1};
-cvox.DomUtil.getLinkURL=function(a){if("A"==a.tagName){if(a.getAttribute("href"))return cvox.DomUtil.isInternalLink(a)?cvox.ChromeVox.msgs.getMsg("internal_link"):a.getAttribute("href")}else if(cvox.AriaUtil.getRoleName(a)==cvox.ChromeVox.msgs.getMsg("aria_role_link"))return cvox.ChromeVox.msgs.getMsg("unknown_link");return""};cvox.DomUtil.getContainingTable=function(a,b){var c=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findTableNodeInList(c,b)};
-cvox.DomUtil.findTableNodeInList=function(a,b){b=b||{allowCaptions:!1};for(var c=a.length-1,d;d=a[c];c--)if(d.constructor!=Text){if(!b.allowCaptions&&"CAPTION"==d.tagName)break;if("TABLE"==d.tagName||cvox.AriaUtil.isGrid(d))return d}return null};
-cvox.DomUtil.isLayoutTable=function(a){if(a.rows&&(1==a.rows.length||1==a.rows[0].childElementCount))return!0;if(cvox.AriaUtil.isGrid(a)||cvox.AriaUtil.isLandmark(a)||a.caption||a.summary||0<cvox.XpathUtil.evalXPath("tbody/tr/th",a).length&&0<cvox.XpathUtil.evalXPath("tbody/tr/td",a).length||0<cvox.XpathUtil.evalXPath("colgroup",a).length||0<cvox.XpathUtil.evalXPath("thead",a).length||0<cvox.XpathUtil.evalXPath("tfoot",a).length)return!1;if(0<cvox.XpathUtil.evalXPath("tbody/tr/td/embed",a).length||
-0<cvox.XpathUtil.evalXPath("tbody/tr/td/object",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/iframe",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/applet",a).length)return!0;var b=0;cvox.DomUtil.hasBorder(a)||b++;6>=a.rows.length&&b++;12>=cvox.DomUtil.countPreviousTags(a)&&b++;0<cvox.XpathUtil.evalXPath("tbody/tr/td/table",a).length&&b++;return 3<=b};cvox.DomUtil.countPreviousTags=function(a){var b=cvox.DomUtil.getAncestors(a);return b.length+cvox.DomUtil.countPreviousSiblings(a)};
-cvox.DomUtil.countPreviousSiblings=function(a){var b=0;for(a=a.previousSibling;null!=a;)a.constructor!=Text&&b++,a=a.previousSibling;return b};cvox.DomUtil.hasBorder=function(a){return a.frame?-1==a.frame.indexOf("void"):a.border?1==a.border.length?"0"!=a.border:0!=a.border.slice(0,-2):a.style.borderStyle&&"none"==a.style.borderStyle?!1:a.style.borderWidth?0!=a.style.borderWidth.slice(0,-2):a.style.borderColor?!0:!1};
-cvox.DomUtil.getFirstLeafNode=function(){for(var a=document.body;a&&a.firstChild;)a=a.firstChild;for(;a&&!cvox.DomUtil.hasContent(a);)a=cvox.DomUtil.directedNextLeafNode(a);return a};cvox.DomUtil.findNode=function(a,b){var c=[],d=cvox.DomUtil.findNodes_(a,b,c,!0,1E4);return d?c[0]:void 0};cvox.DomUtil.countNodes=function(a,b){var c=[];cvox.DomUtil.findNodes_(a,b,c,!1,1E4);return c.length};
-cvox.DomUtil.findNodes_=function(a,b,c,d,e){if(null!=a||0==e)for(a=a.firstChild;a;){if(b(a)&&(c.push(a),d))return!0;e-=1;if(cvox.DomUtil.findNodes_(a,b,c,d,e))return!0;a=a.nextSibling}return!1};cvox.DomUtil.toArray=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c]);return b};
-cvox.DomUtil.shallowChildlessClone=function(a,b){if("#text"==a.nodeName)return document.createTextNode(a.nodeValue);if("#comment"==a.nodeName)return document.createComment(a.nodeValue);for(var c=document.createElement(a.nodeName),d=0;d<a.attributes.length;++d){var e=a.attributes[d];b&&b[e.nodeName]||c.setAttribute(e.nodeName,e.nodeValue)}return c};
-cvox.DomUtil.deepClone=function(a,b){for(var c=cvox.DomUtil.shallowChildlessClone(a,b),d=0;d<a.childNodes.length;++d)c.appendChild(cvox.DomUtil.deepClone(a.childNodes[d],b));return c};cvox.DomUtil.directedFirstChild=function(a,b){return b?a.lastChild:a.firstChild};cvox.DomUtil.directedNextSibling=function(a,b){return a?b?a.previousSibling:a.nextSibling:null};cvox.DomUtil.createSimpleClickFunction=function(a){var b=a.cloneNode(!0);return function(){cvox.DomUtil.clickElem(b,!1,!1)}};
-cvox.DomUtil.addNodeToHead=function(a,b){if(!b||!document.getElementById(b)){var c=document.head||document.body;c.appendChild(a)}};cvox.DomUtil.getContainingMath=function(a){a=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findMathNodeInList(a)};cvox.DomUtil.findMathNodeInList=function(a){for(var b=0,c;c=a[b];b++)if(cvox.DomUtil.isMath(c))return c;return null};cvox.DomUtil.isMath=function(a){return cvox.DomUtil.isMathml(a)||cvox.DomUtil.isMathJax(a)||cvox.DomUtil.isMathImg(a)||cvox.AriaUtil.isMath(a)};
-cvox.DomUtil.ALT_MATH_CLASSES={tex:["tex","latex"],asciimath:["numberedequation","inlineformula","displayformula"]};cvox.DomUtil.altMathQuerySelector=function(a){return(a=cvox.DomUtil.ALT_MATH_CLASSES[a])?a.map(function(a){return"img."+a}).join(", "):""};cvox.DomUtil.isMathImg=function(a){if(!a||!a.tagName||!a.className||"IMG"!=a.tagName)return!1;a=a.className.toLowerCase();return-1!=cvox.DomUtil.ALT_MATH_CLASSES.tex.indexOf(a)||-1!=cvox.DomUtil.ALT_MATH_CLASSES.asciimath.indexOf(a)};
-cvox.DomUtil.isMathml=function(a){return a&&a.tagName?"math"==a.tagName.toLowerCase():!1};cvox.DomUtil.isMathJax=function(a){function b(a,b){return"SPAN"==a.tagName&&a.className.split(" ").some(function(a){return a.toLowerCase()==b})}return a&&a.tagName&&a.className?b(a,"math")?(a=cvox.DomUtil.getAncestors(a),a.some(function(a){return b(a,"mathjax")})):!1:!1};cvox.DomUtil.getMathSpanId=function(a){if(a=document.getElementById(a+"-Frame"))if(a=a.querySelector("span.math"))return a.id};
-cvox.DomUtil.hasLongDesc=function(a){return a&&a.longDesc?!0:!1};cvox.DomUtil.getNodeTagName=function(a){return a.nodeType==Node.ELEMENT_NODE?a.tagName:""};cvox.DomUtil.purgeNodes=function(a){return cvox.DomUtil.toArray(a).filter(function(a){return a.nodeType!=Node.TEXT_NODE||!a.textContent.match(/^\s+$/)})};cvox.DomUtil.elementToPoint=function(a){if(!a)return{x:0,y:0};a.constructor==Text&&(a=a.parentNode);a=a.getBoundingClientRect();return{x:a.left+a.width/2,y:a.top+a.height/2}};cvox.SelectionUtil=function(){};cvox.SelectionUtil.cleanUpParagraphForward=function(a){for(;3==a.focusNode.nodeType;){var b=a.focusNode,c=a.focusOffset;a.modify("extend","forward","sentence");if(b==a.focusNode&&c==a.focusOffset)return!1}return!0};cvox.SelectionUtil.cleanUpParagraphBack=function(a){for(var b,c;3==a.focusNode.nodeType&&(b=a.focusNode,c=a.focusOffset,a.modify("extend","backward","sentence"),b!=a.focusNode||c!=a.focusOffset););return!0};
-cvox.SelectionUtil.cleanUpSentence=function(a){for(var b=!0;b;)if(3==a.focusNode.nodeType){var c=a.focusNode,d=a.focusOffset;if(0<a.rangeCount&&0<a.getRangeAt(0).endOffset)if("."==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else if(" "==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else{if(a.modify("extend","forward","sentence"),c==a.focusNode&&d==a.focusOffset)return!1}else break}else break;return!0};
-cvox.SelectionUtil.findSelPosition=function(a){if(0==a.rangeCount)return[0,0];var b=a.getRangeAt(0).getBoundingClientRect();if(!b)return[0,0];a=window.pageYOffset+b.top;b=window.pageXOffset+b.left;return[a,b]};cvox.SelectionUtil.findTopLeftPosition=function(a){var b=0,c=0;if(a.offsetParent)for(b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;null!==a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return[c,b]};
-cvox.SelectionUtil.isSelectionValid=function(a){var b=RegExp(/^\s+$/);return!(b.test(a.toString())||""==a.toString())};cvox.SelectionUtil.isRangeValid=function(a){a=a.cloneContents().textContent;var b=RegExp(/^\s+$/);return!(b.test(a)||""==a)};cvox.SelectionUtil.findPos_=function(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]};
-cvox.SelectionUtil.scrollElementsToView=function(a){for(;a&&!a.getBoundingClientRect;)a=a.parentElement;if(a){for(var b=a,c=b.parentElement;b!=document.body&&c;)b.scrollTop=b.offsetTop,b.scrollLeft=b.offsetLeft,b=c,c=b.parentElement;a=cvox.SelectionUtil.findPos_(a);window.scrollTo(a[0]-window.innerWidth/2,a[1]-window.innerHeight/2)}};
-cvox.SelectionUtil.scrollToSelection=function(a){if(0!=a.rangeCount){cvox.SelectionUtil.scrollElementsToView(a.focusNode);var b=cvox.SelectionUtil.findSelPosition(a);a=b[0];var b=b[1],c=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,d=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,e=window.innerWidth||document.documentElement.innerWidth||document.body.clientWidth;b<e&&(b=0);c+d<a?(a-=d,window.scroll(b,a+100)):a<c&&window.scroll(b,
-a-100)}};cvox.SelectionUtil.isAllWs=function(a){return!/[^\t\n\r ]/.test(a.data)};cvox.SelectionUtil.isIgnorable=function(a){return 8==a.nodeType||3==a.nodeType&&cvox.SelectionUtil.isAllWs(a)};cvox.SelectionUtil.nodeBefore=function(a){for(;a=a.previousSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};cvox.SelectionUtil.nodeAfter=function(a){for(;a=a.nextSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};
-cvox.SelectionUtil.lastChildNode=function(a){for(a=a.lastChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.previousSibling}return null};cvox.SelectionUtil.firstChildNode=function(a){for(a=a.firstChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.nextSibling}return null};cvox.SelectionUtil.dataOf=function(a){a=a.data;a=a.replace(/[\t\n\r ]+/g," ");" "==a.charAt(0)&&(a=a.substring(1,a.length));" "==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));return a};
-cvox.SelectionUtil.hasContentWithTag=function(a,b){if(!a||!a.anchorNode||!a.focusNode)return!1;if(a.anchorNode.tagName&&a.anchorNode.tagName==b||a.focusNode.tagName&&a.focusNode.tagName==b||a.anchorNode.parentNode.tagName&&a.anchorNode.parentNode.tagName==b||a.focusNode.parentNode.tagName&&a.focusNode.parentNode.tagName==b)return!0;var c=a.getRangeAt(0).cloneContents(),d=document.createElement("span");d.appendChild(c);return 0<d.getElementsByTagName(b).length};
-cvox.SelectionUtil.selectText=function(a,b,c){var d=document.createRange();d.setStart(a,b);d.setEnd(a,c);a=window.getSelection();a.removeAllRanges();a.addRange(d)};cvox.SelectionUtil.selectAllTextInNode=function(a){var b=document.createRange();b.setStart(a,0);b.setEndAfter(a);a=window.getSelection();a.removeAllRanges();a.addRange(b)};
-cvox.SelectionUtil.collapseToStart=function(a){var b=window.getSelection(),c=b.anchorNode,d=b.anchorOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};cvox.SelectionUtil.collapseToEnd=function(a){var b=window.getSelection(),c=b.focusNode,d=b.focusOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};
-cvox.SelectionUtil.getText=function(){var a=window.getSelection();if(cvox.SelectionUtil.hasContentWithTag(a,"IMG")){var b="",a=a.getRangeAt(0).cloneContents(),c=document.createElement("span");c.appendChild(a);for(var a=cvox.XpathUtil.getLeafNodes(c),c=0,d;d=a[c];c++)b=b+" "+cvox.DomUtil.getName(d);return b}return this.getSelectionText_()};cvox.SelectionUtil.getSelectionText_=function(){return""+window.getSelection()};
-cvox.SelectionUtil.getRangeText=function(a){return a?a.cloneContents().textContent.replace(/\s+/g," "):""};cvox.TraverseUtil=function(){};cvox.TraverseUtil.getNodeText=function(a){return a.constructor==Text?a.data:""};cvox.TraverseUtil.treatAsLeafNode=function(a){return 0==a.childNodes.length||"SELECT"==a.nodeName||"listbox"==a.getAttribute("role")||"OBJECT"==a.nodeName};cvox.TraverseUtil.isWhitespace=function(a){return" "==a||"\n"==a||"\r"==a||"\t"==a};
-cvox.TraverseUtil.setSelection=function(a,b){var c=window.getSelection();c.removeAllRanges();var d=document.createRange();d.setStart(a.node,a.index);d.setEnd(b.node,b.index);c.addRange(d);return c};cvox.TraverseUtil.isHidden=function(a){if(a instanceof HTMLElement&&"true"==a.getAttribute("aria-hidden"))return!0;switch(a.tagName){case "SCRIPT":case "NOSCRIPT":return!0}return!1};
-cvox.TraverseUtil.forwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index;e<a.node.childNodes.length;e++){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.index=0,a.text=cvox.TraverseUtil.getNodeText(a.node),a.node instanceof HTMLElement&&b.push(a.node);else{if(a.index<a.text.length)return a.text[a.index++];for(;null!=
-a.node;){d=null;for(f=a.node.nextSibling;null!=f;f=f.nextSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=0;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof HTMLElement&&c.push(a.node),a.node=a.node.parentNode,
-a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.backwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index-1;0<=e;e--){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.text=cvox.TraverseUtil.getNodeText(a.node),a.index=a.text.length?a.text.length:a.node.childNodes.length,a.node instanceof HTMLElement&&b.push(a.node);else{if(0<a.text.length&&0<a.index)return a.text[--a.index];
-for(;;){d=null;for(f=a.node.previousSibling;null!=f;f=f.previousSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=a.text.length?a.text.length:a.node.childNodes.length;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof
-HTMLElement&&c.push(a.node),a.node=a.node.parentNode,a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.getNextChar=function(a,b,c,d,e){a.copyFrom(b);var f=cvox.TraverseUtil.forwardsChar(b,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(b.node);)if(f=cvox.TraverseUtil.forwardsChar(b,c,d),null==f)return null;if(e||!g)return a.copyFrom(b),a.index--,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return b.index--,a.copyFrom(b),a.index--," ";b.index--;return" "};
-cvox.TraverseUtil.getPreviousChar=function(a,b,c,d,e){b.copyFrom(a);var f=cvox.TraverseUtil.backwardsChar(a,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(a.node);)if(f=cvox.TraverseUtil.backwardsChar(a,c,d),null==f)return null;if(e||!g)return b.copyFrom(a),b.index++,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return a.index++,b.copyFrom(a),b.index++," ";a.index++;return" "};
-cvox.TraverseUtil.getNextWord=function(a,b,c,d){var e=b.clone(),f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.forwardsChar(e,c,d),null==f)return null;a.copyFrom(e);a.index--;b.copyFrom(e);a=f;c=[];d=[];f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return a;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d&&(a+=f,b.copyFrom(e),f=cvox.TraverseUtil.forwardsChar(e,c,d),null!=
-f););return a};
-cvox.TraverseUtil.getPreviousWord=function(a,b,c,d){var e=a.clone(),f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.backwardsChar(e,c,d),null==f)return null;b.copyFrom(e);b.index++;a.copyFrom(e);b=f;c=[];d=[];f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return b;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d.length&&(b=f+b,a.copyFrom(e),f=cvox.TraverseUtil.backwardsChar(e,c,
-d),null!=f););return b};cvox.TraverseUtil.includesBreakTagOrSkippedNode=function(a,b,c){for(var d=0;d<a.length;d++){if(cvox.TraverseUtil.isHidden(a[d]))return!0;var e=window.getComputedStyle(a[d],null);if(e&&"inline"!=e.display||c[a[d].tagName])return!0}for(d=0;d<b.length;d++)if((e=window.getComputedStyle(b[d],null))&&"inline"!=e.display||c[b[d].tagName])return!0;return!1};
-cvox.TraverseUtil.getNextSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){return"."==a.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};cvox.TraverseUtil.getPreviousSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){return"."==b.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};
-cvox.TraverseUtil.getNextLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=b.clone();return cvox.TraverseUtil.getNextString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.bottom!=g.bottom&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(b.node)))return b.copyFrom(h),!0;g=c;h.copyFrom(b);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getPreviousLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=a.clone();return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.top!=g.top&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(a.node)))return a.copyFrom(h),!0;g=c;h.copyFrom(a);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getNextParagraph=function(a,b,c,d){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getPreviousParagraph=function(a,b,c,d){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getNextString=function(a,b,c,d,e){c=b.clone();d=b.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getNextWord(c,d,f,g);if(null==k)return null;for(a.copyFrom(c);!(h&&e(h,k,f,g)||(h&&(h+=" "),h+=k,b.copyFrom(d),f=[],g=[],k=cvox.TraverseUtil.getNextWord(c,d,f,g),null==k)););return h};
-cvox.TraverseUtil.getPreviousString=function(a,b,c,d,e){c=a.clone();d=a.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getPreviousWord(c,d,f,g);if(null==k)return null;for(b.copyFrom(d);!(h&&e(h,k,f,g)||(h&&(h=" "+h),h=k+h,a.copyFrom(c),f=[],g=[],k=cvox.TraverseUtil.getPreviousWord(c,d,f,g),null==k)););return h};cvox.CursorSelection=function(a,b,c){this.start=a.clone();this.end=b.clone();void 0==c&&(c=!1);if((this.isReversed_=c)&&this.start.node.compareDocumentPosition(this.end.node)==cvox.CursorSelection.BEFORE||!this.isReversed_&&this.end.node.compareDocumentPosition(this.start.node)==cvox.CursorSelection.BEFORE)a=this.start,this.start=this.end,this.end=a};cvox.CursorSelection.BEFORE=4;
-cvox.CursorSelection.prototype.setReversed=function(a){if(a==this.isReversed_)return this;var b=this.start;this.start=this.end;this.end=b;this.isReversed_=a;return this};cvox.CursorSelection.prototype.isReversed=function(){return this.isReversed_};cvox.CursorSelection.prototype.absStart=function(){return this.isReversed_?this.end:this.start};cvox.CursorSelection.prototype.absEnd=function(){return this.isReversed_?this.start:this.end};
-cvox.CursorSelection.prototype.clone=function(){return new cvox.CursorSelection(this.start,this.end,this.isReversed_)};cvox.CursorSelection.prototype.select=function(){var a=window.getSelection();a.removeAllRanges();this.normalize();a.addRange(this.getRange())};cvox.CursorSelection.fromNode=function(a){if(!a)return null;var b=cvox.TraverseUtil.getNodeText(a);return new cvox.CursorSelection(new cvox.Cursor(a,0,b),new cvox.Cursor(a,0,b))};cvox.CursorSelection.fromBody=function(){return cvox.CursorSelection.fromNode(document.body)};
-cvox.CursorSelection.prototype.getText=function(){return this.start.equals(this.end)?cvox.TraverseUtil.getNodeText(this.start.node):cvox.SelectionUtil.getRangeText(this.getRange())};cvox.CursorSelection.prototype.getRange=function(){var a=document.createRange();this.isReversed_?(a.setStart(this.end.node,this.end.index),a.setEnd(this.start.node,this.start.index)):(a.setStart(this.start.node,this.start.index),a.setEnd(this.end.node,this.end.index));return a};
-cvox.CursorSelection.prototype.equals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)};cvox.CursorSelection.prototype.absEquals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)||this.end.equals(a.start)&&this.start.equals(a.end)};cvox.CursorSelection.prototype.directedBefore=function(a){var b=this.start.node.compareDocumentPosition(a.start.node)==cvox.CursorSelection.BEFORE;return this.start.node==a.start.node||(this.isReversed()?!b:b)};
-cvox.CursorSelection.prototype.normalize=function(){if(0==this.absEnd().index&&this.absEnd().node){var a=this.absEnd().node,b=document.createRange();b.selectNodeContents(a);this.absEnd().index=b.endOffset}return this};cvox.CursorSelection.prototype.collapse=function(){if(this.start.equals(this.end))return this;this.end.copyFrom(this.start);if(0==this.start.text.length)return this;this.isReversed()?0<this.end.index&&this.end.index--:this.end.index<this.end.text.length&&this.end.index++;return this};cvox.PlatformUtil={};cvox.PlatformFilter={NONE:0,WINDOWS:1,MAC:2,LINUX:4,WML:7,CHROMEOS:8,ANDROID:16};cvox.PlatformUtil.matchesPlatform=function(a){var b=navigator.userAgent;return void 0==a?!0:-1!=b.indexOf("Android")?0!=(a&cvox.PlatformFilter.ANDROID):-1!=b.indexOf("Win")?0!=(a&cvox.PlatformFilter.WINDOWS):-1!=b.indexOf("Mac")?0!=(a&cvox.PlatformFilter.MAC):-1!=b.indexOf("Linux")?0!=(a&cvox.PlatformFilter.LINUX):-1!=b.indexOf("CrOS")?0!=(a&cvox.PlatformFilter.CHROMEOS):!1};cvox.Spannable=function(a,b){this.string_=a||"";this.spans_=[];if(goog.isDef(b)){var c=this.string_.length;this.spans_.push({value:b,start:0,end:c})}};cvox.Spannable.prototype.toString=function(){return this.string_};cvox.Spannable.prototype.getLength=function(){return this.string_.length};cvox.Spannable.prototype.setSpan=function(a,b,c){this.removeSpan(a);if(0<=b&&b<=c&&c<=this.string_.length)this.spans_.push({value:a,start:b,end:c});else throw new RangeError("span out of range");};
-cvox.Spannable.prototype.removeSpan=function(a){for(var b=this.spans_.length-1;0<=b;b--)this.spans_[b].value===a&&this.spans_.splice(b,1)};cvox.Spannable.prototype.append=function(a){if(a instanceof cvox.Spannable){var b=a,c=this.getLength();this.string_+=b.string_;a.spans_.forEach(goog.bind(function(a){this.setSpan(a.value,a.start+c,a.end+c)},this))}else"string"===typeof a&&(this.string_+=a)};
-cvox.Spannable.prototype.getSpan=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.start<=a&&a<c.end)return c.value}};cvox.Spannable.prototype.getSpanInstanceOf=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value instanceof a)return c.value}};cvox.Spannable.prototype.getSpans=function(a){for(var b=[],c=0;c<this.spans_.length;c++){var d=this.spans_[c];d.start<=a&&a<d.end&&b.push(d.value)}return b};
-cvox.Spannable.prototype.getSpanStart=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.start}return null};cvox.Spannable.prototype.getSpanEnd=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.end}return null};
-cvox.Spannable.prototype.substring=function(a,b){var c=goog.isDef(b)?b:this.string_.length;if(0>a||c>this.string_.length||a>c)throw new RangeError("substring indices out of range");for(var d=new cvox.Spannable(this.string_.substring(a,c)),e=0;e<this.spans_.length;e++){var f=this.spans_[e];if(f.start<=c&&f.end>=a){var g=Math.max(0,f.start-a),h=Math.min(c-a,f.end-a);d.spans_.push({value:f.value,start:g,end:h})}}return d};
-cvox.Spannable.prototype.trim=function(){if(/^\s*$/.test(this.string_))return this.substring(0,0);var a=this.string_.match(/^\s*/)[0].length,b=this.string_.match(/\s*$/).index;return this.substring(a,b)};cvox.NavBraille=function(a){this.text=a.text instanceof cvox.Spannable?a.text:new cvox.Spannable(a.text);this.startIndex=a.startIndex?a.startIndex:0;this.endIndex=a.endIndex?a.endIndex:0};cvox.NavBraille.fromText=function(a){return new cvox.NavBraille({text:a})};cvox.NavBraille.prototype.isEmpty=function(){return 0==this.text.getLength()};cvox.NavBraille.prototype.toString=function(){return'NavBraille(text="'+this.text.toString()+'" startIndex="'+this.startIndex+'" endIndex="'+this.endIndex+'")'};
-cvox.NavBraille.prototype.toJson=function(){return{text:this.text.toString(),startIndex:this.startIndex,endIndex:this.endIndex}};cvox.NavBraille.prototype.write=function(){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.CHROMEOS|cvox.PlatformFilter.ANDROID)&&cvox.ChromeVox.braille.write(this)};cvox.BrailleKeyCommand={PAN_LEFT:"pan_left",PAN_RIGHT:"pan_right",LINE_UP:"line_up",LINE_DOWN:"line_down",TOP:"top",BOTTOM:"bottom",ROUTING:"routing",SECONDARY_ROUTING:"secondary_routing",DOTS:"dots",STANDARD_KEY:"standard_key"};cvox.BrailleKeyEvent={};cvox.BrailleInterface=function(){};cvox.BrailleInterface.prototype.write=function(){};cvox.AbstractBraille=function(){};cvox.AbstractHost=function(){};cvox.AbstractHost.State={ACTIVE:0,INACTIVE:1,KILLED:2};cvox.AbstractHost.prototype.init=function(){};cvox.AbstractHost.prototype.reinit=function(){};cvox.AbstractHost.prototype.onPageLoad=function(){};cvox.AbstractHost.prototype.getApiSrc=function(){return""};cvox.AbstractHost.prototype.getFileSrc=function(){return""};cvox.AbstractHost.prototype.hasTtsCallback=function(){return!0};cvox.AbstractHost.prototype.ttsLoaded=function(){return!0};
-cvox.AbstractHost.prototype.mustRedispatchClickEvent=function(){return!1};cvox.AbstractHost.prototype.activateOrDeactivateChromeVox=function(a){this.onStateChanged_(a?cvox.AbstractHost.State.ACTIVE:cvox.AbstractHost.State.INACTIVE)};cvox.AbstractHost.prototype.killChromeVox=function(){this.onStateChanged_(cvox.AbstractHost.State.KILLED)};
-cvox.AbstractHost.prototype.onStateChanged_=function(a){var b=a==cvox.AbstractHost.State.ACTIVE;if(b!=cvox.ChromeVox.isActive)switch(cvox.ChromeVoxEventWatcher.cleanup(window),a){case cvox.AbstractHost.State.ACTIVE:cvox.ChromeVox.isActive=!0;cvox.ChromeVox.navigationManager.showOrHideIndicator(!0);cvox.ChromeVoxEventWatcher.init(window);document.activeElement?(a=document.hasFocus()&&!document.webkitHidden,cvox.ApiImplementation.syncToNode(document.activeElement,a)):cvox.ChromeVox.navigationManager.updateIndicator();
-break;case cvox.AbstractHost.State.INACTIVE:cvox.ChromeVox.isActive=!1;cvox.ChromeVox.navigationManager.showOrHideIndicator(!1);cvox.ChromeVoxEventWatcher.init(window);break;case cvox.AbstractHost.State.KILLED:cvox.ChromeVox.isActive=!1,cvox.ChromeVox.navigationManager.showOrHideIndicator(!1)}};cvox.MathJaxInterface=function(){};cvox.MathJaxInterface.prototype.isMathjaxActive=function(){};cvox.MathJaxInterface.prototype.getAllJax=function(){};cvox.MathJaxInterface.prototype.registerSignal=function(){};cvox.MathJaxInterface.prototype.injectScripts=function(){};cvox.MathJaxInterface.prototype.configMediaWiki=function(){};cvox.MathJaxInterface.prototype.getTex=function(){};cvox.MathJaxInterface.prototype.getAsciiMath=function(){};cvox.AbstractMathJax=function(){};cvox.AbstractMathJax.prototype.getAllTexs=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("tex")),c=0,d;d=b[c];c++)this.getTex(a,d)};cvox.AbstractMathJax.prototype.getAllAsciiMaths=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("asciimath")),c=0,d;d=b[c];c++)this.getAsciiMath(a,d)};
-cvox.AbstractMathJax.prototype.convertMarkupToDom=function(a,b,c){if(b){var d=new DOMParser;b=b.replace(/>\s+</g,"><");a(d.parseFromString(b,"text/xml").firstChild,c)}};cvox.AbstractMsgs=function(){};cvox.AbstractMsgs.prototype.getMsg=function(){};cvox.AbstractMsgs.prototype.getNumber=function(){};cvox.HostFactory=function(){};cvox.HostFactory.getHost=function(){return new cvox.HostFactory.hostConstructor};cvox.HostFactory.getTts=function(){return new cvox.HostFactory.ttsConstructor};cvox.HostFactory.getBraille=function(){return new cvox.HostFactory.brailleConstructor};cvox.HostFactory.getMsgs=function(){return new cvox.HostFactory.msgsConstructor};cvox.HostFactory.getEarcons=function(){return new cvox.HostFactory.earconsConstructor};cvox.HostFactory.getMathJax=function(){return new cvox.HostFactory.mathJaxConstructor};cvox.SpokenMessage=function(){this.raw=this.id=this.count=null};cvox.SpokenMessages={};cvox.SpokenMessages.messages=[];cvox.SpokenMessages.speakFlush=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_FLUSH)};cvox.SpokenMessages.speakQueued=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_QUEUE)};
-cvox.SpokenMessages.speak=function(a){for(var b=0;b<cvox.SpokenMessages.messages.length;++b){var c=cvox.SpokenMessages.messages[b];if(!c||!c.id&&!c.raw)throw"Invalid message received.";var d="";if(null!=c.count)if(0>=c.count)try{d+=cvox.ChromeVox.msgs.getMsg(c.id[0]+"_optional_default")}catch(e){continue}else d=1==c.count?d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_singular"):d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_plural",[c.count]);else d=c.raw?d+c.raw:d+cvox.ChromeVox.msgs.getMsg.apply(cvox.ChromeVox.msgs,
-c.id);cvox.ChromeVox.tts.speak(d,a,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=cvox.AbstractTts.QUEUE_MODE_QUEUE}cvox.SpokenMessages.messages=[]};cvox.SpokenMessages.currentMessage=function(){if(0==cvox.SpokenMessages.messages.length)throw"Invalid usage of SpokenMessages; start the chain using $m()";return cvox.SpokenMessages.messages[cvox.SpokenMessages.messages.length-1]};cvox.SpokenMessages.withCount=function(a){cvox.SpokenMessages.currentMessage().count=a;return cvox.SpokenMessages};
-cvox.SpokenMessages.andIndexTotal=function(a,b){var c=new cvox.SpokenMessage;c.raw=cvox.ChromeVox.msgs.getMsg("index_total",[a,b]);cvox.SpokenMessages.messages.push(c);return cvox.SpokenMessages};cvox.SpokenMessages.andEnd=function(){return cvox.SpokenMessages.andMessage("end")};cvox.SpokenMessages.andMessage=function(a){var b=new cvox.SpokenMessage;b.id="string"==typeof a?[a]:a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};
-cvox.SpokenMessages.andRawMessage=function(a){var b=new cvox.SpokenMessage;b.raw=a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};cvox.SpokenMessages.andPause=function(){return cvox.SpokenMessages.andMessage("pause")};cvox.$m=cvox.SpokenMessages.andMessage;cvox.CompositeTts=function(){this.ttsEngines_=[]};cvox.CompositeTts.prototype.add=function(a){this.ttsEngines_.push(a);return this};cvox.CompositeTts.prototype.speak=function(a,b,c){this.ttsEngines_.forEach(function(d){d.speak(a,b,c)})};cvox.CompositeTts.prototype.isSpeaking=function(){return this.ttsEngines_.some(function(a){return a.isSpeaking()})};cvox.CompositeTts.prototype.stop=function(){this.ttsEngines_.forEach(function(a){a.stop()})};
-cvox.CompositeTts.prototype.increaseOrDecreaseProperty=function(a,b){this.ttsEngines_.forEach(function(c){c.increaseOrDecreaseProperty(a,b)})};cvox.CompositeTts.prototype.getDefaultProperty=function(a){for(var b=0,c;c=this.ttsEngines_[b];b++)if(c=c.getDefaultProperty(a))return c};cvox.BuildInfo={};cvox.BuildInfo.build="1384906195.369502";cvox.ChromeVoxJSON||(cvox.ChromeVoxJSON={});
-window.JSON&&"[object JSON]"==window.JSON.toString()?cvox.ChromeVoxJSON=window.JSON:function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,n,s,u=f,t,r=d[a];r&&"object"===typeof r&&"function"===typeof r.toJSON&&(r=r.toJSON(a));"function"===typeof k&&(r=k.call(d,a,r));switch(typeof r){case "string":return b(r);
-case "number":return isFinite(r)?String(r):"null";case "boolean":case "null":return String(r);case "object":if(!r)return"null";f+=g;t=[];if("[object Array]"===Object.prototype.toString.apply(r)){s=r.length;for(e=0;e<s;e+=1)t[e]=c(e,r)||"null";n=0===t.length?"[]":f?"[\n"+f+t.join(",\n"+f)+"\n"+u+"]":"["+t.join(",")+"]";f=u;return n}if(k&&"object"===typeof k)for(s=k.length,e=0;e<s;e+=1)h=k[e],"string"===typeof h&&(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);else for(h in r)Object.hasOwnProperty.call(r,h)&&
-(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);n=0===t.length?"{}":f?"{\n"+f+t.join(",\n"+f)+"\n"+u+"}":"{"+t.join(",")+"}";f=u;return n}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":"null"},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});
-var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof cvox.ChromeVoxJSON.stringify&&(cvox.ChromeVoxJSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&
-(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});"function"!==typeof cvox.ChromeVoxJSON.parse&&(cvox.ChromeVoxJSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=String(a);d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
-if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})}();"undefined"!=typeof goog&&goog.provide&&(cvox.ApiUtil={});window.cvox||(window.cvox={});cvox.ApiUtils=function(){};cvox.ApiUtils.nextCvoxId_=1;
-cvox.ApiUtils.makeNodeReference=function(a){if(a.id&&document.getElementById(a.id)==a)return{id:a.id};if(a instanceof HTMLElement){var b=cvox.ApiUtils.nextCvoxId_;a.setAttribute("cvoxid",b);cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+1)%100;return{cvoxid:b}}if(a.parentElement){for(var c=a.parentElement,d=-1,b=0;b<c.childNodes.length;b++)if(c.childNodes[b]==a){d=b;break}if(0<=d)return b=cvox.ApiUtils.nextCvoxId_,c.setAttribute("cvoxid",b),cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+
-1)%100,{cvoxid:b,childIndex:d}}throw"Cannot reference node: "+a;};cvox.ApiUtils.getNodeFromRef=function(a){if(a.id)return document.getElementById(a.id);if(a.cvoxid){var b='*[cvoxid="'+a.cvoxid+'"]';(b=document.querySelector(b))&&b.removeAttribute&&b.removeAttribute("cvoxid");return null!=a.childIndex?b.childNodes[a.childIndex]:b}throw"Bad node reference: "+cvox.ChromeVoxJSON.stringify(a);};cvox.ScriptInstaller={};
-cvox.ScriptInstaller.installScript=function(a,b,c,d){if(document.querySelector("script["+b+"]")||!a)return!1;for(var e=0,f;f=a[e];e++){var g=new XMLHttpRequest,h=f+"?"+(new Date).getTime();g.onreadystatechange=function(){if(4==g.readyState){var a=g.responseText,a=a+("\n//# sourceURL="+f+"\n"),c=document.createElement("script");c.type="text/javascript";c.setAttribute(b,"1");c.textContent=a;d&&c.setAttribute("chromevoxScriptBase",d);cvox.DomUtil.addNodeToHead(c)}};try{g.open("GET",h,!1),g.send(null)}catch(k){return window.console.log("Warning: ChromeVox external script loading for "+
-document.location+" stopped after failing to install "+f),!1}}c&&c();return!0};cvox.ApiImplementation=function(){};cvox.ApiImplementation.init=function(a){window.addEventListener("message",cvox.ApiImplementation.portSetup,!0);var b=[];b.push(cvox.ChromeVox.host.getFileSrc("chromevox/injected/api_util.js"));b.push(cvox.ChromeVox.host.getApiSrc());b.push(cvox.ApiImplementation.siteSpecificScriptLoader);a=cvox.ScriptInstaller.installScript(b,"cvoxapi",a,cvox.ApiImplementation.siteSpecificScriptBase);a||(window.location.href="javascript:cvox.Api.internalEnable();")};
-cvox.ApiImplementation.portSetup=function(a){return"cvox.PortSetup"==a.data?(cvox.ApiImplementation.port=a.ports[0],cvox.ApiImplementation.port.onmessage=function(a){cvox.ApiImplementation.dispatchApiMessage(cvox.ChromeVoxJSON.parse(a.data))},a.stopPropagation(),!1):!0};
-cvox.ApiImplementation.dispatchApiMessage=function(a){var b;switch(a.cmd){case "speak":b=cvox.ApiImplementation.speak;break;case "speakNodeRef":b=cvox.ApiImplementation.speakNodeRef;break;case "stop":b=cvox.ApiImplementation.stop;break;case "playEarcon":b=cvox.ApiImplementation.playEarcon;break;case "syncToNodeRef":b=cvox.ApiImplementation.syncToNodeRef;break;case "clickNodeRef":b=cvox.ApiImplementation.clickNodeRef;break;case "getBuild":b=cvox.ApiImplementation.getBuild;break;case "getVersion":b=
-cvox.ApiImplementation.getVersion;break;case "getCurrentNode":b=cvox.ApiImplementation.getCurrentNode;break;case "getCvoxModKeys":b=cvox.ApiImplementation.getCvoxModKeys;break;case "isKeyShortcut":b=cvox.ApiImplementation.isKeyShortcut;break;case "setKeyEcho":b=cvox.ApiImplementation.setKeyEcho;break;case "Math.defineRule":b=cvox.ApiImplementation.Math.defineRule}if(!b)throw"Unknown API call: "+a.cmd;b.apply(cvox.ApiImplementation,a.args)};
-function setupEndCallback_(a,b){var c=function(){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:b}))};a&&(a.endCallback=c)}cvox.ApiImplementation.speak=function(a,b,c,d){cvox.ChromeVox.isActive&&(d||(d={}),setupEndCallback_(d,a),cvox.ChromeVox.tts.speak(b,c,d))};cvox.ApiImplementation.speakNode=function(a,b,c){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(a),b,c)};
-cvox.ApiImplementation.speakNodeRef=function(a,b,c,d){b=cvox.ApiUtils.getNodeFromRef(b);d||(d={});setupEndCallback_(d,a);cvox.ApiImplementation.speakNode(b,c,d)};cvox.ApiImplementation.stop=function(){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.stop()};cvox.ApiImplementation.playEarcon=function(a){cvox.ChromeVox.isActive&&cvox.ChromeVox.earcons.playEarconByName(a)};cvox.ApiImplementation.syncToNodeRef=function(a,b){var c=cvox.ApiUtils.getNodeFromRef(a);cvox.ApiImplementation.syncToNode(c,b)};
-cvox.ApiImplementation.syncToNode=function(a,b,c){cvox.ChromeVox.isActive&&(void 0==c&&(c=cvox.AbstractTts.QUEUE_MODE_FLUSH),cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a,!0),cvox.ChromeVox.navigationManager.updateIndicator(),void 0==b&&(b=!1),cvox.AriaUtil.isHiddenRecursive(a)&&(b=!1),b&&cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ApiImplementation.getDesc_(a),c,null),cvox.ChromeVox.navigationManager.getBraille().write(),cvox.ChromeVox.navigationManager.updatePosition(a))};
-cvox.ApiImplementation.getCurrentNode=function(a){var b=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,currentNode:cvox.ApiUtils.makeNodeReference(b)}))};
-cvox.ApiImplementation.getDesc_=function(a){if(!a.hasAttribute("cvoxnodedesc"))return cvox.ChromeVox.navigationManager.getDescription();a=cvox.ChromeVoxJSON.parse(a.getAttribute("cvoxnodedesc"));for(var b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b};cvox.ApiImplementation.clickNodeRef=function(a,b){cvox.DomUtil.clickElem(cvox.ApiUtils.getNodeFromRef(a),b,!1)};
-cvox.ApiImplementation.getBuild=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,build:cvox.BuildInfo.build}))};cvox.ApiImplementation.getVersion=function(a){var b=cvox.ChromeVox.version;null==b?window.setTimeout(function(){cvox.ApiImplementation.getVersion(a)},1E3):cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,version:b}))};
-cvox.ApiImplementation.getCvoxModKeys=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,keyCodes:cvox.KeyUtil.cvoxModKeyCodes()}))};cvox.ApiImplementation.isKeyShortcut=function(a,b){var c=cvox.KeyUtil.keyEventToKeySequence(b);cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,isHandled:cvox.ChromeVoxKbHandler.handlerKeyMap.hasKey(c)}))};
-cvox.ApiImplementation.setKeyEcho=function(a){var b=cvox.ChromeVox.keyEcho;b[document.location.href]=a;JSON.stringify(b)};cvox.ApiImplementation.Math=function(){};cvox.ApiImplementation.Math.defineRule=function(a,b,c,d,e){var f=cvox.MathmlStore.getInstance(),g=Array.prototype.slice.call(arguments,4),g=[a,b,c,d].concat(g);f.defineRule.apply(f,g)};cvox.ConsoleTts=function(){this.enabled_=!1};goog.addSingletonGetter(cvox.ConsoleTts);cvox.ConsoleTts.prototype.speak=function(a,b,c){if(this.enabled_&&window.console){var d="Speak",d=b==cvox.AbstractTts.QUEUE_MODE_FLUSH?d+" (I)":d+" (Q)",d=d+(' "'+a+'"');window.console.log(d);c&&void 0!=c.startCallback&&window.console.log(" using startCallback");c&&void 0!=c.endCallback&&window.console.log(" using endCallback")}return this};cvox.ConsoleTts.prototype.isSpeaking=function(){return!1};
-cvox.ConsoleTts.prototype.stop=function(){this.enabled_&&window.console.log("Stop")};cvox.ConsoleTts.prototype.increaseOrDecreaseProperty=function(){};cvox.ConsoleTts.prototype.setEnabled=function(a){this.enabled_=a};cvox.ConsoleTts.prototype.getDefaultProperty=function(){};cvox.ChromeVoxHTMLDateWidget=function(a,b){var c=this;this.pos_=0;var d=2;if("month"==a.type||"week"==a.type)d=1;this.maxPos_=d;this.dateElem_=a;this.dateTts_=b;this.pDay_=this.pWeek_=this.pMonth_=this.pYear_=-1;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};0==this.dateElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e);
-e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e)}this.dateElem_.addEventListener("keydown",this.keyListener_,!1);this.dateElem_.addEventListener("keyup",this.keyListener_,!1);this.dateElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLDateWidget.prototype.shutdown=function(){this.dateElem_.removeEventListener("blur",this.blurListener_,!1);this.dateElem_.removeEventListener("keydown",this.keyListener_,!1);this.dateElem_.removeEventListener("keyup",this.keyListener_,!1)};
-cvox.ChromeVoxHTMLDateWidget.prototype.forceInitTime_=function(){var a=new Date,b="",b=a.getFullYear()+"",c=a.getMonth()+1+"";2>c.length&&(c="0"+c);var d=a.getDate()+"";switch(this.dateElem_.type){case "month":b=b+"-"+c;break;case "week":a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));c=new Date(a.getFullYear(),0,1);a=Math.ceil(((a-c)/864E5+1)/7)+"";2>a.length&&(a="0"+a);a="W"+a;b=b+"-"+a;break;default:b=b+"-"+c+"-"+d}this.dateElem_.setAttribute("value",b)};
-cvox.ChromeVoxHTMLDateWidget.prototype.handlePosChange_=function(){this.pos_=Math.max(this.pos_,0);this.pos_=Math.min(this.pos_,this.maxPos_);switch(this.pos_){case 0:"week"==this.dateElem_.type?this.pWeek_=-1:this.pMonth_=-1;break;case 1:"date"==this.dateElem_.type?this.pDay_=-1:this.pYear_=-1;break;case 2:this.pYear_=-1}};
-cvox.ChromeVoxHTMLDateWidget.prototype.update_=function(a){var b=this.dateElem_.value.split("-");if(1>b.length)this.forceInitTime_();else{var c=-1,d=-1,e=-1,f=-1,c=parseInt(b[0],10);"week"==this.dateElem_.type?e=parseInt(b[1].replace("W",""),10):"date"==this.dateElem_.type?(d=parseInt(b[1],10),f=parseInt(b[2],10)):d=parseInt(b[1],10);b="";a&&(b=cvox.DomUtil.getName(this.dateElem_,!0,!0)+"\n");e!=this.pWeek_&&(b=b+cvox.ChromeVox.msgs.getMsg("datewidget_week")+e+"\n",this.pWeek_=e);if(d!=this.pMonth_){a=
-"";switch(d){case 1:a=cvox.ChromeVox.msgs.getMsg("datewidget_january");break;case 2:a=cvox.ChromeVox.msgs.getMsg("datewidget_february");break;case 3:a=cvox.ChromeVox.msgs.getMsg("datewidget_march");break;case 4:a=cvox.ChromeVox.msgs.getMsg("datewidget_april");break;case 5:a=cvox.ChromeVox.msgs.getMsg("datewidget_may");break;case 6:a=cvox.ChromeVox.msgs.getMsg("datewidget_june");break;case 7:a=cvox.ChromeVox.msgs.getMsg("datewidget_july");break;case 8:a=cvox.ChromeVox.msgs.getMsg("datewidget_august");
-break;case 9:a=cvox.ChromeVox.msgs.getMsg("datewidget_september");break;case 10:a=cvox.ChromeVox.msgs.getMsg("datewidget_october");break;case 11:a=cvox.ChromeVox.msgs.getMsg("datewidget_november");break;case 12:a=cvox.ChromeVox.msgs.getMsg("datewidget_december")}b=b+a+"\n";this.pMonth_=d}f!=this.pDay_&&(b=b+f+"\n",this.pDay_=f);c!=this.pYear_&&(b=b+c+"\n",this.pYear_=c);0<b.length&&this.dateTts_.speak(b,0,null)}};
-cvox.ChromeVoxHTMLDateWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.BrailleTextHandler=function(a){this.braille_=a};cvox.BrailleTextHandler.prototype.changed=function(a,b,c,d){var e;d?(e=cvox.NavBraille.fromText(a),e.startIndex=b,e.endIndex=c):cvox.ChromeVox.navigationManager&&(e=cvox.ChromeVox.navigationManager.getBraille());e&&this.braille_.write(e)};cvox.ContentEditableExtractor=function(){this.text_="";this.end_=this.start_=0;this.lines_={};this.characterToLineMap_=[]};
-cvox.ContentEditableExtractor.prototype.update=function(a){for(var b={0:{startIndex:0,endIndex:0}},c=new cvox.Cursor(a,0,""),d=c.clone(),e=document.createRange(),f,g=0,h=null,k="",l=0,m=-1,p=-1,q=window.getSelection(),n=new cvox.Cursor(q.baseNode,q.baseOffset,""),q=new cvox.Cursor(q.extentNode,q.extentOffset,""),s=!1,u=!1;;){f=[];var t=[],r=cvox.TraverseUtil.forwardsChar(d,f,t),v=!1;r||(v=!0);for(f=0;f<t.length&&!v;f++)t[f]==a&&(v=!0);if(v)break;e.setStart(c.node,c.index);e.setEnd(d.node,d.index);
-if((f=e.getBoundingClientRect())&&0!=f.width&&0!=f.height){null!==h&&f.bottom!=h&&0<l&&k.substr(-1).match(/\S/)&&r.match(/\S/)&&(k+="\n",l++);if(c.node!=d.node&&0<d.index&&(e.setStart(d.node,d.index-1),f=e.getBoundingClientRect(),!f||0==f.width||0==f.height))continue;!s&&-1==m&&d.node==n.node&&d.index>=n.index&&(d.index>n.index?m=l:s=!0);!u&&-1==p&&d.node==q.node&&d.index>=q.index&&(d.index>q.index?p=l:u=!0);null===h?h=f.bottom:f.bottom!=h&&(b[g].endIndex=l,g++,b[g]={startIndex:l,endIndex:l},h=f.bottom);
-k+=r;l++;c=d.clone();s&&(m=l,s=!1);u&&(p=l,u=!1)}}b[g].endIndex=l;a=[];for(f=0;f<=g;f++)for(c=b[f].startIndex;c<=b[f].endIndex;c++)a[c]=f;this.text_=k;this.characterToLineMap_=a;this.lines_=b;this.start_=0<=m?m:k.length;this.end_=0<=p?p:k.length};cvox.ContentEditableExtractor.prototype.getText=function(){return this.text_};cvox.ContentEditableExtractor.prototype.getStartIndex=function(){return this.start_};cvox.ContentEditableExtractor.prototype.getEndIndex=function(){return this.end_};
-cvox.ContentEditableExtractor.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.ContentEditableExtractor.prototype.getLineStart=function(a){return this.lines_[a].startIndex};cvox.ContentEditableExtractor.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.EditableTextAreaShadow=function(){this.shadowElement_=document.createElement("div");this.lines_={};this.characterToLineMap_=[]};
-cvox.EditableTextAreaShadow.prototype.update=function(a){for(document.body.appendChild(this.shadowElement_);this.shadowElement_.childNodes.length;)this.shadowElement_.removeChild(this.shadowElement_.childNodes[0]);this.shadowElement_.style.cssText=window.getComputedStyle(a,null).cssText;this.shadowElement_.style.position="absolute";this.shadowElement_.style.top=-9999;this.shadowElement_.style.left=-9999;this.shadowElement_.setAttribute("aria-hidden","true");var b=a.value,c=document.createTextNode(b+
-".");this.shadowElement_.appendChild(c);a={0:{startIndex:0,endIndex:0}};for(var d=document.createRange(),e=0,f=0,g=0,h=null,k=!1,l;e<=b.length;){d.setStart(c,e);if(e+8>b.length||0<=b.substr(e,8).indexOf("\n"))k=!0;k?(e++,d.setEnd(c,e),l=d.getBoundingClientRect()):(d.setEnd(c,e+8),l=d.getBoundingClientRect(),l.bottom==h?e+=8:(l&&null!==h&&(k=!0),e++,d.setEnd(c,e),l=d.getBoundingClientRect()));0<e&&"\n"==b[e-1]?(a[g].endIndex=e-1,g++,a[g]={startIndex:e,endIndex:e},h=null,k=!1,f=e):l&&null===h?h=l.bottom:
-l&&l.bottom!=h&&(a[g].endIndex=f,g++,a[g]={startIndex:f,endIndex:f},h=l?l.bottom:null,k=!1);l&&(f=e)}a[g].endIndex=b.length;b=[];for(c=0;c<=g;c++)for(d=a[c].startIndex;d<=a[c].endIndex;d++)b[d]=c;this.characterToLineMap_=b;this.lines_=a;document.body.removeChild(this.shadowElement_)};cvox.EditableTextAreaShadow.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.EditableTextAreaShadow.prototype.getLineStart=function(a){return this.lines_[a].startIndex};
-cvox.EditableTextAreaShadow.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.TextChangeEvent=function(a,b,c,d){this.value=a;this.start=b;this.end=c;this.triggeredByUser=d;this.start>this.end&&(a=this.end,this.end=this.start,this.start=a)};cvox.TypingEcho={CHARACTER:0,WORD:1,CHARACTER_AND_WORD:2,NONE:3,COUNT:4};cvox.TypingEcho.cycle=function(a){return(a+1)%cvox.TypingEcho.COUNT};cvox.TypingEcho.shouldSpeakChar=function(a){return a==cvox.TypingEcho.CHARACTER_AND_WORD||a==cvox.TypingEcho.CHARACTER};cvox.TextHandlerInterface=function(){};
-cvox.TextHandlerInterface.prototype.changed=function(){};cvox.ChromeVoxEditableTextBase=function(a,b,c,d,e){this.value=a;this.start=b;this.end=c;this.isPassword=d;this.tts=e;this.multiline=!1;this.brailleHandler_=cvox.ChromeVox.braille?new cvox.BrailleTextHandler(cvox.ChromeVox.braille):void 0};cvox.ChromeVoxEditableTextBase.useIBeamCursor=cvox.ChromeVox.isMac;cvox.ChromeVoxEditableTextBase.eventTypingEcho=!1;cvox.ChromeVoxEditableTextBase.prototype.maxShortPhraseLen=60;
-cvox.ChromeVoxEditableTextBase.prototype.isPassword=!1;cvox.ChromeVoxEditableTextBase.prototype.lastChangeDescribed=!1;cvox.ChromeVoxEditableTextBase.prototype.getValue=function(){var a="";if(this.multiline){if(a+="multiline editable text. ",this.start==this.end)var b=this.getLine(this.getLineIndex(this.start)),a=b?a+b:a+"blank"}else a=this.node?a+cvox.DomUtil.getValue(this.node):a+this.value,a=a<=this.maxShortPhraseLen?a+", editable text":a.substring(0,this.maxShortPhraseLen)+", editable text";return a};
-cvox.ChromeVoxEditableTextBase.prototype.getLineIndex=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineStart=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineEnd=function(){return this.value.length};cvox.ChromeVoxEditableTextBase.prototype.getLine=function(a){var b=this.getLineStart(a);a=this.getLineEnd(a);b=this.value.substr(b,a-b);return b.replace(/^\s+|\s+$/g,"")};cvox.ChromeVoxEditableTextBase.prototype.isWordBreakChar=function(a){return!!a.match(/^\W$/)};
-cvox.ChromeVoxEditableTextBase.prototype.isLastChar=function(a){return void 0==this.getLineIndex(a.start+1)};cvox.ChromeVoxEditableTextBase.prototype.speak=function(a,b,c){if(!this.node||document.activeElement==this.node){var d=cvox.AbstractTts.QUEUE_MODE_QUEUE;!0===b&&(d=cvox.AbstractTts.QUEUE_MODE_FLUSH);this.tts.speak(a,d,c||{})}};
-cvox.ChromeVoxEditableTextBase.prototype.changed=function(a){if(a.value!=this.value||a.start!=this.start||a.end!=this.end||this.isLastChar(a)){if(a.value==this.value?this.describeSelectionChanged(a):this.describeTextChanged(a),this.lastChangeDescribed=!0,this.value=a.value,this.start=a.start,this.end=a.end,this.brailleHandler_){var b=this.getLine(this.getLineIndex(a.start)),c=this.getLineStart(this.getLineIndex(a.start)),d=a.start-c;a=a.end-c;this.brailleHandler_.changed(b,d,a,this.multiline)}}else this.lastChangeDescribed=
-!1};
-cvox.ChromeVoxEditableTextBase.prototype.describeSelectionChanged=function(a){if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser);else if(a.start==a.end)if(this.start!=this.end)this.speak(cvox.ChromeVox.msgs.getMsg("Unselected"),a.triggeredByUser);else if(this.getLineIndex(this.start)!=this.getLineIndex(a.start)){var b=this.getLine(this.getLineIndex(a.start));""==b&&(b=cvox.ChromeVox.msgs.getMsg("text_box_blank"));this.speak(b,
-a.triggeredByUser)}else this.start==a.start+1||this.start==a.start-1?cvox.ChromeVoxEditableTextBase.useIBeamCursor?this.speak(this.value.substr(Math.min(this.start,a.start),1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):a.start==this.value.length?this.speak(cvox.ChromeVox.msgs.getMsg("end"),a.triggeredByUser):this.speak(this.value.substr(a.start,1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):this.speak(this.value.substr(Math.min(this.start,a.start),Math.abs(this.start-
-a.start)),a.triggeredByUser);else this.start+1==a.start&&this.end==this.value.length&&a.end==this.value.length?(this.speak(this.value.substr(this.start,1),a.triggeredByUser),this.speak(this.value.substr(a.start))):this.start==this.end?(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected"))):this.start==a.start&&this.end<a.end?(this.speak(this.value.substr(this.end,a.end-this.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):
-this.start==a.start&&this.end>a.end?(this.speak(this.value.substr(a.end,this.end-a.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):this.end==a.end&&this.start>a.start?(this.speak(this.value.substr(a.start,this.start-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):this.end==a.end&&this.start<a.start?(this.speak(this.value.substr(this.start,a.start-this.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):
-(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected")))};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChanged=function(a){var b={};a.value.length<this.value.length&&(b=cvox.AbstractTts.PERSONALITY_DELETED);if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser,b);else{var c=this.value,d=c.length,e=a.value.length,f="",g=a.value,h=a.end;a.start<h&&h==e&&(f=g.substr(a.start),g=g.substr(0,a.start),h=a.start);var k=this.start,l=d-this.end;if(e>=k+l+(h-a.start)&&g.substr(0,k)==
-c.substr(0,k)&&g.substr(e-l)==c.substr(this.end))this instanceof cvox.ChromeVoxEditableContentEditable&&!(e<d||this.isWordBreakChar(a.value[e-1]||""))||this.describeTextChangedHelper(a,k,l,f,b);else if(k=a.start,l=e-h,this.start==this.end&&a.start==h&&g.substr(0,k)==c.substr(0,k)&&g.substr(e-l)==c.substr(d-l))this.describeTextChangedHelper(a,k,l,f,b);else{g+=f;if(g.length==c.length+1||g.length+1==c.length){if(g.length>c.length){if(0==g.indexOf(c)){this.speak(g[g.length-1],a.triggeredByUser,b);return}if(1==
-g.indexOf(c)){this.speak(g[0],a.triggeredByUser,b);return}}if(g.length<c.length){if(0==c.indexOf(g)){this.speak(c[c.length-1],a.triggeredByUser,b);return}if(1==c.indexOf(g)){this.speak(c[0],a.triggeredByUser,b);return}}}if(this.multiline)a.value.length<this.value.length&&this.speak(cvox.ChromeVox.msgs.getMsg("text_deleted"),a.triggeredByUser,b);else if(e<=this.maxShortPhraseLen)this.describeTextChangedHelper(a,0,0,"",b);else{for(k=0;k<d&&k<e&&c[k]==g[k];)k++;for(;0<k&&!this.isWordBreakChar(c[k-1]);)k--;
-for(l=0;l<d-k&&l<e-k&&c[d-l-1]==g[e-l-1];)l++;for(;0<l&&!this.isWordBreakChar(c[d-l]);)l--;this.describeTextChangedHelper(a,k,l,"",b)}}}};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChangedHelper=function(a,b,c,d,e){var f=this.value.length,g=a.value.length,f=f-b-c,h=this.value.substr(b,f),k=g-b-c;c=a.value.substr(b,k);var l="",g=a.triggeredByUser;if(1<k)l=c;else if(1==k)if((cvox.ChromeVox.typingEcho==cvox.TypingEcho.WORD||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)&&this.isWordBreakChar(c)&&0<b&&!this.isWordBreakChar(a.value.substr(b-1,1))){for(f=b;0<f&&!this.isWordBreakChar(a.value[f-1]);)f--;f<b?l=a.value.substr(f,
-b+1-f):(l=c,g=!1)}else{if(cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)l=cvox.ChromeVoxEditableTextBase.eventTypingEcho?"":c}else 1<f&&!d?l=h+", deleted":1==f&&(l=h);d&&l?l+=", "+d:d&&(l=d);l&&this.speak(l,g,e)};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextCharacter=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousCharacter=function(){return!1};
-cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextParagraph=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousParagraph=function(){return!1};
-cvox.ChromeVoxEditableElement=function(a,b,c,d,e,f){cvox.ChromeVoxEditableTextBase.call(this,b,c,d,e,f);this.node=a;this.justSpokeDescription_=!1};goog.inherits(cvox.ChromeVoxEditableElement,cvox.ChromeVoxEditableTextBase);cvox.ChromeVoxEditableElement.prototype.changed=function(a){this.justSpokeDescription_&&this.value==a.value&&(this.value=a.value,this.start=a.start,this.end=a.end,this.justSpokeDescription_=!1);cvox.ChromeVoxEditableElement.superClass_.changed.call(this,a)};
-cvox.ChromeVoxEditableElement.prototype.getValue=function(){this.justSpokeDescription_=!0;return cvox.ChromeVoxEditableElement.superClass_.getValue.call(this)};cvox.ChromeVoxEditableElement.prototype.moveCursorToNextCharacter=function(){var a=this.node;a.selectionEnd++;a.selectionStart=a.selectionEnd;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousCharacter=function(){var a=this.node;a.selectionStart--;a.selectionEnd=a.selectionStart;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextWord=function(){var a=this.node,b=a.value.length,c=/\W+/gm,d=a.value.substring(a.selectionEnd),e=c.exec(d);null!==e&&0==e.index&&(e=c.exec(d));b=null===e?b:e.index+a.selectionEnd;a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousWord=function(){for(var a=this.node,b=/\W+/gm,c=a.value.substring(0,a.selectionStart),d=0;null!==b.exec(c);)b.lastIndex<a.selectionStart&&(d=b.lastIndex);a.selectionStart=a.selectionEnd=d;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextParagraph=function(){var a=this.node,b=a.value.length,c=a.selectionEnd>=b?b:a.value.indexOf("\n",a.selectionEnd);0>c&&(c=b);a.selectionStart=a.selectionEnd=c+1;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousParagraph=function(){var a=this.node,b=0>=a.selectionStart?0:a.value.lastIndexOf("\n",a.selectionStart-2)+1;0>b&&(b=0);a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableHTMLInput=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,"password"===a.type,b)};goog.inherits(cvox.ChromeVoxEditableHTMLInput,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableHTMLInput.prototype.update=function(a){var b=this.node.value;a=new cvox.TextChangeEvent(b,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,!1,b);this.multiline=!0;this.shadowIsCurrent_=!1};goog.inherits(cvox.ChromeVoxEditableTextArea,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableTextArea.prototype.update=function(a){this.node.value!=this.value&&(this.shadowIsCurrent_=!1);a=new cvox.TextChangeEvent(this.node.value,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineIndex=function(a){return this.getShadow().getLineIndex(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineStart=function(a){return this.getShadow().getLineStart(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineEnd=function(a){return this.getShadow().getLineEnd(a)};
-cvox.ChromeVoxEditableTextArea.prototype.getShadow=function(){var a=cvox.ChromeVoxEditableTextArea.shadow_;a||(a=cvox.ChromeVoxEditableTextArea.shadow_=new cvox.EditableTextAreaShadow);this.shadowIsCurrent_||(a.update(this.node),this.shadowIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToNextLine=function(){var a=this.node,b=a.value.length;if(a.selectionEnd>=b)return!1;var c=this.getShadow(),d=c.getLineIndex(a.selectionEnd),e=c.getLineStart(d),e=a.selectionEnd-e,f=0==b?0:c.getLineIndex(b-1),b=d>=f?b:Math.min(c.getLineStart(d+1)+e,c.getLineEnd(d+1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToPreviousLine=function(){var a=this.node;if(0>=a.selectionStart)return!1;var b=this.getShadow(),c=b.getLineIndex(a.selectionStart),d=b.getLineStart(c),d=a.selectionStart-d,b=0>=c?0:Math.min(b.getLineStart(c-1)+d,b.getLineEnd(c-1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,"",0,0,!1,b);this.extractorIsCurrent_=!1;var c=this.getExtractor();this.value=c.getText();this.start=c.getStartIndex();this.end=c.getEndIndex();this.multiline=!0};goog.inherits(cvox.ChromeVoxEditableContentEditable,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableContentEditable.prototype.update=function(a){this.extractorIsCurrent_=!1;a=new cvox.TextChangeEvent(this.getExtractor().getText(),this.getExtractor().getStartIndex(),this.getExtractor().getEndIndex(),a);this.changed(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineIndex=function(a){return this.getExtractor().getLineIndex(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineStart=function(a){return this.getExtractor().getLineStart(a)};
-cvox.ChromeVoxEditableContentEditable.prototype.getLineEnd=function(a){return this.getExtractor().getLineEnd(a)};cvox.ChromeVoxEditableContentEditable.prototype.getExtractor=function(){var a=cvox.ChromeVoxEditableContentEditable.extractor_;a||(a=cvox.ChromeVoxEditableContentEditable.extractor_=new cvox.ContentEditableExtractor);this.extractorIsCurrent_||(a.update(this.node),this.extractorIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableContentEditable.prototype.describeSelectionChanged=function(a){a.triggeredByUser&&(this.start==this.end&&a.start==a.end&&1!=Math.abs(this.start-a.start)&&this.isLastChar(a)?this.speak(cvox.ChromeVox.msgs.getMsg("text_box_blank"),!0):cvox.ChromeVoxEditableContentEditable.superClass_.describeSelectionChanged.call(this,a))};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextCharacter=function(){window.getSelection().modify("move","forward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousCharacter=function(){window.getSelection().modify("move","backward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextParagraph=function(){window.getSelection().modify("move","forward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousParagraph=function(){window.getSelection().modify("move","backward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEventSuspender=function(){};cvox.ChromeVoxEventSuspender.suspendLevel_=0;cvox.ChromeVoxEventSuspender.enterSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_+=1};cvox.ChromeVoxEventSuspender.exitSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_-=1};cvox.ChromeVoxEventSuspender.areEventsSuspended=function(){return 0<cvox.ChromeVoxEventSuspender.suspendLevel_};
-cvox.ChromeVoxEventSuspender.withSuspendedEvents=function(a){return function(){cvox.ChromeVoxEventSuspender.enterSuspendEvents();var b=a.apply(this,arguments);cvox.ChromeVoxEventSuspender.exitSuspendEvents();return b}};cvox.ChromeVoxEventSuspender.makeSuspendableHandler=function(a,b){return function(){return cvox.ChromeVoxEventSuspender.areEventsSuspended()?b:a()}};cvox.Focuser={};
-cvox.Focuser.setFocus=function(a,b){var c=window.getSelection(),d;0<c.rangeCount&&(d=c.getRangeAt(0));document.activeElement&&!cvox.DomUtil.isDescendantOfNode(a,document.activeElement)&&document.activeElement.blur();a&&a.constructor==HTMLVideoElement&&(cvox.DomUtil.isFocusable(a)||a.setAttribute("tabIndex",0));if(b&&!cvox.DomUtil.isFocusable(a)){var e=cvox.DomUtil.findFocusableDescendant(a);e&&(a=e)}else for(;a&&!cvox.DomUtil.isFocusable(a);)a=a.parentNode;cvox.DomUtil.isFocusable(a)?"IFRAME"!=a.tagName&&
-(cvox.ChromeVoxEventSuspender.areEventsSuspended()?(cvox.Focuser.shouldEnterSuspendEvents_(a)&&cvox.ChromeVoxEventSuspender.enterSuspendEvents(),window.setTimeout(function(){a.focus();cvox.ChromeVoxEventSuspender.exitSuspendEvents()},0)):window.setTimeout(function(){a.focus()},0)):document.activeElement&&"BODY"!=document.activeElement.tagName&&document.activeElement.blur();cvox.DomUtil.isInputTypeText(a)?a.select():d&&(c.removeAllRanges(),c.addRange(d))};
-cvox.Focuser.shouldEnterSuspendEvents_=function(a){if(a.constructor&&a.constructor==HTMLVideoElement)return!1;if(a.hasAttribute)switch(a.getAttribute("type")){case "time":case "date":case "week":case "month":return!1}return!0};cvox.ChromeVoxHTMLMediaWidget=function(a){var b=this;this.mediaElem_=a;this.keyListener_=function(a){b.eventHandler_(a)};this.blurListener_=function(){b.shutdown()};this.mediaElem_.addEventListener("keydown",this.keyListener_,!1);this.mediaElem_.addEventListener("keyup",this.keyListener_,!1);this.mediaElem_.addEventListener("blur",this.blurListener_,!1)};
-cvox.ChromeVoxHTMLMediaWidget.prototype.shutdown=function(){this.mediaElem_.removeEventListener("blur",this.blurListener_,!1);this.mediaElem_.removeEventListener("keydown",this.keyListener_,!1);this.mediaElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLMediaWidget.prototype.jumpToTime_=function(a){0>a&&(a=0);a>this.mediaElem_.duration&&(a=this.mediaElem_.duration);this.mediaElem_.currentTime=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.setVolume_=function(a){0>a&&(a=0);1<a&&(a=1);this.mediaElem_.volume=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.eventHandler_=function(a){"keydown"==a.type&&(13==a.keyCode||32==a.keyCode?this.mediaElem_.paused?this.mediaElem_.play():this.mediaElem_.pause():39==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime+this.mediaElem_.duration/10):37==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime-this.mediaElem_.duration/10):38==a.keyCode?this.setVolume_(this.mediaElem_.volume+0.1):40==a.keyCode&&this.setVolume_(this.mediaElem_.volume-0.1))};cvox.ChromeVoxHTMLTimeWidget=function(a,b){var c=this;this.timeElem_=a;this.timeTts_=b;this.pMinutes_=this.pHours_=-1;this.pMilliseconds_=this.pSeconds_=0;this.pAmpm_="";this.pos_=0;this.maxPos_=2;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};if(this.timeElem_.hasAttribute("step")){var d=this.timeElem_.getAttribute("step");0<d&&(this.maxPos_=1<=d?3:4)}0==this.timeElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");
-e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e);e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e)}this.timeElem_.addEventListener("keydown",this.keyListener_,!1);this.timeElem_.addEventListener("keyup",this.keyListener_,!1);this.timeElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLTimeWidget.prototype.shutdown=function(){this.timeElem_.removeEventListener("blur",this.blurListener_,!1);this.timeElem_.removeEventListener("keydown",this.keyListener_,!1);this.timeElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLTimeWidget.prototype.forceInitTime_=function(){this.timeElem_.setAttribute("value","12:00")};
-cvox.ChromeVoxHTMLTimeWidget.prototype.handlePosChange_=function(){0>this.pos_&&(this.pos_=0);this.pos_>this.maxPos_&&(this.pos_=this.maxPos_);if(this.pos_==this.maxPos_)this.pAmpm_="";else switch(this.pos_){case 0:this.pHours_=-1;break;case 1:this.pMinutes_=-1;break;case 2:this.pSeconds_=-1;break;case 3:this.pMilliseconds_=-1}};
-cvox.ChromeVoxHTMLTimeWidget.prototype.update_=function(a){var b=this.timeElem_.value.split(":");if(1>b.length)this.forceInitTime_();else{var c=b[0],d=-1,e=0,f=0,g=cvox.ChromeVox.msgs.getMsg("timewidget_am");1<b.length&&(d=b[1]);2<b.length&&(b=b[2].split("."),e=b[0],1<b.length&&(f=b[1]));12<c&&(c-=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));12==c&&(g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));0==c&&(c=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_am"));b="";a&&(b=cvox.DomUtil.getName(this.timeElem_,
-!0,!0)+"\n");c!=this.pHours_&&(b=b+c+" "+cvox.ChromeVox.msgs.getMsg("timewidget_hours")+"\n",this.pHours_=c);d!=this.pMinutes_&&(b=b+d+" "+cvox.ChromeVox.msgs.getMsg("timewidget_minutes")+"\n",this.pMinutes_=d);e!=this.pSeconds_&&(b=b+e+" "+cvox.ChromeVox.msgs.getMsg("timewidget_seconds")+"\n",this.pSeconds_=e);f!=this.pMilliseconds_&&(b=b+f+" "+cvox.ChromeVox.msgs.getMsg("timewidget_milliseconds")+"\n",this.pMilliseconds_=f);g!=this.pAmpm_&&(b+=g,this.pAmpm_=g);0<b.length&&this.timeTts_.speak(b,
-0,null)}};cvox.ChromeVoxHTMLTimeWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.ActiveIndicator=function(){this.lastMoveTime_=0;this.zoom_=1;this.updateIndicatorTimeoutId_=this.lastClientRects_=this.lastSyncTarget_=this.container_=null;this.blurred_=!1;window.addEventListener("focus",goog.bind(function(){this.blurred_=!1;this.container_&&this.container_.classList.remove("cvox_indicator_window_not_focused")},this),!1);window.addEventListener("blur",goog.bind(function(){this.blurred_=!0;this.container_&&this.container_.classList.add("cvox_indicator_window_not_focused")},this),
-!1)};cvox.ActiveIndicator.STYLE=".cvox_indicator_container { position: absolute !important; left: 0 !important; top: 0 !important; z-index: 2147483647 !important; pointer-events: none !important;}.cvox_indicator_window_not_focused { visibility: hidden !important;}.cvox_indicator_pulsing { -webkit-animation: cvox_indicator_pulsing_animation 0s 2 alternate !important; -webkit-animation-timing-function: ease-in-out !important;}.cvox_indicator_region { opacity: 0 !important; -webkit-transition: opacity 1s !important;}.cvox_indicator_visible { opacity: 1 !important;}.cvox_indicator_container .cvox_indicator_region * { position:absolute !important; box-shadow: 0 0 4px 4px #f7983a !important; border-radius: 6px !important; -webkit-transition: none !important;}.cvox_indicator_animate_normal .cvox_indicator_region * { -webkit-transition: all 0.3s !important;}.cvox_indicator_animate_quick .cvox_indicator_region * { -webkit-transition: all 0.1s !important;}.cvox_indicator_top { border-radius: inherit inherit 0 0 !important;}.cvox_indicator_middle_nw { border-radius: inherit 0 0 0 !important;}.cvox_indicator_middle_ne { border-radius: 0 inherit 0 0 !important;}.cvox_indicator_middle_se { border-radius: 0 0 inherit 0 !important;}.cvox_indicator_middle_sw { border-radius: 0 0 0 inherit !important;}.cvox_indicator_bottom { border-radius: 0 0 inherit inherit !important;}@-webkit-keyframes cvox_indicator_pulsing_animation { 0% {opacity: 1.0} 50% {opacity: 0.5} 100% {opacity: 1.0}}";
-cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS=100;cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS=300;cvox.ActiveIndicator.MARGIN=8;cvox.ActiveIndicator.prototype.removeFromDom=function(){this.container_&&this.container_.parentElement&&this.container_.parentElement.removeChild(this.container_)};cvox.ActiveIndicator.prototype.syncToNode=function(a){a&&(a==document.body?this.removeFromDom():this.syncToNodes([a]))};
-cvox.ActiveIndicator.prototype.syncToNodes=function(a){var b=this.clientRectsFromNodes_(a);this.moveIndicator_(b,cvox.ActiveIndicator.MARGIN);this.lastSyncTarget_=a;this.lastClientRects_=b;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToRange=function(a){var b=cvox.ActiveIndicator.MARGIN;a.startContainer==a.endContainer&&a.startOffset+1==a.endOffset&&(b=1);var c=a.getClientRects();this.moveIndicator_(c,b);this.lastSyncTarget_=a;this.lastClientRects_=c;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToCursorSelection=function(a){if(a.start.node==a.end.node&&a.start.index==a.end.index)this.syncToNode(a.start.node);else{var b=document.createRange();b.setStart(a.start.node,a.start.index);b.setEnd(a.end.node,a.end.index);this.syncToRange(b)}};cvox.ActiveIndicator.prototype.updateIndicatorIfChanged=function(){this.updateIndicatorTimeoutId_||(this.updateIndicatorTimeoutId_=window.setTimeout(goog.bind(function(){this.handleUpdateIndicatorIfChanged_()},this),100))};
-cvox.ActiveIndicator.prototype.handleUpdateIndicatorIfChanged_=function(){this.updateIndicatorTimeoutId_=null;if(this.lastSyncTarget_){var a;if((a=this.lastSyncTarget_ instanceof Array?this.clientRectsFromNodes_(this.lastSyncTarget_):this.lastSyncTarget_.getClientRects())&&0!=a.length){var b=!1;if(a.length!=this.lastClientRects_.length)b=!0;else for(var c=0;c<this.lastClientRects_.length;++c){var d=this.lastClientRects_[c],e=a[c];if(d.top!=e.top||d.right!=e.right||d.bottom!=e.bottom||d.left!=d.left){b=
-!0;break}}b&&(this.moveIndicator_(a,cvox.ActiveIndicator.MARGIN),this.lastClientRects_=a)}else this.syncToNode(document.body)}};cvox.ActiveIndicator.prototype.clientRectsFromNodes_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(d.constructor==Text){var e=document.createRange();e.selectNode(d);e=e.getClientRects()}else{for(;!d.getClientRects;)d=d.parentElement;e=d.getClientRects()}for(d=0;d<e.length;++d)b.push(e[d])}return b};
-cvox.ActiveIndicator.prototype.moveIndicator_=function(a,b){if(document.body.isContentEditable)this.removeFromDom();else{var c=a.length;if(0!=c){var d,e;"static"!=window.getComputedStyle(document.body,null).position?(d=-document.body.getBoundingClientRect().left,e=-document.body.getBoundingClientRect().top):"static"!=window.getComputedStyle(document.documentElement,null).position?(d=-document.documentElement.getBoundingClientRect().left,e=-document.documentElement.getBoundingClientRect().top):(d=
-window.pageXOffset,e=window.pageYOffset);for(var f=[],g=0;g<c;g++)f.push(this.inset_(a[g],d,e,-d,-e));if(!this.container_||!this.container_.parentElement){g=document.getElementsByClassName("cvox_indicator_container");for(c=0;d=g[c];c++)d.parentNode&&d.parentNode.removeChild(d);this.container_=this.createDiv_(document.body,"cvox_indicator_container",document.body.firstChild)}g=document.createElement("style");g.id="cvox_indicator_style";g.innerHTML=cvox.ActiveIndicator.STYLE;cvox.DomUtil.addNodeToHead(g,
-g.id);g=(new Date).getTime();c=g-this.lastMoveTime_;this.container_.className="cvox_indicator_container";document.hasFocus()&&!this.blurred_||this.container_.classList.add("cvox_indicator_window_not_focused");c>cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS?this.container_.classList.add("cvox_indicator_animate_normal"):c>cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS&&this.container_.classList.add("cvox_indicator_animate_quick");this.lastMoveTime_=g;this.computeZoomLevel_();for(window.setTimeout(goog.bind(function(){this.container_.classList.add("cvox_indicator_pulsing")},
-this),0);1<this.container_.childElementCount;)this.container_.removeChild(this.container_.lastElementChild);d=[[f[0]]];e=[f[0]];for(g=1;g<f.length;g++){for(var h=!1,c=0;c<d.length&&!h;c++)this.intersects_(f[g],e[c])&&(d[c].push(f[g]),e[c]=this.union_(e[c],f[g]),h=!0);h||(d.push([f[g]]),e.push(f[g]))}do for(f=!1,g=0;g<d.length-1&&!f;g++)for(c=g+1;c<d.length&&!f;c++)this.intersects_(e[g],e[c])&&(d[g]=d[g].concat(d[c]),e[g]=this.union_(e[g],e[c]),d.splice(c,1),e.splice(c,1),f=!0);while(f);for(g=0;g<
-d.length;g++)d[g].sort(function(a,b){return a.top!=b.top?a.top-b.top:a.left-b.left});for(g=0;g<d.length;g++)f=null,0==g&&1==this.container_.childElementCount&&6==this.container_.children[0].childElementCount&&(f=this.container_.children[0]),this.updateIndicatorRegion_(d[g],f,b)}}};
-cvox.ActiveIndicator.prototype.updateIndicatorRegion_=function(a,b,c){if(b)var d=b.children[0],e=b.children[1],f=b.children[2],g=b.children[3],h=b.children[4],k=b.children[5];else b=this.createDiv_(this.container_,"cvox_indicator_region"),window.setTimeout(function(){b.classList.add("cvox_indicator_visible")},0),d=this.createDiv_(b,"cvox_indicator_top"),e=this.createDiv_(b,"cvox_indicator_middle_nw"),f=this.createDiv_(b,"cvox_indicator_middle_ne"),g=this.createDiv_(b,"cvox_indicator_middle_sw"),h=
-this.createDiv_(b,"cvox_indicator_middle_se"),k=this.createDiv_(b,"cvox_indicator_bottom");for(var l=a[0],m=Math.floor((l.top+l.bottom)/2),p=1,q=a.length;p<q&&a[p].top<m;)l=this.union_(l,a[p]),m=Math.floor((l.top+l.bottom)/2),p++;if(p==q)l=this.inset_(l,-c,-c,-c,-c),a=Math.floor((3*l.top+1*l.bottom)/4),c=Math.floor((2*l.top+2*l.bottom)/4),m=Math.floor((1*l.top+3*l.bottom)/4),this.setElementCoords_(d,l.left,l.top,l.right,a,!0,!0,!0,!1),this.setElementCoords_(e,l.left,a,l.left,c,!0,!0,!1,!1),this.setElementCoords_(g,
-l.left,c,l.left,m,!0,!1,!1,!0),this.setElementCoords_(f,l.right,a,l.right,c,!1,!0,!0,!1),this.setElementCoords_(h,l.right,c,l.right,m,!1,!1,!0,!0),this.setElementCoords_(k,l.left,m,l.right,l.bottom,!0,!1,!0,!0);else{for(var m=a[q-1],n=Math.floor((m.top+m.bottom)/2),q=q-2;0<=q&&a[q].bottom>n;)m=this.union_(m,a[q]),n=Math.floor((m.top+m.bottom)/2),q--;l=this.inset_(l,-c,-c,-c,c);m=this.inset_(m,-c,c,-c,-c);if(p>q)n=this.union_(l,m),n.top=l.bottom,n.bottom=m.top,n.height=Math.floor((n.top+n.bottom)/
-2);else{n=a[p];for(p+=1;p<=q;)n=this.union_(n,a[p]),p++;n=this.inset_(n,-c,-c,-c,-c);n.left=Math.min(n.left,l.left,m.left);n.right=Math.max(n.right,l.right,m.right);n.width=n.right-n.left}l.right>n.right-40&&(l.right=n.right,l.width=l.right-l.left);l.left<n.left+40&&(l.left=n.left,l.width=l.right-l.left);m.right>n.right-40&&(m.right=n.right,m.width=m.right-m.left);m.left<n.left+40&&(m.left=n.left,m.width=m.right-m.left);a=Math.floor((n.top+n.bottom)/2);this.setElementRect_(d,l,!0,!0,!0,!1);this.setElementRect_(k,
-m,!0,!1,!0,!0);this.setElementCoords_(e,n.left,l.bottom,l.left,a,!0,!0,!1,!1);this.setElementCoords_(f,l.right,l.bottom,n.right,a,!1,!0,!0,!1);this.setElementCoords_(g,n.left,a,m.left,m.top,!0,!1,!1,!0);this.setElementCoords_(h,m.right,a,n.right,m.top,!1,!1,!0,!0)}};cvox.ActiveIndicator.prototype.intersects_=function(a,b){var c=2*cvox.ActiveIndicator.MARGIN;return b.left<=a.right+c&&b.right>=a.left-c&&b.top<=a.bottom+c&&b.bottom>=a.top-c};
-cvox.ActiveIndicator.prototype.union_=function(a,b){var c={left:Math.min(a.left,b.left),top:Math.min(a.top,b.top),right:Math.max(a.right,b.right),bottom:Math.max(a.bottom,b.bottom)};c.width=c.right-c.left;c.height=c.bottom-c.top;return c};cvox.ActiveIndicator.prototype.inset_=function(a,b,c,d,e){a={left:a.left+b,top:a.top+c,right:a.right-d,bottom:a.bottom-e};a.width=a.right-a.left;a.height=a.bottom-a.top;return a};
-cvox.ActiveIndicator.prototype.createDiv_=function(a,b,c){var d=document.createElement("div");d.className=b;c?a.insertBefore(d,c):a.appendChild(d);return d};cvox.ActiveIndicator.prototype.fixZoom_=function(a){return(Math.round(a*this.zoom_)+0.1)/this.zoom_};cvox.ActiveIndicator.prototype.fixZoomSum_=function(a,b){var c=Math.round(a*this.zoom_),d=Math.round((a+b)*this.zoom_),c=d-c;return(c+0.1)/this.zoom_};
-cvox.ActiveIndicator.prototype.setElementCoords_=function(a,b,c,d,e,f,g,h,k){var l=d-b,m=e-c;d-=b;e-=c;var p=f?-20:0,q=g?-20:0,n=h?20:0,s=k?20:0;0==d&&(h?(b-=5,d+=5):f&&(d+=10),s=q=10,c-=10,e+=20);k||(e+=5);g||(c-=5,e+=5,q+=5,s+=5);n=0==n&&0==l?1:this.fixZoomSum_(b,n+l);s=this.fixZoomSum_(c,s+m);a.style.left=this.fixZoom_(b)+"px";a.style.top=this.fixZoom_(c)+"px";a.style.width=this.fixZoomSum_(b,d)+"px";a.style.height=this.fixZoomSum_(c,e)+"px";a.style.clip="rect("+[q,n,s,p].join("px ")+"px)"};
-cvox.ActiveIndicator.prototype.setElementRect_=function(a,b,c,d,e,f){this.setElementCoords_(a,b.left,b.top,b.right,b.bottom,c,d,e,f)};
-cvox.ActiveIndicator.prototype.computeZoomLevel_=function(){if(window.innerHeight!==this.innerHeight_||window.innerWidth!==this.innerWidth_){this.innerHeight_=window.innerHeight;this.innerWidth_=window.innerWidth;var a=document.createElement("div");a.innerHTML="X";a.setAttribute("style","font: 5000px/1em sans-serif !important; -webkit-text-size-adjust:none !important; visibility:hidden !important; left: -10000px !important; top: -10000px !important; position:absolute !important;");document.body.appendChild(a);
-var b=5E3/a.clientHeight,b=Math.round(500*b)/500;0.1<b&&10>b&&(this.zoom_=b);a.parentNode.removeChild(a)}};cvox.NodeBreadcrumb=function(){this.cvTagCounter_=0};goog.addSingletonGetter(cvox.NodeBreadcrumb);cvox.NodeBreadcrumb.TOUCHED_TAG="chromevoxtag";cvox.NodeBreadcrumb.NEEDED_TAG_="chromevoxneeded";
-cvox.NodeBreadcrumb.prototype.tagCurrentNode=function(){for(var a,b=cvox.ChromeVox.navigationManager.getCurrentNode();b&&!b.hasAttribute;)b=b.parentNode;b?b.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a=b.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):(a=this.cvTagCounter_,b.setAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG,a),this.cvTagCounter_++):a=-1;return a};
-cvox.NodeBreadcrumb.prototype.smartStart_=function(a){for(var b=0;b<a.children.length;++b){var c=a.children[b];this.smartStart_(c);c.getAttribute&&!goog.isNull(c.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))&&this.setNeeded_(c)}};cvox.NodeBreadcrumb.prototype.setNeeded_=function(a){a&&a.getAttribute&&goog.isNull(a.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&(a.setAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_,!0),"body"!==a.nodeName&&this.setNeeded_(a.parentElement))};
-cvox.NodeBreadcrumb.prototype.smartClone_=function(a){var b={};b[cvox.NodeBreadcrumb.TOUCHED_TAG]=!0;b[cvox.NodeBreadcrumb.NEEDED_TAG_]=!0;if(a.getAttribute&&a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))return cvox.DomUtil.deepClone(a,b);for(var b=cvox.DomUtil.shallowChildlessClone(a,b),c=0;c<a.childNodes.length;++c){var d=a.childNodes[c];d.getAttribute&&!goog.isNull(d.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&b.appendChild(this.smartClone_(d))}return b};
-cvox.NodeBreadcrumb.prototype.dumpWalkedDom=function(){this.smartStart_(document.body);return this.smartClone_(document.body)};cvox.NodeBreadcrumb.getCurrentNodeTag=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a&&!a.hasAttribute;)a=a.parentNode;return a&&a.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):-1};cvox.HistoryEvent=function(a){this.spoken_=[];a?this.userCommand_=a.cmd:this.startTime_=(new Date).getTime()};cvox.HistoryEvent.prototype.withUserCommand=function(a){if(this.userCommand_)return window.console.error("Two user commands on "+a,this),this;this.userCommand_=a;return this};cvox.HistoryEvent.prototype.speak=function(a){this.spoken_.push(a);return this};
-cvox.HistoryEvent.prototype.done=function(){this.endTime_=(new Date).getTime();cvox.NodeBreadcrumb.getInstance().tagCurrentNode();window.console.log("User command done.",this);return this};cvox.HistoryEvent.prototype.outputObject=function(){return{start:this.startTime_,end:this.endTime_,cmd:this.userCommand_,spoken:this.spoken_}};
-cvox.HistoryEvent.prototype.outputHTML=function(){var a=document.createElement("div");a.className="cvoxHistoryEvent";var b=this.endTime_-this.startTime_;a.innerHTML=this.userCommand_+" ("+b+"ms)";for(b=0;b<this.spoken_.length;b++){var c=document.createElement("div");c.className="cvoxHistoryEventSpoken";c.innerHTML=this.spoken_[b].substr(0,20);20<this.spoken_[b].length&&(c.innerHTML+="...");a.appendChild(c)}return a};
-cvox.HistoryEvent.prototype.outputJs=function(){var a="this.waitForCalm(this.userCommand, '"+this.userCommand_+"')";return a=0<this.spoken_.length?a+("\n .waitForCalm(this.assertSpoken, '"+cvox.DomUtil.collapseWhitespace(this.spoken_.join(" "))+"');\n"):a+";\n"};cvox.History=function(){this.recording_=!1;this.events_=[];this.styleDiv_=this.listDiv_=this.mainDiv_=this.currentEvent_=null;this.nodeBreadcrumb_=cvox.NodeBreadcrumb.getInstance()};goog.addSingletonGetter(cvox.History);
-cvox.History.prototype.addListDiv_=function(){this.mainDiv_=document.createElement("div");this.mainDiv_.style.position="fixed";this.mainDiv_.style.bottom="0";this.mainDiv_.style.right="0";this.mainDiv_.style.zIndex="999";this.listDiv_=document.createElement("div");this.listDiv_.id="cvoxEventList";this.mainDiv_.appendChild(this.listDiv_);var a=document.createElement("div"),b=document.createElement("button");b.onclick=cvox.History.sendToFeedback;b.innerHTML="Create bug";a.appendChild(b);this.mainDiv_.appendChild(a);
-a=document.createElement("div");b=document.createElement("button");b.onclick=cvox.History.dumpJs;b.innerHTML="Dump test case";a.appendChild(b);this.mainDiv_.appendChild(a);document.body.appendChild(this.mainDiv_);this.styleDiv_=document.createElement("style");this.styleDiv_.innerHTML=".cvoxHistoryEventSpoken { color: gray; font-size: 75% }";document.body.appendChild(this.styleDiv_)};
-cvox.History.prototype.removeListDiv_=function(){document.body.removeChild(this.mainDiv_);document.body.removeChild(this.styleDiv_);this.styleDiv_=this.listDiv_=this.mainDiv_=null};
-cvox.History.prototype.addBigTextBox_=function(){function a(a,b){var c=document.createElement("button");c.onclick=b;c.innerHTML=a;d.appendChild(c)}var b=document.createElement("div");b.style.position="fixed";b.style.top="0";b.style.left="0";b.style.zIndex="999";var c=document.createElement("textarea");c.style.width="500px";c.style.height="500px";c.innerHTML=this.dumpJsOutput_();b.appendChild(c);var d=document.createElement("div");b.appendChild(d);a("Close dialog",function(){document.body.removeChild(b)});
-a("Remove fluff",goog.bind(function(){c.innerHTML=this.dumpJsOutput_(["stopSpeech","toggleKeyPrefix"])},this));document.body.appendChild(b)};cvox.History.prototype.startRecording=function(){this.recording_=!0;this.addListDiv_()};cvox.History.prototype.stopRecording=function(){this.recording_=!1;this.removeListDiv_();this.events_=[];this.currentEvent_=null};
-cvox.History.prototype.enterUserCommand=function(a){this.recording_&&(this.currentEvent_&&window.console.error("User command "+a+" overlaps current event",this.currentEvent_),this.currentEvent_=(new cvox.HistoryEvent).withUserCommand(a),this.events_.push(this.currentEvent_))};cvox.History.prototype.exitUserCommand=function(){this.recording_&&this.currentEvent_&&(this.currentEvent_.done(),this.listDiv_.appendChild(this.currentEvent_.outputHTML()),this.currentEvent_=null)};
-cvox.History.prototype.speak=function(a){if(!this.recording_)return this;if(!this.currentEvent_)return window.console.error("Speak called outside of a user command."),this;this.currentEvent_.speak(a);return this};cvox.History.prototype.isSpeaking=function(){return!1};cvox.History.prototype.stop=function(){};cvox.History.prototype.increaseOrDecreaseProperty=function(){};cvox.History.prototype.getDefaultProperty=function(){};
-cvox.History.dumpJs=function(){var a=cvox.History.getInstance();a.addBigTextBox_();window.console.log(a.dumpJsOutput_())};cvox.History.prototype.dumpJsOutput_=function(a){var b={};a&&a.forEach(function(a){b[a]=1});return["/*DOC: += ",this.nodeBreadcrumb_.dumpWalkedDom().innerHTML,"*/\n"].concat(this.events_.filter(function(a){return!(a.userCommand_ in b)}).map(function(a){return a.outputJs()})).join("")};
-cvox.History.sendToFeedback=function(){var a=cvox.History.getInstance(),a=a.events_.map(function(a){return a.outputObject()}),b=document.createElement("script");b.type="text/javascript";b.src="https://www.gstatic.com/feedback/api.js";var c=document.createElement("script");c.type="text/javascript";c.innerHTML="userfeedback.api.startFeedback({ productId: '76092' }, { cvoxHistory: "+cvox.ChromeVoxJSON.stringify(cvox.ChromeVoxJSON.stringify(a))+" });";b.onload=function(){document.body.appendChild(c)};
-document.body.appendChild(b)};cvox.KeySequence=function(a,b,c,d){this.doubleTap=!!d;this.cvoxModifier=void 0==b?this.isCVoxModifierActive(a):b;this.stickyMode=!!a.stickyMode;this.prefixKey=!!a.keyPrefix;this.skipStripping=!!c;if(this.stickyMode&&this.prefixKey)throw"Prefix key and sticky mode cannot both be enabled: "+a;a=this.resolveChromeOSSpecialKeys_(a);this.keys={ctrlKey:[],searchKeyHeld:[],altKey:[],altGraphKey:[],shiftKey:[],metaKey:[],keyCode:[]};this.extractKey_(a)};
-cvox.KeySequence.KEY_PRESS_CODE={39:222,44:188,45:189,46:190,47:191,59:186,91:219,92:220,93:221};cvox.KeySequence.doubleTapCache=[];cvox.KeySequence.prototype.addKeyEvent=function(a){if(1<this.keys.keyCode.length)return!1;this.extractKey_(a);return!0};cvox.KeySequence.prototype.equals=function(a){if(!this.checkKeyEquality_(a)||this.doubleTap!=a.doubleTap)return!1;if(this.cvoxModifier===a.cvoxModifier)return!0;a=this.cvoxModifier?a:this;return a.stickyMode||a.prefixKey};
-cvox.KeySequence.prototype.extractKey_=function(a){for(var b in this.keys)if("keyCode"==b){var c;"keypress"==a.type&&97<=a[b]&&122>=a[b]?c=a[b]-32:"keypress"==a.type&&(c=cvox.KeySequence.KEY_PRESS_CODE[a[b]]);this.keys[b].push(c||a[b])}else this.isKeyModifierActive(a,b)?this.keys[b].push(!0):this.keys[b].push(!1);this.cvoxModifier&&this.rationalizeKeys_()};
-cvox.KeySequence.prototype.rationalizeKeys_=function(){if(!this.skipStripping){var a=cvox.ChromeVox.modKeyStr.split(/\+/g),b=this.keys.keyCode.length-1;-1!=a.indexOf("Ctrl")&&(this.keys.ctrlKey[b]=!1);-1!=a.indexOf("Alt")&&(this.keys.altKey[b]=!1);-1!=a.indexOf("Shift")&&(this.keys.shiftKey[b]=!1);var c=this.getMetaKeyName_();if(-1!=a.indexOf(c))if("Search"==c)this.keys.searchKeyHeld[b]=!1;else if("Cmd"==c||"Win"==c)this.keys.metaKey[b]=!1}};
-cvox.KeySequence.prototype.getMetaKeyName_=function(){return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win"};cvox.KeySequence.prototype.checkKeyEquality_=function(a){for(var b in this.keys)for(var c=this.keys[b].length;c--;)if(this.keys[b][c]!==a.keys[b][c])return!1;return!0};cvox.KeySequence.prototype.length=function(){return this.keys.keyCode.length};cvox.KeySequence.prototype.isModifierKey=function(a){return 16==a||17==a||18==a||91==a||93==a};
-cvox.KeySequence.prototype.isCVoxModifierActive=function(a){var b=cvox.ChromeVox.modKeyStr.split(/\+/g);this.isKeyModifierActive(a,"ctrlKey")&&(b=b.filter(function(a){return"Ctrl"!=a}));this.isKeyModifierActive(a,"altKey")&&(b=b.filter(function(a){return"Alt"!=a}));this.isKeyModifierActive(a,"shiftKey")&&(b=b.filter(function(a){return"Shift"!=a}));if(this.isKeyModifierActive(a,"metaKey")||this.isKeyModifierActive(a,"searchKeyHeld"))var c=this.getMetaKeyName_(),b=b.filter(function(a){return a!=c});
-return 0==b.length};cvox.KeySequence.prototype.isKeyModifierActive=function(a,b){switch(b){case "ctrlKey":return a.ctrlKey||17==a.keyCode;case "altKey":return a.altKey||18==a.keyCode;case "shiftKey":return a.shiftKey||16==a.keyCode;case "metaKey":return a.metaKey||!cvox.ChromeVox.isChromeOS&&91==a.keyCode;case "searchKeyHeld":return cvox.ChromeVox.isChromeOS&&91==a.keyCode||a.searchKeyHeld}return!1};
-cvox.KeySequence.deserialize=function(a){var b={};b.stickyMode=void 0==a.stickyMode?!1:a.stickyMode;b.prefixKey=void 0==a.prefixKey?!1:a.prefixKey;var c=1<a.keys.keyCode.length,d={},e;for(e in a.keys)b[e]=a.keys[e][0],c&&(d[e]=a.keys[e][1]);e=new cvox.KeySequence(b,a.cvoxModifier,!0,a.doubleTap);c&&(cvox.ChromeVox.sequenceSwitchKeyCodes.push(new cvox.KeySequence(b,a.cvoxModifier)),e.addKeyEvent(d));a.doubleTap&&cvox.KeySequence.doubleTapCache.push(e);return e};
-cvox.KeySequence.fromStr=function(a){var b={},c={},d;d=-1==a.indexOf(">")?!1:!0;var e=!1;b.stickyMode=!1;b.prefixKey=!1;a=a.split("+");for(var f=0;f<a.length;f++)for(var g=a[f].split(">"),h=0;h<g.length;h++){if("#"==g[h].charAt(0)){var k=parseInt(g[h].substr(1),10);0<h?c.keyCode=k:b.keyCode=k}k=g[h];1==g[h].length?0<h?c.keyCode=g[h].charCodeAt(0):b.keyCode=g[h].charCodeAt(0):(0<h?cvox.KeySequence.setModifiersOnEvent_(k,c):cvox.KeySequence.setModifiersOnEvent_(k,b),"Cvox"==k&&(e=!0))}b=new cvox.KeySequence(b,
-e);d&&b.addKeyEvent(c);return b};cvox.KeySequence.setModifiersOnEvent_=function(a,b){"Ctrl"==a?(b.ctrlKey=!0,b.keyCode=17):"Alt"==a?(b.altKey=!0,b.keyCode=18):"Shift"==a?(b.shiftKey=!0,b.keyCode=16):"Search"==a?(b.searchKeyHeld=!0,b.keyCode=91):"Cmd"==a?(b.metaKey=!0,b.keyCode=91):"Win"==a?(b.metaKey=!0,b.keyCode=91):"Insert"==a&&(b.keyCode=45)};
-cvox.KeySequence.prototype.resolveChromeOSSpecialKeys_=function(a){if(!this.cvoxModifier||this.stickyMode||this.prefixKey||!cvox.ChromeVox.isChromeOS)return a;var b={},c;for(c in a)b[c]=a[c];switch(b.keyCode){case 33:b.keyCode=38;break;case 34:b.keyCode=40;break;case 35:b.keyCode=39;break;case 36:b.keyCode=37;break;case 45:b.keyCode=190;break;case 46:b.keyCode=8;break;case 112:b.keyCode=49;break;case 113:b.keyCode=50;break;case 114:b.keyCode=51;break;case 115:b.keyCode=52;break;case 116:b.keyCode=
-53;break;case 117:b.keyCode=54;break;case 118:b.keyCode=55;break;case 119:b.keyCode=56;break;case 120:b.keyCode=57;break;case 121:b.keyCode=48;break;case 122:b.keyCode=189;break;case 123:b.keyCode=187}return b};cvox.KeyUtil=function(){};cvox.KeyUtil.modeKeyPressTime=0;cvox.KeyUtil.sequencing=!1;cvox.KeyUtil.prevKeySequence=null;cvox.KeyUtil.stickyKeySequence=null;cvox.KeyUtil.maxSeqLength=2;
-cvox.KeyUtil.keyEventToKeySequence=function(a){var b=cvox.KeyUtil;b.prevKeySequence&&b.maxSeqLength==b.prevKeySequence.length()&&(b.sequencing=!1,b.prevKeySequence=null);var c=b.sequencing||a.keyPrefix||a.stickyMode,d=new cvox.KeySequence(a),e=d.cvoxModifier;if(c||e){if(!b.sequencing&&b.isSequenceSwitchKeyCode(d))return b.sequencing=!0,b.prevKeySequence=d;if(b.sequencing){if(b.prevKeySequence.addKeyEvent(a))return d=b.prevKeySequence,b.prevKeySequence=null,b.sequencing=!1,d;throw"Think sequencing is enabled, yet util.prevKeySequence alreadyhas two key codes"+
-b.prevKeySequence;}}else b.sequencing=!1;c=(new Date).getTime();if(cvox.KeyUtil.isDoubleTapKey(d)&&b.prevKeySequence&&d.equals(b.prevKeySequence)&&(e=b.modeKeyPressTime,0<e&&300>c-e))return d=b.prevKeySequence,d.doubleTap=!0,b.prevKeySequence=null,b.sequencing=!1,cvox.ChromeVox.isChromeOS&&a.keyCode==cvox.KeyUtil.getStickyKeyCode()&&(cvox.ChromeVox.searchKeyHeld=!1),d;b.prevKeySequence=d;b.modeKeyPressTime=c;return d};
-cvox.KeyUtil.keyCodeToString=function(a){return 17==a?"Ctrl":18==a?"Alt":16==a?"Shift":91==a||93==a?cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win":45==a?"Insert":65<=a&&90>=a?String.fromCharCode(a):48<=a&&57>=a?String.fromCharCode(a):"#"+a};cvox.KeyUtil.modStringToKeyCode=function(a){switch(a){case "Ctrl":return 17;case "Alt":return 18;case "Shift":return 16;case "Cmd":case "Win":return 91}return-1};
-cvox.KeyUtil.cvoxModKeyCodes=function(){var a=cvox.ChromeVox.modKeyStr.split(/\+/g);return a=a.map(function(a){return cvox.KeyUtil.modStringToKeyCode(a)})};cvox.KeyUtil.isSequenceSwitchKeyCode=function(a){for(var b=0;b<cvox.ChromeVox.sequenceSwitchKeyCodes.length;b++){var c=cvox.ChromeVox.sequenceSwitchKeyCodes[b];if(c.equals(a))return!0}return!1};
-cvox.KeyUtil.getReadableNameForKeyCode=function(a){if(0==a)return"Power button";if(17==a)return"Control";if(18==a)return"Alt";if(16==a)return"Shift";if(9==a)return"Tab";if(91==a||93==a)return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win";if(8==a)return"Backspace";if(32==a)return"Space";if(35==a)return"end";if(36==a)return"home";if(37==a)return"Left arrow";if(38==a)return"Up arrow";if(39==a)return"Right arrow";if(40==a)return"Down arrow";if(45==a)return"Insert";if(13==a)return"Enter";
-if(27==a)return"Escape";if(112==a)return cvox.ChromeVox.isChromeOS?"Back":"F1";if(113==a)return cvox.ChromeVox.isChromeOS?"Forward":"F2";if(114==a)return cvox.ChromeVox.isChromeOS?"Refresh":"F3";if(115==a)return cvox.ChromeVox.isChromeOS?"Toggle full screen":"F4";if(116==a)return"F5";if(117==a)return"F6";if(118==a)return"F7";if(119==a)return"F8";if(120==a)return"F9";if(121==a)return"F10";if(122==a)return"F11";if(123==a)return"F12";if(186==a)return"Semicolon";if(187==a)return"Equal sign";if(188==a)return"Comma";
-if(189==a)return"Dash";if(190==a)return"Period";if(191==a)return"Forward slash";if(192==a)return"Grave accent";if(219==a)return"Open bracket";if(220==a)return"Back slash";if(221==a)return"Close bracket";if(222==a)return"Single quote";if(115==a)return"Toggle full screen";if(48<=a&&90>=a)return String.fromCharCode(a)};cvox.KeyUtil.getStickyKeyCode=function(){var a=45;if(cvox.ChromeVox.isChromeOS||cvox.ChromeVox.isMac)a=91;return a};
-cvox.KeyUtil.getStickyKeySequence=function(){if(null==cvox.KeyUtil.stickyKeySequence){var a=cvox.KeyUtil.getStickyKeyCode(),a={keyCode:a,stickyMode:!0},b=new cvox.KeySequence(a);b.addKeyEvent(a);cvox.KeyUtil.stickyKeySequence=b}return cvox.KeyUtil.stickyKeySequence};cvox.KeyUtil.getReadableNameForStr=function(){return null};
-cvox.KeyUtil.keySequenceToString=function(a,b,c){for(var d="",e=a.length(),f=0;f<e;f++){""==d||c?""!=d&&(d+="+"):d+=">";var g="",h;for(h in a.keys)if(a.keys[h][f]){var k="";switch(h){case "ctrlKey":k="Ctrl";break;case "searchKeyHeld":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "altKey":k="Alt";break;case "altGraphKey":k="AltGraph";break;case "shiftKey":k="Shift";break;case "metaKey":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "keyCode":var l=a.keys[h][f];a.isModifierKey(l)||
-c||(g=b?g+cvox.KeyUtil.getReadableNameForKeyCode(l):g+cvox.KeyUtil.keyCodeToString(l))}-1==d.indexOf(k)&&(g+=k+"+")}d+=g;"+"==d[d.length-1]&&(d=d.slice(0,-1))}a.cvoxModifier||a.prefixKey?d=""!=d?"Cvox+"+d:"Cvox":a.stickyMode&&(">"==d[d.length-1]&&(d=d.slice(0,-1)),d=d+"+"+d);return d};cvox.KeyUtil.isDoubleTapKey=function(a){var b=!1,c=a.doubleTap;a.doubleTap=!0;for(var d=0,e;e=cvox.KeySequence.doubleTapCache[d];d++)if(e.equals(a)){b=!0;break}a.doubleTap=c;return b};cvox.KeyMap=function(a){this.bindings_=a;this.commandToKey_={};this.buildCommandToKey_()};cvox.KeyMap.KEYMAP_PATH="chromevox/background/keymaps/";cvox.KeyMap.AVAILABLE_MAP_INFO={keymap_classic:{file:"classic_keymap.json"},keymap_flat:{file:"flat_keymap.json"},keymap_experimental:{file:"experimental.json"}};cvox.KeyMap.DEFAULT_KEYMAP=0;cvox.KeyMap.prototype.length=function(){return this.bindings_.length};cvox.KeyMap.prototype.keys=function(){return this.bindings_.map(function(a){return a.sequence})};
-cvox.KeyMap.prototype.bindings=function(){return this.bindings_};cvox.KeyMap.prototype.toJSON=function(){return JSON.stringify({bindings:this.bindings_})};cvox.KeyMap.prototype.hasKey=function(a){for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return!0}return!1};cvox.KeyMap.prototype.commandForKey=function(a){if(null!=a)for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return c.command}return null};
-cvox.KeyMap.fromDefaults=function(){return cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO.keymap_classic.file)};cvox.KeyMap.fromJSON=function(a){try{var b=JSON.parse(a).bindings,b=b.filter(function(a){return void 0===a.sequence.platformFilter||cvox.PlatformUtil.matchesPlatform(a.sequence.platformFilter)})}catch(c){return null}if("object"!=typeof b)return null;for(a=0;a<b.length;a++){if(void 0==b[a].command||void 0==b[a].sequence)return null;b[a].sequence=cvox.KeySequence.deserialize(b[a].sequence)}return new cvox.KeyMap(b)};
-cvox.KeyMap.fromLocalStorage=function(){return localStorage.keyBindings?cvox.KeyMap.fromJSON(localStorage.keyBindings):null};cvox.KeyMap.fromPath=function(a){return cvox.KeyMap.fromJSON(cvox.KeyMap.readJSON_(a))};cvox.KeyMap.fromCurrentKeyMap=function(){var a=localStorage.currentKeyMap;return a&&cvox.KeyMap.AVAILABLE_MAP_INFO[a]?cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO[a].file):cvox.KeyMap.fromDefaults()};
-cvox.KeyMap.readJSON_=function(a){var b=chrome.extension.getURL(a);if(!b)throw"Invalid path: "+a;a=new XMLHttpRequest;a.open("GET",b,!1);a.send();return a.responseText};cvox.KeyMap.prototype.buildCommandToKey_=function(){for(var a=0;a<this.bindings_.length;a++){var b=this.bindings_[a];void 0==this.commandToKey_[b.command]&&(this.commandToKey_[b.command]=b.sequence)}};cvox.CommandStore={};cvox.CommandStore.categories=function(){var a={},b;for(b in cvox.CommandStore.CMD_WHITELIST){var c=cvox.CommandStore.CMD_WHITELIST[b];c.category&&(a[c.category]=!0)}b=[];for(var d in a)b.push(d);return b};cvox.CommandStore.messageForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).msgId};cvox.CommandStore.categoryForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).category};
-cvox.CommandStore.commandsForCategory=function(a){var b=[],c;for(c in cvox.CommandStore.CMD_WHITELIST){var d=cvox.CommandStore.CMD_WHITELIST[c];a==d.category&&b.push(c)}return b};
-cvox.CommandStore.CMD_WHITELIST={toggleStickyMode:{announce:!1,msgId:"toggle_sticky_mode",disallowOOBE:!0,category:"modifier_keys"},toggleKeyPrefix:{announce:!1,skipInput:!0,msgId:"prefix_key",disallowOOBE:!0,category:"modifier_keys"},stopSpeech:{announce:!1,disallowContinuation:!0,doDefault:!0,msgId:"stop_speech_key",category:"controlling_speech"},toggleChromeVox:{announce:!1,platformFilter:cvox.PlatformFilter.WML,msgId:"toggle_chromevox_active",category:"controlling_speech"},decreaseTtsRate:{announce:!1,
-msgId:"decrease_tts_rate",category:"controlling_speech"},increaseTtsRate:{announce:!1,msgId:"increase_tts_rate",category:"controlling_speech"},decreaseTtsPitch:{announce:!1,msgId:"decrease_tts_pitch",category:"controlling_speech"},increaseTtsPitch:{announce:!1,msgId:"increase_tts_pitch",category:"controlling_speech"},decreaseTtsVolume:{announce:!1,msgId:"decrease_tts_volume",category:"controlling_speech"},increaseTtsVolume:{announce:!1,msgId:"increase_tts_volume",category:"controlling_speech"},cyclePunctuationEcho:{announce:!1,
-msgId:"cycle_punctuation_echo",category:"controlling_speech"},cycleTypingEcho:{announce:!1,msgId:"cycle_typing_echo",category:"controlling_speech"},toggleEarcons:{announce:!0,msgId:"toggle_earcons",category:"controlling_speech"},handleTab:{allowEvents:!0,msgId:"handle_tab_next",disallowContinuation:!0,category:"navigation"},handleTabPrev:{allowEvents:!0,msgId:"handle_tab_prev",disallowContinuation:!0,category:"navigation"},forward:{forward:!0,announce:!0,msgId:"forward",category:"navigation"},backward:{backward:!0,
-announce:!0,msgId:"backward",category:"navigation"},right:{forward:!0,announce:!0,msgId:"right",category:"navigation"},left:{backward:!0,announce:!0,msgId:"left",category:"navigation"},previousGranularity:{announce:!0,msgId:"previous_granularity",category:"navigation"},nextGranularity:{announce:!0,msgId:"next_granularity",category:"navigation"},previousCharacter:{backward:!0,announce:!0,msgId:"previous_character",skipInput:!0,category:"navigation"},nextCharacter:{forward:!0,announce:!0,msgId:"next_character",
-skipInput:!0,category:"navigation"},previousWord:{backward:!0,announce:!0,msgId:"previous_word",skipInput:!0,category:"navigation"},nextWord:{forward:!0,announce:!0,msgId:"next_word",skipInput:!0,category:"navigation"},previousLine:{backward:!0,announce:!0,msgId:"previous_line",category:"navigation"},nextLine:{forward:!0,announce:!0,msgId:"next_line",category:"navigation"},previousSentence:{backward:!0,announce:!0,msgId:"previous_sentence",skipInput:!0,category:"navigation"},nextSentence:{forward:!0,
-announce:!0,msgId:"next_sentence",skipInput:!0,category:"navigation"},previousObject:{backward:!0,announce:!0,msgId:"previous_object",skipInput:!0,category:"navigation"},nextObject:{forward:!0,announce:!0,msgId:"next_object",skipInput:!0,category:"navigation"},previousGroup:{backward:!0,announce:!0,msgId:"previous_group",skipInput:!0,category:"navigation"},nextGroup:{forward:!0,announce:!0,msgId:"next_group",skipInput:!0,category:"navigation"},jumpToTop:{forward:!0,announce:!0,msgId:"jump_to_top",
-category:"navigation"},jumpToBottom:{backward:!0,announce:!0,msgId:"jump_to_bottom",category:"navigation"},moveToStartOfLine:{forward:!0,announce:!0},moveToEndOfLine:{backward:!0,announce:!0},readFromHere:{forward:!0,announce:!1,msgId:"read_from_here",category:"navigation"},performDefaultAction:{disallowContinuation:!0,msgId:"perform_default_action",doDefault:!0,skipInput:!0,category:"navigation"},forceClickOnCurrentItem:{announce:!0,disallowContinuation:!0,allowEvents:!0,msgId:"force_click_on_current_item",
-category:"navigation"},forceDoubleClickOnCurrentItem:{announce:!0,allowEvents:!0,disallowContinuation:!0},readLinkURL:{announce:!1,msgId:"read_link_url",category:"information"},readCurrentTitle:{announce:!1,msgId:"read_current_title",category:"information"},readCurrentURL:{announce:!1,msgId:"read_current_url",category:"information"},fullyDescribe:{announce:!1,msgId:"fully_describe",category:"information"},speakTimeAndDate:{announce:!1,msgId:"speak_time_and_date",category:"information"},toggleSelection:{announce:!0,
-msgId:"toggle_selection",category:"information"},toggleSearchWidget:{announce:!1,disallowContinuation:!0,msgId:"toggle_search_widget",category:"information"},toggleKeyboardHelp:{announce:!1,disallowContinuation:!0,msgId:"show_power_key",category:"help_commands"},help:{announce:!1,msgId:"help",disallowOOBE:!0,disallowContinuation:!0,category:"help_commands"},contextMenu:{announce:!1,disallowContinuation:!0},showOptionsPage:{announce:!1,disallowContinuation:!0,msgId:"show_options_page",disallowOOBE:!0,
-category:"help_commands"},showKbExplorerPage:{announce:!1,disallowContinuation:!0,msgId:"show_kb_explorer_page",disallowOOBE:!0,category:"help_commands"},showFormsList:{announce:!1,disallowContinuation:!0,nodeList:"formField",msgId:"show_forms_list",category:"overview"},showHeadingsList:{announce:!1,nodeList:"heading",disallowContinuation:!0,msgId:"show_headings_list",category:"overview"},showLandmarksList:{announce:!1,nodeList:"landmark",disallowContinuation:!0,msgId:"show_landmarks_list",category:"overview"},
-showLinksList:{announce:!1,nodeList:"link",disallowContinuation:!0,msgId:"show_links_list",category:"overview"},showTablesList:{announce:!1,nodeList:"table",disallowContinuation:!0,msgId:"show_tables_list",category:"overview"},startHistoryRecording:{announce:!1},stopHistoryRecording:{announce:!1},enableConsoleTts:{announce:!1},autorunner:{announce:!1},nextArticle:{forward:!0,findNext:"article"},nextButton:{forward:!0,findNext:"button",msgId:"next_button",category:"jump_commands"},nextCheckbox:{forward:!0,
-findNext:"checkbox",msgId:"next_checkbox",category:"jump_commands"},nextComboBox:{forward:!0,findNext:"combobox",msgId:"next_combo_box",category:"jump_commands"},nextControl:{forward:!0,findNext:"control"},nextEditText:{forward:!0,findNext:"editText",msgId:"next_edit_text",category:"jump_commands"},nextFormField:{forward:!0,findNext:"formField",msgId:"next_form_field",category:"jump_commands"},nextGraphic:{forward:!0,findNext:"graphic",msgId:"next_graphic",category:"jump_commands"},nextHeading:{forward:!0,
-findNext:"heading",msgId:"next_heading",category:"jump_commands"},nextHeading1:{forward:!0,findNext:"heading1",msgId:"next_heading1",category:"jump_commands"},nextHeading2:{forward:!0,findNext:"heading2",msgId:"next_heading2",category:"jump_commands"},nextHeading3:{forward:!0,findNext:"heading3",msgId:"next_heading3",category:"jump_commands"},nextHeading4:{forward:!0,findNext:"heading4",msgId:"next_heading4",category:"jump_commands"},nextHeading5:{forward:!0,findNext:"heading5",msgId:"next_heading5",
-category:"jump_commands"},nextHeading6:{forward:!0,findNext:"heading6",msgId:"next_heading6",category:"jump_commands"},nextLandmark:{forward:!0,findNext:"landmark",msgId:"next_landmark",category:"jump_commands"},nextLink:{forward:!0,findNext:"link",msgId:"next_link",category:"jump_commands"},nextList:{forward:!0,findNext:"list",msgId:"next_list",category:"jump_commands"},nextListItem:{forward:!0,findNext:"listItem",msgId:"next_list_item",category:"jump_commands"},nextMath:{forward:!0,findNext:"math",
-msgId:"next_math",category:"jump_commands"},nextMedia:{forward:!0,findNext:"media",msgId:"next_media",category:"jump_commands"},nextRadio:{forward:!0,findNext:"radio",msgId:"next_radio",category:"jump_commands"},nextSection:{forward:!0,findNext:"section"},nextSlider:{forward:!0,findNext:"slider"},nextTable:{forward:!0,findNext:"table",msgId:"next_table",category:"jump_commands"},nextVisitedLink:{forward:!0,findNext:"visitedLink",msgId:"next_visited_link",category:"jump_commands"},previousArticle:{backward:!0,
-findNext:"article"},previousButton:{backward:!0,findNext:"button",msgId:"previous_button",category:"jump_commands"},previousCheckbox:{backward:!0,findNext:"checkbox",msgId:"previous_checkbox",category:"jump_commands"},previousComboBox:{backward:!0,findNext:"combobox",msgId:"previous_combo_box",category:"jump_commands"},previousControl:{backward:!0,findNext:"control"},previousEditText:{backward:!0,findNext:"editText",msgId:"previous_edit_text",category:"jump_commands"},previousFormField:{backward:!0,
-findNext:"formField",msgId:"previous_form_field",category:"jump_commands"},previousGraphic:{backward:!0,findNext:"graphic",msgId:"previous_graphic",category:"jump_commands"},previousHeading:{backward:!0,findNext:"heading",msgId:"previous_heading",category:"jump_commands"},previousHeading1:{backward:!0,findNext:"heading1",msgId:"previous_heading1",category:"jump_commands"},previousHeading2:{backward:!0,findNext:"heading2",msgId:"previous_heading2",category:"jump_commands"},previousHeading3:{backward:!0,
-findNext:"heading3",msgId:"previous_heading3",category:"jump_commands"},previousHeading4:{backward:!0,findNext:"heading4",msgId:"previous_heading4",category:"jump_commands"},previousHeading5:{backward:!0,findNext:"heading5",msgId:"previous_heading5",category:"jump_commands"},previousHeading6:{backward:!0,findNext:"heading6",msgId:"previous_heading6",category:"jump_commands"},previousLandmark:{backward:!0,findNext:"landmark",msgId:"previous_landmark",category:"jump_commands"},previousLink:{backward:!0,
-findNext:"link",msgId:"previous_link",category:"jump_commands"},previousList:{backward:!0,findNext:"list",msgId:"previous_list",category:"jump_commands"},previousListItem:{backward:!0,findNext:"listItem",msgId:"previous_list_item",category:"jump_commands"},previousMath:{backward:!0,findNext:"math",msgId:"previous_math",category:"jump_commands"},previousMedia:{backward:!0,findNext:"media",msgId:"previous_media",category:"jump_commands"},previousRadio:{backward:!0,findNext:"radio",msgId:"previous_radio",
-category:"jump_commands"},previousSection:{backward:!0,findNext:"section"},previousSlider:{backward:!0,findNext:"slider"},previousTable:{backward:!0,findNext:"table",msgId:"previous_table",category:"jump_commands"},previousVisitedLink:{backward:!0,findNext:"visitedLink",msgId:"previous_visited_link",category:"jump_commands"},announceHeaders:{announce:!1,msgId:"announce_headers",category:"tables"},speakTableLocation:{announce:!1,msgId:"speak_table_location",category:"tables"},goToFirstCell:{announce:!0,
-msgId:"skip_to_beginning",category:"tables"},goToLastCell:{announce:!0,msgId:"skip_to_end",category:"tables"},goToRowFirstCell:{announce:!0,msgId:"skip_to_row_beginning",category:"tables"},goToRowLastCell:{announce:!0,msgId:"skip_to_row_end",category:"tables"},goToColFirstCell:{announce:!0,msgId:"skip_to_col_beginning",category:"tables"},goToColLastCell:{announce:!0,msgId:"skip_to_col_end",category:"tables"},previousRow:{backward:!0,announce:!0,skipInput:!0},previousCol:{backward:!0,announce:!0,skipInput:!0},
-nextRow:{forward:!0,announce:!0,skipInput:!0},nextCol:{forward:!0,announce:!0,skipInput:!0},enterShifter:{announce:!0,msgId:"enter_content",category:"navigation"},exitShifter:{announce:!0,msgId:"exit_content",category:"navigation"},exitShifterContent:{announce:!0},openLongDesc:{announce:!1,msgId:"open_long_desc",category:"information"},pauseAllMedia:{announce:!1,msgId:"pause_all_media",category:"information"},toggleSemantics:{announce:!1,msgId:"toggle_semantics",category:"information"},routing:{announce:!0,
-msgId:"braille_routing",category:"braille"},pan_left:{backward:!0,announce:!0,msgId:"braille_pan_left",category:"braille"},pan_right:{forward:!0,announce:!0,msgId:"braille_pan_right",category:"braille"},line_up:{backward:!0,announce:!0,msgId:"braille_line_up",category:"braille"},line_down:{forward:!0,announce:!0,msgId:"braille_line_down",category:"braille"},top:{forward:!0,announce:!0,msgId:"braille_top",category:"braille"},bottom:{backward:!0,announce:!0,msgId:"braille_bottom",category:"braille"},
-debug:{announce:!1},nop:{announce:!1}};
-cvox.CommandStore.NODE_INFO_MAP={checkbox:{predicate:"checkboxPredicate",forwardError:"no_next_checkbox",backwardError:"no_previous_checkbox",typeMsg:"aria_role_checkbox"},radio:{predicate:"radioPredicate",forwardError:"no_next_radio_button",backwardError:"no_previous_radio_button",typeMsg:"aria_role_radio"},slider:{predicate:"sliderPredicate",forwardError:"no_next_slider",backwardError:"no_previous_slider",typeMsg:"aria_role_slider"},graphic:{predicate:"graphicPredicate",forwardError:"no_next_graphic",
-backwardError:"no_previous_graphic",typeMsg:"UNUSED"},article:{predicate:"articlePredicate",forwardError:"no_next_ARTICLE",backwardError:"no_previous_ARTICLE",typeMsg:"TAG_ARTICLE"},button:{predicate:"buttonPredicate",forwardError:"no_next_button",backwardError:"no_previous_button",typeMsg:"aria_role_button"},combobox:{predicate:"comboBoxPredicate",forwardError:"no_next_combo_box",backwardError:"no_previous_combo_box",typeMsg:"aria_role_combobox"},editText:{predicate:"editTextPredicate",forwardError:"no_next_edit_text",
-backwardError:"no_previous_edit_text",typeMsg:"input_type_text"},heading:{predicate:"headingPredicate",forwardError:"no_next_heading",backwardError:"no_previous_heading",typeMsg:"aria_role_heading"},heading1:{predicate:"heading1Predicate",forwardError:"no_next_heading_1",backwardError:"no_previous_heading_1"},heading2:{predicate:"heading2Predicate",forwardError:"no_next_heading_2",backwardError:"no_previous_heading_2"},heading3:{predicate:"heading3Predicate",forwardError:"no_next_heading_3",backwardError:"no_previous_heading_3"},
-heading4:{predicate:"heading4Predicate",forwardError:"no_next_heading_4",backwardError:"no_previous_heading_4"},heading5:{predicate:"heading5Predicate",forwardError:"no_next_heading_5",backwardError:"no_previous_heading_5"},heading6:{predicate:"heading6Predicate",forwardError:"no_next_heading_6",backwardError:"no_previous_heading_6"},link:{predicate:"linkPredicate",forwardError:"no_next_link",backwardError:"no_previous_link",typeMsg:"aria_role_link"},table:{predicate:"tablePredicate",forwardError:"no_next_table",
-backwardError:"no_previous_table",typeMsg:"table_strategy"},visitedLink:{predicate:"visitedLinkPredicate",forwardError:"no_next_visited_link",backwardError:"no_previous_visited_link",typeMsg:"tag_link"},list:{predicate:"listPredicate",forwardError:"no_next_list",backwardError:"no_previous_list",typeMsg:"aria_role_list"},listItem:{predicate:"listItemPredicate",forwardError:"no_next_list_item",backwardError:"no_previous_list_item",typeMsg:"aria_role_listitem"},formField:{predicate:"formFieldPredicate",
-forwardError:"no_next_form_field",backwardError:"no_previous_form_field",typeMsg:"aria_role_form"},landmark:{predicate:"landmarkPredicate",forwardError:"no_next_landmark",backwardError:"no_previous_landmark",typeMsg:"role_landmark"},math:{predicate:"mathPredicate",forwardError:"no_next_math",backwardError:"no_previous_math",typeMsg:"math_expr"},media:{predicate:"mediaPredicate",forwardError:"no_next_media_widget",backwardError:"no_previous_media_widget"},section:{predicate:"sectionPredicate",forwardError:"no_next_section",
-backwardError:"no_previous_section"},control:{predicate:"controlPredicate",forwardError:"no_next_control",backwardError:"no_previous_control"}};cvox.Widget=function(){this.active=!1;this.initialNode=null;cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||(cvox.Widget.ref_=this)};cvox.Widget.prototype.isActive=function(){return this.active};
-cvox.Widget.prototype.show=function(){this.isActive()&&this.hide(!0);this.onKeyDown=goog.bind(this.onKeyDown,this);this.onKeyPress=goog.bind(this.onKeyPress,this);window.addEventListener("keydown",this.onKeyDown,!0);window.addEventListener("keypress",this.onKeyPress,!0);this.initialNode=cvox.ChromeVox.navigationManager.getCurrentNode();this.isStickyOn=cvox.ChromeVox.isStickyOn;this.getNameMsg()&&this.getHelpMsg()&&cvox.$m(this.getNameMsg()).andPause().andMessage(this.getHelpMsg()).speakFlush();cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_OPEN);
-this.active=!0};cvox.Widget.prototype.hide=function(a){window.removeEventListener("keypress",this.onKeyPress,!0);window.removeEventListener("keydown",this.onKeyDown,!0);cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_CLOSE);a||(this.initialNode=1==this.initialNode.nodeType?this.initialNode:this.initialNode.parentNode,cvox.ApiImplementation.syncToNode(this.initialNode,!0,cvox.AbstractTts.QUEUE_MODE_QUEUE));this.active=!1};
-cvox.Widget.prototype.toggle=function(){this.isActive()?this.hide():this.show()};cvox.Widget.prototype.onKeyDown=function(a){if(27==a.keyCode)return this.hide(),a.preventDefault(),!0;if(9==a.keyCode)return this.hide(),!0;17==a.keyCode&&cvox.ChromeVox.tts.stop();a.stopPropagation();return!0};cvox.Widget.prototype.onKeyPress=function(){return!1};cvox.Widget.isActive=function(){return cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||!1};cvox.NavDescription=function(a){this.context=a.context?a.context:"";this.text=a.text?a.text:"";this.userValue=a.userValue?a.userValue:"";this.annotation=a.annotation?a.annotation:"";this.earcons=a.earcons?a.earcons:[];this.personality=a.personality};cvox.NavDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.earcons.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};
-cvox.NavDescription.prototype.toString=function(){return'NavDescription(context="'+this.context+'" text="'+this.text+'" userValue="'+this.userValue+'" annotation="'+this.annotation+'")'};cvox.NavDescription.prototype.pushEarcon=function(a){this.earcons.push(a)};
-cvox.NavDescription.prototype.speak=function(a,b,c){function d(){var a={},b=cvox.AbstractTts.PERSONALITY_ANNOTATION,c;for(c in b)a[c]=b[c];return a}var e=[];this.context&&(e.push([this.context,a,d()]),a=1);e.push([this.text,a,this.personality?this.personality:{}]);a=1;this.userValue&&e.push([this.userValue,a,{}]);this.annotation&&e.push([this.annotation,a,d()]);a=e.length;for(var f=0;f<a;f++)0==f&&b&&(e[f][2].startCallback=b),f==a-1&&c&&(e[f][2].endCallback=c),cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts,
-e[f])};cvox.NavDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};cvox.NavMathDescription=function(a){cvox.NavDescription.call(this,a);var b=this.personality?this.personality:{},c={};c.domain=a.domain?a.domain:"";c.style=a.style?a.style:"";b.math=c;this.personality=b};goog.inherits(cvox.NavMathDescription,cvox.NavDescription);cvox.SemanticUtil=function(){};cvox.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};cvox.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[],c=function(a){for(var c in a)b.push(a[c])};a.forEach(c);return b};
-cvox.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};cvox.SemanticUtil.numberToUnicode=function(a){if(65536<=a){var b=(a-65536)/1024+55296;a=(a-65536)%1024+56320;return String.fromCharCode(b,a)}return String.fromCharCode(a)};cvox.SemanticUtil.tagName=function(a){return a.tagName.toUpperCase()};cvox.SemanticUtil.IGNORETAGS="MERROR MPHANTOM MSPACE MACTION MALIGNGROUP MALIGNMARK MACTION".split(" ");
-cvox.SemanticUtil.EMPTYTAGS=["MATH","MROW","MPADDED","MSTYLE"];cvox.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=cvox.SemanticUtil.tagName(d);-1==cvox.SemanticUtil.IGNORETAGS.indexOf(e)&&(-1!=cvox.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d))}return b};cvox.SemanticAttr=function(){this.generalPunctuations="!\"#%&'*,:;?@\\\u00a1\u00a7\u00b6\u00b7\u00bf\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2027\u2030\u2031\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\ufe10\ufe13\ufe14\ufe15\ufe16\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0f\uff1a\uff1b\uff1f\uff20\uff3c".split("");
-this.invisibleComma_=cvox.SemanticUtil.numberToUnicode(8291);this.generalPunctuations.push(this.invisibleComma_);this.ellipses="\u2026\u22ee\u22ef\u22f0\u22f1\ufe19".split("");this.fullStops=[".","\ufe52","\uff0e"];this.dashes="\u2012\u2013\u2014\u2015\u301c\ufe31\ufe32\ufe58".split("");this.primes="\u2032\u2033\u2034\u2035\u2036\u2037\u2057".split("");this.openClosePairs={"(":")","[":"]","{":"}","\u2045":"\u2046","\u2329":"\u232a","\u2768":"\u2769","\u276a":"\u276b","\u276c":"\u276d","\u276e":"\u276f",
-"\u2770":"\u2771","\u2772":"\u2773","\u2774":"\u2775","\u27c5":"\u27c6","\u27e6":"\u27e7","\u27e8":"\u27e9","\u27ea":"\u27eb","\u27ec":"\u27ed","\u27ee":"\u27ef","\u2983":"\u2984","\u2985":"\u2986","\u2987":"\u2988","\u2989":"\u298a","\u298b":"\u298c","\u298d":"\u298e","\u298f":"\u2990","\u2991":"\u2992","\u2993":"\u2994","\u2995":"\u2996","\u2997":"\u2998","\u29d8":"\u29d9","\u29da":"\u29db","\u29fc":"\u29fd","\u2e22":"\u2e23","\u2e24":"\u2e25","\u2e26":"\u2e27","\u2e28":"\u2e29","\u3008":"\u3009",
-"\u300a":"\u300b","\u300c":"\u300d","\u300e":"\u300f","\u3010":"\u3011","\u3014":"\u3015","\u3016":"\u3017","\u3018":"\u3019","\u301a":"\u301b","\u301d":"\u301e","\ufd3e":"\ufd3f","\ufe17":"\ufe18","\ufe59":"\ufe5a","\ufe5b":"\ufe5c","\ufe5d":"\ufe5e","\uff08":"\uff09","\uff3b":"\uff3d","\uff5b":"\uff5d","\uff5f":"\uff60","\uff62":"\uff63","\u2308":"\u2309","\u230a":"\u230b","\u230c":"\u230d","\u230e":"\u230f","\u231c":"\u231d","\u231e":"\u231f","\u239b":"\u239e","\u239c":"\u239f","\u239d":"\u23a0",
-"\u23a1":"\u23a4","\u23a2":"\u23a5","\u23a3":"\u23a6","\u23a7":"\u23ab","\u23a8":"\u23ac","\u23a9":"\u23ad","\u23b0":"\u23b1","\u23b8":"\u23b9"};this.topBottomPairs={"\u23b4":"\u23b5","\u23dc":"\u23dd","\u23de":"\u23df","\u23e0":"\u23e1","\ufe35":"\ufe36","\ufe37":"\ufe38","\ufe39":"\ufe3a","\ufe3b":"\ufe3c","\ufe3d":"\ufe3e","\ufe3f":"\ufe40","\ufe41":"\ufe42","\ufe43":"\ufe44","\ufe47":"\ufe48"};this.leftFences=cvox.SemanticUtil.objectsToKeys(this.openClosePairs);this.rightFences=cvox.SemanticUtil.objectsToValues(this.openClosePairs);
-this.rightFences.push("\u301f");this.topFences=cvox.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=cvox.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences="|\u00a6\u2016\u2758\u2980\u2af4\uffe4\uff5c".split("");this.capitalLatin="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");this.smallLatin="abcdefghijklmnopqrstuvwxyz\u0131\u0237".split("");this.capitalLatinFullWidth="\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a".split("");
-this.smallLatinFullWidth="\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a".split("");this.capitalLatinBold="\ud835\udc00 \ud835\udc01 \ud835\udc02 \ud835\udc03 \ud835\udc04 \ud835\udc05 \ud835\udc06 \ud835\udc07 \ud835\udc08 \ud835\udc09 \ud835\udc0a \ud835\udc0b \ud835\udc0c \ud835\udc0d \ud835\udc0e \ud835\udc0f \ud835\udc10 \ud835\udc11 \ud835\udc12 \ud835\udc13 \ud835\udc14 \ud835\udc15 \ud835\udc16 \ud835\udc17 \ud835\udc18 \ud835\udc19".split(" ");
-this.smallLatinBold="\ud835\udc1a \ud835\udc1b \ud835\udc1c \ud835\udc1d \ud835\udc1e \ud835\udc1f \ud835\udc20 \ud835\udc21 \ud835\udc22 \ud835\udc23 \ud835\udc24 \ud835\udc25 \ud835\udc26 \ud835\udc27 \ud835\udc28 \ud835\udc29 \ud835\udc2a \ud835\udc2b \ud835\udc2c \ud835\udc2d \ud835\udc2e \ud835\udc2f \ud835\udc30 \ud835\udc31 \ud835\udc32 \ud835\udc33".split(" ");this.capitalLatinItalic="\ud835\udc34 \ud835\udc35 \ud835\udc36 \ud835\udc37 \ud835\udc38 \ud835\udc39 \ud835\udc3a \ud835\udc3b \ud835\udc3c \ud835\udc3d \ud835\udc3e \ud835\udc3f \ud835\udc40 \ud835\udc41 \ud835\udc42 \ud835\udc43 \ud835\udc44 \ud835\udc45 \ud835\udc46 \ud835\udc47 \ud835\udc48 \ud835\udc49 \ud835\udc4a \ud835\udc4b \ud835\udc4c \ud835\udc4d".split(" ");
-this.smallLatinItalic="\ud835\udc4e \ud835\udc4f \ud835\udc50 \ud835\udc51 \ud835\udc52 \ud835\udc53 \ud835\udc54 \u210e \ud835\udc56 \ud835\udc57 \ud835\udc58 \ud835\udc59 \ud835\udc5a \ud835\udc5b \ud835\udc5c \ud835\udc5d \ud835\udc5e \ud835\udc5f \ud835\udc60 \ud835\udc61 \ud835\udc62 \ud835\udc63 \ud835\udc64 \ud835\udc65 \ud835\udc66 \ud835\udc67 \ud835\udea4 \ud835\udea5".split(" ");this.capitalLatinScript="\ud835\udc9c \u212c \ud835\udc9e \ud835\udc9f \u2130 \u2131 \ud835\udca2 \u210b \u2110 \ud835\udca5 \ud835\udca6 \u2112 \u2133 \ud835\udca9 \ud835\udcaa \ud835\udcab \ud835\udcac \u211b \ud835\udcae \ud835\udcaf \ud835\udcb0 \ud835\udcb1 \ud835\udcb2 \ud835\udcb3 \ud835\udcb4 \ud835\udcb5 \u2118".split(" ");
-this.smallLatinScript="\ud835\udcb6 \ud835\udcb7 \ud835\udcb8 \ud835\udcb9 \u212f \ud835\udcbb \u210a \ud835\udcbd \ud835\udcbe \ud835\udcbf \ud835\udcc0 \ud835\udcc1 \ud835\udcc2 \ud835\udcc3 \u2134 \ud835\udcc5 \ud835\udcc6 \ud835\udcc7 \ud835\udcc8 \ud835\udcc9 \ud835\udcca \ud835\udccb \ud835\udccc \ud835\udccd \ud835\udcce \ud835\udccf \u2113".split(" ");this.capitalLatinBoldScript="\ud835\udcd0 \ud835\udcd1 \ud835\udcd2 \ud835\udcd3 \ud835\udcd4 \ud835\udcd5 \ud835\udcd6 \ud835\udcd7 \ud835\udcd8 \ud835\udcd9 \ud835\udcda \ud835\udcdb \ud835\udcdc \ud835\udcdd \ud835\udcde \ud835\udcdf \ud835\udce0 \ud835\udce1 \ud835\udce2 \ud835\udce3 \ud835\udce4 \ud835\udce5 \ud835\udce6 \ud835\udce7 \ud835\udce8 \ud835\udce9".split(" ");
-this.smallLatinBoldScript="\ud835\udcea \ud835\udceb \ud835\udcec \ud835\udced \ud835\udcee \ud835\udcef \ud835\udcf0 \ud835\udcf1 \ud835\udcf2 \ud835\udcf3 \ud835\udcf4 \ud835\udcf5 \ud835\udcf6 \ud835\udcf7 \ud835\udcf8 \ud835\udcf9 \ud835\udcfa \ud835\udcfb \ud835\udcfc \ud835\udcfd \ud835\udcfe \ud835\udcff \ud835\udd00 \ud835\udd01 \ud835\udd02 \ud835\udd03".split(" ");this.capitalLatinFraktur="\ud835\udd04 \ud835\udd05 \u212d \ud835\udd07 \ud835\udd08 \ud835\udd09 \ud835\udd0a \u210c \u2111 \ud835\udd0d \ud835\udd0e \ud835\udd0f \ud835\udd10 \ud835\udd11 \ud835\udd12 \ud835\udd13 \ud835\udd14 \u211c \ud835\udd16 \ud835\udd17 \ud835\udd18 \ud835\udd19 \ud835\udd1a \ud835\udd1b \ud835\udd1c \u2128".split(" ");
-this.smallLatinFraktur="\ud835\udd1e \ud835\udd1f \ud835\udd20 \ud835\udd21 \ud835\udd22 \ud835\udd23 \ud835\udd24 \ud835\udd25 \ud835\udd26 \ud835\udd27 \ud835\udd28 \ud835\udd29 \ud835\udd2a \ud835\udd2b \ud835\udd2c \ud835\udd2d \ud835\udd2e \ud835\udd2f \ud835\udd30 \ud835\udd31 \ud835\udd32 \ud835\udd33 \ud835\udd34 \ud835\udd35 \ud835\udd36 \ud835\udd37".split(" ");this.capitalLatinDoubleStruck="\ud835\udd38 \ud835\udd39 \u2102 \ud835\udd3b \ud835\udd3c \ud835\udd3d \ud835\udd3e \u210d \ud835\udd40 \ud835\udd41 \ud835\udd42 \ud835\udd43 \ud835\udd44 \u2115 \ud835\udd46 \u2119 \u211a \u211d \ud835\udd4a \ud835\udd4b \ud835\udd4c \ud835\udd4d \ud835\udd4e \ud835\udd4f \ud835\udd50 \u2124".split(" ");
-this.smallLatinDoubleStruck="\ud835\udd52 \ud835\udd53 \ud835\udd54 \ud835\udd55 \ud835\udd56 \ud835\udd57 \ud835\udd58 \ud835\udd59 \ud835\udd5a \ud835\udd5b \ud835\udd5c \ud835\udd5d \ud835\udd5e \ud835\udd5f \ud835\udd60 \ud835\udd61 \ud835\udd62 \ud835\udd63 \ud835\udd64 \ud835\udd65 \ud835\udd66 \ud835\udd67 \ud835\udd68 \ud835\udd69 \ud835\udd6a \ud835\udd6b".split(" ");this.capitalLatinBoldFraktur="\ud835\udd6c \ud835\udd6d \ud835\udd6e \ud835\udd6f \ud835\udd70 \ud835\udd71 \ud835\udd72 \ud835\udd73 \ud835\udd74 \ud835\udd75 \ud835\udd76 \ud835\udd77 \ud835\udd78 \ud835\udd79 \ud835\udd7a \ud835\udd7b \ud835\udd7c \ud835\udd7d \ud835\udd7e \ud835\udd7f \ud835\udd80 \ud835\udd81 \ud835\udd82 \ud835\udd83 \ud835\udd84 \ud835\udd85".split(" ");
-this.smallLatinBoldFraktur="\ud835\udd86 \ud835\udd87 \ud835\udd88 \ud835\udd89 \ud835\udd8a \ud835\udd8b \ud835\udd8c \ud835\udd8d \ud835\udd8e \ud835\udd8f \ud835\udd90 \ud835\udd91 \ud835\udd92 \ud835\udd93 \ud835\udd94 \ud835\udd95 \ud835\udd96 \ud835\udd97 \ud835\udd98 \ud835\udd99 \ud835\udd9a \ud835\udd9b \ud835\udd9c \ud835\udd9d \ud835\udd9e \ud835\udd9f".split(" ");this.capitalLatinSansSerif="\ud835\udda0 \ud835\udda1 \ud835\udda2 \ud835\udda3 \ud835\udda4 \ud835\udda5 \ud835\udda6 \ud835\udda7 \ud835\udda8 \ud835\udda9 \ud835\uddaa \ud835\uddab \ud835\uddac \ud835\uddad \ud835\uddae \ud835\uddaf \ud835\uddb0 \ud835\uddb1 \ud835\uddb2 \ud835\uddb3 \ud835\uddb4 \ud835\uddb5 \ud835\uddb6 \ud835\uddb7 \ud835\uddb8 \ud835\uddb9".split(" ");
-this.smallLatinSansSerif="\ud835\uddba \ud835\uddbb \ud835\uddbc \ud835\uddbd \ud835\uddbe \ud835\uddbf \ud835\uddc0 \ud835\uddc1 \ud835\uddc2 \ud835\uddc3 \ud835\uddc4 \ud835\uddc5 \ud835\uddc6 \ud835\uddc7 \ud835\uddc8 \ud835\uddc9 \ud835\uddca \ud835\uddcb \ud835\uddcc \ud835\uddcd \ud835\uddce \ud835\uddcf \ud835\uddd0 \ud835\uddd1 \ud835\uddd2 \ud835\uddd3".split(" ");this.capitalLatinSansSerifBold="\ud835\uddd4 \ud835\uddd5 \ud835\uddd6 \ud835\uddd7 \ud835\uddd8 \ud835\uddd9 \ud835\uddda \ud835\udddb \ud835\udddc \ud835\udddd \ud835\uddde \ud835\udddf \ud835\udde0 \ud835\udde1 \ud835\udde2 \ud835\udde3 \ud835\udde4 \ud835\udde5 \ud835\udde6 \ud835\udde7 \ud835\udde8 \ud835\udde9 \ud835\uddea \ud835\uddeb \ud835\uddec \ud835\udded".split(" ");
-this.smallLatinSansSerifBold="\ud835\uddee \ud835\uddef \ud835\uddf0 \ud835\uddf1 \ud835\uddf2 \ud835\uddf3 \ud835\uddf4 \ud835\uddf5 \ud835\uddf6 \ud835\uddf7 \ud835\uddf8 \ud835\uddf9 \ud835\uddfa \ud835\uddfb \ud835\uddfc \ud835\uddfd \ud835\uddfe \ud835\uddff \ud835\ude00 \ud835\ude01 \ud835\ude02 \ud835\ude03 \ud835\ude04 \ud835\ude05 \ud835\ude06 \ud835\ude07".split(" ");this.capitalLatinSansSerifItalic="\ud835\ude08 \ud835\ude09 \ud835\ude0a \ud835\ude0b \ud835\ude0c \ud835\ude0d \ud835\ude0e \ud835\ude0f \ud835\ude10 \ud835\ude11 \ud835\ude12 \ud835\ude13 \ud835\ude14 \ud835\ude15 \ud835\ude16 \ud835\ude17 \ud835\ude18 \ud835\ude19 \ud835\ude1a \ud835\ude1b \ud835\ude1c \ud835\ude1d \ud835\ude1e \ud835\ude1f \ud835\ude20 \ud835\ude21".split(" ");
-this.smallLatinSansSerifItalic="\ud835\ude22 \ud835\ude23 \ud835\ude24 \ud835\ude25 \ud835\ude26 \ud835\ude27 \ud835\ude28 \ud835\ude29 \ud835\ude2a \ud835\ude2b \ud835\ude2c \ud835\ude2d \ud835\ude2e \ud835\ude2f \ud835\ude30 \ud835\ude31 \ud835\ude32 \ud835\ude33 \ud835\ude34 \ud835\ude35 \ud835\ude36 \ud835\ude37 \ud835\ude38 \ud835\ude39 \ud835\ude3a \ud835\ude3b".split(" ");this.capitalLatinMonospace="\ud835\ude70 \ud835\ude71 \ud835\ude72 \ud835\ude73 \ud835\ude74 \ud835\ude75 \ud835\ude76 \ud835\ude77 \ud835\ude78 \ud835\ude79 \ud835\ude7a \ud835\ude7b \ud835\ude7c \ud835\ude7d \ud835\ude7e \ud835\ude7f \ud835\ude80 \ud835\ude81 \ud835\ude82 \ud835\ude83 \ud835\ude84 \ud835\ude85 \ud835\ude86 \ud835\ude87 \ud835\ude88 \ud835\ude89".split(" ");
-this.smallLatinMonospace="\ud835\ude8a \ud835\ude8b \ud835\ude8c \ud835\ude8d \ud835\ude8e \ud835\ude8f \ud835\ude90 \ud835\ude91 \ud835\ude92 \ud835\ude93 \ud835\ude94 \ud835\ude95 \ud835\ude96 \ud835\ude97 \ud835\ude98 \ud835\ude99 \ud835\ude9a \ud835\ude9b \ud835\ude9c \ud835\ude9d \ud835\ude9e \ud835\ude9f \ud835\udea0 \ud835\udea1 \ud835\udea2 \ud835\udea3".split(" ");this.latinDoubleStruckItalic=["\u2145","\u2146","\u2147","\u2148","\u2149"];this.capitalGreek="\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9".split("");
-this.smallGreek="\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9".split("");this.capitalGreekBold="\ud835\udea8 \ud835\udea9 \ud835\udeaa \ud835\udeab \ud835\udeac \ud835\udead \ud835\udeae \ud835\udeaf \ud835\udeb0 \ud835\udeb1 \ud835\udeb2 \ud835\udeb3 \ud835\udeb4 \ud835\udeb5 \ud835\udeb6 \ud835\udeb7 \ud835\udeb8 \ud835\udeba \ud835\udebb \ud835\udebc \ud835\udebd \ud835\udebe \ud835\udebf \ud835\udec0".split(" ");
-this.smallGreekBold="\ud835\udec2 \ud835\udec3 \ud835\udec4 \ud835\udec5 \ud835\udec6 \ud835\udec7 \ud835\udec8 \ud835\udec9 \ud835\udeca \ud835\udecb \ud835\udecc \ud835\udecd \ud835\udece \ud835\udecf \ud835\uded0 \ud835\uded1 \ud835\uded2 \ud835\uded3 \ud835\uded4 \ud835\uded5 \ud835\uded6 \ud835\uded7 \ud835\uded8 \ud835\uded9 \ud835\udeda".split(" ");this.capitalGreekItalic="\ud835\udee2 \ud835\udee3 \ud835\udee4 \ud835\udee5 \ud835\udee6 \ud835\udee7 \ud835\udee8 \ud835\udee9 \ud835\udeea \ud835\udeeb \ud835\udeec \ud835\udeed \ud835\udeee \ud835\udeef \ud835\udef0 \ud835\udef1 \ud835\udef2 \ud835\udef4 \ud835\udef5 \ud835\udef6 \ud835\udef7 \ud835\udef8 \ud835\udef9 \ud835\udefa".split(" ");
-this.smallGreekItalic="\ud835\udefc \ud835\udefd \ud835\udefe \ud835\udeff \ud835\udf00 \ud835\udf01 \ud835\udf02 \ud835\udf03 \ud835\udf04 \ud835\udf05 \ud835\udf06 \ud835\udf07 \ud835\udf08 \ud835\udf09 \ud835\udf0a \ud835\udf0b \ud835\udf0c \ud835\udf0d \ud835\udf0e \ud835\udf0f \ud835\udf10 \ud835\udf11 \ud835\udf12 \ud835\udf13 \ud835\udf14".split(" ");this.capitalGreekSansSerifBold="\ud835\udf56 \ud835\udf57 \ud835\udf58 \ud835\udf59 \ud835\udf5a \ud835\udf5b \ud835\udf5c \ud835\udf5d \ud835\udf5e \ud835\udf5f \ud835\udf60 \ud835\udf61 \ud835\udf62 \ud835\udf63 \ud835\udf64 \ud835\udf65 \ud835\udf66 \ud835\udf68 \ud835\udf69 \ud835\udf6a \ud835\udf6b \ud835\udf6c \ud835\udf6d \ud835\udf6e".split(" ");
-this.smallGreekSansSerifBold="\ud835\udf70 \ud835\udf71 \ud835\udf72 \ud835\udf73 \ud835\udf74 \ud835\udf75 \ud835\udf76 \ud835\udf77 \ud835\udf78 \ud835\udf79 \ud835\udf7a \ud835\udf7b \ud835\udf7c \ud835\udf7d \ud835\udf7e \ud835\udf7f \ud835\udf80 \ud835\udf81 \ud835\udf82 \ud835\udf83 \ud835\udf84 \ud835\udf85 \ud835\udf86 \ud835\udf87 \ud835\udf88".split(" ");this.greekDoubleStruck=["\u213c","\u213d","\u213e","\u213f"];this.hebrewLetters=["\u2135","\u2136","\u2137","\u2138"];this.additions="+\u00b1\u2213\u2214\u2227\u2228\u2229\u222a\u228c\u2293\u2294\u229d\u229e\u22a4\u22a5\u22ba\u22bb\u22bc\u22c4\u22ce\u22cf\u22d2\u22d3\u25b3\u25b7\u25bd\u25c1\u2a5e\u2295".split("");
-this.invisiblePlus_=cvox.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications="\u2020\u2021\u2210\u2217\u2218\u2219\u2240\u229a\u229b\u22a0\u22a1\u22c5\u22c6\u22c7\u22c9\u22ca\u22cb\u22cc\u25cb".split("");this.invisibleTimes_=cvox.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions="-\u2052\u207b\u208b\u2212\u2216\u2238\u2242\u2296\u229f\u2796\u2a29\u2a2a\u2a2b\u2a2c\u2a3a\u2a41\u2a6c\ufe63\uff0d\u2010\u2011".split("");
-this.divisions="/\u00f7\u2044\u2215\u2298\u27cc\u29bc\u2a38".split("");this.functionApplication_=cvox.SemanticUtil.numberToUnicode(8289);this.equalities="=~\u207c\u208c\u223c\u223d\u2243\u2245\u2248\u224a\u224b\u224c\u224d\u224e\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2263\u29e4\u2a66\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u22d5\u2a6d\u2a6a\u2a6b\u2a6c\ufe66\uff1d".split("");this.inequalities="<>\u2241\u2242\u2244\u2246\u2247\u2249\u224f\u2250\u2260\u2262\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2af7\u2af8\u2af9\u2afa\u29c0\u29c1\ufe64\ufe65\uff1c\uff1e".split("");
-this.relations=[];this.arrows="\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219a\u219b\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21ae\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cd\u21ce\u21cf\u21d0\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2301\u2303\u2304\u2324\u238b\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u29b3\u29b4\u29bd\u29ea\u29ec\u29ed\u2a17\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\uffe9\uffea\uffeb\uffec\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21cb\u21cc\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u297c\u297d\u297e\u297f".split("");
-this.sumOps="\u2140\u220f\u2210\u2211\u22c0\u22c1\u22c2\u22c3\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2afc\u2aff".split("");this.intOps="\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c".split("");this.prefixOps=["\u2200","\u2203"];this.digitsNormal="0123456789".split("");this.digitsFullWidth="\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19".split("");
-this.digitsBold="\ud835\udfce \ud835\udfcf \ud835\udfd0 \ud835\udfd1 \ud835\udfd2 \ud835\udfd3 \ud835\udfd4 \ud835\udfd5 \ud835\udfd6 \ud835\udfd7".split(" ");this.digitsDoubleStruck="\ud835\udfd8 \ud835\udfd9 \ud835\udfda \ud835\udfdb \ud835\udfdc \ud835\udfdd \ud835\udfde \ud835\udfdf \ud835\udfe0 \ud835\udfe1".split(" ");this.digitsSansSerif="\ud835\udfe2 \ud835\udfe3 \ud835\udfe4 \ud835\udfe5 \ud835\udfe6 \ud835\udfe7 \ud835\udfe8 \ud835\udfe9 \ud835\udfea \ud835\udfeb".split(" ");this.digitsSansSerifBold=
-"\ud835\udfec \ud835\udfed \ud835\udfee \ud835\udfef \ud835\udff0 \ud835\udff1 \ud835\udff2 \ud835\udff3 \ud835\udff4 \ud835\udff5".split(" ");this.digitsMonospace="\ud835\udff6 \ud835\udff7 \ud835\udff8 \ud835\udff9 \ud835\udffa \ud835\udffb \ud835\udffc \ud835\udffd \ud835\udffe \ud835\udfff".split(" ");this.digitsSuperscript="\u00b2\u00b3\u00b9\u2070\u2074\u2075\u2076\u2077\u2078\u2079".split("");this.digitsSubscript="\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089".split("");this.fractions=
-"\u00bc\u00bd\u00be\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2189".split("");this.enclosedNumbers="\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf".split("");
-this.fencedNumbers="\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487".split("");this.punctuatedNumbers="\u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496 \u2497 \u2498 \u2499 \u249a \u249b \ud83c\udd00 \ud83c\udd01 \ud83c\udd02 \ud83c\udd03 \ud83c\udd04 \ud83c\udd05 \ud83c\udd06 \ud83c\udd07 \ud83c\udd08 \ud83c\udd09 \ud83c\udd0a".split(" ");this.numbers=this.fractions.concat(this.digitsSuperscript,
-this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.trigonometricFunctions="cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan".split(" ");this.hyperbolicFunctions="cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh".split(" ");this.algebraicFunctions="deg det dim hom ker Tr tr".split(" ");this.elementaryFunctions="log ln lg exp expt gcd gcd arg im re Pr".split(" ");this.prefixFunctions=
-this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions="inf lim liminf limsup max min sup injlim projlim".split(" ");this.infixFunctions=["mod","rem"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.ellipses,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:cvox.SemanticAttr.Type.PUNCTUATION,
-role:cvox.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.DASH},{set:this.primes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.PRIME},{set:this.leftFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.OPEN},{set:this.rightFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.CLOSE},{set:this.topFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.TOP},{set:this.bottomFences,
-type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},
-{set:this.smallLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.smallLatinFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.capitalLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCKITALIC},
-{set:this.smallGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,
-font:cvox.SemanticAttr.Font.BOLD},{set:this.smallGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallGreekSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.greekDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.hebrewLetters,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.OTHERLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsNormal,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.digitsSansSerif,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER},{set:this.additions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.ADDITION},
-{set:this.multiplications,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:cvox.SemanticAttr.Type.PREFIXOP,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.equalities,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.EQUALITY},{set:this.inequalities,
-type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.ARROW},{set:this.sumOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.SUM},{set:this.intOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.LIMFUNC},
-{set:this.prefixFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION}]};goog.addSingletonGetter(cvox.SemanticAttr);
-cvox.SemanticAttr.Type={PUNCTUATION:"punctuation",FENCE:"fence",NUMBER:"number",IDENTIFIER:"identifier",TEXT:"text",OPERATOR:"operator",RELATION:"relation",LARGEOP:"largeop",FUNCTION:"function",ACCENT:"accent",FENCED:"fenced",FRACTION:"fraction",PUNCTUATED:"punctuated",RELSEQ:"relseq",MULTIREL:"multirel",INFIXOP:"infixop",PREFIXOP:"prefixop",POSTFIXOP:"postfixop",APPL:"appl",INTEGRAL:"integral",BIGOP:"bigop",SQRT:"sqrt",ROOT:"root",LIMUPPER:"limupper",LIMLOWER:"limlower",LIMBOTH:"limboth",SUBSCRIPT:"subscript",
-SUPERSCRIPT:"superscript",UNDERSCORE:"underscore",OVERSCORE:"overscore",TABLE:"table",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",ROW:"row",LINE:"line",CELL:"cell",UNKNOWN:"unknown",EMPTY:"empty"};
-cvox.SemanticAttr.Role={ELLIPSIS:"ellipsis",FULLSTOP:"fullstop",DASH:"dash",PRIME:"prime",VBAR:"vbar",OPENFENCE:"openfence",CLOSEFENCE:"closefence",APPLICATION:"application",OPEN:"open",CLOSE:"close",TOP:"top",BOTTOM:"bottom",NEUTRAL:"neutral",LATINLETTER:"latinletter",GREEKLETTER:"greekletter",OTHERLETTER:"otherletter",INTEGER:"integer",FLOAT:"float",OTHERNUMBER:"othernumber",MULTIACCENT:"multiaccent",OVERACCENT:"overaccent",UNDERACCENT:"underaccent",LEFTRIGHT:"leftright",ABOVEBELOW:"abovebelow",
-SEQUENCE:"sequence",ENDPUNCT:"endpunct",STARTPUNCT:"startpunct",NEGATIVE:"negative",NEGATION:"negation",MULTIOP:"multiop",LIMFUNC:"limit function",INFIXFUNC:"infix function",PREFIXFUNC:"prefix function",POSTFIXFUNC:"postfix function",SUM:"sum",INTEGRAL:"integral",ADDITION:"addition",MULTIPLICATION:"multiplication",DIVISION:"division",SUBTRACTION:"subtraction",IMPLICIT:"implicit",EQUALITY:"equality",INEQUALITY:"inequality",ELEMENT:"element",BINREL:"binrel",ARROW:"arrow",MULTILINE:"multiline",MATRIX:"matrix",
-VECTOR:"vector",CASES:"cases",TABLE:"table",UNKNOWN:"unknown"};cvox.SemanticAttr.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",DOUBLESTRUCK:"double-struck",DOUBLESTRUCKITALIC:"double-struck-italic",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",UNKNOWN:"unknown"};
-cvox.SemanticAttr.lookupMeaning=function(a){return cvox.SemanticAttr.getInstance().lookupMeaning_(a)};cvox.SemanticAttr.invisibleTimes=function(){return cvox.SemanticAttr.getInstance().invisibleTimes_};cvox.SemanticAttr.invisibleComma=function(){return cvox.SemanticAttr.getInstance().invisibleComma_};cvox.SemanticAttr.functionApplication=function(){return cvox.SemanticAttr.getInstance().functionApplication_};
-cvox.SemanticAttr.isMatchingFenceRole=function(a,b){return a==cvox.SemanticAttr.Role.OPEN&&b==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL&&b==cvox.SemanticAttr.Role.NEUTRAL||a==cvox.SemanticAttr.Role.TOP&&b==cvox.SemanticAttr.Role.BOTTOM};cvox.SemanticAttr.isMatchingFence=function(a,b){return cvox.SemanticAttr.getInstance().isMatchingFence_(a,b)};cvox.SemanticAttr.isOpeningFence=function(a){return a==cvox.SemanticAttr.Role.OPEN||a==cvox.SemanticAttr.Role.NEUTRAL};
-cvox.SemanticAttr.isClosingFence=function(a){return a==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL};cvox.SemanticAttr.isCharacterD=function(a){var b="d \u2146 \uff44 \ud835\udc1d \ud835\udc51 \ud835\udcb9 \ud835\udced \ud835\udd21 \ud835\udd55 \ud835\udd89 \ud835\uddbd \ud835\uddf1 \ud835\ude25 \ud835\ude8d".split(" ");return-1!=b.indexOf(a)};
-cvox.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};
-cvox.SemanticAttr.prototype.lookupMeaning_=function(a){for(var b=0,c;c=this.symbolSetToSemantic_[b];b++)if(-1!=c.set.indexOf(a))return{role:c.role||cvox.SemanticAttr.Role.UNKNOWN,type:c.type||cvox.SemanticAttr.Type.UNKNOWN,font:c.font||cvox.SemanticAttr.Font.UNKNOWN};return{role:cvox.SemanticAttr.Role.UNKNOWN,type:cvox.SemanticAttr.Type.UNKNOWN,font:cvox.SemanticAttr.Font.UNKNOWN}};cvox.SemanticTree=function(a){this.idCounter_=0;this.mathml=a;this.root=this.parseMathml_(a)};cvox.SemanticTree.Node=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=cvox.SemanticAttr.Type.UNKNOWN;this.role=cvox.SemanticAttr.Role.UNKNOWN;this.font=cvox.SemanticAttr.Font.UNKNOWN;this.childNodes=[];this.textContent="";this.contentNodes=[]};
-cvox.SemanticTree.Node.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};cvox.SemanticTree.prototype.xml=function(a){var b=new DOMParser,b=b.parseFromString("<stree></stree>","text/xml");a=this.root.xml(b,a);b.childNodes[0].appendChild(a);return b.childNodes[0]};
-cvox.SemanticTree.Node.prototype.xml=function(a,b){var c=function(c,d){for(var g=d.map(function(c){return c.xml(a,b)}),h=a.createElement(c),k=0,l;l=g[k];k++)h.appendChild(l);return h},d=a.createElement(this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c("content",this.contentNodes));0<this.childNodes.length&&d.appendChild(c("children",this.childNodes));return d};cvox.SemanticTree.prototype.toString=function(a){var b=new XMLSerializer;return b.serializeToString(this.xml(a))};
-cvox.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return cvox.SemanticTree.formatXml(a)};cvox.SemanticTree.formatXml=function(a){var b=/(>)(<)(\/*)/g;a=a.replace(b,"$1\r\n$2$3");b=/(>)(.+)(<c)/g;a=a.replace(b,"$1\r\n$2\r\n$3");var c="",d="";a.split("\r\n").forEach(function(a){a.match(/.+<\/\w[^>]*>$/)?c+=d+a+"\r\n":a.match(/^<\/\w/)?d&&(d=d.slice(2),c+=d+a+"\r\n"):a.match(/^<\w[^>]*[^\/]>.*$/)?(c+=d+a+"\r\n",d+=" "):c+=d+a+"\r\n"});return c};
-cvox.SemanticTree.Node.prototype.toString=function(a){var b=new XMLSerializer,c=new DOMParser,c=c.parseFromString("","text/xml");return b.serializeToString(this.xml(c,a))};cvox.SemanticTree.Node.prototype.xmlAttributes_=function(a){a.setAttribute("role",this.role);this.font!=cvox.SemanticAttr.Font.UNKNOWN&&a.setAttribute("font",this.font);a.setAttribute("id",this.id)};cvox.SemanticTree.prototype.createNode_=function(){return new cvox.SemanticTree.Node(this.idCounter_++)};
-cvox.SemanticTree.Node.prototype.updateContent_=function(a){a=a.trim();if(this.textContent!=a){var b=cvox.SemanticAttr.lookupMeaning(a);this.textContent=a;this.role=b.role;this.type=b.type;this.font=b.font}};cvox.SemanticTree.Node.prototype.addMathmlNodes_=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};cvox.SemanticTree.Node.prototype.appendChild_=function(a){this.childNodes.push(a);this.addMathmlNodes_(a.mathml);a.parent=this};
-cvox.SemanticTree.Node.prototype.appendContentNode_=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes_(a.mathml),a.parent=this)};
-cvox.SemanticTree.prototype.parseMathml_=function(a){var b=cvox.DomUtil.toArray(a.children);switch(cvox.SemanticUtil.tagName(a)){case "MATH":case "MROW":case "MPADDED":case "MSTYLE":return b=cvox.SemanticUtil.purgeNodes(b),1==b.length?this.parseMathml_(b[0]):this.processRow_(this.parseMathmlChildren_(b));case "MFRAC":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.FRACTION,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]),a.role=cvox.SemanticAttr.Role.DIVISION,a;case "MSUB":case "MSUP":case "MSUBSUP":case "MOVER":case "MUNDER":case "MUNDEROVER":return this.makeLimitNode_(cvox.SemanticUtil.tagName(a),
-this.parseMathmlChildren_(b));case "MROOT":return this.makeBranchNode_(cvox.SemanticAttr.Type.ROOT,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]);case "MSQRT":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),this.makeBranchNode_(cvox.SemanticAttr.Type.SQRT,[this.processRow_(b)],[]);case "MTABLE":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.TABLE,this.parseMathmlChildren_(b),[]),cvox.SemanticTree.tableIsMultiline_(a)&&this.tableToMultiline_(a),a;case "MTR":return a=
-this.makeBranchNode_(cvox.SemanticAttr.Type.ROW,this.parseMathmlChildren_(b),[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTD":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),a=this.makeBranchNode_(cvox.SemanticAttr.Type.CELL,[this.processRow_(b)],[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTEXT":return a=this.makeLeafNode_(a),a.type=cvox.SemanticAttr.Type.TEXT,a;case "MI":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.IDENTIFIER),
-a;case "MN":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.NUMBER),a;case "MO":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.OPERATOR),a;default:return this.makeUnprocessed_(a)}};cvox.SemanticTree.prototype.parseMathmlChildren_=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parseMathml_(d));return b};
-cvox.SemanticTree.prototype.makeUnprocessed_=function(a){var b=this.createNode_();b.mathml=[a];return b};cvox.SemanticTree.prototype.makeEmptyNode_=function(){var a=this.createNode_();a.type=cvox.SemanticAttr.Type.EMPTY;return a};cvox.SemanticTree.prototype.makeLeafNode_=function(a){var b=this.createNode_();b.mathml=[a];b.updateContent_(a.textContent);b.font=a.getAttribute("mathvariant")||b.font;return b};
-cvox.SemanticTree.prototype.makeBranchNode_=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent_(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(a){a.parent=e;e.addMathmlNodes_(a.mathml)});return e};cvox.SemanticTree.prototype.makeImplicitNode_=function(a){if(1==a.length)return a[0];var b=this.createNode_();b.updateContent_(cvox.SemanticAttr.invisibleTimes());a=this.makeInfixNode_(a,b);a.role=cvox.SemanticAttr.Role.IMPLICIT;return a};
-cvox.SemanticTree.prototype.makeInfixNode_=function(a,b){return this.makeBranchNode_(cvox.SemanticAttr.Type.INFIXOP,a,[b],b.textContent)};cvox.SemanticTree.prototype.makeConcatNode_=function(a,b,c){if(0==b.length)return a;var d=b.map(function(a){return a.textContent}).join(" ");a=this.makeBranchNode_(c,[a],b,d);0<b.length&&(a.role=cvox.SemanticAttr.Role.MULTIOP);return a};
-cvox.SemanticTree.prototype.makePrefixNode_=function(a,b){for(var c=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.attrPred_("role","SUBTRACTION")),d=this.makeConcatNode_(a,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);0<c.rel.length;)d=this.makeConcatNode_(d,[c.rel.pop()],cvox.SemanticAttr.Type.PREFIXOP),d.role=cvox.SemanticAttr.Role.NEGATIVE,d=this.makeConcatNode_(d,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);return d};
-cvox.SemanticTree.prototype.makePostfixNode_=function(a,b){return this.makeConcatNode_(a,b,cvox.SemanticAttr.Type.POSTFIXOP)};cvox.SemanticTree.prototype.processRow_=function(a){if(0==a.length)return this.makeEmptyNode_();a=this.getFencesInRow_(a);a=this.processTablesInRow_(a);a=this.getPunctuationInRow_(a);a=this.getFunctionsInRow_(a);return this.processRelationsInRow_(a)};
-cvox.SemanticTree.prototype.processRelationsInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","RELATION")),c=b.rel[0];if(!c)return this.processOperationsInRow_(a);if(1==a.length)return a[0];a=b.comp.map(goog.bind(this.processOperationsInRow_,this));return b.rel.every(function(a){return a.textContent==c.textContent})?this.makeBranchNode_(cvox.SemanticAttr.Type.RELSEQ,a,b.rel,c.textContent):this.makeBranchNode_(cvox.SemanticAttr.Type.MULTIREL,a,b.rel)};
-cvox.SemanticTree.prototype.processOperationsInRow_=function(a){if(0==a.length)return this.makeEmptyNode_();if(1==a.length)return a[0];for(var b=[];0<a.length&&a[0].type==cvox.SemanticAttr.Type.OPERATOR;)b.push(a.shift());if(0==a.length)return this.makePrefixNode_(b.pop(),b);if(1==a.length)return this.makePrefixNode_(a[0],b);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));b=this.makePrefixNode_(this.makeImplicitNode_(a.head),b);return a.div?this.makeOperationsTree_(a.tail,
-b,a.div):b};
-cvox.SemanticTree.prototype.makeOperationsTree_=function(a,b,c,d){d=d||[];if(0==a.length)return d.unshift(c),b.type==cvox.SemanticAttr.Type.INFIXOP?(d=this.makePostfixNode_(b.childNodes.pop(),d),b.appendChild_(d),b):this.makePostfixNode_(b,d);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));if(0==a.head.length)return d.push(a.div),this.makeOperationsTree_(a.tail,b,c,d);d=this.makePrefixNode_(this.makeImplicitNode_(a.head),d);b=this.appendOperand_(b,c,d);return a.div?
-this.makeOperationsTree_(a.tail,b,a.div,[]):b};cvox.SemanticTree.prototype.appendOperand_=function(a,b,c){return a.type!=cvox.SemanticAttr.Type.INFIXOP?this.makeInfixNode_([a,c],b):this.appendExistingOperator_(a,b,c)?a:b.role==cvox.SemanticAttr.Role.MULTIPLICATION?this.appendMultiplicativeOp_(a,b,c):this.appendAdditiveOp_(a,b,c)};
-cvox.SemanticTree.prototype.appendMultiplicativeOp_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type==cvox.SemanticAttr.Type.INFIXOP;)d=e,e=d.childNodes[a.childNodes.length-1];b=this.makeInfixNode_([d.childNodes.pop(),c],b);d.appendChild_(b);return a};cvox.SemanticTree.prototype.appendAdditiveOp_=function(a,b,c){return this.makeInfixNode_([a,c],b)};
-cvox.SemanticTree.prototype.appendExistingOperator_=function(a,b,c){if(!a||a.type!=cvox.SemanticAttr.Type.INFIXOP)return!1;if(a.textContent==b.textContent)return a.appendContentNode_(b),a.appendChild_(c),!0;this.appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};cvox.SemanticTree.prototype.getFencesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","FENCE"));var b=a.comp.shift();return this.processFences_(a.rel,a.comp,[],[b])};
-cvox.SemanticTree.prototype.processFences_=function(a,b,c,d){if(0==a.length&&0==c.length)return d[0];var e=cvox.SemanticTree.attrPred_("role","OPEN");if(0==a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),cvox.SemanticTree.fenceToPunct_(b),a.push(b);else{c=cvox.SemanticTree.sliceNodes_(c,e);var f=c.head.length-1,g=this.processNeutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=c[c.length-1];g=a[0].role;
-if(g==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!=f.textContent))return c.push(a.shift()),d.push(b.shift()),this.processFences_(a,b,c,d);if(f&&(g==cvox.SemanticAttr.Role.CLOSE&&f.role==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&a[0].textContent==f.textContent))return e=this.makeHorizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c,d);if(f&&g==cvox.SemanticAttr.Role.CLOSE&&f.role==
-cvox.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=cvox.SemanticTree.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=this.processNeutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=this.makeHorizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c.head,d);e=a.shift();cvox.SemanticTree.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return this.processFences_(a,b,c,d)};
-cvox.SemanticTree.prototype.processNeutralFences_=function(a,b){if(0==a.length)return a;if(1==a.length)return cvox.SemanticTree.fenceToPunct_(a[0]),a;var c=a.shift(),d=cvox.SemanticTree.sliceNodes_(a,function(a){return a.textContent==c.textContent});if(!d.div){cvox.SemanticTree.fenceToPunct_(c);var e=b.shift();e.unshift(c);return e.concat(this.processNeutralFences_(a,b))}var f=this.combineFencedContent_(c,d.div,d.head,b);return 0<d.tail.length?(e=f.shift(),d=this.processNeutralFences_(d.tail,f),e.concat(d)):
-f[0]};cvox.SemanticTree.prototype.combineFencedContent_=function(a,b,c,d){if(0==c.length)return a=this.makeHorizontalFencedNode_(a,b,d.shift()),d.unshift(a),d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=this.processNeutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=this.makeHorizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};
-cvox.SemanticTree.fenceToPunct_=function(a){a.type=cvox.SemanticAttr.Type.PUNCTUATION;switch(a.role){case cvox.SemanticAttr.Role.NEUTRAL:a.role=cvox.SemanticAttr.Role.VBAR;break;case cvox.SemanticAttr.Role.OPEN:a.role=cvox.SemanticAttr.Role.OPENFENCE;break;case cvox.SemanticAttr.Role.CLOSE:a.role=cvox.SemanticAttr.Role.CLOSEFENCE}};
-cvox.SemanticTree.prototype.makeHorizontalFencedNode_=function(a,b,c){c=this.processRow_(c);b=this.makeBranchNode_(cvox.SemanticAttr.Type.FENCED,[c],[a,b]);b.role=a.role==cvox.SemanticAttr.Role.OPEN?cvox.SemanticAttr.Role.LEFTRIGHT:a.role;return b};
-cvox.SemanticTree.prototype.getPunctuationInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,function(a){return cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)&&!cvox.SemanticTree.attrPred_("role","ELLIPSIS")(a)});if(0==b.rel.length)return a;a=[];var c=b.comp.shift();0<c.length&&a.push(this.processRow_(c));for(var d=0;0<b.comp.length;)a.push(b.rel[d++]),c=b.comp.shift(),0<c.length&&a.push(this.processRow_(c));return[this.makePunctuatedNode_(a,b.rel)]};
-cvox.SemanticTree.prototype.makePunctuatedNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.PUNCTUATED,a,b);c.role=1==b.length&&a[0].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.STARTPUNCT:1==b.length&&a[a.length-1].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.ENDPUNCT:cvox.SemanticAttr.Role.SEQUENCE;return c};
-cvox.SemanticTree.prototype.makeLimitNode_=function(a,b){var c=b[0],d=cvox.SemanticTree.attrPred_("type","FUNCTION")(c),d=cvox.SemanticTree.attrPred_("type","LARGEOP")(c)||cvox.SemanticTree.attrPred_("type","LIMBOTH")(c)||cvox.SemanticTree.attrPred_("type","LIMLOWER")(c)||cvox.SemanticTree.attrPred_("type","LIMUPPER")(c)||d&&cvox.SemanticTree.attrPred_("role","LIMFUNC")(c),e=cvox.SemanticAttr.Type.UNKNOWN;if(d)switch(a){case "MSUB":case "MUNDER":e=cvox.SemanticAttr.Type.LIMLOWER;break;case "MSUP":case "MOVER":e=
-cvox.SemanticAttr.Type.LIMUPPER;break;case "MSUBSUP":case "MUNDEROVER":e=cvox.SemanticAttr.Type.LIMBOTH}else switch(a){case "MSUB":e=cvox.SemanticAttr.Type.SUBSCRIPT;break;case "MSUP":e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MSUBSUP":d=this.makeBranchNode_(cvox.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=c.role;b=[d,b[2]];e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MOVER":e=cvox.SemanticAttr.Type.OVERSCORE;break;case "MUNDER":e=cvox.SemanticAttr.Type.UNDERSCORE;break;default:d=this.makeBranchNode_(cvox.SemanticAttr.Type.UNDERSCORE,
-[c,b[1]],[]),d.role=c.role,b=[d,b[2]],e=cvox.SemanticAttr.Type.OVERSCORE}d=this.makeBranchNode_(e,b,[]);d.role=c.role;return d};cvox.SemanticTree.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0==a.length)return b;var c=a.shift(),d=cvox.SemanticTree.classifyFunction_(c,a);if(!d)return b.push(c),this.getFunctionsInRow_(a,b);var e=this.getFunctionsInRow_(a,[]),c=this.getFunctionArgs_(c,e,d);return b.concat(c)};
-cvox.SemanticTree.classifyFunction_=function(a,b){if(a.type==cvox.SemanticAttr.Type.APPL||a.type==cvox.SemanticAttr.Type.BIGOP||a.type==cvox.SemanticAttr.Type.INTEGRAL)return"";if(b[0]&&b[0].textContent==cvox.SemanticAttr.functionApplication())return b.shift(),cvox.SemanticTree.propagatePrefixFunc_(a),"prefix";switch(a.role){case cvox.SemanticAttr.Role.INTEGRAL:return"integral";case cvox.SemanticAttr.Role.SUM:return"bigop";case cvox.SemanticAttr.Role.PREFIXFUNC:case cvox.SemanticAttr.Role.LIMFUNC:return"prefix";
-default:if(a.type==cvox.SemanticAttr.Type.IDENTIFIER)return"simple"}return""};cvox.SemanticTree.propagatePrefixFunc_=function(a){a&&(a.role=cvox.SemanticAttr.Role.PREFIXFUNC,cvox.SemanticTree.propagatePrefixFunc_(a.childNodes[0]))};
-cvox.SemanticTree.prototype.getFunctionArgs_=function(a,b,c){switch(c){case "integral":return b=this.getIntegralArgs_(b),c=this.processRow_(b.integrand),a=this.makeIntegralNode_(a,c,b.intvar),b.rest.unshift(a),b.rest;case "prefix":if(b[0]&&b[0].type==cvox.SemanticAttr.Type.FENCED)return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;case "bigop":b=cvox.SemanticTree.sliceNodes_(b,cvox.SemanticTree.prefixFunctionBoundary_);var d=this.processRow_(b.head);a="prefix"==c?this.makeFunctionNode_(a,
-d):this.makeBigOpNode_(a,d);b.div&&b.tail.unshift(b.div);b.tail.unshift(a);return b.tail;case "simple":if(0==b.length)return[a];c=b[0];if(c.type==cvox.SemanticAttr.Type.FENCED&&c.role!=cvox.SemanticAttr.Role.NEUTRAL&&this.simpleFunctionHeuristic_(c))return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;b.unshift(a);return b}};
-cvox.SemanticTree.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0==a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(cvox.SemanticTree.generalFunctionBoundary_(c))return{integrand:b,intvar:null,rest:a};if(cvox.SemanticTree.integralDxBoundarySingle_(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&cvox.SemanticTree.integralDxBoundary_(c,a[1])){var d=this.createNode_();d.updateContent_(cvox.SemanticAttr.invisibleComma());c=this.makePunctuatedNode_([c,d,a[1]],[d]);c.role=cvox.SemanticAttr.Role.INTEGRAL;
-return{integrand:b,intvar:c,rest:a.slice(2)}}b.push(a.shift());return this.getIntegralArgs_(a,b)};cvox.SemanticTree.prototype.makeFunctionNode_=function(a,b){var c=this.createNode_();c.updateContent_(cvox.SemanticAttr.functionApplication());c.type=cvox.SemanticAttr.Type.PUNCTUATION;c.role=cvox.SemanticAttr.Role.APPLICATION;c=this.makeBranchNode_(cvox.SemanticAttr.Type.APPL,[a,b],[c]);c.role=a.role;return c};
-cvox.SemanticTree.prototype.makeBigOpNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.BIGOP,[a,b],[]);c.role=a.role;return c};cvox.SemanticTree.prototype.makeIntegralNode_=function(a,b,c){b=b||this.makeEmptyNode_();c=c||this.makeEmptyNode_();b=this.makeBranchNode_(cvox.SemanticAttr.Type.INTEGRAL,[a,b,c],[]);b.role=a.role;return b};
-cvox.SemanticTree.prototype.simpleFunctionHeuristic_=function(a){a=a.childNodes;if(0==a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!=cvox.SemanticAttr.Type.INFIXOP||a.role==cvox.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(cvox.SemanticTree.attrPred_("type","INFIXOP"))?!0:!1};cvox.SemanticTree.prefixFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","OPERATOR")(a)||cvox.SemanticTree.generalFunctionBoundary_(a)};
-cvox.SemanticTree.integralDxBoundary_=function(a,b){return!!b&&cvox.SemanticTree.attrPred_("type","IDENTIFIER")(b)&&cvox.SemanticAttr.isCharacterD(a.textContent)};cvox.SemanticTree.integralDxBoundarySingle_=function(a){if(cvox.SemanticTree.attrPred_("type","IDENTIFIER")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&cvox.SemanticAttr.isCharacterD(b)}return!1};
-cvox.SemanticTree.generalFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","RELATION")(a)||cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)};
-cvox.SemanticTree.prototype.processTablesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.tableIsMatrixOrVector_);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(this.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.isTableOrMultiline_);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();cvox.SemanticTree.tableIsCases_(d,e)&&this.tableToCases_(d,e.pop());b=b.concat(e);b.push(d)}return b.concat(a.comp.shift())};
-cvox.SemanticTree.isTableOrMultiline_=function(a){return!!a&&(cvox.SemanticTree.attrPred_("type","TABLE")(a)||cvox.SemanticTree.attrPred_("type","MULTILINE")(a))};cvox.SemanticTree.tableIsMatrixOrVector_=function(a){return!!a&&cvox.SemanticTree.attrPred_("type","FENCED")(a)&&cvox.SemanticTree.attrPred_("role","LEFTRIGHT")(a)&&1==a.childNodes.length&&cvox.SemanticTree.isTableOrMultiline_(a.childNodes[0])};
-cvox.SemanticTree.prototype.tableToMatrixOrVector_=function(a){var b=a.childNodes[0],c=cvox.SemanticTree.attrPred_("type","MULTILINE")(b)?"VECTOR":"MATRIX";b.type=cvox.SemanticAttr.Type[c];a.contentNodes.forEach(goog.bind(b.appendContentNode_,b));a=0;for(var d;d=b.childNodes[a];a++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role[c]);return b};cvox.SemanticTree.tableIsCases_=function(a,b){return 0<b.length&&cvox.SemanticTree.attrPred_("role","OPENFENCE")(b[b.length-1])};
-cvox.SemanticTree.prototype.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role.CASES);a.type=cvox.SemanticAttr.Type.CASES;a.appendContentNode_(b);return a};cvox.SemanticTree.tableIsMultiline_=function(a){return a.childNodes.every(function(a){a=a.childNodes.length;return 1>=a})};
-cvox.SemanticTree.prototype.tableToMultiline_=function(a){a.type=cvox.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)cvox.SemanticTree.rowToLine_(c,cvox.SemanticAttr.Role.MULTILINE)};cvox.SemanticTree.rowToLine_=function(a,b){b=b||cvox.SemanticAttr.Role.UNKNOWN;cvox.SemanticTree.attrPred_("type","ROW")(a)&&1==a.childNodes.length&&cvox.SemanticTree.attrPred_("type","CELL")(a.childNodes[0])&&(a.type=cvox.SemanticAttr.Type.LINE,a.role=b,a.childNodes=a.childNodes[0].childNodes)};
-cvox.SemanticTree.assignRoleToRow_=function(a,b){if(cvox.SemanticTree.attrPred_("type","LINE")(a))a.role=b;else if(cvox.SemanticTree.attrPred_("type","ROW")(a)){a.role=b;var c=cvox.SemanticTree.attrPred_("type","CELL");a.childNodes.forEach(function(a){c(a)&&(a.role=b)})}};
-cvox.SemanticTree.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};cvox.SemanticTree.partitionNodes_=function(a,b){var c=a,d=[],e=[];do{var f=cvox.SemanticTree.sliceNodes_(c,b);e.push(f.head);d.push(f.div);c=f.tail}while(f.div);d.pop();return{rel:d,comp:e}};
-cvox.SemanticTree.attrPred_=function(a,b){return function(c){var d;o:{switch(a){case "type":d=cvox.SemanticAttr.Type[b];break o;case "role":d=cvox.SemanticAttr.Role[b];break o;case "font":d=cvox.SemanticAttr.Font[b];break o}d=void 0}return c[a]==d}};cvox.TraverseMath=function(){this.activeNode=this.activeMath=null;this.allTexs_={};this.allMathjaxs_={};this.activeMathmlHost=null;this.domain="default";this.style="short";cvox.ChromeVox.mathJax&&(this.initializeMathjaxs(),this.initializeAltMaths())};goog.addSingletonGetter(cvox.TraverseMath);cvox.TraverseMath.setSemantic_=!1;cvox.TraverseMath.toggleSemantic=function(){return cvox.TraverseMath.setSemantic_=!cvox.TraverseMath.setSemantic_};
-cvox.TraverseMath.prototype.initialize=function(a){if(cvox.DomUtil.isMathImg(a)){if(!a.hasAttribute("cvoxid"))return;a=a.getAttribute("cvoxid");a=this.allTexs_[a]}cvox.DomUtil.isMathJax(a)&&(this.activeMathmlHost=this.allMathjaxs_[a.getAttribute("id")]);this.activeMath=this.activeMathmlHost||a;(this.activeNode=this.activeMathmlHost||a)&&cvox.TraverseMath.setSemantic_&&this.activeNode.nodeType==Node.ELEMENT_NODE&&(this.activeNode=(new cvox.SemanticTree(this.activeNode)).xml())};
-cvox.TraverseMath.prototype.addMathjax=function(a,b){var c=cvox.DomUtil.getMathSpanId(b);c?this.allMathjaxs_[c]=a:this.redoMathjaxs(a,b)};cvox.TraverseMath.prototype.redoMathjaxs=function(a,b){var c=goog.bind(function(){this.addMathjax(a,b)},this);setTimeout(c,500)};
-cvox.TraverseMath.prototype.initializeMathjaxs=function(){var a=goog.bind(function(a,c){this.addMathjax(a,c)},this);cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.getAllJax(a),cvox.ChromeVox.mathJax.registerSignal(a,"New Math"))})};
-cvox.TraverseMath.prototype.initializeAltMaths=function(){if(document.querySelector(cvox.DomUtil.altMathQuerySelector("tex")+", "+cvox.DomUtil.altMathQuerySelector("asciimath"))){var a=goog.bind(function(a,c){this.allTexs_[c]=a},this);cvox.ChromeVox.mathJax.injectScripts();cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.configMediaWiki(),cvox.ChromeVox.mathJax.getAllTexs(a),cvox.ChromeVox.mathJax.getAllAsciiMaths(a))})}};
-cvox.TraverseMath.prototype.nextSibling=function(a){if(!this.activeNode||!this.activeMath)return null;var b=this.activeNode,b=a?b.previousSibling:b.nextSibling;return b?this.activeNode=b:null};cvox.TraverseMath.prototype.nextParentChild=function(a){if(!this.activeNode||!this.activeMath||this.activeNode==this.activeMath&&a)return null;var b=this.activeNode,b=a?b.parentNode:b.firstChild;return b?this.activeNode=b:null};
-cvox.TraverseMath.prototype.getAttachedActiveNode=function(){var a=this.activeNode;if(!a||a.nodeType!=Node.ELEMENT_NODE)return null;a=a.getAttribute("spanID");return document.getElementById(a)};cvox.MathUtil={};cvox.MathUtil.isMathmlNodeOfClass_=function(a,b){return-1!=b.indexOf(a.tagName.toUpperCase())};cvox.MathUtil.isMathjaxNodeOfClass_=function(a,b){if("SPAN"==a.tagName){var c=a.className.split(" ");return c.some(function(a){return-1!=b.indexOf(a.toUpperCase())})}return!1};cvox.MathUtil.isMathNodeOfClass_=function(a,b){return a.nodeType==Node.ELEMENT_NODE&&(cvox.MathUtil.isMathmlNodeOfClass_(a,b)||cvox.MathUtil.isMathjaxNodeOfClass_(a,b))};cvox.MathUtil.TOKEN_LIST="MI MN MO MTEXT MSPACE MS".split(" ");
-cvox.MathUtil.isToken=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TOKEN_LIST)};cvox.MathUtil.LAYOUT_LIST="MROW MFRAC MSQRT MROOT MSTYLE MERROR MPADDED MPHANTOM MFENCED MENCLOSE".split(" ");cvox.MathUtil.isLayout=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.LAYOUT_LIST)};cvox.MathUtil.SCRIPT_LIST="MSUB MSUP MSUBSUP MUNDER MOVER MUNDEROVER MMULTISCRIPTS MPRESCRIPTS".split(" ");
-cvox.MathUtil.isScript=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.SCRIPT_LIST)};cvox.MathUtil.TABLES_LIST="MTABLE MLABELEDTR MTR MTD MALIGNGROUP MALIGNMARK".split(" ");cvox.MathUtil.isTables=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TABLES_LIST)};cvox.MathUtil.ELEMENTARY_LIST="MSTACK MLONGDIV MSGROUP MSROW MSCARRIES MSCARRY MSLINE".split(" ");cvox.MathUtil.isElementary=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.ELEMENTARY_LIST)};
-cvox.MathUtil.MATHML_TAG_LIST=[cvox.MathUtil.TOKEN_LIST,cvox.MathUtil.LAYOUT_LIST,cvox.MathUtil.SCRIPT_LIST,cvox.MathUtil.TABLES_LIST,cvox.MathUtil.ELEMENTARY_LIST].reduce(function(a,b){return a.concat(b)});cvox.MathUtil.isMathmlTag=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.MATHML_TAG_LIST)};cvox.MathUtil.WHITESPACE_LIST=["MSROW","MROW","MSPACE","MPHANTOM","MPADDED"];cvox.MathUtil.isWhitespace=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.WHITESPACE_LIST)};
-cvox.MathUtil.isNotWhitespace=function(a){return cvox.MathUtil.isMathmlTag(a)&&!cvox.MathUtil.isWhitespace(a)};cvox.MathUtil.union=function(a,b){return a.concat(b.filter(function(b){return 0>a.indexOf(b)}))};cvox.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d};cvox.SpeechRule.prototype.toString=function(){var a=[],b;for(b in this.dynamicCstr)a.push(this.dynamicCstr[b]);return this.name+" | "+a.join(".")+" | "+this.precondition.toString()+" ==> "+this.action.toString()};cvox.SpeechRule.Type={NODE:"NODE",MULTI:"MULTI",TEXT:"TEXT",PERSONALITY:"PERSONALITY"};
-cvox.SpeechRule.Type.fromString=function(a){switch(a){case "[n]":return cvox.SpeechRule.Type.NODE;case "[m]":return cvox.SpeechRule.Type.MULTI;case "[t]":return cvox.SpeechRule.Type.TEXT;case "[p]":return cvox.SpeechRule.Type.PERSONALITY;default:throw"Parse error: "+a;}};
-cvox.SpeechRule.Type.toString=function(a){switch(a){case cvox.SpeechRule.Type.NODE:return"[n]";case cvox.SpeechRule.Type.MULTI:return"[m]";case cvox.SpeechRule.Type.TEXT:return"[t]";case cvox.SpeechRule.Type.PERSONALITY:return"[p]";default:throw"Unknown type error: "+a;}};cvox.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content};
-cvox.SpeechRule.Component.fromString=function(a){var b={};b.type=cvox.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trimLeft();if(!a)throw new cvox.SpeechRule.OutputError("Missing content.");switch(b.type){case cvox.SpeechRule.Type.TEXT:if('"'==a[0]){var c=cvox.SpeechRule.splitString_(a,"\\(")[0].trim();if('"'!=c.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid string syntax.");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf("(")&&(a="");break}case cvox.SpeechRule.Type.NODE:case cvox.SpeechRule.Type.MULTI:c=
-a.indexOf(" (");if(-1==c){b.content=a.trim();a="";break}b.content=a.substring(0,c).trim();a=a.slice(c).trimLeft()}b=new cvox.SpeechRule.Component(b);a&&b.addAttributes(a);return b};cvox.SpeechRule.Component.prototype.toString=function(){var a="",a=a+cvox.SpeechRule.Type.toString(this.type),a=a+(this.content?" "+this.content:""),b=this.getAttributes();0<b.length&&(a+=" ("+b.join(", ")+")");return a};
-cvox.SpeechRule.Component.prototype.addAttribute=function(a){var b=a.indexOf(":");-1==b?this[a.trim()]="true":this[a.substring(0,b).trim()]=a.slice(b+1).trim()};cvox.SpeechRule.Component.prototype.addAttributes=function(a){if("("!=a[0]||")"!=a.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid attribute expression: "+a);a=cvox.SpeechRule.splitString_(a.slice(1,-1),",");for(var b=0;b<a.length;b++)this.addAttribute(a[b])};
-cvox.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this)"content"!=b&&"type"!=b&&"function"!=typeof this[b]&&a.push(b+":"+this[b]);return a};cvox.SpeechRule.Action=function(a){this.components=a};cvox.SpeechRule.Action.fromString=function(a){a=cvox.SpeechRule.splitString_(a,";").filter(function(a){return a.match(/\S/)}).map(function(a){return a.trim()});for(var b=[],c=0;c<a.length;c++){var d=cvox.SpeechRule.Component.fromString(a[c]);d&&b.push(d)}return new cvox.SpeechRule.Action(b)};
-cvox.SpeechRule.Action.prototype.toString=function(){var a=this.components.map(function(a){return a.toString()});return a.join("; ")};cvox.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};cvox.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(", ");return this.query+", "+a};
-cvox.SpeechRule.splitString_=function(a,b){for(var c=[],d="";""!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/"/g)||[]).length%2)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);c.push(d+a);a=d=""}else if(0==(a.substring(0,e).match(/"/g)||[]).length%2)c.push(d+a.substring(0,e)),d="",a=a.substring(e+1);else{var f=a.substring(e).search('"');if(-1==f)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&
-c.push(d);return c};cvox.SpeechRule.DynamicCstrAttrib={STYLE:"style"};cvox.SpeechRule.OutputError=function(a){this.name="RuleError";this.message=a||""};goog.inherits(cvox.SpeechRule.OutputError,Error);cvox.SpeechRuleFunctions=function(){};cvox.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};cvox.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};cvox.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};cvox.SpeechRuleFunctions.CustomQueries=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CQF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomQueries,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.CustomStrings=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CSF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomStrings,cvox.SpeechRuleFunctions.Store_);cvox.SpeechRuleFunctions.ContextFunctions=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CTXF",a)};goog.inherits(cvox.SpeechRuleFunctions.ContextFunctions,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){var b=RegExp("^"+this.prefix_);return a.match(b)?!0:(console.log("FunctionError: Invalid function name. Expected prefix"+this.prefix_),!1)};cvox.BaseRuleStore=function(){this.customQueries=new cvox.SpeechRuleFunctions.CustomQueries;this.customStrings=new cvox.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new cvox.SpeechRuleFunctions.ContextFunctions;this.speechRules_=[];this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[]};
-cvox.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=Node.ELEMENT_NODE&&a.nodeType!=Node.TEXT_NODE)return null;var c=this.speechRules_.filter(goog.bind(function(c){return this.testDynamicConstraints(b,c)&&this.testPrecondition_(a,c)},this));return 0<c.length?this.pickMostConstraint_(b,c):null};
-cvox.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=cvox.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new cvox.SpeechRule.Precondition(d,g),g={};g[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;var k=new cvox.SpeechRule(a,g,h,f)}catch(l){if("RuleError"==l.name)return console.log("Rule Error ",d,"("+b+"):",l.message),null;throw l;}this.addRule(k);return k};cvox.BaseRuleStore.prototype.addRule=function(a){this.speechRules_.unshift(a)};
-cvox.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};cvox.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};cvox.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};cvox.BaseRuleStore.prototype.evaluateDefault=function(a){return[new cvox.NavDescription({text:a.textContent})]};
-cvox.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&cvox.BaseRuleStore.compareDynamicConstraints_(c.dynamicCstr,a.dynamicCstr)&&cvox.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};cvox.BaseRuleStore.prototype.applyCustomQuery=function(a,b){var c=this.customQueries.lookup(b);return c?c(a):null};
-cvox.BaseRuleStore.prototype.applySelector=function(a,b){var c=this.applyCustomQuery(a,b);return c||cvox.XpathUtil.evalXPath(b,a)};cvox.BaseRuleStore.prototype.applyQuery=function(a,b){var c=this.applySelector(a,b);return 0<c.length?c[0]:null};cvox.BaseRuleStore.prototype.applyConstraint=function(a,b){var c=this.applyQuery(a,b);return!!c||cvox.XpathUtil.evaluateBoolean(b,a)};
-cvox.BaseRuleStore.prototype.testDynamicConstraints=function(a,b){var c=Object.keys(a);return c.every(function(c){return a[c]==b.dynamicCstr[c]||"default"==b.dynamicCstr[c]})};cvox.BaseRuleStore.prototype.getDynamicConstraintValues=function(){for(var a={},b=0,c;c=this.speechRules_[b];b++)for(var d in c.dynamicCstr){var e=[c.dynamicCstr[d]];a[d]=a[d]?cvox.MathUtil.union(a[d],e):e}return a};
-cvox.BaseRuleStore.prototype.countMatchingDynamicConstraintValues_=function(a,b){for(var c=0,d=0,e;e=this.dynamicCstrAttribs[d];d++)if(a[e]==b.dynamicCstr[e])c++;else break;return c};cvox.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){b.sort(goog.bind(function(b,d){var e=this.countMatchingDynamicConstraintValues_(a,b),f=this.countMatchingDynamicConstraintValues_(a,d);return e>f?-1:f>e?1:d.precondition.constraints.length-b.precondition.constraints.length},this));return b[0]};
-cvox.BaseRuleStore.prototype.testPrecondition_=function(a,b){var c=b.precondition;return this.applyQuery(a,c.query)===a&&c.constraints.every(goog.bind(function(b){return this.applyConstraint(a,b)},this))};cvox.BaseRuleStore.compareDynamicConstraints_=function(a,b){if(Object.keys(a).length!=Object.keys(b).length)return!1;for(var c in a)if(!b[c]||a[c]!==b[c])return!1;return!0};
-cvox.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};cvox.BaseRuleStore.comparePreconditions_=function(a,b){var c=a.precondition,d=b.precondition;return c.query!=d.query?!1:cvox.BaseRuleStore.compareStaticConstraints_(c.constraints,d.constraints)};cvox.MathStore=function(){cvox.BaseRuleStore.call(this);this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN,cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[cvox.AbstractTts.PITCH,cvox.AbstractTts.RATE]};goog.inherits(cvox.MathStore,cvox.BaseRuleStore);cvox.SpeechRule.DynamicCstrAttrib.DOMAIN="domain";
-cvox.MathStore.prototype.defineRule=function(a,b,c,d,e){var f=this.parseDynamicConstraint(b),g=Array.prototype.slice.call(arguments,4),g=cvox.MathStore.superClass_.defineRule.apply(this,[a,f[cvox.SpeechRule.DynamicCstrAttrib.STYLE],c,d].concat(g));g.dynamicCstr=f;this.removeDuplicates(g);return g};
-cvox.MathStore.prototype.parseDynamicConstraint=function(a){var b=a.split(".");if(!b[0]||!b[1])throw new cvox.SpeechRule.OutputError("Invalid domain assignment:"+a);return cvox.MathStore.createDynamicConstraint(b[0],b[1])};cvox.MathStore.createDynamicConstraint=function(a,b){var c={};c[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN]=a;c[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;return c};
-cvox.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(b){return b.name==a});if(!d)throw new cvox.SpeechRule.OutputError("Rule with named "+a+" does not exist.");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};cvox.MathStore.prototype.addAlias_=function(a,b,c){b=new cvox.SpeechRule.Precondition(b,c);b=new cvox.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};cvox.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};
-cvox.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\s+$/))return b;a=cvox.MathStore.removeEmpty_(a.replace(/\s/g," ").split(" "));for(var c=0,d;d=a[c];c++)if(1==d.length)b.push(this.evaluate_(d));else if(d.match(/^[a-zA-Z]+$/))b.push(this.evaluate_(d));else for(;d;){var e=d.match(/^\d+/),f=d.match(/^[a-zA-Z]+/);e?(b.push(this.evaluate_(e[0])),d=d.substring(e[0].length)):f?(b.push(this.evaluate_(f[0])),d=d.substring(f[0].length)):(e=d[0],e=e.charCodeAt(0),55296<=e&&56319>=e&&
-1<d.length&&!isNaN(d.charCodeAt(1))?(b.push(this.evaluate_(d.slice(0,2))),d=d.substring(2)):(b.push(this.evaluate_(d[0])),d=d.substring(1)))}return b};cvox.MathStore.prototype.evaluate_=function(a){return cvox.ChromeVox.host.mathMap?cvox.ChromeVox.host.mathMap.evaluate(a,cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style):new cvox.NavMathDescription({text:a,domain:cvox.TraverseMath.getInstance().domain,style:cvox.TraverseMath.getInstance().style})};
-cvox.MathStore.removeEmpty_=function(a){return a.filter(function(a){return a})};cvox.MathmlStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathmlStore,cvox.MathStore);goog.addSingletonGetter(cvox.MathmlStore);cvox.MathmlStore.prototype.defineDefaultMathmlRule=function(a,b){this.defineRule(a,"default.default",b,"self::mathml:"+a)};cvox.SpeechRuleEngine=function(){this.activeStore_=null;this.dynamicCstr={};this.dynamicCstr[cvox.SpeechRule.DynamicCstrAttrib.STYLE]="short"};goog.addSingletonGetter(cvox.SpeechRuleEngine);cvox.SpeechRuleEngine.prototype.parameterize=function(a){try{a.initialize()}catch(b){if("StoreError"==b.name)console.log("Store Error:",b.message);else throw b;}this.activeStore_=a};cvox.SpeechRuleEngine.prototype.setDynamicConstraint=function(a){a&&(this.dynamicCstr=a)};
-cvox.SpeechRuleEngine.prototype.constructString=function(a,b){if(!b)return"";if('"'==b.charAt(0))return b.slice(1,-1);var c=this.activeStore_.customStrings.lookup(b);return c?c(a):cvox.XpathUtil.evaluateString(b,a)};cvox.SpeechRuleEngine.prototype.evaluateNode=function(a){return a?this.evaluateTree_(a):[]};
-cvox.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=this.activeStore_.lookupRule(a,this.dynamicCstr);if(!b)return this.activeStore_.evaluateDefault(a);for(var b=b.action.components,c=[],d=0,e;e=b[d];d++){var f=[],g=e.content||"";switch(e.type){case cvox.SpeechRule.Type.NODE:(g=this.activeStore_.applyQuery(a,g))&&(f=this.evaluateTree_(g));break;case cvox.SpeechRule.Type.MULTI:g=this.activeStore_.applySelector(a,g);0<g.length&&(f=this.evaluateNodeList_(g,e.sepFunc,this.constructString(a,
-e.separator),e.ctxtFunc,this.constructString(a,e.context)));break;case cvox.SpeechRule.Type.TEXT:(g=this.constructString(a,g))&&(f=[new cvox.NavDescription({text:g})]);break;default:f=[new cvox.NavDescription({text:g})]}f[0]&&e.context&&e.type!=cvox.SpeechRule.Type.MULTI&&(f[0].context=this.constructString(a,e.context)+(f[0].context||""));c=c.concat(this.addPersonality_(f,e))}return c};
-cvox.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e){if(a==[])return[];var f=c||"",g=e||"";c=(c=this.activeStore_.contextFunctions.lookup(d))?c(a,g):function(){return g};b=(b=this.activeStore_.contextFunctions.lookup(b))?b(a,f):function(){return f};d=[];e=0;for(var h;h=a[e];e++)h=this.evaluateTree_(h),0<h.length&&(h[0].context=c()+(h[0].context||""),d=d.concat(h),e<a.length-1&&(h=b())&&d.push(new cvox.NavDescription({text:h})));return d};
-cvox.SpeechRuleEngine.propMap={pitch:cvox.AbstractTts.RELATIVE_PITCH,rate:cvox.AbstractTts.RELATIVE_RATE,volume:cvox.AbstractTts.RELATIVE_VOLUME,pause:cvox.AbstractTts.PAUSE};cvox.SpeechRuleEngine.prototype.addPersonality_=function(a,b){var c={},d;for(d in cvox.SpeechRuleEngine.propMap){var e=parseFloat(b[d]);isNaN(e)||(c[cvox.SpeechRuleEngine.propMap[d]]=e)}a.forEach(goog.bind(function(a){this.addRelativePersonality_(a,c);this.resetPersonality_(a)},this));return a};
-cvox.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&"number"==typeof c[d]?c[d]+b[d]:b[d];return a};cvox.SpeechRuleEngine.prototype.resetPersonality_=function(a){if(this.activeStore_.defaultTtsProps)for(var b=0,c;c=this.activeStore_.defaultTtsProps[b];b++)a.personality[c]=cvox.ChromeVox.tts.getDefaultProperty(c)};cvox.SpeechRuleEngine.debugMode=!1;
-cvox.SpeechRuleEngine.outputDebug=function(a){if(cvox.SpeechRuleEngine.debugMode){var b=Array.prototype.slice.call(arguments,0);console.log.apply(console,["Speech Rule Engine Debugger:"].concat(b))}};cvox.SpeechRuleEngine.prototype.toString=function(){var a=this.activeStore_.findAllRules(function(){return!0});return a.map(function(a){return a.toString()}).join("\n")};
-cvox.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=cvox.SpeechRuleEngine.getInstance().activeStore_;if(c){var d=a.precondition;cvox.SpeechRuleEngine.outputDebug(d.query,c.applyQuery(b,d.query));d.constraints.forEach(function(a){cvox.SpeechRuleEngine.outputDebug(a,c.applyConstraint(b,a))})}};
-cvox.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){for(var c=cvox.SpeechRuleEngine.getInstance().activeStore_,c=c.findAllRules(function(b){return b.name==a}),d=0,e;e=c[d];d++)cvox.SpeechRuleEngine.outputDebug("Rule",a,"number",d),cvox.SpeechRuleEngine.debugSpeechRule(e,b)};cvox.AbstractWalker=function(){};cvox.AbstractWalker.prototype.begin=function(a){a=a||{reversed:!1};return this.sync(cvox.CursorSelection.fromBody().setReversed(a.reversed))};cvox.AbstractWalker.prototype.hasAction=function(a){return"function"==typeof this[a]};cvox.AbstractWalker.prototype.performAction=function(a,b){return this.hasAction(a)?this[a](b):null};cvox.AbstractNodeWalker=function(){this.wasBegin_=!1};goog.inherits(cvox.AbstractNodeWalker,cvox.AbstractWalker);cvox.AbstractNodeWalker.prototype.next=function(a){var b=a.isReversed();a=a.end.node||document.body;do if(a=cvox.DomUtil.directedNextLeafLikeNode(a,b,goog.bind(this.stopNodeDescent,this)),!a)return null;while(a&&!cvox.DomUtil.hasContent(a));return cvox.CursorSelection.fromNode(a).setReversed(b)};
-cvox.AbstractNodeWalker.prototype.sync=function(a){a=this.privateSync_(a);this.wasBegin_=!1;return a};
-cvox.AbstractNodeWalker.prototype.privateSync_=function(a){var b=a.isReversed();if(a.equals(cvox.CursorSelection.fromBody())){if(this.wasBegin_)return cvox.CursorSelection.fromBody().setReversed(b);this.wasBegin_=!0}for(a=a.start.node;a!=document.body&&a.parentNode&&this.stopNodeDescent(a.parentNode);)a=a.parentNode;for(;!this.stopNodeDescent(a);)a=cvox.DomUtil.directedFirstChild(a,b);var c=cvox.CursorSelection.fromNode(a);cvox.DomUtil.hasContent(a)||(c=this.next(cvox.CursorSelection.fromNode(a).setReversed(b)));
-return c?c.setReversed(b):this.begin({reversed:b})};cvox.BareObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.BareObjectWalker,cvox.AbstractNodeWalker);cvox.BareObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AuralStyleConverter={};cvox.AuralStyleUtil={};
-cvox.AuralProperty={VOLUME:"VOLUME",SPEAK:"SPEAK",PAUSE_BEFORE:"PAUSE_BEFORE",PAUSE_AFTER:"PAUSE_AFTER",PAUSE:"PAUSE",CUE_BEFORE:"CUE_BEFORE",CUE_AFTER:"CUE_AFTER",CUE:"CUE",PLAY_DURING:"PLAY_DURING",AZIMUTH:"AZIMUTH",ELEVATION:"ELEVATION",SPEECH_RATE:"SPEECH_RATE",VOICE_FAMILY:"VOICE_FAMILY",PITCH:"PITCH",PITCH_RANGE:"PITCH_RANGE",STRESS:"STRESS",RICHNESS:"RICHNESS",SPEAK_PUNCTUATION:"SPEAK_PUNCTUATION",SPEAK_NUMERIAL:"SPEAK_NUMERIAL",SPEAK_HEADER:"SPEAK_HEADER",NONE:"NONE"};
-cvox.AuralStyleConverter.identity=function(a){return a};cvox.AuralStyleConverter.propertyTable={VOLUME:"volume",SPEAK:"no-op",PAUSE_BEFORE:"no-op",PAUSE_AFTER:"no-op",PAUSE:"no-op",CUE_BEFORE:"no-op",CUE_AFTER:"no-op",CUE:"no-op",PLAY_DURING:"no-op",AZIMUTH:"no-op",ELEVATION:"no-op",SPEECH_RATE:"relativeRate",VOICE_FAMILY:"no-op",PITCH:"relativePitch",PITCH_RANGE:"no-op",STRESS:"no-op",RICHNESS:"no-op",SPEAK_PUNCTUATION:"no-op",SPEAK_NUMERIAL:"no-op",SPEAK_HEADER:"no-op",NONE:"no-op"};
-cvox.AuralStyleConverter.valueTable={VOLUME:cvox.AuralStyleConverter.identity,SPEAK:cvox.AuralStyleConverter.identity,PAUSE_BEFORE:cvox.AuralStyleConverter.identity,PAUSE_AFTER:cvox.AuralStyleConverter.identity,PAUSE:cvox.AuralStyleConverter.identity,CUE_BEFORE:cvox.AuralStyleConverter.identity,CUE_AFTER:cvox.AuralStyleConverter.identity,CUE:cvox.AuralStyleConverter.identity,PLAY_DURING:cvox.AuralStyleConverter.identity,AZIMUTH:cvox.AuralStyleConverter.identity,ELEVATION:cvox.AuralStyleConverter.identity,
-SPEECH_RATE:cvox.AuralStyleConverter.identity,VOICE_FAMILY:cvox.AuralStyleConverter.identity,PITCH:cvox.AuralStyleConverter.identity,PITCH_RANGE:cvox.AuralStyleConverter.identity,STRESS:cvox.AuralStyleConverter.identity,RICHNESS:cvox.AuralStyleConverter.identity,SPEAK_PUNCTUATION:cvox.AuralStyleConverter.identity,SPEAK_NUMERIAL:cvox.AuralStyleConverter.identity,SPEAK_HEADER:cvox.AuralStyleConverter.identity,NONE:cvox.AuralStyleConverter.identity};
-cvox.AuralStyleConverter.convertRule=function(a,b){return{property:cvox.AuralStyleConverter.propertyTable[a],value:cvox.AuralStyleConverter.valueTable[a](b)}};cvox.AuralStyleConverter.convertStyle=function(a){var b={},c;for(c in a){var d=cvox.AuralStyleConverter.convertRule(c,a[c]);b[d.property]=d.value}return b};cvox.AuralStyleUtil.getStyleForNode=function(a){return(a=cvox.AuralStyleUtil.defaultStyles[a.tagName])?cvox.AuralStyleConverter.convertStyle(a):null};
-cvox.AuralStyleUtil.defaultStyles={ARTICLE:{PITCH:-0.1},ASIDE:{PITCH:-0.1},FOOTER:{PITCH:-0.1},H1:{PITCH:-0.3},H2:{PITCH:-0.25},H3:{PITCH:-0.2},H4:{PITCH:-0.15},H5:{PITCH:-0.1},H6:{PITCH:-0.05},HEADER:{PITCH:-0.1},HGROUP:{PITCH:-0.1},MARK:{PITCH:-0.1},NAV:{PITCH:-0.1},SECTION:{PITCH:-0.1},TIME:{PITCH:-0.1}};cvox.EarconUtil={};
-cvox.EarconUtil.getEarcon=function(a){var b=cvox.AriaUtil.getEarcon(a);if(null!=b)return b;switch(a.tagName){case "BUTTON":return cvox.AbstractEarcons.BUTTON;case "A":if(a.hasAttribute("href"))return cvox.AbstractEarcons.LINK;break;case "IMG":if(cvox.DomUtil.hasLongDesc(a))return cvox.AbstractEarcons.LONG_DESC;break;case "LI":return cvox.AbstractEarcons.LIST_ITEM;case "SELECT":return cvox.AbstractEarcons.LISTBOX;case "TEXTAREA":return cvox.AbstractEarcons.EDITABLE_TEXT;case "INPUT":switch(a.type){case "button":case "submit":case "reset":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":return a.checked?
-cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;default:if(cvox.DomUtil.isInputTypeText(a))return cvox.AbstractEarcons.EDITABLE_TEXT}}return null};cvox.DescriptionUtil={};cvox.DescriptionUtil.COLLECTION_NODE_TYPE={H1:!0,H2:!0,H3:!0,H4:!0,H5:!0,H6:!0};
-cvox.DescriptionUtil.getControlDescription=function(a,b){var c=[a];if(b&&0<b.length)c=b;else{var d=cvox.DomUtil.getSurroundingControl(a);d&&(c=[d,a])}c=cvox.DescriptionUtil.getDescriptionFromAncestors(c,!0,cvox.VERBOSITY_VERBOSE);if(d){var e=cvox.DomUtil.getName(d);0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(d),0<e.length&&(c.context=e+" "+c.context))}else e=cvox.DomUtil.getName(a),0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(a),0<e.length&&(c.text=cvox.DomUtil.collapseWhitespace(e))),
-d=cvox.DomUtil.getValue(a),0<d.length&&(c.userValue=cvox.DomUtil.collapseWhitespace(d));return c};
-cvox.DescriptionUtil.getDescriptionFromAncestors=function(a,b,c){"undefined"===typeof b&&(b=!0);var d=a.length,e="",f="",g="",h="",k=[],l=null;0<d&&(f=cvox.DomUtil.getName(a[d-1],b),g=cvox.DomUtil.getValue(a[d-1]));for(b=d-1;0<=b;b--){var m=a[b],p=m.getAttribute?m.getAttribute("role"):null;if("dialog"!=p&&"alertdialog"!=p){p=cvox.DomUtil.getRole(m,c);l||(l=cvox.AuralStyleUtil.getStyleForNode(m));if(b<d-1&&m.hasAttribute("role")){var q=cvox.DomUtil.getName(m,!1);q&&(p=q+" "+p)}0<p.length&&(0<e.length||
-0<h.length&&1<m.childElementCount?e=p+" "+cvox.DomUtil.getState(m,!1)+" "+e:h=0<h.length?h+(" "+p+" "+cvox.DomUtil.getState(m,!0)):p+" "+cvox.DomUtil.getState(m,!0));m=cvox.EarconUtil.getEarcon(m);null!=m&&-1==k.indexOf(m)&&k.push(m)}}return new cvox.NavDescription({context:cvox.DomUtil.collapseWhitespace(e),text:cvox.DomUtil.collapseWhitespace(f),userValue:cvox.DomUtil.collapseWhitespace(g),annotation:cvox.DomUtil.collapseWhitespace(h),earcons:k,personality:l})};
-cvox.DescriptionUtil.getDescriptionFromNavigation=function(a,b,c,d){if(!a||!b)return[];if(cvox.DomUtil.isMath(b)&&!cvox.AriaUtil.isMath(b))return cvox.DescriptionUtil.getMathDescription(b);if(cvox.DescriptionUtil.COLLECTION_NODE_TYPE[b.tagName])return cvox.DescriptionUtil.getCollectionDescription(cvox.CursorSelection.fromNode(a),cvox.CursorSelection.fromNode(b));var e=cvox.DomUtil.getUniqueAncestors(a,b,!0),e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,c,d);a=cvox.DomUtil.getUniqueAncestors(b,
-a);cvox.DescriptionUtil.shouldDescribeExit_(a)&&(c=cvox.DescriptionUtil.getDescriptionFromAncestors(a,c,d),c.context&&!e.context&&(e.context=cvox.ChromeVox.msgs.getMsg("exited_container",[c.context])));return[e]};cvox.DescriptionUtil.getCollectionDescription=function(a,b){var c=cvox.DescriptionUtil.getRawDescriptions_(a,b);cvox.DescriptionUtil.insertCollectionDescription_(c);return c};cvox.DescriptionUtil.subWalker_=new cvox.BareObjectWalker;
-cvox.DescriptionUtil.getRawDescriptions_=function(a,b){var c=[];b=b.clone().setReversed(!1);var d=cvox.DescriptionUtil.subWalker_.sync(b).start.node,e=a.end.node,f=cvox.CursorSelection.fromNode(d);if(!f)return[];for(;cvox.DomUtil.isDescendantOfNode(d,b.start.node);){e=cvox.DomUtil.getUniqueAncestors(e,d);cvox.DomUtil.isMath(d)&&!cvox.AriaUtil.isMath(d)?c=c.concat(cvox.DescriptionUtil.getMathDescription(d)):(e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,!0,cvox.ChromeVox.verbosity),c.push(e));
-f=cvox.DescriptionUtil.subWalker_.next(f);if(!f)break;e=d;d=f.start.node}return c};
-cvox.DescriptionUtil.getFullDescriptionsFromChildren=function(a,b){var c=[];if(!b)return c;var d;if(cvox.DomUtil.isLeafNode(b))return a?d=cvox.DomUtil.getUniqueAncestors(a,b):(d=[],d.push(b)),d=cvox.DescriptionUtil.getDescriptionFromAncestors(d,!0,cvox.ChromeVox.verbosity),c.push(d),c;d=b;var e=cvox.CursorSelection.fromNode(b);if(!e)return c;b=cvox.DescriptionUtil.subWalker_.sync(e).start.node;e=cvox.CursorSelection.fromNode(b);if(!e)return c;for(;cvox.DomUtil.isDescendantOfNode(b,d);){c=c.concat(cvox.DescriptionUtil.getFullDescriptionsFromChildren(a,
-b));e=cvox.DescriptionUtil.subWalker_.next(e);if(!e)break;a=b;b=e.start.node}return c};
-cvox.DescriptionUtil.insertCollectionDescription_=function(a){var b=cvox.DescriptionUtil.getAnnotations_(a);if(3<=a.length&&0==a[0].context.length&&1==b.length&&0<b[0].length&&cvox.DescriptionUtil.isAnnotationCollection_(b[0])){var b=b[0],c=a[0].context;a[0].context="";for(var d=0;d<a.length;d++)a[d].annotation="";a.splice(0,0,new cvox.NavDescription({context:c,text:"",annotation:cvox.ChromeVox.msgs.getMsg("collection",[b,cvox.ChromeVox.msgs.getNumber(a.length)])}))}};
-cvox.DescriptionUtil.getAnnotations_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(-1==b.indexOf(d.annotation)){var e=cvox.ChromeVox.msgs.getMsg("tag_link");-1!=d.annotation.toLowerCase().indexOf(e.toLowerCase())?-1==b.indexOf(e)&&b.push(e):b.push(d.annotation)}}return b};cvox.DescriptionUtil.isAnnotationCollection_=function(a){return a==cvox.ChromeVox.msgs.getMsg("tag_link")};cvox.DescriptionUtil.shouldDescribeExit_=function(a){return a.some(function(a){switch(a.tagName){case "TABLE":case "MATH":return!0}return cvox.AriaUtil.isLandmark(a)})};
-cvox.DescriptionUtil.getMathDescription=function(a){var b=cvox.SpeechRuleEngine.getInstance(),c=cvox.TraverseMath.getInstance();b.parameterize(cvox.MathmlStore.getInstance());c.initialize(a);a=b.evaluateNode(c.activeNode);if(a==[])return[new cvox.NavDescription({text:"empty math"})];cvox.ChromeVox.verbosity==cvox.VERBOSITY_VERBOSE&&(a[a.length-1].annotation="math");a[0].pushEarcon(cvox.AbstractEarcons.SPECIAL_CONTENT);return a};cvox.FindUtil={};cvox.FindUtil.objectWalker_=new cvox.BareObjectWalker;cvox.FindUtil.findNext=function(a,b,c){var d=a.isReversed();a=(new cvox.CursorSelection(a.absStart(),a.absStart())).setReversed(d);var e;if(e=b(cvox.DomUtil.getAncestors(a.start.node)))if(a=cvox.CursorSelection.fromNode(e).setReversed(d),c)return a;for(;a;){a=cvox.FindUtil.objectWalker_.next(a);c=null;if(!a||(c=b(cvox.DomUtil.getAncestors(a.start.node))))return c?cvox.CursorSelection.fromNode(c):null;if("IFRAME"==a.start.node.tagName)return a}return null};cvox.Interframe=function(){};cvox.Interframe.IF_MSG_PREFIX="cvox.INTERFRAME:";cvox.Interframe.SET_ID="cvox.INTERFRAME_SET_ID";cvox.Interframe.listeners=[];cvox.Interframe.allowAccessToIframeContentWindow=!0;
-cvox.Interframe.init=function(){cvox.Interframe.messageListener=function(a){if("string"===typeof a.data&&0==a.data.indexOf(cvox.Interframe.IF_MSG_PREFIX)){a=a.data.substr(cvox.Interframe.IF_MSG_PREFIX.length);a=cvox.ChromeVoxJSON.parse(a);a.command==cvox.Interframe.SET_ID&&(cvox.Interframe.id=a.id);for(var b=0,c;c=cvox.Interframe.listeners[b];b++)c(a)}return!1};window.addEventListener("message",cvox.Interframe.messageListener,!0)};
-cvox.Interframe.shutdown=function(){window.removeEventListener("message",cvox.Interframe.messageListener,!0)};cvox.Interframe.addListener=function(a){cvox.Interframe.listeners.push(a)};cvox.Interframe.sendMessageToWindow=function(a,b){var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null);b.postMessage(c,"*")};
-cvox.Interframe.sendMessageToIFrame=function(a,b){if(cvox.Interframe.allowAccessToIframeContentWindow&&b.contentWindow)cvox.Interframe.sendMessageToWindow(a,b.contentWindow);else{var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),d=document.createElement("script");d.type="text/javascript";if(b.hasAttribute("id")&&document.getElementById(b.id)==b)d.innerHTML="document.getElementById(decodeURI('"+encodeURI(b.id)+"')).contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');";
-else{var e="cvox_iframe"+a.id;""===b.className?b.className=e:-1==b.className.indexOf(e)&&(b.className+=" "+e);d.innerHTML="document.getElementsByClassName(decodeURI('"+encodeURI(e)+"'))[0].contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');"}document.head.appendChild(d);window.setTimeout(function(){document.head.removeChild(d)},1E3)}};
-cvox.Interframe.sendMessageToParentWindow=function(a){cvox.Interframe.isIframe()&&(a.sourceId=cvox.Interframe.id,window.parent?cvox.Interframe.sendMessageToWindow(a,window.parent):(a=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),window.location.href="javascript:window.parent.postMessage('"+encodeURI(a)+"', '*');"))};cvox.Interframe.sendIdToIFrame=function(a,b){var c={command:cvox.Interframe.SET_ID,id:a};cvox.Interframe.sendMessageToIFrame(c,b)};
-cvox.Interframe.isIframe=function(){return window!=window.parent};cvox.Interframe.init();cvox.PageSelection=function(a){this.sel_=a.clone();this.sel_.select();this.wasBegin_=!0};
-cvox.PageSelection.prototype.getDescription=function(a,b,c){var d=[];this.sel_.isReversed()!=c.isReversed()?(d=a.getDescription(c,b),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE)):(d=a.getDescription(b,c),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_selected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION),!this.wasBegin_&&this.sel_.absEquals(c.clone().normalize())&&(a=a.getDescription(c,b),a[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),
-a[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE),a[0].pushEarcon(cvox.AbstractEarcons.WRAP),d=a.concat(d)));return d};cvox.PageSelection.prototype.getFullDescription=function(){return[new cvox.NavDescription({text:window.getSelection().toString(),context:cvox.ChromeVox.msgs.getMsg("selection_is")})]};
-cvox.PageSelection.prototype.extend=function(a){this.sel_.directedBefore(a)?this.sel_.end=this.sel_.isReversed()==a.isReversed()?a.end.clone():a.start.clone():this.sel_=a.clone();this.sel_.select();this.wasBegin_=!1;return!this.sel_.absEquals(a)};cvox.BrailleUtil={};cvox.BrailleUtil.ITEM_SEPARATOR=" ";cvox.BrailleUtil.CONTAINER="tag_h1_brl tag_h2_brl tag_h3_brl tag_h4_brl tag_h5_brl tag_h6_brl".split(" ");
-cvox.BrailleUtil.TEMPLATE={base:"c n v r s",aria_role_button:"[n]",aria_role_textbox:"n: v r",input_type_button:"[n]",input_type_checkbox:"n (s)",input_type_email:"n: v r",input_type_number:"n: v r",input_type_password:"n: v r",input_type_search:"n: v r",input_type_submit:"[n]",input_type_text:"n: v r",input_type_tel:"n: v r",input_type_url:"n: v r",tag_button:"[n]",tag_textarea:"n: v r"};cvox.BrailleUtil.ValueSpan=function(a){this.offset=a};cvox.BrailleUtil.ValueSelectionSpan=function(){};
-cvox.BrailleUtil.getName=function(a){return a?cvox.DomUtil.getName(a).trim():""};cvox.BrailleUtil.getRoleMsg=function(a){if(!a)return"";(a=cvox.DomUtil.getRoleMsg(a,cvox.VERBOSITY_VERBOSE))&&(a=cvox.DomUtil.collapseWhitespace(a));a&&0<a.length&&cvox.ChromeVox.msgs.getMsg(a+"_brl")&&(a+="_brl");return a};cvox.BrailleUtil.getRole=function(a){return a?(a=cvox.BrailleUtil.getRoleMsg(a))?cvox.ChromeVox.msgs.getMsg(a):"":""};
-cvox.BrailleUtil.getState=function(a){return a?cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,!0).map(function(a){cvox.ChromeVox.msgs.getMsg(a[0]+"_brl")&&(a[0]+="_brl");return a})):""};cvox.BrailleUtil.getContainer=function(a,b){if(!a||!b)return"";for(var c=cvox.DomUtil.getUniqueAncestors(a,b),d=0,e;e=c[d];d++)if((e=cvox.BrailleUtil.getRoleMsg(e))&&-1!=cvox.BrailleUtil.CONTAINER.indexOf(e))return cvox.ChromeVox.msgs.getMsg(e);return""};
-cvox.BrailleUtil.getValue=function(a){if(!a)return new cvox.Spannable;var b=new cvox.BrailleUtil.ValueSpan(0);if(cvox.DomUtil.isInputTypeText(a)){var c=a.value;"password"===a.type&&(c=c.replace(/./g,"*"));b=new cvox.Spannable(c,b);a===document.activeElement&&b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,a.selectionStart,a.selectionEnd);return b}if(a instanceof HTMLTextAreaElement){var d=new cvox.EditableTextAreaShadow;d.update(a);var e=d.getLineIndex(a.selectionEnd),c=d.getLineStart(e),d=d.getLineEnd(e),
-d=a.value.substring(c,d);b.offset=c;b=new cvox.Spannable(d,b);a===document.activeElement&&(d=Math.max(a.selectionStart-c,0),a=Math.min(a.selectionEnd-c,b.getLength()),b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,d,a));return b}return new cvox.Spannable(cvox.DomUtil.getValue(a),b)};
-cvox.BrailleUtil.getTemplated=function(a,b,c){c=c?c:{};for(var d=c.roleMsg||(b?cvox.DomUtil.getRoleMsg(b,cvox.VERBOSITY_VERBOSE):""),d=cvox.BrailleUtil.TEMPLATE[d]||cvox.BrailleUtil.TEMPLATE.base,e=new cvox.Spannable,f=function(d){switch(d){case "n":return c.name||cvox.BrailleUtil.getName(b);case "r":return c.role||cvox.BrailleUtil.getRole(b);case "s":return c.state||cvox.BrailleUtil.getState(b);case "c":return c.container||cvox.BrailleUtil.getContainer(a,b);case "v":return c.value?new cvox.Spannable(c.value,
-new cvox.BrailleUtil.ValueSpan(0)):cvox.BrailleUtil.getValue(b);default:return d}},g=0;g<d.length;g++){var h=f(d[g]);e.append(h);h.toString()||" "!=d[g+1]||g++}return e.trim()};cvox.MathmlStoreUtil={};cvox.MathmlStoreUtil.matchMathjaxToMathml=function(a){var b=cvox.TraverseMath.getInstance().activeMathmlHost;return b.querySelector("#"+a.id)};cvox.MathmlStoreUtil.retrieveMathjaxExtender=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};cvox.MathmlStoreUtil.retrieveMathjaxLeaf=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};
-cvox.MathmlStoreUtil.checkMathjaxTag=function(a,b){var c=cvox.MathmlStoreUtil.matchMathjaxToMathml(a);return c&&c.tagName.toUpperCase()==b?[c]:[]};cvox.MathmlStoreUtil.checkMathjaxMunder=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MUNDER")};cvox.MathmlStoreUtil.checkMathjaxMover=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MOVER")};cvox.MathmlStoreUtil.checkMathjaxMsub=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUB")};
-cvox.MathmlStoreUtil.checkMathjaxMsup=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUP")};cvox.MathmlStoreUtil.nextSeparatorFunction=function(a){if(a){if(a.match(/^\s+$/))return null;var b=a.replace(/\s/g,"").split("").filter(function(a){return a})}else b=[","];return function(){return 1<b.length?b.shift():b[0]}};cvox.MathmlStoreUtil.mfencedSeparators=function(a,b){var c=cvox.MathmlStoreUtil.nextSeparatorFunction(b);return function(){return c?c():""}};
-cvox.MathmlStoreUtil.contentIterator=function(a,b){var c=0<a.length?cvox.XpathUtil.evalXPath("../../content/*",a[0]):[];return function(){var a=c.shift();return b+(a?a.textContent:"")}};cvox.StoreUtil={};cvox.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e="");return function(){d<c&&(d+=1);return e+" "+d}};cvox.MathmlStoreRules=function(){cvox.MathmlStoreRules.initCustomFunctions_();cvox.MathmlStoreRules.initDefaultRules_();cvox.MathmlStoreRules.initMathjaxRules_();cvox.MathmlStoreRules.initAliases_();cvox.MathmlStoreRules.initSpecializationRules_();cvox.MathmlStoreRules.initSemanticRules_()};goog.addSingletonGetter(cvox.MathmlStoreRules);cvox.MathmlStoreRules.mathStore=cvox.MathmlStore.getInstance();cvox.MathmlStoreRules.mathStore.initialize=cvox.MathmlStoreRules.getInstance;
-cvox.MathmlStoreRules.defineDefaultMathmlRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineDefaultMathmlRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRuleAlias_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRuleAlias,cvox.MathmlStoreRules.mathStore);
-cvox.MathmlStoreRules.addContextFunction_=goog.bind(cvox.MathmlStoreRules.mathStore.contextFunctions.add,cvox.MathmlStoreRules.mathStore.contextFunctions);cvox.MathmlStoreRules.addCustomQuery_=goog.bind(cvox.MathmlStoreRules.mathStore.customQueries.add,cvox.MathmlStoreRules.mathStore.customQueries);
-cvox.MathmlStoreRules.initCustomFunctions_=function(){(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFnodeCounter",cvox.StoreUtil.nodeCounter);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFmfSeparators",cvox.MathmlStoreUtil.mfencedSeparators);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFcontentIterator",cvox.MathmlStoreUtil.contentIterator);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFextender",cvox.MathmlStoreUtil.retrieveMathjaxExtender);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmunder",
-cvox.MathmlStoreUtil.checkMathjaxMunder);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmover",cvox.MathmlStoreUtil.checkMathjaxMover);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsub",cvox.MathmlStoreUtil.checkMathjaxMsub);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsup",cvox.MathmlStoreUtil.checkMathjaxMsup);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFlookupleaf",cvox.MathmlStoreUtil.retrieveMathjaxLeaf)};
-cvox.MathmlStoreRules.initDefaultRules_=function(){(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("math","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mspace","[p] (pause:250)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mstyle","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mpadded","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("merror","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mphantom","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mtext",
-"[t] text(); [p] (pause:200)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mi","[n] text()");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mo","[n] text() (rate:-0.1)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mn","[n] text()");(0,cvox.MathmlStoreRules.defineRule_)("mtext-variant","default.default",'[t] "begin"; [t] @mathvariant (pause:150);[t] text() (pause:150); [t] "end"; [t] @mathvariant (pause:200)',"self::mathml:mtext","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mi-variant",
-"default.default","[t] @mathvariant; [n] text()","self::mathml:mi","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mi-variant","self::mathml:mn","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mo-variant","default.default","[t] @mathvariant; [n] text() (rate:-0.1)","self::mathml:mo","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("ms",'[t] "string" (pitch:0.5, rate:0.5); [t] text()');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msup",
-'[n] ./*[1]; [t] "super";[n] ./*[2] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msubsup",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "super"; [n] ./*[3] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msub",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mover",'[n] ./*[2] (pitch:0.35); [p] (pause:200); [t] "over"; [n] ./*[1]; [p] (pause:400)');
-(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munder",'[n] ./*[2] (pitch:-0.35); [t] "under"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munderover",'[n] ./*[2] (pitch:-0.35); [t] "under and"; [n] ./*[3] (pitch:0.35); [t] "over"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mrow","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msqrt",'[t] "Square root of"; [m] ./* (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mroot",
-'[t] "root of order"; [n] ./*[2]; [t] "of";[n] ./*[1] (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mfrac",' [p] (pause:400); [n] ./*[1] (pitch:0.3); [t] "divided by"; [n] ./*[2] (pitch:-0.3); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-single","default.default",'[t] @open (context:"opening"); [m] ./* (separator:@separators);[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-empty",
-"default.default",'[t] @open (context:"opening"); [m] ./*;[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1",'string(@separators)=" "');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-comma","default.default",'[t] @open (context:"opening"); [m] ./* (separator:"comma");[t] @close (context:"closing")',"self::mathml:mfenced");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-multi","default.default",'[t] @open (context:"opening"); [m] ./* (sepFunc:CTXFmfSeparators,separator:@separators); [t] @close (context:"closing")',
-"self::mathml:mfenced","string-length(string(@separators))>1");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.default",'[t] "matrix"; [m] ./* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.default","[m] ./*","self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mtable",
-"default.superbrief",'[t] count(child::mathml:mtr); [t] "by";[t] count(child::mathml:mtr[1]/mathml:mtd); [t] "matrix";',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.short",'[t] "matrix"; [m] ./*',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.short","[m] ./*","self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.short",'[t] "Element"; [t] count(./preceding-sibling::mathml:mtd)+1;[t] count(./parent::mathml:mtr/preceding-sibling::mathml:mtr)+1;[p] (pause:500); [m] ./*',
-"self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-3",
-"default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[5]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[6]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-2-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[5]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[6]")};
-cvox.MathmlStoreRules.initMathjaxRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("mj-math","default.default","[n] ./*[1]/*[1]/*[1]",'self::span[@class="math"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-leaf","default.default","[n] CQFlookupleaf",'self::span[@class="mi"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mo"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mn"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtext"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-mo-ext","default.default","[n] CQFextender",'self::span[@class="mo"]',"./*[1]/*[1]/text()","./*[1]/*[2]/text()");(0,cvox.MathmlStoreRules.defineRule_)("mj-texatom","default.default","[n] ./*[1]",'self::span[@class="texatom"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msubsup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35);[p] (pause:200); [t] "super"; [n] ./*[1]/*[2]/*[1] (pitch:0.35);[p] (pause:300)','self::span[@class="msubsup"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-msub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub";[n] ./*[1]/*[2]/*[1] (pitch:-0.35); [p] (pause:300)','self::span[@class="msub"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "super";[n] ./*[1]/*[2]/*[1] (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munderover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under and";[n] ./*[1]/*[3]/*[1] (pitch:-0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)',
-'self::span[@class="munderover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munder","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="munder"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="mover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfrac","default.default",'[p] (pause:250); [n] ./*[1]/*[1]/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] ./*[1]/*[2]/*[1] (pitch:-0.3);[p] (pause:400)',
-'self::span[@class="mfrac"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msqrt","default.default",'[t] "Square root of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="msqrt"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mroot","default.default",'[t] "root of order"; [n] ./*[1]/*[4]/*[1]; [t] "of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="mroot"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfenced","default.default",'[t] "opening"; [n] ./*[1]; [m] ./*[position()>1 and position()<last()]; [t] "closing"; [n] ./*[last()]',
-'self::span[@class="mfenced"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtable"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mmultiscripts"]')};
-cvox.MathmlStoreRules.initAliases_=function(){(0,cvox.MathmlStoreRules.defineRuleAlias_)("mspace",'self::span[@class="mspace"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mstyle",'self::span[@class="mstyle"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mpadded",'self::span[@class="mpadded"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("merror",'self::span[@class="merror"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mphantom",'self::span[@class="mphantom"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("ms",
-'self::span[@class="ms"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mrow",'self::span[@class="mrow"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msub",'self::span[@class="msubsup"]',"CQFmathmlmsub");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msup",'self::span[@class="msubsup"]',"CQFmathmlmsup");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-munder",'self::span[@class="munderover"]',"CQFmathmlmunder");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-mover",'self::span[@class="munderover"]',
-"CQFmathmlmover")};
-cvox.MathmlStoreRules.initSpecializationRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] ./*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("cube","default.default",'[n] ./*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=3]");
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("square-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("cube-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',
-"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",
-'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square-sub",'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube-sub",
-'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]")};
-cvox.MathmlStoreRules.initSemanticRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("stree","default.default","[n] ./*[1]","self::stree");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel");(0,cvox.MathmlStoreRules.defineRule_)("variable-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',
-"count(./children/*)>2",'./children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.short",'[t] "equation sequence"; [m] ./children/* (separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("equality",
-"default.default",'[t] "equation"; [t] "left hand side"; [n] children/*[1];[p] (pause:200); [n] text() (pause:200);[t] "right hand side"; [n] children/*[2]','self::relseq[@role="equality"]',"count(./children/*)=2");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality","default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/identifier or ./children/number");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality2",
-"default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/function or ./children/appl");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default","[m] children/* (separator:./text())","self::relseq");(0,cvox.MathmlStoreRules.defineRule_)("binary-operation","default.default","[m] children/* (separator:text());","self::infixop");(0,cvox.MathmlStoreRules.defineRule_)("variable-addition",
-"default.default",'[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (separator:./text())','self::infixop[@role="addition"]',"count(children/*)>2",'children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-addition","default.default",'[t] "sum with,"; [t] count(./children/*); [t] ", summands";[p] (pause:400); [m] ./children/* (separator:./text())','self::infixop[@role="addition"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("prefix",
-"default.default",'[t] "prefix"; [n] text(); [t] "of" (pause 150);[n] children/*[1]',"self::prefixop");(0,cvox.MathmlStoreRules.defineRule_)("negative","default.default",'[t] "negative"; [n] children/*[1]',"self::prefixop",'self::prefixop[@role="negative"]');(0,cvox.MathmlStoreRules.defineRule_)("postfix","default.default",'[n] children/*[1]; [t] "postfix"; [n] text() (pause 300)',"self::postfixop");(0,cvox.MathmlStoreRules.defineRule_)("identifier","default.default","[n] text()","self::identifier");
-(0,cvox.MathmlStoreRules.defineRule_)("number","default.default","[n] text()","self::number");(0,cvox.MathmlStoreRules.defineRule_)("fraction","default.default",'[p] (pause:250); [n] children/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] children/*[2] (pitch:-0.3); [p] (pause:400)',"self::fraction");(0,cvox.MathmlStoreRules.defineRule_)("superscript","default.default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript");(0,cvox.MathmlStoreRules.defineRule_)("subscript",
-"default.default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',"self::subscript");(0,cvox.MathmlStoreRules.defineRule_)("ellipsis","default.default",'[p] (pause:200); [t] "dot dot dot"; [p] (pause:300)',"self::punct",'self::punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("fence-single","default.default","[n] text()","self::punct",'self::punct[@role="openfence"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="closefence"]');
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="vbar"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="application"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-punct","default.default","[p] (pause:200);","self::punct");(0,cvox.MathmlStoreRules.defineRule_)("omit-empty","default.default","","self::empty");(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close","default.default",'[p] (pause:100); [t] "open"; [n] children/*[1]; [p] (pause:200);[t] "close"',
-'self::fenced[@role="leftright"]');(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close-in-appl","default.default","[p] (pause:100); [n] children/*[1]; [p] (pause:200);",'self::fenced[@role="leftright"]',"./parent::children/parent::appl");(0,cvox.MathmlStoreRules.defineRule_)("fences-neutral","default.default",'[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);',"self::fenced",'self::fenced[@role="neutral"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-fences","default.default",
-"[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced");(0,cvox.MathmlStoreRules.defineRule_)("matrix","default.default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix");(0,cvox.MathmlStoreRules.defineRule_)("matrix-row","default.default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]');(0,cvox.MathmlStoreRules.defineRule_)("matrix-cell","default.default","[n] children/*[1]",'self::cell[@role="matrix"]');
-(0,cvox.MathmlStoreRules.defineRule_)("vector","default.default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',"self::vector");(0,cvox.MathmlStoreRules.defineRule_)("cases","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases");(0,cvox.MathmlStoreRules.defineRule_)("cases-row","default.default","[m] children/*",'self::row[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("cases-cell",
-"default.default","[n] children/*[1]",'self::cell[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("row","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row"');(0,cvox.MathmlStoreRules.defineRule_)("cases-end","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"',"self::cases","following-sibling::*");(0,cvox.MathmlStoreRules.defineRule_)("multiline","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',
-"self::multiline");(0,cvox.MathmlStoreRules.defineRule_)("line","default.default","[m] children/*","self::line");(0,cvox.MathmlStoreRules.defineRule_)("table","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table");(0,cvox.MathmlStoreRules.defineRule_)("table-row","default.default","[m] children/* (pause:100)",'self::row[@role="table"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("cases-cell",'self::cell[@role="table"]');(0,cvox.MathmlStoreRules.defineRule_)("end-punct",
-"default.default","[m] children/*; [p] (pause:300)","self::punctuated",'@role="endpunct"');(0,cvox.MathmlStoreRules.defineRule_)("start-punct","default.default","[n] content/*[1]; [p] (pause:200); [m] children/*","self::punctuated",'@role="startpunct"');(0,cvox.MathmlStoreRules.defineRule_)("integral-punct","default.default","[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2)","self::punctuated",'@role="integral"');(0,cvox.MathmlStoreRules.defineRule_)("punctuated","default.default","[m] children/* (pause:100)",
-"self::punctuated");(0,cvox.MathmlStoreRules.defineRule_)("function","default.default","[n] text()","self::function");(0,cvox.MathmlStoreRules.defineRule_)("appl","default.default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl");(0,cvox.MathmlStoreRules.defineRule_)("limboth","default.default",'[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3]',"self::limboth");(0,cvox.MathmlStoreRules.defineRule_)("sum-only","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::limboth",'self::limboth[@role="sum"]');(0,cvox.MathmlStoreRules.defineRule_)("limlower","default.default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower");(0,cvox.MathmlStoreRules.defineRule_)("limupper","default.default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',"self::limupper");(0,cvox.MathmlStoreRules.defineRule_)("largeop","default.default","[n] text()","self::largeop");(0,cvox.MathmlStoreRules.defineRule_)("bigop","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::bigop");(0,cvox.MathmlStoreRules.defineRule_)("integral","default.default","[n] children/*[1]; [p] (pause 100); [n] children/*[2]; [p] (pause 200);[n] children/*[3] (rate:0.35);","self::integral");(0,cvox.MathmlStoreRules.defineRule_)("sqrt","default.default",'[t] "Square root of"; [n] children/*[1] (rate:0.2); [p] (pause:400)',"self::sqrt");(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] children/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::superscript","children/*[2][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("text-no-mult","default.default","[n] children/*[1]; [p] (pause:200); [n] children/*[2]","self::infixop","children/text")};cvox.AbstractShifter=function(){this.isSubnavigating_=!1};cvox.AbstractShifter.prototype.begin=function(a,b){return this.currentWalker_.begin(b)};cvox.AbstractShifter.prototype.makeLessGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.makeMoreGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.ensureSubnavigating=function(){!1==this.isSubnavigating_&&(this.makeMoreGranular(),this.isSubnavigating_=!0)};
-cvox.AbstractShifter.prototype.ensureNotSubnavigating=function(){!0==this.isSubnavigating_&&(this.isSubnavigating_=!1,this.makeLessGranular())};cvox.AbstractShifter.prototype.isSubnavigating=function(){return this.isSubnavigating_};cvox.AbstractShifter.prototype.hasAction=function(a){return this.currentWalker_.hasAction(a)};cvox.AbstractShifter.prototype.performAction=function(a,b){return this.currentWalker_.performAction(a,b)};cvox.MathShifter=function(a){cvox.AbstractShifter.call(this);this.level_=0;this.bumped_=this.direction_=!1;cvox.TraverseMath.getInstance().initialize(a.start.node)};goog.inherits(cvox.MathShifter,cvox.AbstractShifter);cvox.MathShifter.prototype.next=function(a){var b=a.isReversed();this.bumped_=!cvox.TraverseMath.getInstance().nextSibling(b);return(b=cvox.TraverseMath.getInstance().getAttachedActiveNode())?cvox.CursorSelection.fromNode(b):a};
-cvox.MathShifter.prototype.sync=function(a){var b=cvox.TraverseMath.getInstance().getAttachedActiveNode();return b?cvox.CursorSelection.fromNode(b):a};cvox.MathShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("math_shifter")};cvox.MathShifter.prototype.getDescription=function(){var a=cvox.SpeechRuleEngine.getInstance().evaluateNode(cvox.TraverseMath.getInstance().activeNode);this.bumped_&&0<a.length&&a[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE);return a};
-cvox.MathShifter.prototype.getBraille=function(a,b){return new cvox.NavBraille({text:cvox.BrailleUtil.getTemplated(a.start.node,b.start.node)})};cvox.MathShifter.prototype.getGranularityMsg=function(){return this.direction_?"up to level "+this.level_:"down to level "+this.level_};cvox.MathShifter.prototype.makeLessGranular=function(){this.level_=0<this.level_?this.level_-1:0;this.direction_=!0;this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!0)};
-cvox.MathShifter.prototype.makeMoreGranular=function(){this.direction_=!1;(this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!1))||this.level_++};
-cvox.MathShifter.create=function(a){if(cvox.DomPredicates.mathPredicate(cvox.DomUtil.getAncestors(a.start.node))){var b=cvox.DomUtil.getContainingMath(a.end.node);cvox.TraverseMath.getInstance().initialize(b);cvox.SpeechRuleEngine.getInstance().parameterize(cvox.MathmlStore.getInstance());b=cvox.MathStore.createDynamicConstraint(cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style);cvox.SpeechRuleEngine.getInstance().setDynamicConstraint(b);return new cvox.MathShifter(a)}return null};cvox.TableUtil={};cvox.TableUtil.checkIfHeader=function(a){return"TH"==a.tagName||a.hasAttribute("scope")||a.hasAttribute("role")&&("rowheader"==a.getAttribute("role")||"columnheader"==a.getAttribute("role"))};
-cvox.TableUtil.determineColGroups=function(a){var b=[];if(0==a.length)return b;for(var c=0;c<a.length;c++){var d=a[c],e=cvox.TableUtil.getColNodes(d);if(0<e.length)for(d=0;d<e.length;d++){var f=e[d];if(f.hasAttribute("span"))for(var f=parseInt(f.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}else if(d.hasAttribute("span"))for(f=parseInt(d.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}return b};cvox.TableUtil.pushIfNotContained=function(a,b){-1==a.indexOf(b)&&a.push(b)};
-cvox.TableUtil.getChildRows=function(a){return cvox.XpathUtil.evalXPath('child::tbody/tr | child::thead/tr | child::*[attribute::role="row"]',a)};cvox.TableUtil.getChildCells=function(a){return cvox.XpathUtil.evalXPath('child::td | child::th | child::*[attribute::role="gridcell"] |child::*[attribute::role="rowheader"] |child::*[attribute::role="columnheader"]',a)};cvox.TableUtil.getCellWithID=function(a,b){return cvox.XpathUtil.evalXPath("id('"+b+"')",a)};
-cvox.TableUtil.getColGroups=function(a){return cvox.XpathUtil.evalXPath("child::colgroup",a)};cvox.TableUtil.getColNodes=function(a){return cvox.XpathUtil.evalXPath("child::col",a)};function ShadowTableNode(){}ShadowTableNode.prototype.rowHeaderCells=[];ShadowTableNode.prototype.colHeaderCells=[];cvox.TraverseTable=function(a){this.activeTable_=null;this.shadowTable_=[];this.candidateHeaders_=[];this.idToShadowNode_=[];this.initialize(a)};cvox.TraverseTable.prototype.colCount=null;cvox.TraverseTable.prototype.rowCount=null;cvox.TraverseTable.prototype.tableRowHeaders=null;cvox.TraverseTable.prototype.tableColHeaders=null;
-cvox.TraverseTable.prototype.initialize=function(a){a&&a!=this.activeTable_&&(this.activeTable_=a,this.currentCellCursor=null,this.tableRowHeaders=[],this.tableColHeaders=[],this.buildShadowTable_(),this.colCount=this.shadowColCount_(),this.rowCount=this.countRows_(),this.findHeaderCells_(),this.activeTable_.addEventListener("DOMSubtreeModified",goog.bind(function(){this.buildShadowTable_();this.colCount=this.shadowColCount_();this.rowCount=this.countRows_();this.tableRowHeaders=[];this.tableColHeaders=
-[];this.findHeaderCells_();0==this.colCount&&0==this.rowCount||null!=this.getCell()||this.attachCursorToNearestCell_()},this),!1))};
-cvox.TraverseTable.prototype.findNearestCursor=function(a){for(;a.firstElementChild&&"TABLE"!=a.firstElementChild.tagName&&!cvox.AriaUtil.isGrid(a.firstElementChild);)a=a.firstElementChild;for(;!cvox.DomPredicates.cellPredicate(cvox.DomUtil.getAncestors(a));)if(a=cvox.DomUtil.directedNextLeafNode(a),!cvox.DomUtil.getContainingTable(a,{allowCaptions:!0}))return null;for(var b=0;b<this.rowCount;++b)for(var c=0;c<this.colCount;++c)if(this.shadowTable_[b][c]&&cvox.DomUtil.isDescendantOfNode(a,this.shadowTable_[b][c].activeCell))return[b,
-c];return null};cvox.TraverseTable.prototype.attachCursorToNearestCell_=function(){if(this.currentCellCursor){var a=this.currentCellCursor,b=this.shadowTable_[a[0]];if(b)this.currentCellCursor=[a[0],b.length-1];else if(b=this.shadowTable_.length,0==b)this.currentCellCursor=null;else{var c=this.shadowTable_[b-1][a[1]];c?this.currentCellCursor=[b-1,a[1]]:this.goToLastCell()}}else this.goToLastCell()};
-cvox.TraverseTable.prototype.buildShadowTable_=function(){this.shadowTable_=[];for(var a=cvox.TableUtil.getChildRows(this.activeTable_),b=null,c=null,d=cvox.TableUtil.getColGroups(this.activeTable_),d=cvox.TableUtil.determineColGroups(d),e=0;e<a.length;e++)this.shadowTable_.push([]);for(e=0;e<a.length;e++)for(var f=cvox.TableUtil.getChildCells(a[e]),g=0,h=0;g<f.length;)if(null==this.shadowTable_[e][h]){var k=f[g],l=1,m=1;k.hasAttribute("colspan")&&(l=parseInt(k.getAttribute("colspan"),10),isNaN(l)||
-0>=l)&&(l=1);k.hasAttribute("rowspan")&&(m=parseInt(k.getAttribute("rowspan"),10),isNaN(m)||0>=m)&&(m=1);for(var p=0;p<m;p++)for(var q=0;q<l;q++){var n=new ShadowTableNode;0==p&&0==q?(n.spanned=!1,n.rowSpan=!1,n.colSpan=!1):(n.spanned=!0,n.rowSpan=1<m,n.colSpan=1<l);n.i=e;n.j=h;n.activeCell=k;n.rowHeaderCells=[];n.colHeaderCells=[];n.isRowHeader=!1;n.isColHeader=!1;cvox.TableUtil.checkIfHeader(n.activeCell)?this.candidateHeaders_.push(n):n.activeCell.hasAttribute("headers")&&this.candidateHeaders_.push(n);
-null==b?(b=a[e].parentNode,c=0):a[e].parentNode!=b&&(b=a[e].parentNode,c+=1);n.rowGroup=c;n.colGroup=0<d.length?d[h]:0;n.spanned||null!=k.id&&(this.idToShadowNode_[k.id]=n);this.shadowTable_[e+p][h+q]=n}h+=l;g++}else h+=1;return this.shadowTable_};
-cvox.TraverseTable.prototype.findHeaderCells_=function(){for(var a=0;a<this.candidateHeaders_.length;a++){var b=this.candidateHeaders_[a],c=b.activeCell,d=null,e=null;if(!b.spanned){"TH"!=c.tagName||c.hasAttribute("scope")?c.hasAttribute("scope")?e=c.getAttribute("scope"):c.hasAttribute("role")&&"rowheader"==c.getAttribute("role")?e="row":c.hasAttribute("role")&&"columnheader"==c.getAttribute("role")&&(e="col"):(0<b.j?"TH"==this.shadowTable_[b.i][b.j-1].activeCell.tagName&&(d="col"):b.j<this.shadowTable_[b.i].length-
-1?"TH"==this.shadowTable_[b.i][b.j+1].activeCell.tagName&&(d="col"):d="col",null==d&&(0<b.i?"TH"==this.shadowTable_[b.i-1][b.j].activeCell.tagName&&(d="row"):b.i<this.shadowTable_.length-1?"TH"==this.shadowTable_[b.i+1][b.j].activeCell.tagName&&(d="row"):d="row"));if("row"==e||"row"==d){b.isRowHeader=!0;for(d=b.j;d<this.shadowTable_[b.i].length;d++)e=this.shadowTable_[b.i][d],e.rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("col"==e||"col"==d){b.isColHeader=!0;for(e=b.i;e<this.shadowTable_.length;e++){d=
-this.shadowTable_[e][b.j];if(null==d)break;d.colHeaderCells.push(c)}this.tableColHeaders.push(c)}else if("rowgroup"==e){b.isRowHeader=!0;for(var f=b.rowGroup,d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].rowHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length&&this.shadowTable_[e][0].rowGroup==f;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("colgroup"==e){b.isColHeader=!0;f=b.colGroup;
-for(d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].colGroup==f&&this.shadowTable_[b.i][d].colHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].colGroup==f&&this.shadowTable_[e][d].colHeaderCells.push(c);this.tableColHeaders.push(c)}c.hasAttribute("headers")&&this.findAttrbHeaders_(b);c.hasAttribute("aria-describedby")&&this.findAttrbDescribedBy_(b)}}};
-cvox.TraverseTable.prototype.findAttrbHeaders_=function(a){for(var b=a.activeCell,c=b.getAttribute("headers").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];if(!cvox.TableUtil.checkIfHeader(g.activeCell)){var h=Math.abs(g.i-a.i),k=Math.abs(g.j-a.j);0==h||h<k?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,g.activeCell)):
-(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell))}}};
-cvox.TraverseTable.prototype.findAttrbDescribedBy_=function(a){for(var b=a.activeCell,c=b.getAttribute("aria-describedby").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];cvox.TableUtil.checkIfHeader(g.activeCell)||(g.activeCell.hasAttribute("role")&&"rowheader"==g.activeCell.getAttribute("role")?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,
-g.activeCell)):g.activeCell.hasAttribute("role")&&"columnheader"==g.activeCell.getAttribute("role")&&(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell)))}};cvox.TraverseTable.prototype.getCell=function(){if(!this.currentCellCursor||!this.shadowTable_)return null;var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a&&a.activeCell};
-cvox.TraverseTable.prototype.getCellAt=function(a){return a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]&&(a=this.shadowTable_[a[0]][a[1]],null!=a)?a.activeCell:null};cvox.TraverseTable.prototype.getCellRowHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.rowHeaderCells};cvox.TraverseTable.prototype.getCellColHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.colHeaderCells};
-cvox.TraverseTable.prototype.isSpanned=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.spanned};cvox.TraverseTable.prototype.isRowHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isRowHeader};cvox.TraverseTable.prototype.isColHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isColHeader};
-cvox.TraverseTable.prototype.getCol=function(){for(var a=[],b=0;b<this.shadowTable_.length;b++)if(this.shadowTable_[b][this.currentCellCursor[1]]){var c=this.shadowTable_[b][this.currentCellCursor[1]];if(c.colSpan&&c.rowSpan){var d=a[a.length-1];d!=c.activeCell&&a.push(c.activeCell)}else!c.colSpan&&c.rowSpan||a.push(c.activeCell)}return a};cvox.TraverseTable.prototype.summaryText=function(){return this.activeTable_.hasAttribute("summary")?this.activeTable_.getAttribute("summary"):null};
-cvox.TraverseTable.prototype.shadowColCount_=function(){for(var a=0,b=0;b<this.shadowTable_.length;b++)this.shadowTable_[b].length>a&&(a=this.shadowTable_[b].length);return a};cvox.TraverseTable.prototype.countRows_=function(){var a=cvox.TableUtil.getChildRows(this.activeTable_);return a.length};cvox.TraverseTable.prototype.nextRow=function(){return this.currentCellCursor?this.goToRow(this.currentCellCursor[0]+1):this.goToRow(0)};
-cvox.TraverseTable.prototype.nextCol=function(){return this.currentCellCursor?this.goToCol(this.currentCellCursor[1]+1):this.goToCol(0)};cvox.TraverseTable.prototype.goToRow=function(a){return null!=this.shadowTable_[a]?(this.currentCellCursor=null==this.currentCellCursor?[a,0]:[a,this.currentCellCursor[1]],!0):!1};cvox.TraverseTable.prototype.goToCol=function(a){if(0>a||a>=this.colCount)return!1;this.currentCellCursor=null==this.currentCellCursor?[0,a]:[this.currentCellCursor[0],a];return!0};
-cvox.TraverseTable.prototype.goToCell=function(a){if(a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]){var b=this.shadowTable_[a[0]][a[1]];if(null!=b)return this.currentCellCursor=a,!0}return!1};cvox.TraverseTable.prototype.goToLastCell=function(){var a=this.shadowTable_.length;if(0==a)return!1;var b=this.shadowTable_[a-1],a=[a-1,b.length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};
-cvox.TraverseTable.prototype.goToRowLastCell=function(){var a=this.currentCellCursor[0],a=[a,this.shadowTable_[a].length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TraverseTable.prototype.goToColLastCell=function(){var a=this.getCol(),a=[a.length-1,this.currentCellCursor[1]],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TableWalker=function(){this.tt=new cvox.TraverseTable(null)};goog.inherits(cvox.TableWalker,cvox.AbstractWalker);cvox.TableWalker.prototype.next=function(a){return this.nextRow(a)};cvox.TableWalker.prototype.sync=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell(a)},this))};
-cvox.TableWalker.prototype.getDescription=function(a,b){var c=this.syncPosition_(b);if(!c)return[];this.tt.goToCell(c);c=cvox.DescriptionUtil.getCollectionDescription(a,b);0==c.length&&c.push(new cvox.NavDescription({annotation:cvox.ChromeVox.msgs.getMsg("empty_cell")}));return c};cvox.TableWalker.prototype.getBraille=function(a,b){new cvox.NavBraille({});var c=this.syncPosition_(b);if(c){var d=cvox.BrailleUtil.getTemplated(a.start.node,b.start.node);d.append(" "+ ++c[0]+"/"+ ++c[1])}return new cvox.NavBraille({text:d})};
-cvox.TableWalker.prototype.goToFirstCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToCell([0,0])},this))};cvox.TableWalker.prototype.goToLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToLastCell()},this))};cvox.TableWalker.prototype.goToRowFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([a[0],0])},this))};
-cvox.TableWalker.prototype.goToRowLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToRowLastCell()},this))};cvox.TableWalker.prototype.goToColFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([0,a[1]])},this))};cvox.TableWalker.prototype.goToColLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToColLastCell()},this))};
-cvox.TableWalker.prototype.nextRow=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0]+(a.isReversed()?-1:1),b[1]])},this))};cvox.TableWalker.prototype.nextCol=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0],b[1]+(a.isReversed()?-1:1)])},this))};cvox.TableWalker.prototype.announceHeaders=function(a){cvox.ChromeVox.tts.speak(this.getHeaderText_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);return a};
-cvox.TableWalker.prototype.speakTableLocation=function(a){cvox.ChromeVox.navigationManager.speakDescriptionArray(this.getLocationDescription_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,null);return a};cvox.TableWalker.prototype.exitShifterContent=function(a){a=this.getTableNode_(a);if(!a)return null;a=cvox.DomUtil.directedNextLeafNode(a,!1);return cvox.CursorSelection.fromNode(a)};
-cvox.TableWalker.prototype.getHeaderText_=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))&&this.tt.goToCell(a)?this.getRowHeaderText_(a)+" "+this.getColHeaderText_(a):cvox.ChromeVox.msgs.getMsg("not_inside_table")};cvox.TableWalker.prototype.getLocationDescription_=function(a){a=this.getLocationInfo(a);return null==a?null:[new cvox.NavDescription({text:cvox.ChromeVox.msgs.getMsg("table_location",a)})]};
-cvox.TableWalker.prototype.getRowHeaderText_=function(a){var b="",c=this.tt.getCellRowHeaders();if(0==c.length)return c=this.tt.getCellAt([a[0],0]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("row_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("row_header")+b};
-cvox.TableWalker.prototype.getColHeaderText_=function(a){var b="",c=this.tt.getCellColHeaders();if(0==c.length)return c=this.tt.getCellAt([0,a[1]]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("column_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("column_header")+
-b};cvox.TableWalker.prototype.getLocationInfo=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))?[a[0]+1,this.tt.rowCount,a[1]+1,this.tt.colCount].map(function(a){return cvox.ChromeVox.msgs.getNumber(a)}):null};
-cvox.TableWalker.prototype.goTo_=function(a,b){this.tt.initialize(this.getTableNode_(a));var c=this.tt.findNearestCursor(a.end.node);if(!c)return null;this.tt.goToCell(c);return b(c)?cvox.CursorSelection.fromNode(this.tt.getCell()).setReversed(a.isReversed()):null};cvox.TableWalker.prototype.getTableNode_=function(a){return cvox.DomUtil.getContainingTable(a.end.node)};cvox.TableWalker.prototype.syncPosition_=function(a){var b=this.getTableNode_(a);this.tt.initialize(b);return this.tt.findNearestCursor(a.end.node)};cvox.ColumnWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.ColumnWalker,cvox.TableWalker);cvox.ColumnWalker.prototype.next=function(a){return this.nextCol(a)};cvox.ColumnWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("column_granularity")};cvox.RowWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.RowWalker,cvox.TableWalker);cvox.RowWalker.prototype.next=function(a){return this.nextRow(a)};cvox.RowWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("row_granularity")};cvox.TableShifter=function(){this.rowWalker_=new cvox.RowWalker;this.columnWalker_=new cvox.ColumnWalker;this.currentWalker_=this.rowWalker_;this.bumpedEdge_=!1;this.begin_=!0;cvox.AbstractShifter.call(this)};goog.inherits(cvox.TableShifter,cvox.AbstractShifter);cvox.TableShifter.prototype.next=function(a){var b=this.currentWalker_.next(a);return b?b:(this.bumpedEdge_=!0,a)};
-cvox.TableShifter.prototype.sync=function(a){return"TABLE"==a.start.node.tagName?a.isReversed()?this.currentWalker_.goToLastCell(a):this.currentWalker_.goToFirstCell(a):this.currentWalker_.sync(a)};cvox.TableShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("table_shifter")};
-cvox.TableShifter.prototype.getDescription=function(a,b){var c=this.currentWalker_.getDescription(a,b);if(0<c.length&&(this.bumpedEdge_&&(c[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE),this.bumpedEdge_=!1),this.begin_)){var d=this.currentWalker_.tt.summaryText(),e=this.currentWalker_.getLocationInfo(b);null!=e&&c.push(new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("table_location",e),text:"",annotation:d?d+" ":""}));this.currentWalker_.tt.isSpanned()&&c.push(new cvox.NavDescription({text:"",
-annotation:cvox.ChromeVox.msgs.getMsg("spanned")}));this.begin_=!1}return c};cvox.TableShifter.prototype.getBraille=function(a,b){return this.currentWalker_.getBraille(a,b)};cvox.TableShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};cvox.TableShifter.prototype.makeLessGranular=function(){cvox.TableShifter.superClass_.makeLessGranular.call(this);this.currentWalker_=this.rowWalker_};
-cvox.TableShifter.prototype.makeMoreGranular=function(){cvox.TableShifter.superClass_.makeMoreGranular.call(this);this.currentWalker_=this.columnWalker_};cvox.TableShifter.create=function(a){a=cvox.DomUtil.getAncestors(a.start.node);return cvox.DomPredicates.tablePredicate(a)&&!cvox.DomPredicates.captionPredicate(a)?new cvox.TableShifter:null};cvox.NavigationHistory=function(){this.reset_()};cvox.NavigationHistory.MAX_HISTORY_LEN_=30;cvox.NavigationHistory.prototype.reset_=function(){var a=document.body;this.history_=[a];this.arrivedValid_=!0};cvox.NavigationHistory.prototype.update=function(a){var b=this.history_[0];a&&a!=b&&this.history_.unshift(a);this.history_.length>cvox.NavigationHistory.MAX_HISTORY_LEN_&&this.history_.pop();this.arrivedValid_=this.isValidNode_(a)};
-cvox.NavigationHistory.prototype.becomeInvalid=function(a){this.clean_();return this.arrivedValid_?!this.isValidNode_(a):(this.arrivedValid_=!0,!1)};cvox.NavigationHistory.prototype.revert=function(a){var b=document.activeElement;b!=document.body&&this.isValidNode_(b)&&this.update(b);if(a)for(;0<this.history_.length;){b=this.history_[0];if(a(b))break;this.history_.shift()}return{current:this.history_[0],previous:this.history_[1]}};
-cvox.NavigationHistory.prototype.clean_=function(){for(var a=!1,b=this.history_.length-1;0<=b;b--){var c=this.isValidNode_(this.history_[b]);c||(this.history_.splice(b,1),a=!0)}return a};cvox.NavigationHistory.prototype.isValidNode_=function(a){return cvox.DomUtil.isAttachedToDocument(a)&&cvox.DomUtil.isVisible(a)?!0:!1};cvox.TraverseContent=function(a){this.currentDomObj=null!=a?a:document.body;var b=document.createRange();try{b.selectNode(this.currentDomObj),this.startCursor_=new cvox.Cursor(b.startContainer,b.startOffset,cvox.TraverseUtil.getNodeText(b.startContainer)),this.endCursor_=new cvox.Cursor(b.endContainer,b.endOffset,cvox.TraverseUtil.getNodeText(b.endContainer))}catch(c){window.console.log("Error: Unselectable node:"),window.console.log(a)}};goog.addSingletonGetter(cvox.TraverseContent);
-cvox.TraverseContent.prototype.lastSelectionWasWhitespace=!1;cvox.TraverseContent.prototype.skipWhitespace=!1;cvox.TraverseContent.prototype.skipInvalidSelections=!0;cvox.TraverseContent.prototype.breakAtLinks=!0;cvox.TraverseContent.kCharacter="character";cvox.TraverseContent.kWord="word";cvox.TraverseContent.kSentence="sentence";cvox.TraverseContent.kLine="line";cvox.TraverseContent.kParagraph="paragraph";
-cvox.TraverseContent.kAllGrains=[cvox.TraverseContent.kParagraph,cvox.TraverseContent.kSentence,cvox.TraverseContent.kLine,cvox.TraverseContent.kWord,cvox.TraverseContent.kCharacter];cvox.TraverseContent.prototype.syncToCursorSelection=function(a){this.startCursor_=a.start.clone();this.endCursor_=a.end.clone()};cvox.TraverseContent.prototype.getCurrentCursorSelection=function(){return new cvox.CursorSelection(this.startCursor_,this.endCursor_)};
-cvox.TraverseContent.prototype.updateSelection=function(){cvox.TraverseUtil.setSelection(this.startCursor_,this.endCursor_);cvox.SelectionUtil.scrollToSelection(window.getSelection())};cvox.TraverseContent.prototype.getCurrentRange=function(){var a=document.createRange();try{a.setStart(this.startCursor_.node,this.startCursor_.index),a.setEnd(this.endCursor_.node,this.endCursor_.index)}catch(b){console.log("Invalid range ")}return a};cvox.TraverseContent.prototype.getCurrentText=function(){return cvox.SelectionUtil.getRangeText(this.getCurrentRange())};
-cvox.TraverseContent.prototype.collapseToEnd=function(){this.startCursor_=this.endCursor_.clone()};cvox.TraverseContent.prototype.collapseToStart=function(){this.endCursor_=this.startCursor_.clone()};
-cvox.TraverseContent.prototype.moveNext=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getNextWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getNextChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getNextParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getNextLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.moveNext(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};
-cvox.TraverseContent.prototype.movePrev=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getPreviousWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getPreviousChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getPreviousParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getPreviousLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.movePrev(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};cvox.TraverseContent.prototype.getBreakTags=function(){return{A:this.breakAtLinks,BR:!0,HR:!0}};
-cvox.TraverseContent.prototype.nextElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.moveNext(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};
-cvox.TraverseContent.prototype.prevElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.movePrev(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};cvox.TraverseContent.prototype.reset=function(){window.getSelection().removeAllRanges()};cvox.AbstractSelectionWalker=function(){this.objWalker_=new cvox.BareObjectWalker;this.tc_=cvox.TraverseContent.getInstance();this.grain=""};goog.inherits(cvox.AbstractSelectionWalker,cvox.AbstractWalker);
-cvox.AbstractSelectionWalker.prototype.next=function(a){var b=a.isReversed();this.tc_.syncToCursorSelection(a.clone().setReversed(!1));var c=b?this.tc_.prevElement(this.grain):this.tc_.nextElement(this.grain);if(null==c)return this.objWalker_.next(a);var c=this.tc_.getCurrentCursorSelection().setReversed(b),d=this.objWalker_.next(a),d=d?d.setReversed(b):null;return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||
-cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.sync=function(a){var b=a.isReversed(),c=null;if(a.start.equals(a.end)&&"Text"!=a.start.node.constructor.name){for(c=a.start.node;c&&cvox.DomUtil.directedFirstChild(c,b)&&!cvox.TraverseUtil.treatAsLeafNode(c);){for(var d=cvox.DomUtil.directedFirstChild(c,b);d;)if(cvox.DomUtil.isVisible(d,{checkAncestors:!1,checkDescendants:!1})){c=d;break}else d=cvox.DomUtil.directedNextSibling(d,b);if(!d)break}c=cvox.CursorSelection.fromNode(c)}else c=a.clone(),b?c.start=c.end:
-c.end=c.start;c=this.next(c.setReversed(!1));d=(d=this.objWalker_.sync(a))?d.setReversed(b):null;if(!c)return d;c.setReversed(b);return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.getDescription=function(a,b){var c=cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getUniqueAncestors(a.end.node,b.start.node),!0,cvox.ChromeVox.verbosity);c.text=b.getText()||c.text;return[c]};cvox.AbstractSelectionWalker.prototype.getBraille=function(a,b){var c=b.absStart().node,d=cvox.TraverseUtil.getNodeText(c),e=new cvox.Spannable(d);e.setSpan(c,0,d.length);return new cvox.NavBraille({text:e,startIndex:b.absStart().index,endIndex:b.absEnd().index})};cvox.CharacterWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kCharacter};goog.inherits(cvox.CharacterWalker,cvox.AbstractSelectionWalker);cvox.CharacterWalker.prototype.getDescription=function(a,b){var c=cvox.CharacterWalker.superClass_.getDescription.call(this,a,b);c.forEach(function(a){a.personality||(a.personality={});a.personality.phoneticCharacters=!0});return c};cvox.CharacterWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("character_granularity")};cvox.GroupUtil={};cvox.GroupUtil.MAX_CHARCOUNT_=1500;cvox.GroupUtil.BREAKOUT_SELECTOR_='blockquote,button,code,form,frame,h1,h2,h3,h4,h5,h6,hr,iframe,input,object,ol,p,pre,select,table,tr,ul,math,span.math,[role~="alert alertdialog button checkbox combobox dialog log marquee menubar progressbar radio radiogroup scrollbar slider spinbutton status tab tabpanel textbox toolbar tooltip treeitem article document group heading img list math region row separator"]';
-cvox.GroupUtil.isLeafNode=function(a){if("LABEL"==a.tagName)return cvox.DomUtil.isLeafNode(a);if(cvox.DomUtil.isLeafNode(a))return!0;if(!cvox.DomUtil.isSemanticElt(a))for(var b=a.querySelectorAll(cvox.GroupUtil.BREAKOUT_SELECTOR_),c=0;c<b.length;++c)if(cvox.DomUtil.hasContent(b[c]))return!1;if(cvox.AriaUtil.isCompositeControl(a)&&!cvox.DomUtil.isFocusable(a))return!1;a=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a));return a.length>cvox.GroupUtil.MAX_CHARCOUNT_||
-""===a.replace(/\s/g,"")?!1:!0};cvox.GroupWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.GroupWalker,cvox.AbstractNodeWalker);cvox.GroupWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getCollectionDescription(a,b)};cvox.GroupWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};cvox.GroupWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("group_strategy")};cvox.GroupWalker.prototype.stopNodeDescent=function(a){return cvox.GroupUtil.isLeafNode(a)};cvox.StructuralLineWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kLine};goog.inherits(cvox.StructuralLineWalker,cvox.AbstractSelectionWalker);cvox.StructuralLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("structural_line")};
-cvox.StructuralLineWalker.prototype.getDescription=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getDescription.call(this,a,b);c[0].text=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index)+c[0].text;return c};
-cvox.StructuralLineWalker.prototype.getBraille=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getBraille.call(this,a,b),d=this.objWalker_.sync(b).absStart().node,e=a.absEnd().node,f=void 0;b.start.equals(b.end)||cvox.DomPredicates.editTextPredicate([d])||(f=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index),f+=b.getText());e=cvox.BrailleUtil.getTemplated(e,d,{name:f});e.setSpan(d,0,e.getLength());c.text=e;c.startIndex=0;c.endIndex=0;return c};cvox.LayoutLineWalker=function(){this.subWalker_=new cvox.StructuralLineWalker};goog.inherits(cvox.LayoutLineWalker,cvox.AbstractWalker);cvox.LayoutLineWalker.prototype.next=function(a){var b=new cvox.CursorSelection(a.end,a.end,a.isReversed()),c=this.subWalker_.sync(b);if(!c)return null;b=this.subWalker_.next(b);if(!b)return null;b.setReversed(a.isReversed());return this.extend_(b).setReversed(!1)};
-cvox.LayoutLineWalker.prototype.sync=function(a){var b=this.subWalker_.sync(a);if(!b)return null;var c=this.extend_(b),b=this.extend_(b.setReversed(!b.isReversed()));return new cvox.CursorSelection(b.end,c.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.getDescription=function(a,b){var c=[],d=a,e=b.clone().setReversed(!1),f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return[];if(e.start.node==e.end.node)return this.subWalker_.getDescription(a,b);for(;f&&!f.end.equals(e.end);)c.push.apply(c,this.subWalker_.getDescription(d,f)),d=f,f=this.subWalker_.next(f);f&&c.push.apply(c,this.subWalker_.getDescription(d,f));return c};
-cvox.LayoutLineWalker.prototype.getBraille=function(a,b){var c=new cvox.NavBraille({}),d=this.subWalker_.sync(b.clone().setReversed(!1)),e=this.sync(b).setReversed(!1);if(!e||!d)return c;var f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return c;for(;f&&!f.end.equals(e.end);)this.appendBraille_(a,d,f,c),a=f,f=this.subWalker_.next(f);f&&this.appendBraille_(a,d,f,c);return c};cvox.LayoutLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("layout_line")};
-cvox.LayoutLineWalker.prototype.isVisualLineBreak_=function(a,b){if(this.wantsOwnLine_(a.end.node)||this.wantsOwnLine_(b.start.node))return!0;var c=a.getRange().getBoundingClientRect(),d=b.getRange().getBoundingClientRect();0==c.width&&0==c.height&&a.end.node.nodeType==Node.ELEMENT_NODE&&(c=a.end.node.getBoundingClientRect());0==d.width&&0==d.height&&b.start.node.nodeType==Node.ELEMENT_NODE&&(d=b.start.node.getBoundingClientRect());return c.bottom!=d.bottom};
-cvox.LayoutLineWalker.prototype.wantsOwnLine_=function(a){return a instanceof HTMLTextAreaElement||a.parentNode instanceof HTMLTextAreaElement};cvox.LayoutLineWalker.prototype.extend_=function(a){var b=a,c=a;do b=c,c=this.subWalker_.next(b);while(c&&!this.isVisualLineBreak_(b,c));return new cvox.CursorSelection(a.start,b.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.appendBraille_=function(a,b,c,d){a=this.subWalker_.getBraille(a,c).text;var e=a.getSpanInstanceOf(cvox.BrailleUtil.ValueSelectionSpan);0<d.text.getLength()&&d.text.append(cvox.BrailleUtil.ITEM_SEPARATOR);for(var f=c.start.node;f.parentNode&&cvox.DomUtil.isLeafNode(f.parentNode);)f=f.parentNode;var g=d.text.getLength(),h=g+a.getLength();d.text.append(a.toString());d.text.setSpan(f,g,h);b&&c.absEquals(b)&&(e?(d.startIndex=g+a.getSpanStart(e),d.endIndex=g+a.getSpanEnd(e)):
-(d.startIndex=g,d.endIndex=g+1))};cvox.ObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.ObjectWalker,cvox.AbstractNodeWalker);cvox.ObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AbstractNodeWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getDescriptionFromNavigation(a.end.node,b.start.node,!0,cvox.ChromeVox.verbosity)};cvox.ObjectWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};
-cvox.ObjectWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("object_strategy")};cvox.SentenceWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kSentence};goog.inherits(cvox.SentenceWalker,cvox.AbstractSelectionWalker);cvox.SentenceWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("sentence_granularity")};cvox.WordWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kWord};goog.inherits(cvox.WordWalker,cvox.AbstractSelectionWalker);cvox.WordWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("word_granularity")};cvox.NavigationShifter=function(){this.reset_();cvox.AbstractShifter.call(this)};goog.inherits(cvox.NavigationShifter,cvox.AbstractShifter);cvox.NavigationShifter.GRANULARITIES={CHARACTER:0,WORD:1,LINE:2,SENTENCE:3,OBJECT:4,GROUP:5};cvox.NavigationShifter.prototype.storeOn=function(a){a.granularity=this.getGranularity()};cvox.NavigationShifter.prototype.readFrom=function(a){this.setGranularity(a.granularity)};
-cvox.NavigationShifter.prototype.next=function(a){a=this.currentWalker_.next(a);this.currentWalkerIndex_<=cvox.NavigationShifter.GRANULARITIES.LINE&&a&&(cvox.TraverseContent.getInstance().syncToCursorSelection(a.clone().setReversed(!1)),cvox.TraverseContent.getInstance().updateSelection());return a};cvox.NavigationShifter.prototype.sync=function(a){return this.currentWalker_.sync(a)};cvox.NavigationShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("navigation_shifter")};
-cvox.NavigationShifter.prototype.getDescription=function(a,b){return this.currentWalker_.getDescription(a,b)};cvox.NavigationShifter.prototype.getBraille=function(a,b){return this.lineWalker_.getBraille(a,b)};cvox.NavigationShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};
-cvox.NavigationShifter.prototype.makeMoreGranular=function(){cvox.NavigationShifter.superClass_.makeMoreGranular.call(this);this.currentWalkerIndex_=Math.max(this.currentWalkerIndex_-1,0);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_--;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.makeLessGranular=function(){cvox.NavigationShifter.superClass_.makeLessGranular.call(this);this.currentWalkerIndex_=Math.min(this.currentWalkerIndex_+1,this.walkers_.length-1);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_++;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.setGranularity=function(a){this.ensureNotSubnavigating();this.currentWalkerIndex_=a;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.prototype.getGranularity=function(){var a=this.isSubnavigating();this.ensureNotSubnavigating();var b=this.currentWalkerIndex_;a&&this.ensureSubnavigating();return b};
-cvox.NavigationShifter.prototype.hasAction=function(a){return"toggleLineType"==a?!0:cvox.NavigationShifter.superClass_.hasAction.call(this,a)};cvox.NavigationShifter.create=function(){return new cvox.NavigationShifter};
-cvox.NavigationShifter.prototype.reset_=function(){this.groupWalker_=new cvox.GroupWalker;this.objectWalker_=new cvox.ObjectWalker;this.sentenceWalker_=new cvox.SentenceWalker;this.lineWalker_=new cvox.LayoutLineWalker;this.wordWalker_=new cvox.WordWalker;this.characterWalker_=new cvox.CharacterWalker;this.walkers_=[this.characterWalker_,this.wordWalker_,this.lineWalker_,this.sentenceWalker_,this.objectWalker_,this.groupWalker_];this.currentWalkerIndex_=this.walkers_.indexOf(this.groupWalker_);this.currentWalker_=
-this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.allowSentence=!1;cvox.NavigationSpeaker=function(){this.stopReading=!1;this.id_=1};
-cvox.NavigationSpeaker.prototype.speakDescriptionArray=function(a,b,c){a=this.reorderAnnotations(a);this.stopReading=!1;this.id_=(this.id_+1)%1E4;var d=this,e=function(b,g,h){var k=a[b];if(k&&!d.stopReading&&d.id_==h){var l=function(){for(var a=0;a<k.earcons.length;a++)cvox.ChromeVox.earcons.playEarcon(k.earcons[a])},m=function(){e(b+1,cvox.AbstractTts.QUEUE_MODE_QUEUE,h)},p=function(){k.personality&&k.personality[cvox.AbstractTts.PAUSE]&&"number"==typeof k.personality[cvox.AbstractTts.PAUSE]?setTimeout(m,
-k.personality[cvox.AbstractTts.PAUSE]):m();b==a.length-1&&c&&c()};k.isEmpty()?(l(),p()):(k.speak(g,l,p),cvox.ChromeVox.host.hasTtsCallback()||(l(),p()))}};e(0,b,this.id_);0==a.length&&c&&c()};cvox.NavigationSpeaker.structuredElement=function(a){switch(a){case "table":case "Math":return!0}return!1};
-cvox.NavigationSpeaker.prototype.reorderAnnotations=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];cvox.NavigationSpeaker.structuredElement(d.annotation)&&(b.push(new cvox.NavDescription({text:"",annotation:d.annotation})),d.annotation="");b.push(d)}return b};cvox.NavigationManager=function(){this.addInterframeListener_();this.reset()};cvox.NavigationManager.prototype.storeOn=function(a){a.reversed=this.isReversed();a.keepReading=this.keepReading_;a.findNext=this.predicate_;this.shifter_.storeOn(a)};cvox.NavigationManager.prototype.readFrom=function(a){this.curSel_.setReversed(a.reversed);this.shifter_.readFrom(a);a.keepReading&&this.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH)};
-cvox.NavigationManager.prototype.reset=function(){this.navSpeaker_=new cvox.NavigationSpeaker;this.shifterTypes_=[cvox.NavigationShifter,cvox.TableShifter,cvox.MathShifter];this.shifterStack_=[];this.shifter_=new cvox.NavigationShifter;this.curSel_=document.activeElement!=document.body?cvox.CursorSelection.fromNode(document.activeElement):this.shifter_.begin(this.curSel_,{reversed:!1});this.prevSel_=this.curSel_.clone();this.ignoreIframesNoMatterWhat_=this.exitedShifter_=this.enteredShifter_=this.pageEndAnnounced_=
-this.pageEnd_=this.keepReading_=this.recovered_=this.skipped_=!1;this.pageSel_=null;this.predicate_="";this.saveSel_=null;this.activeIndicator&&this.activeIndicator.removeFromDom();this.activeIndicator=new cvox.ActiveIndicator;this.navigationHistory_=new cvox.NavigationHistory;this.focusRecovery_="chrome:"!=window.location.protocol;this.iframeIdMap={};this.nextIframeId=1;document.activeElement!=document.body&&this.sync();cvox.TraverseMath.getInstance()};
-cvox.NavigationManager.prototype.resolve=function(a){if(!this.getFocusRecovery())return!0;var b=this.getCurrentNode();if(!this.navigationHistory_.becomeInvalid(b)||this.hasNext_())return!0;b=this.navigationHistory_.revert(a);if(!b.current)return!0;a=cvox.CursorSelection.fromNode(b.current);b=cvox.CursorSelection.fromNode(b.previous);a=a||cvox.CursorSelection.fromBody();b=b||cvox.CursorSelection.fromBody();a.setReversed(this.isReversed());this.updateSel(a,b);this.recovered_=!0;return!1};
-cvox.NavigationManager.prototype.getFocusRecovery=function(){return this.focusRecovery_};cvox.NavigationManager.prototype.setFocusRecovery=function(a){this.focusRecovery_=a};cvox.NavigationManager.prototype.next_=function(a){return this.tryBoundaries_(this.shifter_.next(this.curSel_),a)?(this.pageSel_&&this.pageSel_.extend(this.curSel_),!0):!1};
-cvox.NavigationManager.prototype.hasNext_=function(){if(0<this.shifterStack_.length)return!0;var a=this.curSel_.clone(),b=!1,c=new cvox.NavigationShifter;c.setGranularity(this.shifter_.getGranularity());c.sync(a);c.next(a)&&(b=!0);return b};
-cvox.NavigationManager.prototype.findNext=function(a,b,c){this.predicate_=b||"";this.resolve();this.shifter_=this.shifterStack_[0]||this.shifter_;this.shifterStack_=[];a=cvox.FindUtil.findNext(this.curSel_,a,c);this.ignoreIframesNoMatterWhat_||this.tryIframe_(a&&a.start.node);a&&this.updateSelToArbitraryNode(a.start.node);this.predicate_="";return a};cvox.NavigationManager.prototype.sync=function(){this.resolve();var a=this.shifter_.sync(this.curSel_);a&&(this.curSel_=a)};
-cvox.NavigationManager.prototype.syncAll=function(a){this.sync();this.setFocus(a);this.updateIndicator()};cvox.NavigationManager.prototype.clearPageSel=function(a){var b=!!this.pageSel_;b&&a&&(a=cvox.ChromeVox.msgs.getMsg("clear_page_selection"),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION));this.pageSel_=null;return b};
-cvox.NavigationManager.prototype.togglePageSel=function(){this.pageSel_=this.pageSel_?null:new cvox.PageSelection(this.curSel_.setReversed(!1));return!!this.pageSel_};
-cvox.NavigationManager.prototype.getDescription=function(){if(this.getCurrentNode().hasAttribute&&this.getCurrentNode().hasAttribute("cvoxnodedesc")){for(var a=cvox.ChromeVoxJSON.parse(this.getCurrentNode().getAttribute("cvoxnodedesc")),b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b}var e=this.pageSel_?this.pageSel_.getDescription(this.shifter_,this.prevSel_,this.curSel_):this.shifter_.getDescription(this.prevSel_,
-this.curSel_),a=[];this.skipped_&&(a.push(cvox.AbstractEarcons.PARAGRAPH_BREAK),this.skipped_=!1);this.recovered_&&(a.push(cvox.AbstractEarcons.FONT_CHANGE),this.recovered_=!1);this.pageEnd_&&(a.push(cvox.AbstractEarcons.WRAP),this.pageEnd_=!1);this.enteredShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_ENTER),this.enteredShifter_=!1);this.exitedShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_EXIT),this.exitedShifter_=!1);0<a.length&&0<e.length&&a.forEach(function(a){e[0].pushEarcon(a)});return e};
-cvox.NavigationManager.prototype.getBraille=function(){return cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.ANDROID|cvox.PlatformFilter.CHROMEOS)?this.shifter_.getBraille(this.prevSel_,this.curSel_):new cvox.NavBraille({})};
-cvox.NavigationManager.prototype.performAction=function(a){switch(a){case "enterShifter":case "enterShifterSilently":for(var b=this.shifterTypes_.length-1,c;c=this.shifterTypes_[b];b--)if((c=c.create(this.curSel_))&&c.getName()!=this.shifter_.getName()){this.shifterStack_.push(this.shifter_);this.shifter_=c;this.sync();this.enteredShifter_="enterShifterSilently"!=a;break}else if(c&&this.shifter_.getName()==c.getName())break;break;case "exitShifter":if(0==this.shifterStack_.length)return!1;this.shifter_=
-this.shifterStack_.pop();this.sync();this.exitedShifter_=!0;break;case "exitShifterContent":if(0==this.shifterStack_.length)return!1;this.updateSel(this.shifter_.performAction(a,this.curSel_));this.shifter_=this.shifterStack_.pop()||this.shifter_;this.sync();this.exitedShifter_=!0;break;default:return this.shifter_.hasAction(a)?this.updateSel(this.shifter_.performAction(a,this.curSel_)):!1}return!0};cvox.NavigationManager.prototype.getGranularityMsg=function(){return this.shifter_.getGranularityMsg()};
-cvox.NavigationManager.prototype.makeMoreGranular=function(a){this.shifter_.makeMoreGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.makeLessGranular=function(a){this.shifter_.makeLessGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.setGranularity=function(a,b,c){!b&&0<this.shifterStack_.length||(this.shifter_=this.shifterStack_.shift()||this.shifter_,this.shifter_.setGranularity(a),this.persistGranularity_(c))};
-cvox.NavigationManager.prototype.getGranularity=function(){var a=this.shifterStack_[0]||this.shifter_;return a.getGranularity()};cvox.NavigationManager.prototype.ensureSubnavigating=function(){this.shifter_.isSubnavigating()||(this.shifter_.ensureSubnavigating(),this.sync())};cvox.NavigationManager.prototype.ensureNotSubnavigating=function(){this.shifter_.isSubnavigating()&&(this.shifter_.ensureNotSubnavigating(),this.sync())};
-cvox.NavigationManager.prototype.speakDescriptionArray=function(a,b,c,d){d&&a.every(function(a){a.personality||(a.personality=d)});this.navSpeaker_.speakDescriptionArray(a,b,c)};cvox.NavigationManager.prototype.updatePosition=function(a){var b=cvox.ChromeVox.position;b[document.location.href]=cvox.DomUtil.elementToPoint(a);JSON.stringify(b)};
-cvox.NavigationManager.prototype.finishNavCommand=function(a,b,c,d){if(this.pageEnd_&&!this.pageEndAnnounced_)this.pageEndAnnounced_=!0,cvox.ChromeVox.tts.stop(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),cvox.ChromeVox.verbosity===cvox.VERBOSITY_VERBOSE&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),this.isReversed()&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom")),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION));else{if(this.enteredShifter_||
-this.exitedShifter_)a=cvox.ChromeVox.msgs.getMsg("enter_content_say",[this.shifter_.getName()]);var e=cvox.ChromeVox.navigationManager.getDescription();(b=void 0===b?!0:b)&&this.setFocus();this.updateIndicator();b=c||cvox.AbstractTts.QUEUE_MODE_FLUSH;a&&(cvox.ChromeVox.tts.speak(a,b,cvox.AbstractTts.PERSONALITY_ANNOTATION),b=cvox.AbstractTts.QUEUE_MODE_QUEUE);this.speakDescriptionArray(e,b,d||null);this.getBraille().write();this.updatePosition(this.getCurrentNode())}};
-cvox.NavigationManager.prototype.navigate=function(a,b){this.pageEndAnnounced_=!1;if(this.pageEnd_)return this.pageEnd_=!1,this.syncToBeginning(a),!0;if(!this.resolve())return!1;this.ensureNotSubnavigating();void 0!==b&&(b!==this.getGranularity()||0<this.shifterStack_.length)&&(this.setGranularity(b,!0),this.sync());return this.next_(!a)};cvox.NavigationManager.prototype.subnavigate=function(){this.pageEndAnnounced_=!1;this.resolve()&&(this.ensureSubnavigating(),this.next_(!0))};
-cvox.NavigationManager.prototype.skip=function(){if(!this.keepReading_)return!1;cvox.ChromeVox.host.hasTtsCallback()&&(this.skipped_=!0,this.setReversed(!1),this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_FLUSH));return!0};cvox.NavigationManager.prototype.startReading=function(a){this.keepReading_=!0;cvox.ChromeVox.host.hasTtsCallback()?this.startCallbackReading_(a):this.startNonCallbackReading_(a);this.prevStickyState_=cvox.ChromeVox.isStickyOn};
-cvox.NavigationManager.prototype.stopReading=function(a){this.keepReading_=!1;this.navSpeaker_.stopReading=!0;a&&cvox.ChromeVox.tts.stop();void 0!=this.prevStickyState_&&(this.prevStickyState_=void 0)};cvox.NavigationManager.prototype.isReading=function(){return this.keepReading_};
-cvox.NavigationManager.prototype.startCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.finishNavCommand("",!0,a,goog.bind(function(){this.next_(!0)&&this.keepReading_&&this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_QUEUE)},this))});
-cvox.NavigationManager.prototype.startNonCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.keepReading_&&(cvox.ChromeVox.tts.isSpeaking()||(this.finishNavCommand("",!0,a,null),this.next_(!0)||(this.keepReading_=!1)),window.setTimeout(goog.bind(this.startNonCallbackReading_,this),1E3))});
-cvox.NavigationManager.prototype.getFullDescription=function(){return this.pageSel_?this.pageSel_.getFullDescription():[cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getAncestors(this.curSel_.start.node),!0,cvox.ChromeVox.verbosity)]};cvox.NavigationManager.prototype.setFocus=function(a){this.pageSel_||a&&this.curSel_.start.node.constructor==Text||cvox.Focuser.setFocus(this.curSel_.start.node)};cvox.NavigationManager.prototype.getCurrentNode=function(){return this.curSel_.absStart().node};
-cvox.NavigationManager.prototype.addInterframeListener_=function(){var a=this;cvox.Interframe.addListener(function(b){if("enterIframe"==b.command||"exitIframe"==b.command)cvox.ChromeVox.serializer.readFrom(b),a.keepReading_||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){window.focus();if(b.findNext){var c=b.findNext,d=cvox.DomPredicates[c],c=a.findNext(d,c,!0);if(d&&(!c||"IFRAME"==c.start.node.tagName))return}else if("exitIframe"==b.command)d=b.sourceId,d=a.iframeIdMap[d],c=b.reversed,
-d&&a.updateSel(cvox.CursorSelection.fromNode(d)),a.setReversed(c),a.sync(),a.navigate();else if(a.syncToBeginning(),!cvox.DomUtil.hasContent(document.body)){a.tryIframe_(null);return}a.finishNavCommand("",!0)})()})};cvox.NavigationManager.prototype.updateIndicator=function(){this.activeIndicator.syncToCursorSelection(this.curSel_)};cvox.NavigationManager.prototype.updateIndicatorIfChanged=function(){this.activeIndicator.updateIndicatorIfChanged()};
-cvox.NavigationManager.prototype.showOrHideIndicator=function(a){a||this.activeIndicator.removeFromDom()};cvox.NavigationManager.prototype.collapseSelection=function(){this.curSel_.collapse()};cvox.NavigationManager.prototype.updateSelToArbitraryNode=function(a,b){a?(this.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0),this.updateSel(cvox.CursorSelection.fromNode(a)),b||this.sync()):this.syncToBeginning()};
-cvox.NavigationManager.prototype.updateSel=function(a,b){a&&(this.prevSel_=b||this.curSel_,this.curSel_=a);var c=this.getCurrentNode();this.navigationHistory_.update(c);return!!a};cvox.NavigationManager.prototype.setReversed=function(a){this.curSel_.setReversed(a)};cvox.NavigationManager.prototype.isReversed=function(){return this.curSel_.isReversed()};
-cvox.NavigationManager.prototype.tryBoundaries_=function(a,b){b=!!b&&!this.ignoreIframesNoMatterWhat_||!1;this.pageEnd_=!1;if(b&&this.tryIframe_(a&&a.start.node))return!0;if(a)return this.updateSel(a),!0;if(0<this.shifterStack_.length)return!0;this.syncToBeginning(!b);this.clearPageSel(!0);this.stopReading(!0);this.pageEnd_=!0;return!1};
-cvox.NavigationManager.prototype.tryIframe_=function(a){if(null==a&&cvox.Interframe.isIframe()){var b={command:"exitIframe",reversed:this.isReversed(),granularity:this.getGranularity()};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToParentWindow(b);return!0}if(null==a||"IFRAME"!=a.tagName||!a.src)return!1;var c=void 0;for(b in this.iframeIdMap)if(this.iframeIdMap[b]==a){c=b;break}void 0==c&&(c=this.nextIframeId,this.nextIframeId++,this.iframeIdMap[c]=a,cvox.Interframe.sendIdToIFrame(c,
-a));b={command:"enterIframe",id:c};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToIFrame(b,a);return!0};cvox.NavigationManager.prototype.syncToBeginning=function(a){var b=this.shifter_.begin(this.curSel_,{reversed:this.curSel_.isReversed()});!a&&this.tryIframe_(b&&b.start.node)||this.updateSel(b)};cvox.NavigationManager.prototype.ignoreIframesNoMatterWhat=function(){this.ignoreIframesNoMatterWhat_=!0};cvox.NavigationManager.prototype.saveSel=function(){this.saveSel_=this.curSel_};
-cvox.NavigationManager.prototype.restoreSel=function(){this.curSel_=this.saveSel_||this.curSel_};cvox.NavigationManager.prototype.persistGranularity_=function(a){(a=void 0===a?!1:a)&&this.getGranularity()};cvox.SearchWidget=function(){this.txtNode_=this.containerNode_=null;this.PROMPT_="Search:";this.hasMatch_=this.caseSensitive_=!1;cvox.Widget.call(this)};goog.inherits(cvox.SearchWidget,cvox.Widget);goog.addSingletonGetter(cvox.SearchWidget);
-cvox.SearchWidget.prototype.show=function(){cvox.SearchWidget.superClass_.show.call(this);this.active=!0;this.hasMatch_=!1;cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);cvox.ChromeVox.navigationManager.setReversed(!1);this.focusRecovery_=cvox.ChromeVox.navigationManager.getFocusRecovery();cvox.ChromeVox.navigationManager.setFocusRecovery(!1);var a=this.createContainerNode_();this.containerNode_=a;var b=this.createOverlayNode_();a.appendChild(b);
-var c=document.createElement("span");c.innerHTML=this.PROMPT_;b.appendChild(c);this.txtNode_=this.createTextAreaNode_();b.appendChild(this.txtNode_);document.body.appendChild(a);this.txtNode_.focus();window.setTimeout(function(){a.style.opacity="1.0"},0)};
-cvox.SearchWidget.prototype.hide=function(a){if(this.isActive()){var b=this.containerNode_;b.style.opacity="0.0";window.setTimeout(function(){document.body.removeChild(b)},1E3);this.txtNode_=null;cvox.SearchWidget.containerNode=null;cvox.ChromeVox.navigationManager.setFocusRecovery(this.focusRecovery_);this.active=!1}cvox.$m("choice_widget_exited").andPause().andMessage(this.getNameMsg()).speakFlush();this.hasMatch_&&a||cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode);cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,
-cvox.ChromeVox.navigationManager))(!0);cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),cvox.AbstractTts.QUEUE_MODE_QUEUE,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=this.textFromCurrentDescription_();cvox.ChromeVox.braille.write(new cvox.NavBraille({text:a,startIndex:0,endIndex:0}));cvox.SearchWidget.superClass_.hide.call(this,!0)};cvox.SearchWidget.prototype.getNameMsg=function(){return["search_widget_intro"]};
-cvox.SearchWidget.prototype.getHelpMsg=function(){return"search_widget_intro_help"};
-cvox.SearchWidget.prototype.onKeyDown=function(a){if(!this.isActive())return!1;var b=this.txtNode_.value;if(8==a.keyCode)0<b.length?(b=b.substring(0,b.length-1),this.txtNode_.value=b,this.beginSearch_(b)):(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode),cvox.ChromeVox.navigationManager.syncAll());else if(40==a.keyCode)this.next_(b,!1);else if(38==a.keyCode)this.next_(b,!0);else if(13==a.keyCode)this.hide(!0);else if(27==a.keyCode)this.hide(!1);else if(a.ctrlKey&&67==a.keyCode)this.toggleCaseSensitivity_();
-else return cvox.SearchWidget.superClass_.onKeyDown.call(this,a);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onKeyPress=function(a){if(!this.isActive())return!1;this.txtNode_.value+=String.fromCharCode(a.charCode);var b=this.txtNode_.value;this.beginSearch_(b);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onNavigate=function(){};cvox.SearchWidget.prototype.getPredicate=function(){return null};
-cvox.SearchWidget.prototype.nextResult=function(a){if(!this.isActive())return null;var b=this.txtNode_.value;return this.next_(b,a)};cvox.SearchWidget.prototype.createContainerNode_=function(){var a=document.createElement("div");a.id="cvox-search";a.style.position="fixed";a.style.top="50%";a.style.left="50%";a.style["-webkit-transition"]="all 0.3s ease-in";a.style.opacity="0.0";a.style["z-index"]="2147483647";a.setAttribute("aria-hidden","true");return a};
-cvox.SearchWidget.prototype.createOverlayNode_=function(){var a=document.createElement("div");a.style.position="relative";a.style.left="-50%";a.style.top="-40px";a.style["line-height"]="1.2em";a.style["font-size"]="20px";a.style.padding="30px";a.style["min-width"]="150px";a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["border-radius"]="10px";return a};
-cvox.SearchWidget.prototype.createTextAreaNode_=function(){var a=document.createElement("textarea");a.setAttribute("aria-hidden","true");a.setAttribute("rows","1");a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["vertical-align"]="middle";a.addEventListener("textInput",this.handleSearchChanged_,!1);return a};
-cvox.SearchWidget.prototype.toggleCaseSensitivity_=function(){this.caseSensitive_?(cvox.SearchWidget.caseSensitive_=!1,cvox.ChromeVox.tts.speak("Ignoring case.",0,null)):(this.caseSensitive_=!0,cvox.ChromeVox.tts.speak("Case sensitive.",0,null))};
-cvox.SearchWidget.prototype.getNextResult_=function(a){var b=cvox.ChromeVox.navigationManager.isReversed();this.caseSensitive_||(a=a.toLowerCase());cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);do{if(this.getPredicate()){var c=this.getPredicate()(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()));if(!c)continue}for(var c=cvox.ChromeVox.navigationManager.getDescription(),d=0;d<c.length;d++){var e=this.caseSensitive_?c[d].text:
-c[d].text.toLowerCase(),f=e.indexOf(a);-1!=f&&e.length>a.length&&(c[d].text=cvox.DomUtil.collapseWhitespace(e.substring(0,f))+", "+a+", "+e.substring(f+a.length),c[d].text=cvox.DomUtil.collapseWhitespace(c[d].text));if(-1!=f)return c}cvox.ChromeVox.navigationManager.setReversed(b)}while(cvox.ChromeVox.navigationManager.navigate(!0,cvox.NavigationShifter.GRANULARITIES.OBJECT))};cvox.SearchWidget.prototype.beginSearch_=function(a){var b=this.getNextResult_(a);this.outputSearchResult_(b,a);this.onNavigate()};
-cvox.SearchWidget.prototype.next_=function(a,b){cvox.ChromeVox.navigationManager.setReversed(!!b);var c=!1;this.getPredicate()?(c=cvox.ChromeVox.navigationManager.findNext(this.getPredicate()),cvox.ChromeVox.navigationManager.setReversed(!!b),c||(cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),c=!0)):c=cvox.ChromeVox.navigationManager.navigate(!0);c=c?this.getNextResult_(a):null;this.outputSearchResult_(c,a);this.onNavigate();return c};
-cvox.SearchWidget.prototype.outputSearchResult_=function(a,b){cvox.ChromeVox.tts.stop();a?(this.hasMatch_=!0,cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,cvox.ChromeVox.navigationManager))(!0),cvox.ChromeVox.navigationManager.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("search_help_item"),cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION),
-this.outputSearchResultToBraille_(b)):(cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),this.hasMatch_=!1)};
-cvox.SearchWidget.prototype.outputSearchResultToBraille_=function(a){if(cvox.ChromeVox.braille){var b=this.textFromCurrentDescription_(),c=this.caseSensitive_?b:b.toLowerCase();a=this.caseSensitive_?a:a.toLowerCase();c=c.indexOf(a);if(-1==c)console.log("Search string not in result when preparing for Braille.");else{var d=b.length,b=cvox.ChromeVox.msgs.getMsg("mark_as_search_result_brl",[b]),e=b.length,c=c+(e-d);cvox.ChromeVox.braille.write(new cvox.NavBraille({text:b,startIndex:c+a.length,endIndex:c+
-a.length}))}}};cvox.SearchWidget.prototype.textFromCurrentDescription_=function(){for(var a=cvox.ChromeVox.navigationManager.getDescription(),b="",c=0;c<a.length;c++)b+=a[c].text+" ";return b};cvox.SearchWidget.prototype.handleSearchChanged_=function(a){a=a.target.value+a.data;cvox.SearchWidget.prototype.beginSearch_(a)};cvox.OverlayWidget=function(a){cvox.SearchWidget.call(this);this.snippet_=a};goog.inherits(cvox.OverlayWidget,cvox.SearchWidget);
-cvox.OverlayWidget.prototype.show=function(){cvox.OverlayWidget.superClass_.show.call(this);var a=document.createElement("DIV");a.innerHTML=this.snippet_;var b=cvox.DomUtil.elementToPoint(cvox.ChromeVox.navigationManager.getCurrentNode());a.style.position="absolute";a.style.left=b.x;a.style.top=b.y;document.body.appendChild(a);cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a);this.host_=a};cvox.OverlayWidget.prototype.hide=function(){this.host_.remove();cvox.OverlayWidget.superClass_.hide.call(this)};
-cvox.OverlayWidget.prototype.onKeyDown=function(a){cvox.OverlayWidget.superClass_.onKeyDown.call(this,a);if(13==a.keyCode||27==a.keyCode)return!0;a=cvox.ChromeVox.navigationManager.isReversed();cvox.DomUtil.isDescendantOfNode(cvox.ChromeVox.navigationManager.getCurrentNode(),this.host_)||(a?cvox.ChromeVox.navigationManager.syncToBeginning():cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.host_),this.onNavigate(),cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),
-0,null))};cvox.KeyboardHelpWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");var a=cvox.ChromeVoxKbHandler.handlerKeyMap;a.bindings().forEach(goog.bind(function(a){var c=a.command;a=a.sequence;var d=c;try{var e=cvox.CommandStore.messageForCommand(c);if(!e)return;d=cvox.ChromeVox.msgs.getMsg(e)}catch(f){}e=document.createElement("p");e.id=c;e.setAttribute("role","menuitem");e.textContent=d+" - "+cvox.KeyUtil.keySequenceToString(a,!0);this.container_.appendChild(e)},
-this))};goog.inherits(cvox.KeyboardHelpWidget,cvox.OverlayWidget);goog.addSingletonGetter(cvox.KeyboardHelpWidget);cvox.KeyboardHelpWidget.prototype.show=function(){cvox.KeyboardHelpWidget.superClass_.show.call(this);this.host_.appendChild(this.container_)};cvox.KeyboardHelpWidget.prototype.getNameMsg=function(){return["keyboard_help_intro"]};
-cvox.KeyboardHelpWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;this.hide();cvox.ChromeVoxEventSuspender.withSuspendedEvents(cvox.ChromeVoxUserCommands.commands[b])();a.preventDefault();a.stopPropagation();return!0}return cvox.KeyboardHelpWidget.superClass_.onKeyDown.call(this,a)};goog.object={};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};
-goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};
-goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};
-goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return b in a?a[b]:c};goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};
-goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
-goog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};
-goog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};
-goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};cvox.UserEventDetail=function(a){this.command=this.category="";-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)&&(this.command=a.command,this.category=cvox.UserEventDetail.Category.JUMP);this.customCommand="";a.customCommand&&(this.customCommand=a.customCommand,this.category=cvox.UserEventDetail.Category.CUSTOM);this.status=cvox.UserEventDetail.Status.PENDING;switch(a.status){case cvox.UserEventDetail.Status.SUCCESS:this.status=cvox.UserEventDetail.Status.SUCCESS;break;case cvox.UserEventDetail.Status.FAILURE:this.status=
-cvox.UserEventDetail.Status.FAILURE}this.resultNode=null;a.resultNode&&cvox.DomUtil.isAttachedToDocument(a.resultNode)&&(this.resultNode=a.resultNode)};cvox.UserEventDetail.Category={JUMP:"ATJumpEvent",CUSTOM:"ATCustomEvent"};cvox.UserEventDetail.Status={PENDING:"PENDING",SUCCESS:"SUCCESS",FAILURE:"FAILURE"};cvox.UserEventDetail.JUMP_COMMANDS="nextCheckbox previousCheckbox nextRadio previousRadio nextSlider previousSlider nextGraphic previousGraphic nextButton previousButton nextComboBox previousComboBox nextEditText previousEditText nextHeading previousHeading nextHeading1 previousHeading1 nextHeading2 previousHeading2 nextHeading3 previousHeading3 nextHeading4 previousHeading4 nextHeading5 previousHeading5 nextHeading6 previousHeading6 nextLink previousLink nextMath previousMath nextTable previousTable nextList previousList nextListItem previousListItem nextFormField previousFormField nextLandmark previousLandmark nextSection previousSection nextControl previousControl".split(" ");
-cvox.UserEventDetail.prototype.createEventObject=function(){var a=document.createEvent("CustomEvent");a.initCustomEvent(this.category,!0,!0,this);return a};var extractMenuList_=function(a){for(;a!==document;){var b=a.getAttribute("contextMenuActions");if(b)return JSON.parse(b);a=a.parentNode}return null},getCurrentElement_=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;return a};
-cvox.ContextMenuWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");this.triggerElement_=getCurrentElement_();(this.menuList=extractMenuList_(this.triggerElement_))?this.menuList.forEach(goog.bind(function(a){if(a.desc||a.cmd){var b=a.desc;a=a.cmd;var c=document.createElement("p");c.id=a;c.textContent=b;c.setAttribute("role","menuitem");this.container_.appendChild(c)}},this)):console.log("No context menu found.")};goog.inherits(cvox.ContextMenuWidget,cvox.OverlayWidget);
-cvox.ContextMenuWidget.prototype.show=function(){this.menuList&&(cvox.ContextMenuWidget.superClass_.show.call(this),this.host_.appendChild(this.container_))};cvox.ContextMenuWidget.prototype.getNameMsg=function(){return["context_menu_intro"]};
-cvox.ContextMenuWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode(),b=b.parentNode.id,b=new cvox.UserEventDetail({customCommand:b}),b=b.createEventObject();this.triggerElement_.dispatchEvent(b);this.hide();a.preventDefault();a.stopPropagation();return!0}return cvox.ContextMenuWidget.superClass_.onKeyDown.call(this,a)};cvox.NodeSearchWidget=function(a,b){this.typeMsg_=a;this.predicate_=b;cvox.SearchWidget.call(this)};goog.inherits(cvox.NodeSearchWidget,cvox.SearchWidget);cvox.NodeSearchWidget.prototype.getNameMsg=function(){return["choice_widget_name",[cvox.ChromeVox.msgs.getMsg(this.typeMsg_)]]};cvox.NodeSearchWidget.prototype.getHelpMsg=function(){return"choice_widget_help"};cvox.NodeSearchWidget.prototype.getPredicate=function(){return this.predicate_};
-cvox.NodeSearchWidget.create=function(a,b){return new cvox.NodeSearchWidget(a,b)};cvox.SelectWidget=function(a){cvox.OverlayWidget.call(this,"");this.selectNode_=a};goog.inherits(cvox.SelectWidget,cvox.OverlayWidget);
-cvox.SelectWidget.prototype.show=function(){cvox.SelectWidget.superClass_.show.call(this);var a=document.createElement("div");a.setAttribute("role","menu");for(var b=0,c=null;c=this.selectNode_.options[b];b++){var d=document.createElement("p");d.innerHTML=c.innerHTML;d.id=b;d.setAttribute("role","menuitem");a.appendChild(d)}this.host_.appendChild(a);b=this.selectNode_.selectedIndex;"number"==typeof b&&cvox.ChromeVox.syncToNode(a.children[b],!0)};
-cvox.SelectWidget.prototype.hide=function(){var a=document.createEvent("Event");a.initEvent("change",!1,!1);this.selectNode_.dispatchEvent(a);cvox.SelectWidget.superClass_.hide.call(this,!0)};cvox.SelectWidget.prototype.onNavigate=function(){var a=this;cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;a.selectNode_.selectedIndex=b})()};cvox.SelectWidget.prototype.getNameMsg=function(){return["aria_role_menu"]};cvox.FocusUtil=function(){};cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE={hidden:!1,text:!0,search:!0,tel:!0,url:!0,email:!0,password:!0,datetime:!1,date:!1,month:!1,week:!1,time:!1,"datetime-local":!1,number:!1,range:!1,color:!1,checkbox:!1,radio:!1,file:!1,submit:!1,image:!1,reset:!1,button:!1};
-cvox.FocusUtil.isFocusInTextInputField=function(){var a=document.activeElement;return a?a.isContentEditable||"textbox"==a.getAttribute("role")?!0:"true"==a.getAttribute("readOnly")?!1:"TEXTAREA"===a.tagName||"SELECT"===a.tagName?!0:"INPUT"===a.tagName?a.hasAttribute("type")?(a=a.getAttribute("type").toLowerCase(),cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[a]):!0:!1:!1};cvox.SpokenListBuilder=function(){this.list_=[]};cvox.SpokenListBuilder.prototype.flush=function(a){this.list_.push([a,cvox.AbstractTts.QUEUE_MODE_FLUSH]);return this};cvox.SpokenListBuilder.prototype.build=function(){return this.list_};cvox.RunnerInterface=function(){};cvox.RunnerInterface.prototype.setFocus=function(){};cvox.AbstractTestCase=function(){};cvox.TestTts=function(){cvox.AbstractTts.call(this);this.utterances_=[]};goog.inherits(cvox.TestTts,cvox.AbstractTts);cvox.TestTts.prototype.sentinelText_="@@@STOP@@@";cvox.TestTts.prototype.speak=function(a,b,c){this.utterances_.push({text:a,queueMode:b});c&&void 0!=c.endCallback&&(a=this.utterances_.length,this.utterances_[a-1].text!=this.sentinelText_&&c.endCallback())};cvox.HostFactory.ttsConstructor=cvox.TestTts;cvox.AutoRunner=function(){new cvox.TestTts};cvox.AutoRunner.TestSummary=function(a,b,c,d){this.tag=a;this.status=c;this.scope=d};cvox.AutoRunner.PASS="pass";cvox.AutoRunner.FAIL="fail";cvox.AutoRunner.prototype.setFocus=function(a){document.getElementById(a).focus();return this};cvox.ChromeVoxUserCommands={};cvox.ChromeVoxUserCommands.init_=function(){if(!cvox.ChromeVoxUserCommands.commands){cvox.ChromeVoxUserCommands.commands={};for(var a in cvox.CommandStore.CMD_WHITELIST)cvox.ChromeVoxUserCommands.commands[a]=cvox.ChromeVoxUserCommands.createCommand_(a)}};cvox.ChromeVoxUserCommands.wasMouseClicked=!1;cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage=!0;
-cvox.ChromeVoxUserCommands.handleTabAction_=function(){cvox.ChromeVox.tts.stop();if(!cvox.ChromeVox.navigationManager.resolve(cvox.DomUtil.isFocusable))return cvox.ChromeVox.navigationManager.setFocus(),!1;var a=cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_();if(a)return!0;var b=a=null,b=window.getSelection();cvox.ChromeVoxUserCommands.wasMouseClicked?cvox.ChromeVoxUserCommands.wasMouseClicked=!1:b=null;null==b||null==b.anchorNode||null==b.focusNode?(a=cvox.ChromeVox.navigationManager.getCurrentNode(),
-b=cvox.ChromeVox.navigationManager.getCurrentNode()):(a=b.anchorNode,b=b.focusNode);if(null==a||null==b)return!0;if(cvox.DomUtil.isFocusable(a))return a.focus(),!0;if(cvox.DomUtil.isFocusable(b))return b.focus(),!0;if(cvox.DomUtil.isFocusable(a.parentNode))return a.parentNode.focus(),!0;if(cvox.DomUtil.isFocusable(b.parentNode))return b.parentNode.focus(),!0;b=cvox.ChromeVoxUserCommands.createTabDummySpan_();a.parentNode.insertBefore(b,a);b.focus();return!0};
-cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_=function(){var a="A";return document.activeElement.tagName==a||cvox.DomUtil.isControl(document.activeElement)?!0:!1};cvox.ChromeVoxUserCommands.removeTabDummySpan=function(){var a=document.getElementById("ChromeVoxTabDummySpan");a&&document.activeElement!=a&&a.parentNode.removeChild(a)};cvox.ChromeVoxUserCommands.createTabDummySpan_=function(){var a=document.createElement("span");a.id="ChromeVoxTabDummySpan";a.tabIndex=-1;return a};
-cvox.ChromeVoxUserCommands.createCommand_=function(a){return goog.bind(function(b){b=cvox.ChromeVoxUserCommands.lookupCommand_(a,b);return cvox.ChromeVoxUserCommands.dispatchCommand_(b)},cvox.ChromeVoxUserCommands)};
-cvox.ChromeVoxUserCommands.dispatchCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField())return!0;if(cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage&&-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)){a=new cvox.UserEventDetail({command:a.command});a=a.createEventObject();var b=cvox.ChromeVox.navigationManager.getCurrentNode();b||(b=document.body);b.dispatchEvent(a);return!1}return cvox.ChromeVoxUserCommands.doCommand_(a)};
-cvox.ChromeVoxUserCommands.doCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField()||a.disallowOOBE&&document.URL.match(/^chrome:\/\/oobe/i))return!0;var b=a.command;a.allowEvents||cvox.ChromeVoxEventSuspender.enterSuspendEvents();a.disallowContinuation&&cvox.ChromeVox.navigationManager.stopReading(!0);a.forward?cvox.ChromeVox.navigationManager.setReversed(!1):a.backward&&cvox.ChromeVox.navigationManager.setReversed(!0);
-a.findNext&&(b="find",a.announce=!0);var c="",d="",e=!1;switch(b){case "handleTab":case "handleTabPrev":e=cvox.ChromeVoxUserCommands.handleTabAction_();break;case "forward":case "backward":e=!cvox.ChromeVox.navigationManager.navigate();break;case "right":case "left":cvox.ChromeVox.navigationManager.subnavigate();break;case "find":if(!a.findNext)throw"Invalid find command.";var f=cvox.CommandStore.NODE_INFO_MAP[a.findNext],g=f.predicate,h=cvox.DomPredicates[g],k="",l="";a.forward?(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),
-k=cvox.ChromeVox.msgs.getMsg(f.forwardError)):a.backward&&(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom"),k=cvox.ChromeVox.msgs.getMsg(f.backwardError));var f=null,m=a.status||cvox.UserEventDetail.Status.PENDING,p=a.resultNode||null;switch(m){case cvox.UserEventDetail.Status.SUCCESS:p&&cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(p,!0);break;case cvox.UserEventDetail.Status.FAILURE:d=k;break;default:f=cvox.ChromeVox.navigationManager.findNext(h,g),f||(cvox.ChromeVox.navigationManager.saveSel(),
-d=l,cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),f=cvox.ChromeVox.navigationManager.findNext(h,g,!0),f||(d=k,cvox.ChromeVox.navigationManager.restoreSel()))}f&&"IFRAME"==f.start.node.tagName&&(a.announce=!1);break;case "previousGranularity":cvox.ChromeVox.navigationManager.makeLessGranular(!0);d=cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "nextGranularity":cvox.ChromeVox.navigationManager.makeMoreGranular(!0);d=
-cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "previousCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "nextCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "previousWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);break;case "nextWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);
-break;case "previousSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "nextSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "previousLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "nextLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "previousObject":cvox.ChromeVox.navigationManager.navigate(!1,
-cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "nextObject":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "previousGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "nextGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "previousRow":case "previousCol":b="previousRow"==b?"nextRow":"nextCol";case "nextRow":case "nextCol":cvox.ChromeVox.navigationManager.performAction("enterShifterSilently");
-cvox.ChromeVox.navigationManager.performAction(b);break;case "moveToStartOfLine":case "moveToEndOfLine":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.LINE);cvox.ChromeVox.navigationManager.sync();cvox.ChromeVox.navigationManager.collapseSelection();break;case "readFromHere":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!0);cvox.ChromeVox.navigationManager.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH);break;case "cycleTypingEcho":break;
-case "jumpToTop":case cvox.BrailleKeyCommand.TOP:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "jumpToBottom":case cvox.BrailleKeyCommand.BOTTOM:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "stopSpeech":cvox.ChromeVox.navigationManager.stopReading(!0);break;case "toggleKeyboardHelp":cvox.KeyboardHelpWidget.getInstance().toggle();break;case "help":cvox.ChromeVox.tts.stop();break;case "contextMenu":g=cvox.ChromeVox.navigationManager.getCurrentNode();"SELECT"!=g.tagName||
-g.multiple?(g=new cvox.ContextMenuWidget,g.toggle()):(new cvox.SelectWidget(g)).show();break;case "showBookmarkManager":break;case "showOptionsPage":cvox.ChromeVox.tts.stop();break;case "showKbExplorerPage":cvox.ChromeVox.tts.stop();break;case "readLinkURL":g=document.activeElement;h=window.getSelection().anchorNode;k="";"A"==g.tagName?k=cvox.DomUtil.getLinkURL(g):h&&(k=cvox.DomUtil.getLinkURL(h.parentNode));""!=k?cvox.ChromeVox.tts.speak(k):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_url_found"));
-break;case "readCurrentTitle":cvox.ChromeVox.tts.speak(document.title);break;case "readCurrentURL":cvox.ChromeVox.tts.speak(document.URL);break;case "performDefaultAction":cvox.DomPredicates.linkPredicate([document.activeElement])&&(a.announce=!0,cvox.DomUtil.isInternalLink(document.activeElement)&&(cvox.DomUtil.syncInternalLink(document.activeElement),cvox.ChromeVox.navigationManager.sync()));break;case "forceClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();
-cvox.DomUtil.clickElem(g,!1,!1);break;case "forceDoubleClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_double_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.clickElem(g,!1,!1,!0);break;case "toggleChromeVox":break;case "fullyDescribe":g=cvox.ChromeVox.navigationManager.getFullDescription();cvox.ChromeVox.navigationManager.speakDescriptionArray(g,cvox.AbstractTts.QUEUE_MODE_FLUSH,null);break;case "speakTimeAndDate":g=new Date;cvox.ChromeVox.tts.speak(g.toLocaleTimeString()+
-", "+g.toLocaleDateString());break;case "toggleSelection":d=cvox.ChromeVox.navigationManager.togglePageSel();d=cvox.ChromeVox.msgs.getMsg(d?"begin_selection":"end_selection");break;case "startHistoryRecording":cvox.History.getInstance().startRecording();break;case "stopHistoryRecording":cvox.History.getInstance().stopRecording();break;case "enableConsoleTts":cvox.ConsoleTts.getInstance().setEnabled(!0);break;case "goToFirstCell":case "goToLastCell":case "goToRowFirstCell":case "goToRowLastCell":case "goToColFirstCell":case "goToColLastCell":case "announceHeaders":case "speakTableLocation":case "exitShifterContent":cvox.DomPredicates.tablePredicate(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()))&&
-cvox.ChromeVox.navigationManager.performAction(b)||(c="not_inside_table");break;case "enterShifter":case "exitShifter":cvox.ChromeVox.navigationManager.performAction(b);break;case "decreaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!1);break;case "increaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!0);break;case "decreaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,!1);break;case "increaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,
-!0);break;case "decreaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!1);break;case "increaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!0);break;case "cyclePunctuationEcho":break;case "toggleStickyMode":break;case "toggleKeyPrefix":cvox.ChromeVox.keyPrefixOn=!cvox.ChromeVox.keyPrefixOn;break;case "toggleSearchWidget":cvox.SearchWidget.getInstance().toggle();break;case "toggleEarcons":d=cvox.ChromeVox.earcons.toggle()?cvox.ChromeVox.msgs.getMsg("earcons_on"):
-cvox.ChromeVox.msgs.getMsg("earcons_off");break;case "showHeadingsList":case "showLinksList":case "showFormsList":case "showTablesList":case "showLandmarksList":if(!a.nodeList)break;g=cvox.CommandStore.NODE_INFO_MAP[a.nodeList];cvox.NodeSearchWidget.create(g.typeMsg,cvox.DomPredicates[g.predicate]).show();break;case "openLongDesc":g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.hasLongDesc(g)||cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_long_desc"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION);break;case "pauseAllMedia":k=document.getElementsByTagName("VIDEO");for(g=0;h=k[g];g++)h.pause();k=document.getElementsByTagName("AUDIO");for(g=0;h=k[g];g++)h.pause();break;case "toggleSemantics":cvox.TraverseMath.toggleSemantic()?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_on")):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_off"));break;case cvox.BrailleKeyCommand.ROUTING:g=cvox.ChromeVox.navigationManager.getBraille();
-g=g.text.getSpans(a.displayPosition||0);g=g.filter(function(a){return a instanceof Node})[0];cvox.DomUtil.clickElem(g||cvox.ChromeVox.navigationManager.getCurrentNode(),!1,!0);break;case cvox.BrailleKeyCommand.PAN_LEFT:case cvox.BrailleKeyCommand.LINE_UP:case cvox.BrailleKeyCommand.PAN_RIGHT:case cvox.BrailleKeyCommand.LINE_DOWN:cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "debug":break;case "nop":break;default:throw"Command behavior not defined: "+
-b;}""!=c?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(c),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION):cvox.ChromeVox.navigationManager.isReading()?a.disallowContinuation?cvox.ChromeVox.navigationManager.stopReading(!0):"readFromHere"!=b&&cvox.ChromeVox.navigationManager.skip():a.announce&&cvox.ChromeVox.navigationManager.finishNavCommand(d);a.allowEvents||cvox.ChromeVoxEventSuspender.exitSuspendEvents();return!!a.doDefault||e};
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent=function(a){a=new cvox.UserEventDetail(a.detail);a.command&&cvox.ChromeVoxUserCommands.doCommand_(cvox.ChromeVoxUserCommands.lookupCommand_(a.command,a))};cvox.ChromeVoxUserCommands.lookupCommand_=function(a,b){var c=cvox.CommandStore.CMD_WHITELIST[a];if(!c)throw"Invalid command: "+a;c=goog.object.clone(c);c.command=a;b&&goog.object.extend(c,b);return c};cvox.ChromeVoxUserCommands.init_();cvox.ChromeVoxKbHandler={};cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable=function(a){window.JSON&&(cvox.ChromeVoxKbHandler.handlerKeyMap=cvox.KeyMap.fromJSON(a))};cvox.ChromeVoxKbHandler.sortKeyToFunctionsTable_=function(a){function b(a,b){return a[0].length<b[0].length?-1:b[0].length<a[0].length?1:a[0].localeCompare(b[0])}var c=[],d;for(d in a)c.push([d,a[d]]);c.sort(b);return c};
-cvox.ChromeVoxKbHandler.basicKeyDownActionsListener=function(a){var b=cvox.KeyUtil.keyEventToKeySequence(a);a=void 0!=cvox.ChromeVoxKbHandler.handlerKeyMap?cvox.ChromeVoxKbHandler.handlerKeyMap.commandForKey(b):null;if(!a)return!cvox.KeyUtil.sequencing;if(!cvox.ChromeVox.isActive&&"toggleChromeVox"!=a)return!0;var c=!0,d=cvox.ChromeVoxUserCommands.commands[a];d?(b=cvox.History.getInstance(),b.enterUserCommand(a),c=d(),b.exitUserCommand(a)):b.cvoxModifier&&(c=!1);cvox.ChromeVox.entireDocumentIsHidden&&
-(c=!0);return c};cvox.LiveRegions=function(){};cvox.LiveRegions.pageLoadTime=null;cvox.LiveRegions.INITIAL_SILENCE_MS=2E3;cvox.LiveRegions.lastAnnouncedMap={};cvox.LiveRegions.MAX_DISCARD_DUPS_MS=2E3;cvox.LiveRegions.lastAnnouncedTime=null;cvox.LiveRegions.nodesAlreadyHandled=[];
-cvox.LiveRegions.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.pageLoadTime=a;if(c||!document.hasFocus())return!1;var d=!1;a=cvox.AriaUtil.getLiveRegions(document.body);for(c=0;c<a.length;c++)cvox.LiveRegions.handleOneChangedNode(a[c],a[c],!1,!1,function(a,c){a||b!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);var g=new cvox.NavigationSpeaker;g.speakDescriptionArray(c,b,null);d=!0});cvox.Interframe.addListener(function(a){if("speakLiveRegion"==
-a.command)for(var b=document.getElementsByTagName("iframe"),c=0,d;d=b[c];c++)if(d.src==a.src){if(!cvox.DomUtil.isVisible(d))break;d=JSON.parse(a.content);for(var k=[],l=0,m;m=d[l];l++)k.push(new cvox.NavDescription(m));(new cvox.NavigationSpeaker).speakDescriptionArray(k,a.queueMode,null)}});return d};
-cvox.LiveRegions.processMutations=function(a,b){cvox.LiveRegions.nodesAlreadyHandled=[];a.forEach(function(a){if(!a.target.hasAttribute||!a.target.hasAttribute("cvoxIgnore")){if(a.addedNodes)for(var d=0;d<a.addedNodes.length;d++)a.addedNodes[d].hasAttribute&&a.addedNodes[d].hasAttribute("cvoxIgnore")||cvox.LiveRegions.handleOneChangedNode(a.addedNodes[d],a.target,!1,!0,b);if(a.removedNodes)for(d=0;d<a.removedNodes.length;d++)a.removedNodes[d].hasAttribute&&a.removedNodes[d].hasAttribute("cvoxIgnore")||
-cvox.LiveRegions.handleOneChangedNode(a.removedNodes[d],a.target,!0,!1,b);"characterData"==a.type&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!1,b);if("class"==a.attributeName||"style"==a.attributeName||"hidden"==a.attributeName){var e=a.attributeName,d=a.target,f=!cvox.DomUtil.isVisible(d),g=document.createElement("div");g.setAttribute("cvoxIgnore","1");g.setAttribute("class",d.getAttribute("class"));g.setAttribute("style",d.getAttribute("style"));g.setAttribute("hidden",d.getAttribute("hidden"));
-g.setAttribute(e,a.oldValue);e=!0;d.parentElement?(d.parentElement.appendChild(g),e=!cvox.DomUtil.isVisible(g),d.parentElement.removeChild(g)):e=!cvox.DomUtil.isVisible(g);!0===e&&!1===f?cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!0,b):!1===e&&!0===f&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!0,!1,b)}}});cvox.LiveRegions.nodesAlreadyHandled.length=0};
-cvox.LiveRegions.handleOneChangedNode=function(a,b,c,d,e){var f=c?b:a;f instanceof Element||(f=f.parentElement);for(;f&&!cvox.AriaUtil.getAriaLive(f);)f=f.parentElement;if(!f){if(d&&a!=document.body)for(a=cvox.AriaUtil.getLiveRegions(a),d=0;d<a.length;d++)cvox.LiveRegions.handleOneChangedNode(a[d],b,c,!1,e)}else if(!(0<=cvox.LiveRegions.nodesAlreadyHandled.indexOf(a)||(cvox.LiveRegions.nodesAlreadyHandled.push(a),cvox.AriaUtil.getAriaBusy(f)))){if(c){if(!cvox.AriaUtil.getAriaRelevant(f,"removals"))return}else if(!cvox.AriaUtil.getAriaRelevant(f,
-"additions"))return;cvox.LiveRegions.announceChange(a,f,c,e)}};
-cvox.LiveRegions.announceChange=function(a,b,c,d){var e=new Date-cvox.LiveRegions.pageLoadTime;if(!("alert"!=cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS)&&cvox.DomUtil.isVisible(b)){if(a!=b)for(var f=a.parentElement;f;){(cvox.AriaUtil.getAriaAtomic(f)||cvox.AriaUtil.isLeafElement(f)||cvox.AriaUtil.isControlWidget(f))&&!cvox.AriaUtil.isCompositeControl(f)&&(a=f);if(f==b)break;f=f.parentElement}a=cvox.LiveRegions.getNavDescriptionsRecursive(a);if(0!=a.length){c&&(a=[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),
-text:""})].concat(a));if("alert"==cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS){c="";for(e=0;e<a.length;e++)c+=a[e].text,c+=a[e].userValue;if(""==cvox.DomUtil.collapseWhitespace(c))return}c=new Date;for(var g in cvox.LiveRegions.lastAnnouncedMap)c-cvox.LiveRegions.lastAnnouncedMap[g]>cvox.LiveRegions.MAX_DISCARD_DUPS_MS&&delete cvox.LiveRegions.lastAnnouncedMap[g];g=a.reduce(function(a,b){return a+"|"+b.text},"");cvox.LiveRegions.lastAnnouncedMap[g]||(cvox.LiveRegions.lastAnnouncedMap[g]=
-c,b="assertive"==cvox.AriaUtil.getAriaLive(b),cvox.Interframe.isIframe()&&!document.hasFocus()?cvox.Interframe.sendMessageToParentWindow({command:"speakLiveRegion",content:JSON.stringify(a),queueMode:b?0:1,src:window.location.href}):d(b,a))}}};
-cvox.LiveRegions.getNavDescriptionsRecursive=function(a){return cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)?(a=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity),a.isEmpty()?[]:[a]):cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a)};cvox.LiveRegionsDeprecated=function(){};cvox.LiveRegionsDeprecated.trackedRegions=[];cvox.LiveRegionsDeprecated.previousRegionValue=[];cvox.LiveRegionsDeprecated.pageLoadTime=null;cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS=2E3;
-cvox.LiveRegionsDeprecated.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegionsDeprecated.pageLoadTime=a;a=!1;for(var d=cvox.AriaUtil.getLiveRegions(document.body),e=0;e<d.length;e++)cvox.LiveRegionsDeprecated.updateLiveRegion(d[e],b,c)&&(a=!0,b=cvox.AbstractTts.QUEUE_MODE_QUEUE);return a};
-cvox.LiveRegionsDeprecated.updateLiveRegion=function(a,b,c){if(cvox.AriaUtil.getAriaBusy(a)||!cvox.DomUtil.isVisible(a))return!1;var d=cvox.LiveRegionsDeprecated.trackedRegions.indexOf(a),e;0<=d?e=cvox.LiveRegionsDeprecated.previousRegionValue[d]:(d=cvox.LiveRegionsDeprecated.trackedRegions.length,e=[],cvox.LiveRegionsDeprecated.trackedRegions.push(a),cvox.LiveRegionsDeprecated.previousRegionValue.push([]));var f=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(a),g=new Date-cvox.LiveRegionsDeprecated.pageLoadTime;
-if("alert"!=cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS)return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1;if("alert"==cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS){for(var h="",g=0;g<f.length;g++)h+=f[g].text,h+=f[g].userValue;if(""==cvox.DomUtil.collapseWhitespace(h))return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1}for(var k={},g=0;g<e.length;g++)k[e[g].toString()]=!0;for(var l={},g=0;g<f.length;g++)l[f[g].toString()]=
-!0;h=[];if(cvox.AriaUtil.getAriaRelevant(a,"additions"))for(g=0;g<f.length;g++)k[f[g].toString()]||h.push(f[g]);k=[];if(cvox.AriaUtil.getAriaRelevant(a,"removals"))for(g=0;g<e.length;g++)l[e[g].toString()]||k.push(e[g]);e=[];e=0==h.length&&0<k.length?[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),text:""})].concat(k):h;cvox.LiveRegionsDeprecated.previousRegionValue[d]=f;if(c||0==e.length)return!1;a=cvox.AriaUtil.getAriaLive(a);"polite"==a&&(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);
-for(g=0;g<e.length;g++)e[g].speak(b),b=cvox.AbstractTts.QUEUE_MODE_QUEUE;return!0};
-cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue=function(a){if(cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)){var b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity);return b.isEmpty()?[]:[b]}var c=[],b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!1,cvox.ChromeVox.verbosity);b.isEmpty()||c.push(b);for(b=0;b<a.childNodes.length;b++){var d=a.childNodes[b];cvox.DomUtil.isVisible(d,{checkAncestors:!1})&&!cvox.AriaUtil.isHidden(d)&&(d=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(d),
-c=c.concat(d))}return c};cvox.ChromeVoxEventWatcherUtil={};cvox.ChromeVoxEventWatcher=function(){};cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_=50;cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_=10;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_=1E3;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_=3;cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_=5;cvox.ChromeVoxEventWatcher.shouldEchoKeys=!0;cvox.ChromeVoxEventWatcher.processing_=!1;
-cvox.ChromeVoxEventWatcher.init=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=null;cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=null;cvox.ChromeVoxEventWatcher.eventToEat=null;cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;cvox.ChromeVoxEventWatcher.lastKeypressTime=0;cvox.ChromeVoxEventWatcher.listeners_=
-[];cvox.ChromeVoxEventWatcher.mutationObserver_=null;cvox.ChromeVoxEventWatcher.focusFollowsMouse=!1;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=500;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.lastEventTime=0;cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.readyCallbacks_=[];cvox.ChromeVox.searchKeyHeld=!1;cvox.ChromeVoxEventWatcher.textMutationObserver_=null;cvox.ChromeVoxEventWatcher.addEventListeners_(a);
-cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=0;cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=0};cvox.ChromeVoxEventWatcher.storeOn=function(a){a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld};cvox.ChromeVoxEventWatcher.readFrom=function(a){cvox.ChromeVox.searchKeyHeld=a.searchKeyHeld};
-cvox.ChromeVoxEventWatcher.addEvent=function(a){if(!cvox.ChromeVox.isActive||document.webkitHidden)return!1;cvox.ChromeVoxEventWatcher.events_.push(a);cvox.ChromeVoxEventWatcher.lastEventTime=(new Date).getTime();-1==cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime&&(cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=(new Date).getTime());cvox.ChromeVoxEventWatcher.queueProcessingScheduled_||(cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!0,window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,
-cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_))};cvox.ChromeVoxEventWatcher.addReadyCallback=function(a){cvox.ChromeVoxEventWatcher.readyCallbacks_.push(a);cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()};cvox.ChromeVoxEventWatcher.hasPendingEvents_=function(){return-1!=cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime||cvox.ChromeVoxEventWatcher.queueProcessingScheduled_};cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;
-cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_=function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_||(cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!0,window.setTimeout(function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;!cvox.ChromeVoxEventWatcher.hasPendingEvents_()&&!cvox.ChromeVoxEventWatcher.queueProcessingScheduled_&&0<cvox.ChromeVoxEventWatcher.readyCallbacks_.length&&(cvox.ChromeVoxEventWatcher.readyCallbacks_.shift()(),cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_())},
-5))};
-cvox.ChromeVoxEventWatcher.addEventListeners_=function(a){cvox.ChromeVoxEventWatcher.addEventListener_(a,"keydown",cvox.ChromeVoxEventWatcher.keyDownEventWatcher,!0);if(cvox.ChromeVox.isActive&&!cvox.ChromeVox.entireDocumentIsHidden)if(cvox.ChromeVoxEventWatcher.addEventListener_(a,"keypress",cvox.ChromeVoxEventWatcher.keyPressEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"keyup",cvox.ChromeVoxEventWatcher.keyUpEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,cvox.UserEventDetail.Category.JUMP,
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent,!1),cvox.ChromeVoxEventWatcher.addEventListener_(a,"focus",cvox.ChromeVoxEventWatcher.focusEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"blur",cvox.ChromeVoxEventWatcher.blurEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"change",cvox.ChromeVoxEventWatcher.changeEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"copy",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"cut",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"paste",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"select",cvox.ChromeVoxEventWatcher.selectEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"webkitvisibilitychange",cvox.ChromeVoxEventWatcher.visibilityChangeWatcher,!0),cvox.ChromeVoxEventWatcher.events_=[],cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1,cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"mouseover",cvox.ChromeVoxEventWatcher.mouseOverEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"mouseout",cvox.ChromeVoxEventWatcher.mouseOutEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"click",cvox.ChromeVoxEventWatcher.mouseClickEventWatcher,!0),"undefined"!=typeof WebKitMutationObserver){cvox.ChromeVoxEventWatcher.mutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.mutationHandler);var b=null;a.documentElement?b=a.documentElement:a.document&&
-a.document.documentElement&&(b=a.document.documentElement);b&&cvox.ChromeVoxEventWatcher.mutationObserver_.observe(b,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!0,characterDataOldValue:!0})}else cvox.ChromeVoxEventWatcher.addEventListener_(a,"DOMSubtreeModified",cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher,!0)};
-cvox.ChromeVoxEventWatcher.cleanup=function(a){for(var b=0;b<cvox.ChromeVoxEventWatcher.listeners_.length;b++){var c=cvox.ChromeVoxEventWatcher.listeners_[b];a.removeEventListener(c.type,c.listener,c.useCapture)}cvox.ChromeVoxEventWatcher.listeners_=[];cvox.ChromeVoxEventWatcher.currentDateHandler&&cvox.ChromeVoxEventWatcher.currentDateHandler.shutdown();cvox.ChromeVoxEventWatcher.currentTimeHandler&&cvox.ChromeVoxEventWatcher.currentTimeHandler.shutdown();cvox.ChromeVoxEventWatcher.currentMediaHandler&&
-cvox.ChromeVoxEventWatcher.currentMediaHandler.shutdown();cvox.ChromeVoxEventWatcher.mutationObserver_&&cvox.ChromeVoxEventWatcher.mutationObserver_.disconnect();cvox.ChromeVoxEventWatcher.mutationObserver_=null};cvox.ChromeVoxEventWatcher.addEventListener_=function(a,b,c,d){cvox.ChromeVoxEventWatcher.listeners_.push({type:b,listener:c,useCapture:d});a.addEventListener(b,c,d)};cvox.ChromeVoxEventWatcher.getLastFocusedNode=function(){return cvox.ChromeVoxEventWatcher.lastFocusedNode};
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=a;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=a?cvox.DomUtil.getControlValueAndStateString(a):null};
-cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d);return!0})};
-cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.WML)&&!a.fromCvox&&cvox.ApiImplementation.syncToNode(a.target,!0);return cvox.ChromeVox.host.mustRedispatchClickEvent()&&!a.fromCvox?(cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),cvox.DomUtil.clickElem(a,!1,!0),!1):cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse||cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&
-"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVox.navigationManager.stopReading(!0);var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.ChromeVoxEventWatcher.announcedMouseOverNode=
-b}},cvox.ChromeVoxEventWatcher.mouseoverDelayMs);return!0};cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
-cvox.ChromeVoxEventWatcher.focusEventWatcher=function(a){cvox.ChromeVoxUserCommands.removeTabDummySpan();cvox.ChromeVoxEventSuspender.areEventsSuspended()?a.target&&a.target.nodeType==Node.ELEMENT_NODE&&cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a.target):cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.focusHandler=function(a){if(a.target&&a.target.hasAttribute&&"true"==a.target.getAttribute("aria-hidden")&&"true"!=a.target.getAttribute("chromevoxignoreariahidden"))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.setUpTextHandler();else if(a.target&&a.target!=window){var b=a.target,c=cvox.DomUtil.getSurroundingControl(b);if(c&&c==cvox.ChromeVoxEventWatcher.lastFocusedNode)cvox.ChromeVoxEventWatcher.handleControlChanged(b);else{c?cvox.ChromeVoxEventWatcher.setLastFocusedNode_(c):
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_(b);c=cvox.ChromeVoxEventWatcher.queueMode_();if(cvox.ChromeVoxEventWatcher.getInitialVisibility()||cvox.ChromeVoxEventWatcher.handleDialogFocus(b))c=cvox.AbstractTts.QUEUE_MODE_QUEUE;cvox.ChromeVox.navigationManager.clearPageSel(!0)&&(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ApiImplementation.syncToNode(b,!document.webkitHidden,c);if(a.target.constructor==HTMLVideoElement||a.target.constructor==HTMLAudioElement)cvox.ChromeVoxEventWatcher.setUpMediaHandler_();
-else{if(a.target.hasAttribute)switch(a=a.target.getAttribute("type"),a){case "time":cvox.ChromeVoxEventWatcher.setUpTimeHandler_();return;case "date":case "month":case "week":cvox.ChromeVoxEventWatcher.setUpDateHandler_();return}cvox.ChromeVoxEventWatcher.setUpTextHandler()}}}else cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null)};
-cvox.ChromeVoxEventWatcher.blurEventWatcher=function(a){window.setTimeout(function(){document.activeElement||(cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.addEvent(a))},0);return!0};
-cvox.ChromeVoxEventWatcher.keyDownEventWatcher=function(a){cvox.ChromeVox.isChromeOS&&91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!0);a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld&&cvox.ChromeVox.isActive;a.stickyMode=cvox.ChromeVox.isStickyOn&&cvox.ChromeVox.isActive;a.keyPrefix=cvox.ChromeVox.keyPrefixOn&&cvox.ChromeVox.isActive;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVoxEventWatcher.eventToEat=null;if(!cvox.ChromeVoxKbHandler.basicKeyDownActionsListener(a)||cvox.ChromeVoxEventWatcher.handleControlAction(a))return a.preventDefault(),
-a.stopPropagation(),cvox.ChromeVoxEventWatcher.eventToEat=a,!1;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.keyUpEventWatcher=function(a){91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!1);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.stopPropagation(),a.preventDefault(),!1):!0};
-cvox.ChromeVoxEventWatcher.keyPressEventWatcher=function(a){var b=document.location.href,c=cvox.TypingEcho.shouldSpeakChar(cvox.ChromeVox.typingEcho);"undefined"!==typeof cvox.ChromeVox.keyEcho[b]&&(c=cvox.ChromeVox.keyEcho[b]);cvox.ChromeVoxEditableTextBase.eventTypingEcho&&c&&cvox.DomPredicates.editTextPredicate([document.activeElement])&&"password"!==document.activeElement.type&&(b=(new Date).getTime(),150<b-cvox.ChromeVoxEventWatcher.lastKeypressTime&&cvox.ChromeVox.tts.stop(),cvox.ChromeVoxEventWatcher.lastKeypressTime=
-b,cvox.ChromeVox.tts.speak(String.fromCharCode(a.charCode),1,{relativeRate:2}));cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.preventDefault(),a.stopPropagation(),!1):!0};cvox.ChromeVoxEventWatcher.changeEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.clipboardEventWatcher=function(a){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(a.type).toLowerCase());var b="";switch(a.type){case "paste":b=a.clipboardData.getData("text");break;case "copy":case "cut":b=window.getSelection().toString()}cvox.ChromeVox.tts.speak(b,cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ChromeVox.navigationManager.clearPageSel();return!0};
-cvox.ChromeVoxEventWatcher.changeHandler=function(a){cvox.ChromeVoxEventWatcher.setUpTextHandler()||document.activeElement==a.target&&cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement)};cvox.ChromeVoxEventWatcher.selectEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher=function(a){if(!a||!a.target)return!0;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.visibilityChangeWatcher=function(){cvox.ChromeVoxEventWatcher.initialVisibility=!document.webkitHidden;document.webkitHidden&&cvox.ChromeVox.navigationManager.stopReading(!0)};cvox.ChromeVoxEventWatcher.getInitialVisibility=function(){var a=cvox.ChromeVoxEventWatcher.initialVisibility;cvox.ChromeVoxEventWatcher.initialVisibility=!1;return a};
-cvox.ChromeVoxEventWatcher.speakLiveRegion_=function(a,b){var c=cvox.ChromeVoxEventWatcher.queueMode_();a||c!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);var d=new cvox.NavigationSpeaker;d.speakDescriptionArray(b,c,null)};
-cvox.ChromeVoxEventWatcher.subtreeModifiedHandler=function(a){var b=(new Date).getTime();if(cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_+cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_>b){if(cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_++,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_>cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_)return}else cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=b,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=
-1;if(a&&a.target)for(a=a.target,a=cvox.AriaUtil.getLiveRegions(a),b=0;b<a.length&&b<cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_;b++)cvox.LiveRegionsDeprecated.updateLiveRegion(a[b],cvox.ChromeVoxEventWatcher.queueMode_(),!1)};
-cvox.ChromeVoxEventWatcher.setUpTextHandler=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);if(a!=cvox.ChromeVoxEventWatcher.currentTextControl){cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("click",
-cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.textMutationObserver_&&(cvox.ChromeVoxEventWatcher.textMutationObserver_.disconnect(),cvox.ChromeVoxEventWatcher.textMutationObserver_=null));cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;if(null==a)return!1;if(a.constructor==HTMLInputElement&&cvox.DomUtil.isInputTypeText(a)&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=
-new cvox.ChromeVoxEditableHTMLInput(a,cvox.ChromeVox.tts);else if(a.constructor==HTMLTextAreaElement&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableTextArea(a,cvox.ChromeVox.tts);else if(a.isContentEditable||"textbox"==a.getAttribute("role"))cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableContentEditable(a,cvox.ChromeVox.tts);
-cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("click",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),window.WebKitMutationObserver&&(cvox.ChromeVoxEventWatcher.textMutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.onTextMutation),cvox.ChromeVoxEventWatcher.textMutationObserver_.observe(cvox.ChromeVoxEventWatcher.currentTextControl,
-{childList:!0,attributes:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1})),cvox.ChromeVoxEventSuspender.areEventsSuspended()||cvox.ChromeVox.navigationManager.updateSel(cvox.CursorSelection.fromNode(cvox.ChromeVoxEventWatcher.currentTextControl)));return null!=cvox.ChromeVoxEventWatcher.currentTextHandler}};cvox.ChromeVoxEventWatcher.handleTextChanged=function(a){if(cvox.ChromeVoxEventWatcher.currentTextHandler){var b=cvox.ChromeVoxEventWatcher.currentTextHandler;b.update(a);return!0}return!1};
-cvox.ChromeVoxEventWatcher.onTextMutation=function(){cvox.ChromeVoxEventWatcher.currentTextHandler&&window.setTimeout(function(){cvox.ChromeVoxEventWatcher.handleTextChanged(!1)},cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_)};
-cvox.ChromeVoxEventWatcher.handleControlChanged=function(a){var b=cvox.DomUtil.getControlValueAndStateString(a),c=cvox.DomUtil.getSurroundingControl(a),d=!1;if(a!=cvox.ChromeVoxEventWatcher.lastFocusedNode&&(null==c||c!=cvox.ChromeVoxEventWatcher.lastFocusedNode))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a);else if(b==cvox.ChromeVoxEventWatcher.lastFocusedNodeValue)return;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=b;if(cvox.DomPredicates.checkboxPredicate([a])||cvox.DomPredicates.radioPredicate([a]))d=
-!0,a.checked?cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_ON):cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_OFF);"SELECT"==a.tagName&&(d=!0);if("INPUT"==a.tagName)switch(a.type){case "color":case "datetime":case "datetime-local":case "range":d=!0}a.hasAttribute&&a.hasAttribute("role")&&(d=!0);c&&c!=a&&document.activeElement==a?(cvox.ApiImplementation.syncToNode(a,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH),d=!1):cvox.AriaUtil.getActiveDescendant(a)&&(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(cvox.AriaUtil.getActiveDescendant(a),
-!0),d=!0);d&&!cvox.ChromeVoxEventSuspender.areEventsSuspended()&&(cvox.ChromeVox.tts.speak(b,cvox.ChromeVoxEventWatcher.queueMode_(),null),cvox.NavBraille.fromText(b).write())};
-cvox.ChromeVoxEventWatcher.handleControlAction=function(a){if(!cvox.ChromeVox.isActive)return!1;var b=a.target;if("SELECT"==b.tagName&&1>=b.size&&(13==a.keyCode||32==a.keyCode))return a.preventDefault(),a.stopPropagation(),!0;if("INPUT"==b.tagName&&"range"==b.type){var c=parseFloat(b.value),d;b.step&&0<b.step?d=b.step:b.min&&b.max?(d=b.max-b.min,d=2<d&&31>d?1:(b.max-b.min)/10):d=1;if(37==a.keyCode||38==a.keyCode)c-=d;else if(39==a.keyCode||40==a.keyCode)c+=d;b.max&&c>b.max&&(c=b.max);b.min&&c<b.min&&
-(c=b.min);b.value=c}return!1};
-cvox.ChromeVoxEventWatcher.handleDialogFocus=function(a){for(;a;){if(a.hasAttribute){var b=a.getAttribute("role");if("dialog"==b||"alertdialog"==b)break}a=a.parentElement}if(a==cvox.ChromeVox.navigationManager.currentDialog)return!1;if(cvox.ChromeVox.navigationManager.currentDialog&&!a){if(!cvox.DomUtil.isDescendantOfNode(document.activeElement,cvox.ChromeVox.navigationManager.currentDialog))return cvox.ChromeVox.navigationManager.currentDialog=null,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("exiting_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),!0}else if(a)return cvox.ChromeVox.navigationManager.currentDialog=a,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("entering_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a),b=new cvox.NavigationSpeaker,b.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,null),!0;return!1};
-cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess=function(a,b,c){a=c-a;b=c-b;return a<cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_&&b<cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_};cvox.ChromeVoxEventWatcher.queueMode_=function(){return cvox.ChromeVoxEventWatcher.processing_?cvox.AbstractTts.QUEUE_MODE_QUEUE:cvox.AbstractTts.QUEUE_MODE_FLUSH};
-cvox.ChromeVoxEventWatcher.processQueue_=function(){if(0!=cvox.ChromeVoxEventWatcher.events_.length){var a=cvox.ChromeVoxEventWatcher.events_,b=-1,c=0,d,e;for(e=0;d=a[e];e++)"focus"==d.type&&(b=e,c=d.timeStamp);cvox.ChromeVoxEventWatcher.events_=[];for(e=0;d=a[e];e++){var f=a[e-1]||{};!(e>=b||"LiveRegion"==d.type||"DOMSubtreeModified"==d.type)||"focus"==f.type&&"change"==d.type||cvox.ChromeVoxEventWatcher.events_.push(d)}cvox.ChromeVoxEventWatcher.events_.sort(function(a,b){return"LiveRegion"!=b.type&&
-"LiveRegion"==a.type||"DOMSubtreeModified"!=b.type&&"DOMSubtreeModified"==a.type?1:-1});a=(new Date).getTime();if(0<=b&&cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess(c,cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime,a))window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_);else{for(e=0;d=cvox.ChromeVoxEventWatcher.events_[e];e++)cvox.ChromeVoxEventWatcher.handleEvent_(d),cvox.ChromeVoxEventWatcher.processing_=!0;cvox.ChromeVoxEventWatcher.processing_=
-!1;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()}}};
-cvox.ChromeVoxEventWatcher.handleEvent_=function(a){switch(a.type){case "keydown":cvox.ChromeVoxEventWatcher.setUpTextHandler();if(cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.handleTextChanged(!0),(a=cvox.ChromeVoxEventWatcher.currentTextHandler)&&a.lastChangeDescribed))break;cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement);break;case "keypress":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "focus":cvox.ChromeVoxEventWatcher.focusHandler(a);
-break;case "blur":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "change":cvox.ChromeVoxEventWatcher.changeHandler(a);break;case "select":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "LiveRegion":cvox.ChromeVoxEventWatcher.speakLiveRegion_(a.assertive,a.navDescriptions);break;case "DOMSubtreeModified":cvox.ChromeVoxEventWatcher.subtreeModifiedHandler(a)}};
-cvox.ChromeVoxEventWatcher.setUpTimeHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentTimeHandler=a.constructor==HTMLInputElement&&a.type&&"time"==a.type?new cvox.ChromeVoxHTMLTimeWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentTimeHandler};
-cvox.ChromeVoxEventWatcher.setUpMediaHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentMediaHandler=a.constructor==HTMLVideoElement||a.constructor==HTMLAudioElement?new cvox.ChromeVoxHTMLMediaWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentMediaHandler};
-cvox.ChromeVoxEventWatcher.setUpDateHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentDateHandler=a.constructor!=HTMLInputElement||!a.type||"date"!=a.type&&"month"!=a.type&&"week"!=a.type?null:new cvox.ChromeVoxHTMLDateWidget(a,cvox.ChromeVox.tts);return null!=cvox.ChromeVoxEventWatcher.currentDateHandler};cvox.Serializer=function(){};cvox.Serializer.prototype.storeOn=function(a){cvox.ChromeVox.storeOn(a);cvox.ChromeVoxEventWatcher.storeOn(a)};cvox.Serializer.prototype.readFrom=function(a){cvox.ChromeVox.readFrom(a);cvox.ChromeVoxEventWatcher.readFrom(a)};cvox.InitGlobals=function(){};
-cvox.InitGlobals.initGlobals=function(){cvox.ChromeVox.host||(cvox.ChromeVox.host=cvox.HostFactory.getHost());cvox.ChromeVox.tts=(new cvox.CompositeTts).add(cvox.HostFactory.getTts()).add(cvox.History.getInstance()).add(cvox.ConsoleTts.getInstance());cvox.ChromeVox.braille||(cvox.ChromeVox.braille=cvox.HostFactory.getBraille());cvox.ChromeVox.mathJax=cvox.HostFactory.getMathJax();cvox.ChromeVox.earcons=cvox.HostFactory.getEarcons();cvox.ChromeVox.msgs=cvox.HostFactory.getMsgs();cvox.ChromeVox.isActive=
-!0;cvox.ChromeVox.navigationManager=new cvox.NavigationManager;cvox.ChromeVox.navigationManager.updateIndicator();cvox.ChromeVox.syncToNode=cvox.ApiImplementation.syncToNode;cvox.ChromeVox.speakNode=cvox.ApiImplementation.speakNode;cvox.ChromeVox.serializer=new cvox.Serializer;cvox.ChromeVox.host.init();cvox.ChromeVoxEventWatcher.init(window);cvox.ChromeVox.executeUserCommand=function(a){cvox.ChromeVoxUserCommands.commands[a]()};cvox.ChromeVox.host.onPageLoad()};cvox.ChromeVoxInit={};cvox.ChromeVox.initTimeout_=100;cvox.ChromeVox.recallInit_=function(a){window.console.log(a+" Will try again in "+cvox.ChromeVox.initTimeout_+"ms");window.setTimeout(cvox.ChromeVox.initDocument,cvox.ChromeVox.initTimeout_);cvox.ChromeVox.initTimeout_*=2};
-cvox.ChromeVox.initDocument=function(){document.body?(cvox.ChromeVox.host=cvox.HostFactory.getHost(),cvox.ChromeVox.host.ttsLoaded()?(window.console.log("Starting ChromeVox."),cvox.InitGlobals.initGlobals(),window.disableChromeVox=function(){cvox.ChromeVox.host.killChromeVox()}):cvox.ChromeVox.recallInit_("ChromeVox not starting; waiting for TTS. "+document.location.href+".")):cvox.ChromeVox.recallInit_("ChromeVox not starting on unloaded page: "+document.location.href+".")};
-cvox.ChromeVox.reinit=function(){cvox.ChromeVox.host.reinit();cvox.ChromeVox.initDocument()};cvox.AndroidBraille=function(){};goog.inherits(cvox.AndroidBraille,cvox.AbstractBraille);cvox.AndroidBraille.prototype.write=function(a){accessibility.braille&&accessibility.braille(JSON.stringify(a.toJson()))};cvox.HostFactory.brailleConstructor=cvox.AndroidBraille;cvox.AndroidEarcons=function(){cvox.AbstractEarcons.call(this);this.audioMap={}};goog.inherits(cvox.AndroidEarcons,cvox.AbstractEarcons);cvox.AndroidEarcons.BASE_URL="https://ssl.gstatic.com/accessibility/javascript/android/earcons/";
-cvox.AndroidEarcons.prototype.playEarcon=function(a){if(this.earconsAvailable()){cvox.AndroidEarcons.superClass_.playEarcon.call(this,a);this.currentAudio=this.audioMap[a];this.currentAudio||(this.currentAudio=new Audio(cvox.AndroidEarcons.BASE_URL+this.getEarconFilename(a)),this.audioMap[a]=this.currentAudio);try{this.currentAudio.currentTime=0}catch(b){}this.currentAudio.paused&&this.currentAudio.play()}};
-cvox.AndroidEarcons.prototype.earconsAvailable=function(){return-1==navigator.userAgent.indexOf("Chrome")?!1:!0};cvox.HostFactory.earconsConstructor=cvox.AndroidEarcons;"undefined"!=typeof goog&&goog.provide&&(cvox.Api={},cvox.Api.Math={});
-(function(){function a(){d&&(d.port1.close(),d.port2.close(),d=null);d=new MessageChannel;window.postMessage("cvox.PortSetup",[d.port2],"*");d.port1.onmessage=function(a){"cvox.Disconnect"==a.data&&(d=null);try{var b=JSON.parse(a.data);b.id&&g[b.id]&&(g[b.id](b),delete g[b.id])}catch(c){}}}function b(a,b){var c=f;f++;void 0===a.args&&(a.args=[]);a.args=[c].concat(a.args);g[c]=b;d.port1.postMessage(JSON.stringify(a))}function c(a,c){var d=null;c&&c.endCallback&&(d=c.endCallback);b(a,d)}var d,e=!1,
-f=1,g={};window.cvox||(window.cvox={});var h=window.cvox,k=null;"undefined"!=typeof h.ApiImplementation&&(k=h.ApiImplementation);h.Api=function(){};h.Api.internalEnable=function(){e=!0;k||a();var b=document.createEvent("UIEvents");b.initEvent("chromeVoxLoaded",!0,!1);document.dispatchEvent(b)};h.Api.internalDisable=function(){e=!1;d=null;var a=document.createEvent("UIEvents");a.initEvent("chromeVoxUnloaded",!0,!1);document.dispatchEvent(a)};h.Api.isChromeVoxActive=function(){return k?e:!!d};h.Api.speak=
-function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(a,b,d):(a={cmd:"speak",args:[a,b,d]},c(a,d)))};h.Api.speakNode=function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(h.DomUtil.getName(a),b,d):(a={cmd:"speakNodeRef",args:[h.ApiUtils.makeNodeReference(a),b,d]},c(a,d)))};h.Api.stop=function(){if(h.Api.isChromeVoxActive())if(k)k.stop();else{var a={cmd:"stop"};d.port1.postMessage(JSON.stringify(a))}};h.Api.playEarcon=function(a){h.Api.isChromeVoxActive()&&(k?k.playEarcon(a):(a={cmd:"playEarcon",args:[a]},
-d.port1.postMessage(JSON.stringify(a))))};h.Api.syncToNode=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)k.syncToNode(a,b);else{var c={cmd:"syncToNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getCurrentNode=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.navigationManager.getCurrentNode()):b({cmd:"getCurrentNode"},function(b){a(h.ApiUtils.getNodeFromRef(b.currentNode))}))};h.Api.setSpeechForNode=function(a,b){h.Api.isChromeVoxActive()&&
-a&&b&&a.setAttribute("cvoxnodedesc",JSON.stringify(b))};h.Api.click=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)h.DomUtil.clickElem(a,b,!0);else{var c={cmd:"clickNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getBuild=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.BuildInfo.build):b({cmd:"getBuild"},function(b){a(b.build)}))};h.Api.getVersion=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.version+""):b({cmd:"getVersion"},function(b){a(b.version)}))};
-h.Api.getCvoxModifierKeys=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.KeyUtil.cvoxModKeyCodes()):b({cmd:"getCvoxModKeys"},function(b){a(b.keyCodes)}))};h.Api.isKeyShortcut=function(a,c){if(c)if(h.Api.isChromeVoxActive()){var d=[37,39];if(!d.indexOf(a.keyCode)||a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)if(k){var e=h.KeyUtil.keyEventToKeySequence(a);c(h.ChromeVoxKbHandler.handlerKeyMap.hasKey(e))}else{var d={},f=["target","srcElement","currentTarget","view"];for(e in a)-1===f.indexOf(e)&&(d[e]=
-a[e]);e={cmd:"isKeyShortcut",args:[d]};b(e,function(a){c(a.isHandled)})}else c(!1)}else c(!1)};h.Api.setKeyEcho=function(a){h.Api.isChromeVoxActive()&&(k?k.setKeyEcho(a):(a={cmd:"setKeyEcho",args:[a]},d.port1.postMessage(JSON.stringify(a))))};h.Api.Math=function(){};h.Api.Math.defineRule=function(a,b,c,e,f){if(h.Api.isChromeVoxActive()){var g=Array.prototype.slice.call(arguments,4),g=[a,b,c,e].concat(g);k?k.Math.defineRule.apply(k.Math,g):(g={cmd:"Math.defineRule",args:g},d.port1.postMessage(JSON.stringify(g)))}};
-h.Api.internalEnable();h.NodeDescription=function(a,b,c,d){this.context=a?a:"";this.text=b?b:"";this.userValue=c?c:"";this.annotation=d?d:""}})();cvox.InitialSpeech={};window.INJECTED_AFTER_LOAD||(window.INJECTED_AFTER_LOAD=!1);
-cvox.InitialSpeech.speak=function(){var a=window.INJECTED_AFTER_LOAD;if(!cvox.ChromeVox.isActive||document.webkitHidden)a=!0;window.top==window&&document.title&&!a&&cvox.ChromeVox.tts.speak(document.title,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.init(new Date,cvox.AbstractTts.QUEUE_MODE_QUEUE,a);document.hasFocus()&&document.activeElement==document.body&&cvox.ChromeVox.navigationManager.syncToBeginning();if(cvox.ChromeVox.position[document.location.href]){var b=cvox.ChromeVox.position[document.location.href];
-cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(document.elementFromPoint(b.x,b.y))}document.hasFocus()&&(a||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){cvox.ChromeVox.navigationManager.finishNavCommand("",!0,cvox.AbstractTts.QUEUE_MODE_QUEUE)})())};cvox.AndroidKeyMap=function(){};
-cvox.AndroidKeyMap.getStringifiedKeyMap=function(){return cvox.ChromeVoxJSON.stringify({'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[17]}}':"stopSpeech",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[9]}}':"handleTab",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[9]}}':"handleTabPrev",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[38]}}':"backward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"forward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[37]}}':"previousGranularity",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[39]}}':"nextGranularity",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[13]}}':"forceClickOnCurrentItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"readFromHere",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[85]}}':"readLinkURL",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[75]}}':"fullyDescribe",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[189]}}':"decreaseTtsPitch",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[187]}}':"increaseTtsPitch",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[219]}}':"decreaseTtsRate",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[221]}}':"increaseTtsRate",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[81]}}':"cyclePunctuationLevel",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[49]}}':"nextHeading1",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[49]}}':"previousHeading1",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[50]}}':"nextHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[50]}}':"previousHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[51]}}':"nextHeading3",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[51]}}':"previousHeading3",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[52]}}':"nextHeading4",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[52]}}':"previousHeading4",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[53]}}':"nextHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[53]}}':"previousHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[54]}}':"nextHeading6",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[54]}}':"previousHeading6",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[67]}}':"nextComboBox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[67]}}':"previousComboBox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[69]}}':"nextEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[69]}}':"previousEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[70]}}':"nextFormField",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[70]}}':"previousFormField",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[71]}}':"nextGraphic",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[71]}}':"previousGraphic",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[72]}}':"nextHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[72]}}':"previousHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[73]}}':"nextListItem",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[73]}}':"previousListItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[76]}}':"nextLink",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[76]}}':"previousLink",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[79]}}':"nextList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[79]}}':"previousList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[82]}}':"nextRadio",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[82]}}':"previousRadio",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[84]}}':"nextTable",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[84]}}':"previousTable",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[66]}}':"nextButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[66]}}':"previousButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[88]}}':"nextCheckbox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[88]}}':"previousCheckbox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[186]}}':"nextLandmark",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[186]}}':"previousLandmark"})};cvox.MathSimpleStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathSimpleStore,cvox.MathStore);cvox.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d]){var f=c[d][e],g='self::text() = "'+b+'"';this.defineRule(a,d+"."+e,'[t] "'+f+'"',"self::text()",g)}};cvox.MathCompoundStore=function(){this.subStores_={}};goog.addSingletonGetter(cvox.MathCompoundStore);
-cvox.MathCompoundStore.prototype.defineRules=function(a,b,c){var d=new cvox.MathSimpleStore;d.defineRulesFromMappings(a,b,c);this.subStores_[b]=d};cvox.MathCompoundStore.prototype.addSymbolRules=function(a){var b=cvox.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.mappings)};cvox.MathCompoundStore.prototype.addFunctionRules=function(a){var b=a.names;a=a.mappings;for(var c=0,d;d=b[c];c++)this.defineRules(d,d,a)};
-cvox.MathCompoundStore.prototype.lookupRule=function(a,b){var c=this.subStores_[a.textContent];if(c)return c.lookupRule(a,b)};cvox.MathCompoundStore.prototype.lookupString=function(a,b){var c=document.createTextNode(a);return(c=this.lookupRule(c,b))?c.action.components.map(function(a){return a.content.slice(1,-1)}).join(" "):""};
-cvox.MathCompoundStore.prototype.getDynamicConstraintValues=function(){var a={},b;for(b in this.subStores_){var c=this.subStores_[b].getDynamicConstraintValues(),d;for(d in c){var e=a[d];a[d]=e?cvox.MathUtil.union(e,c[d]):c[d]}}return a};cvox.MathSimpleStore.parseUnicode_=function(a){var b=parseInt(a,16);if(65536>b)return String.fromCharCode(b);b-=65536;a=(b>>10)+55296;b=(b&1023)+56320;return String.fromCharCode(a,b)};cvox.AndroidMathMap=function(){this.store_=cvox.MathCompoundStore.getInstance();cvox.AndroidMathMap.FUNCTION_MAPPINGS_.forEach(goog.bind(this.store_.addFunctionRules,this.store_));cvox.AndroidMathMap.SYMBOL_MAPPINGS_.forEach(goog.bind(this.store_.addSymbolRules,this.store_));this.store_.getDynamicConstraintValues()};
-cvox.AndroidMathMap.prototype.evaluate=function(a,b,c){var d="";b=cvox.MathStore.createDynamicConstraint(b,c);d=this.store_.lookupString(a,b);return new cvox.NavDescription({text:d?d:a})};
-cvox.AndroidMathMap.SYMBOL_MAPPINGS_=[{category:"Po",mappings:{"default":{"default":"exclamation mark"}},key:"0021"},{category:"Po",mappings:{"default":{"default":"quotation mark"}},key:"0022"},{category:"Po",mappings:{"default":{"default":"number sign",alternative:"hash","short":"number"}},key:"0023"},{category:"Sc",mappings:{"default":{"default":"dollar sign","short":"dollar"}},key:"0024"},{category:"Po",mappings:{"default":{"default":"percent sign","short":"percent"}},key:"0025"},{category:"Po",
-mappings:{"default":{"default":"ampersand"}},key:"0026"},{category:"Po",mappings:{"default":{"default":"apostrophe",alternative:"apostrophe quote"}},key:"0027"},{category:"Po",mappings:{"default":{"default":"asterisk"}},key:"002A"},{category:"Sm",mappings:{"default":{"default":"plus sign","short":"plus"}},key:"002B"},{category:"Po",mappings:{"default":{"default":"comma"}},key:"002C"},{category:"Pd",mappings:{"default":{"default":"hyphen minus","short":"minus"}},key:"002D"},{category:"Po",mappings:{"default":{"default":"full stop",
-alternative:"period"}},key:"002E"},{category:"Po",mappings:{"default":{"default":"solidus",alternative:"slash"}},key:"002F"},{category:"Po",mappings:{"default":{"default":"colon"}},key:"003A"},{category:"Po",mappings:{"default":{"default":"semicolon"}},key:"003B"},{category:"Sm",mappings:{"default":{"default":"less than sign","short":"less than"}},key:"003C"},{category:"Sm",mappings:{"default":{"default":"equals sign","short":"equals"}},key:"003D"},{category:"Sm",mappings:{"default":{"default":"greater than sign",
-"short":"greater than"}},key:"003E"},{category:"Po",mappings:{"default":{"default":"question mark"}},key:"003F"},{category:"Po",mappings:{"default":{"default":"commercial at","short":"at"}},key:"0040"},{category:"Po",mappings:{"default":{"default":"reverse solidus",alternative:"backslash"}},key:"005C"},{category:"Sk",mappings:{"default":{"default":"circumflex accent",alternative:"spacing circumflex","short":"hat"}},key:"005E"},{category:"Pc",mappings:{"default":{"default":"low line",alternative:"spacing underscore"}},
-key:"005F"},{category:"Sk",mappings:{"default":{"default":"grave accent",alternative:"spacing grave","short":"grave"}},key:"0060"},{category:"Sm",mappings:{"default":{"default":"vertical line",alternative:"vertical bar"}},key:"007C"},{category:"Sm",mappings:{"default":{"default":"tilde"}},key:"007E"},{category:"Po",mappings:{"default":{"default":"inverted exclamation mark"}},key:"00A1"},{category:"Sc",mappings:{"default":{"default":"cent sign","short":"cent"}},key:"00A2"},{category:"Sc",mappings:{"default":{"default":"pound sign",
-"short":"pound"}},key:"00A3"},{category:"Sc",mappings:{"default":{"default":"currency sign","short":"currency"}},key:"00A4"},{category:"Sc",mappings:{"default":{"default":"yen sign","short":"yen"}},key:"00A5"},{category:"So",mappings:{"default":{"default":"broken bar",alternative:"broken vertical bar"}},key:"00A6"},{category:"Po",mappings:{"default":{"default":"section sign","short":"section"}},key:"00A7"},{category:"Sk",mappings:{"default":{"default":"diaeresis",alternative:"spacing diaeresis","short":"double dot"}},
-key:"00A8"},{category:"So",mappings:{"default":{"default":"copyright sign","short":"copyright"}},key:"00A9"},{category:"Lo",mappings:{"default":{"default":"feminine ordinal indicator"}},key:"00AA"},{category:"Pi",mappings:{"default":{"default":"left pointing double angle quotation mark",alternative:"left pointing guillemet"}},key:"00AB"},{category:"Sm",mappings:{"default":{"default":"not sign","short":"not"}},key:"00AC"},{category:"So",mappings:{"default":{"default":"registered sign",alternative:"registered trade mark sign",
-"short":"registered"}},key:"00AE"},{category:"Sk",mappings:{"default":{"default":"macron",alternative:"spacing macron"}},key:"00AF"},{category:"So",mappings:{"default":{"default":"degree sign","short":"degree"}},key:"00B0"},{category:"Sm",mappings:{"default":{"default":"plus minus sign",alternative:"plus or minus sign","short":"plus minus"}},key:"00B1"},{category:"Sk",mappings:{"default":{"default":"acute accent",alternative:"spacing acute","short":"acute"}},key:"00B4"},{category:"Ll",mappings:{"default":{"default":"micro sign",
-"short":"micro"}},key:"00B5"},{category:"Po",mappings:{"default":{"default":"pilcrow sign",alternative:"paragraph sign","short":"pilcrow"}},key:"00B6"},{category:"Po",mappings:{"default":{"default":"middle dot"}},key:"00B7"},{category:"Sk",mappings:{"default":{"default":"cedilla",alternative:"spacing cedilla"}},key:"00B8"},{category:"Lo",mappings:{"default":{"default":"masculine ordinal indicator"}},key:"00BA"},{category:"Pf",mappings:{"default":{"default":"right pointing double angle quotation mark",
-alternative:"right pointing guillemet"}},key:"00BB"},{category:"Po",mappings:{"default":{"default":"inverted question mark"}},key:"00BF"},{category:"Sm",mappings:{"default":{"default":"multiplication sign","short":"multiplication"}},key:"00D7"},{category:"Sm",mappings:{"default":{"default":"division sign","short":"division"}},key:"00F7"},{category:"Sk",mappings:{"default":{"default":"breve",alternative:"spacing breve"}},key:"02D8"},{category:"Sk",mappings:{"default":{"default":"dot above",alternative:"spacing dot above"}},
-key:"02D9"},{category:"Sk",mappings:{"default":{"default":"ring above",alternative:"spacing ring above"}},key:"02DA"},{category:"Sk",mappings:{"default":{"default":"ogonek",alternative:"spacing ogonek"}},key:"02DB"},{category:"Sk",mappings:{"default":{"default":"small tilde",alternative:"spacing tilde"}},key:"02DC"},{category:"Sk",mappings:{"default":{"default":"double acute accent",alternative:"spacing double acute"}},key:"02DD"},{category:"Pd",mappings:{"default":{"default":"hyphen"}},key:"2010"},
-{category:"Pd",mappings:{"default":{"default":"non breaking hyphen"}},key:"2011"},{category:"Pd",mappings:{"default":{"default":"figure dash"}},key:"2012"},{category:"Pd",mappings:{"default":{"default":"en dash"}},key:"2013"},{category:"Pd",mappings:{"default":{"default":"em dash"}},key:"2014"},{category:"Pd",mappings:{"default":{"default":"horizontal bar",alternative:"quotation dash"}},key:"2015"},{category:"Po",mappings:{"default":{"default":"double vertical line",alternative:"double vertical bar"}},
-key:"2016"},{category:"Po",mappings:{"default":{"default":"double low line",alternative:"spacing double underscore"}},key:"2017"},{category:"Pi",mappings:{"default":{"default":"left single quotation mark",alternative:"single turned comma quotation mark"}},key:"2018"},{category:"Pf",mappings:{"default":{"default":"right single quotation mark",alternative:"single comma quotation mark"}},key:"2019"},{category:"Ps",mappings:{"default":{"default":"single low 9 quotation mark",alternative:"low single comma quotation mark"}},
-key:"201A"},{category:"Pi",mappings:{"default":{"default":"single high reversed 9 quotation mark",alternative:"single reversed comma quotation mark"}},key:"201B"},{category:"Pi",mappings:{"default":{"default":"left double quotation mark",alternative:"double turned comma quotation mark"}},key:"201C"},{category:"Pf",mappings:{"default":{"default":"right double quotation mark",alternative:"double comma quotation mark"}},key:"201D"},{category:"Ps",mappings:{"default":{"default":"double low 9 quotation mark",
-alternative:"low double comma quotation mark"}},key:"201E"},{category:"Pi",mappings:{"default":{"default":"double high reversed 9 quotation mark",alternative:"double reversed comma quotation mark"}},key:"201F"},{category:"Po",mappings:{"default":{"default":"dagger"}},key:"2020"},{category:"Po",mappings:{"default":{"default":"double dagger"}},key:"2021"},{category:"Po",mappings:{"default":{"default":"bullet"}},key:"2022"},{category:"Po",mappings:{"default":{"default":"triangular bullet"}},key:"2023"},
-{category:"Po",mappings:{"default":{"default":"one dot leader"}},key:"2024"},{category:"Po",mappings:{"default":{"default":"two dot leader"}},key:"2025"},{category:"Po",mappings:{"default":{"default":"horizontal ellipsis"}},key:"2026"},{category:"Po",mappings:{"default":{"default":"hyphenation point"}},key:"2027"},{category:"Po",mappings:{"default":{"default":"per mille sign","short":"per mille"}},key:"2030"},{category:"Po",mappings:{"default":{"default":"per ten thousand sign","short":"per ten thousand"}},
-key:"2031"},{category:"Po",mappings:{"default":{"default":"prime"}},key:"2032"},{category:"Po",mappings:{"default":{"default":"double prime"}},key:"2033"},{category:"Po",mappings:{"default":{"default":"triple prime"}},key:"2034"},{category:"Po",mappings:{"default":{"default":"reversed prime"}},key:"2035"},{category:"Po",mappings:{"default":{"default":"reversed double prime"}},key:"2036"},{category:"Po",mappings:{"default":{"default":"reversed triple prime"}},key:"2037"},{category:"Po",mappings:{"default":{"default":"caret"}},
-key:"2038"},{category:"Pi",mappings:{"default":{"default":"single left pointing angle quotation mark",alternative:"left pointing single guillemet"}},key:"2039"},{category:"Pf",mappings:{"default":{"default":"single right pointing angle quotation mark",alternative:"right pointing single guillemet"}},key:"203A"},{category:"Po",mappings:{"default":{"default":"reference mark"}},key:"203B"},{category:"Po",mappings:{"default":{"default":"double exclamation mark"}},key:"203C"},{category:"Po",mappings:{"default":{"default":"interrobang"}},
-key:"203D"},{category:"Po",mappings:{"default":{"default":"overline",alternative:"spacing overscore"}},key:"203E"},{category:"Pc",mappings:{"default":{"default":"undertie"}},key:"203F"},{category:"Pc",mappings:{"default":{"default":"character tie"}},key:"2040"},{category:"Po",mappings:{"default":{"default":"caret insertion point"}},key:"2041"},{category:"Po",mappings:{"default":{"default":"asterism"}},key:"2042"},{category:"Po",mappings:{"default":{"default":"hyphen bullet"}},key:"2043"},{category:"Sm",
-mappings:{"default":{"default":"fraction slash"}},key:"2044"},{category:"Po",mappings:{"default":{"default":"double question mark"}},key:"2047"},{category:"Po",mappings:{"default":{"default":"question exclamation mark"}},key:"2048"},{category:"Po",mappings:{"default":{"default":"exclamation question mark"}},key:"2049"},{category:"Po",mappings:{"default":{"default":"reversed pilcrow sign","short":"reversed pilcrow"}},key:"204B"},{category:"Po",mappings:{"default":{"default":"black leftwards bullet"}},
-key:"204C"},{category:"Po",mappings:{"default":{"default":"black rightwards bullet"}},key:"204D"},{category:"Po",mappings:{"default":{"default":"low asterisk"}},key:"204E"},{category:"Po",mappings:{"default":{"default":"reversed semicolon"}},key:"204F"},{category:"Po",mappings:{"default":{"default":"close up"}},key:"2050"},{category:"Po",mappings:{"default":{"default":"two asterisks aligned vertically"}},key:"2051"},{category:"Sm",mappings:{"default":{"default":"commercial minus sign","short":"commercial minus"}},
-key:"2052"},{category:"Po",mappings:{"default":{"default":"swung dash"}},key:"2053"},{category:"Pc",mappings:{"default":{"default":"inverted undertie"}},key:"2054"},{category:"Po",mappings:{"default":{"default":"flower punctuation mark"}},key:"2055"},{category:"Po",mappings:{"default":{"default":"three dot punctuation"}},key:"2056"},{category:"Po",mappings:{"default":{"default":"quadruple prime"}},key:"2057"},{category:"Po",mappings:{"default":{"default":"four dot punctuation"}},key:"2058"},{category:"Po",
-mappings:{"default":{"default":"five dot punctuation"}},key:"2059"},{category:"Po",mappings:{"default":{"default":"two dot punctuation"}},key:"205A"},{category:"Po",mappings:{"default":{"default":"four dot mark"}},key:"205B"},{category:"Po",mappings:{"default":{"default":"dotted cross"}},key:"205C"},{category:"Po",mappings:{"default":{"default":"tricolon"}},key:"205D"},{category:"Po",mappings:{"default":{"default":"vertical four dots"}},key:"205E"},{category:"Sm",mappings:{"default":{"default":"superscript plus sign",
-"short":"superscript plus"}},key:"207A"},{category:"Sm",mappings:{"default":{"default":"superscript minus",alternative:"superscript hyphen minus"}},key:"207B"},{category:"Sm",mappings:{"default":{"default":"superscript equals sign","short":"superscript equals"}},key:"207C"},{category:"Ps",mappings:{"default":{"default":"superscript left parenthesis",alternative:"superscript opening parenthesis"}},key:"207D"},{category:"Pe",mappings:{"default":{"default":"superscript right parenthesis",alternative:"superscript closing parenthesis"}},
-key:"207E"},{category:"Sm",mappings:{"default":{"default":"subscript plus sign","short":"subscript plus"}},key:"208A"},{category:"Sm",mappings:{"default":{"default":"subscript minus",alternative:"subscript hyphen minus"}},key:"208B"},{category:"Sm",mappings:{"default":{"default":"subscript equals sign","short":"subscript equals"}},key:"208C"},{category:"Ps",mappings:{"default":{"default":"subscript left parenthesis",alternative:"subscript opening parenthesis"}},key:"208D"},{category:"Pe",mappings:{"default":{"default":"subscript right parenthesis",
-alternative:"subscript closing parenthesis"}},key:"208E"},{category:"So",mappings:{"default":{"default":"property line"}},key:"214A"},{category:"Sm",mappings:{"default":{"default":"turned ampersand"}},key:"214B"},{category:"So",mappings:{"default":{"default":"per sign","short":"per"}},key:"214C"},{category:"So",mappings:{"default":{"default":"aktieselskab"}},key:"214D"},{category:"Ll",mappings:{"default":{"default":"turned small f"}},key:"214E"},{category:"Sm",mappings:{"default":{"default":"for all"}},
-key:"2200"},{category:"Sm",mappings:{"default":{"default":"complement"}},key:"2201"},{category:"Sm",mappings:{"default":{"default":"partial differential"}},key:"2202"},{category:"Sm",mappings:{"default":{"default":"there exists"}},key:"2203"},{category:"Sm",mappings:{"default":{"default":"there does not exist"}},key:"2204"},{category:"Sm",mappings:{"default":{"default":"empty set"}},key:"2205"},{category:"Sm",mappings:{"default":{"default":"increment"}},key:"2206"},{category:"Sm",mappings:{"default":{"default":"nabla"}},
-key:"2207"},{category:"Sm",mappings:{"default":{"default":"element of"}},key:"2208"},{category:"Sm",mappings:{"default":{"default":"not an element of"}},key:"2209"},{category:"Sm",mappings:{"default":{"default":"small element of"}},key:"220A"},{category:"Sm",mappings:{"default":{"default":"contains as member"}},key:"220B"},{category:"Sm",mappings:{"default":{"default":"does not contain as member"}},key:"220C"},{category:"Sm",mappings:{"default":{"default":"small contains as member"}},key:"220D"},
-{category:"Sm",mappings:{"default":{"default":"end of proof"}},key:"220E"},{category:"Sm",mappings:{"default":{"default":"n ary product"}},key:"220F"},{category:"Sm",mappings:{"default":{"default":"n ary coproduct"}},key:"2210"},{category:"Sm",mappings:{"default":{"default":"n ary summation"}},key:"2211"},{category:"Sm",mappings:{"default":{"default":"minus sign","short":"minus"}},key:"2212"},{category:"Sm",mappings:{"default":{"default":"minus or plus sign","short":"minus or plus"}},key:"2213"},
-{category:"Sm",mappings:{"default":{"default":"dot plus"}},key:"2214"},{category:"Sm",mappings:{"default":{"default":"division slash"}},key:"2215"},{category:"Sm",mappings:{"default":{"default":"set minus"}},key:"2216"},{category:"Sm",mappings:{"default":{"default":"asterisk operator"}},key:"2217"},{category:"Sm",mappings:{"default":{"default":"ring operator"}},key:"2218"},{category:"Sm",mappings:{"default":{"default":"bullet operator"}},key:"2219"},{category:"Sm",mappings:{"default":{"default":"square root"}},
-key:"221A"},{category:"Sm",mappings:{"default":{"default":"cube root"}},key:"221B"},{category:"Sm",mappings:{"default":{"default":"fourth root"}},key:"221C"},{category:"Sm",mappings:{"default":{"default":"proportional to"}},key:"221D"},{category:"Sm",mappings:{"default":{"default":"infinity"}},key:"221E"},{category:"Sm",mappings:{"default":{"default":"right angle"}},key:"221F"},{category:"Sm",mappings:{"default":{"default":"angle"}},key:"2220"},{category:"Sm",mappings:{"default":{"default":"measured angle"}},
-key:"2221"},{category:"Sm",mappings:{"default":{"default":"spherical angle"}},key:"2222"},{category:"Sm",mappings:{"default":{"default":"divides","short":"bar"}},key:"2223"},{category:"Sm",mappings:{"default":{"default":"does not divide"}},key:"2224"},{category:"Sm",mappings:{"default":{"default":"parallel to"}},key:"2225"},{category:"Sm",mappings:{"default":{"default":"not parallel to"}},key:"2226"},{category:"Sm",mappings:{"default":{"default":"logical and"}},key:"2227"},{category:"Sm",mappings:{"default":{"default":"logical or"}},
-key:"2228"},{category:"Sm",mappings:{"default":{"default":"intersection"}},key:"2229"},{category:"Sm",mappings:{"default":{"default":"union"}},key:"222A"},{category:"Sm",mappings:{"default":{"default":"integral"}},key:"222B"},{category:"Sm",mappings:{"default":{"default":"double integral"}},key:"222C"},{category:"Sm",mappings:{"default":{"default":"triple integral"}},key:"222D"},{category:"Sm",mappings:{"default":{"default":"contour integral"}},key:"222E"},{category:"Sm",mappings:{"default":{"default":"surface integral"}},
-key:"222F"},{category:"Sm",mappings:{"default":{"default":"volume integral"}},key:"2230"},{category:"Sm",mappings:{"default":{"default":"clockwise integral"}},key:"2231"},{category:"Sm",mappings:{"default":{"default":"clockwise contour integral"}},key:"2232"},{category:"Sm",mappings:{"default":{"default":"anticlockwise contour integral"}},key:"2233"},{category:"Sm",mappings:{"default":{"default":"therefore"}},key:"2234"},{category:"Sm",mappings:{"default":{"default":"because"}},key:"2235"},{category:"Sm",
-mappings:{"default":{"default":"ratio"}},key:"2236"},{category:"Sm",mappings:{"default":{"default":"proportion"}},key:"2237"},{category:"Sm",mappings:{"default":{"default":"dot minus"}},key:"2238"},{category:"Sm",mappings:{"default":{"default":"excess"}},key:"2239"},{category:"Sm",mappings:{"default":{"default":"geometric proportion"}},key:"223A"},{category:"Sm",mappings:{"default":{"default":"homothetic"}},key:"223B"},{category:"Sm",mappings:{"default":{"default":"tilde operator"}},key:"223C"},{category:"Sm",
-mappings:{"default":{"default":"reversed tilde"}},key:"223D"},{category:"Sm",mappings:{"default":{"default":"inverted lazy s"}},key:"223E"},{category:"Sm",mappings:{"default":{"default":"sine wave"}},key:"223F"},{category:"Sm",mappings:{"default":{"default":"wreath product"}},key:"2240"},{category:"Sm",mappings:{"default":{"default":"not tilde"}},key:"2241"},{category:"Sm",mappings:{"default":{"default":"minus tilde"}},key:"2242"},{category:"Sm",mappings:{"default":{"default":"asymptotically equal to"}},
-key:"2243"},{category:"Sm",mappings:{"default":{"default":"not asymptotically equal to"}},key:"2244"},{category:"Sm",mappings:{"default":{"default":"approximately equal to"}},key:"2245"},{category:"Sm",mappings:{"default":{"default":"approximately but not actually equal to"}},key:"2246"},{category:"Sm",mappings:{"default":{"default":"neither approximately nor actually equal to"}},key:"2247"},{category:"Sm",mappings:{"default":{"default":"almost equal to"}},key:"2248"},{category:"Sm",mappings:{"default":{"default":"not almost equal to"}},
-key:"2249"},{category:"Sm",mappings:{"default":{"default":"almost equal or equal to"}},key:"224A"},{category:"Sm",mappings:{"default":{"default":"triple tilde"}},key:"224B"},{category:"Sm",mappings:{"default":{"default":"all equal to"}},key:"224C"},{category:"Sm",mappings:{"default":{"default":"equivalent to"}},key:"224D"},{category:"Sm",mappings:{"default":{"default":"geometrically equivalent to"}},key:"224E"},{category:"Sm",mappings:{"default":{"default":"difference between"}},key:"224F"},{category:"Sm",
-mappings:{"default":{"default":"approaches the limit"}},key:"2250"},{category:"Sm",mappings:{"default":{"default":"geometrically equal to"}},key:"2251"},{category:"Sm",mappings:{"default":{"default":"approximately equal to or the image of"}},key:"2252"},{category:"Sm",mappings:{"default":{"default":"image of or approximately equal to"}},key:"2253"},{category:"Sm",mappings:{"default":{"default":"colon equals",alternative:"colon equal"}},key:"2254"},{category:"Sm",mappings:{"default":{"default":"equals colon",
-alternative:"equal colon"}},key:"2255"},{category:"Sm",mappings:{"default":{"default":"ring in equal to"}},key:"2256"},{category:"Sm",mappings:{"default":{"default":"ring equal to"}},key:"2257"},{category:"Sm",mappings:{"default":{"default":"corresponds to"}},key:"2258"},{category:"Sm",mappings:{"default":{"default":"estimates"}},key:"2259"},{category:"Sm",mappings:{"default":{"default":"equiangular to"}},key:"225A"},{category:"Sm",mappings:{"default":{"default":"star equals"}},key:"225B"},{category:"Sm",
-mappings:{"default":{"default":"delta equal to"}},key:"225C"},{category:"Sm",mappings:{"default":{"default":"equal to by definition"}},key:"225D"},{category:"Sm",mappings:{"default":{"default":"measured by"}},key:"225E"},{category:"Sm",mappings:{"default":{"default":"questioned equal to"}},key:"225F"},{category:"Sm",mappings:{"default":{"default":"not equal to"}},key:"2260"},{category:"Sm",mappings:{"default":{"default":"identical to"}},key:"2261"},{category:"Sm",mappings:{"default":{"default":"not identical to"}},
-key:"2262"},{category:"Sm",mappings:{"default":{"default":"strictly equivalent to"}},key:"2263"},{category:"Sm",mappings:{"default":{"default":"less than or equal to",alternative:"less than or equal to"}},key:"2264"},{category:"Sm",mappings:{"default":{"default":"greater than or equal to",alternative:"greater than or equal to"}},key:"2265"},{category:"Sm",mappings:{"default":{"default":"less than over equal to",alternative:"less than over equal to"}},key:"2266"},{category:"Sm",mappings:{"default":{"default":"greater than over equal to",
-alternative:"greater than over equal to"}},key:"2267"},{category:"Sm",mappings:{"default":{"default":"less than but not equal to",alternative:"less than but not equal to"}},key:"2268"},{category:"Sm",mappings:{"default":{"default":"greater than but not equal to",alternative:"greater than but not equal to"}},key:"2269"},{category:"Sm",mappings:{"default":{"default":"much less than",alternative:"much less than"}},key:"226A"},{category:"Sm",mappings:{"default":{"default":"much greater than",alternative:"much greater than"}},
-key:"226B"},{category:"Sm",mappings:{"default":{"default":"between"}},key:"226C"},{category:"Sm",mappings:{"default":{"default":"not equivalent to"}},key:"226D"},{category:"Sm",mappings:{"default":{"default":"not less than",alternative:"not less than"}},key:"226E"},{category:"Sm",mappings:{"default":{"default":"not greater than",alternative:"not greater than"}},key:"226F"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equal to",alternative:"neither less than nor equal to"}},
-key:"2270"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equal to",alternative:"neither greater than nor equal to"}},key:"2271"},{category:"Sm",mappings:{"default":{"default":"less than or equivalent to",alternative:"less than or equivalent to"}},key:"2272"},{category:"Sm",mappings:{"default":{"default":"greater than or equivalent to",alternative:"greater than or equivalent to"}},key:"2273"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equivalent to",
-alternative:"neither less than nor equivalent to"}},key:"2274"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equivalent to",alternative:"neither greater than nor equivalent to"}},key:"2275"},{category:"Sm",mappings:{"default":{"default":"less than or greater than",alternative:"less than or greater than"}},key:"2276"},{category:"Sm",mappings:{"default":{"default":"greater than or less than",alternative:"greater than or less than"}},key:"2277"},{category:"Sm",mappings:{"default":{"default":"neither less than nor greater than",
-alternative:"neither less than nor greater than"}},key:"2278"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor less than",alternative:"neither greater than nor less than"}},key:"2279"},{category:"Sm",mappings:{"default":{"default":"precedes"}},key:"227A"},{category:"Sm",mappings:{"default":{"default":"succeeds"}},key:"227B"},{category:"Sm",mappings:{"default":{"default":"precedes or equal to"}},key:"227C"},{category:"Sm",mappings:{"default":{"default":"succeeds or equal to"}},
-key:"227D"},{category:"Sm",mappings:{"default":{"default":"precedes or equivalent to"}},key:"227E"},{category:"Sm",mappings:{"default":{"default":"succeeds or equivalent to"}},key:"227F"},{category:"Sm",mappings:{"default":{"default":"does not precede"}},key:"2280"},{category:"Sm",mappings:{"default":{"default":"does not succeed"}},key:"2281"},{category:"Sm",mappings:{"default":{"default":"subset of"}},key:"2282"},{category:"Sm",mappings:{"default":{"default":"superset of"}},key:"2283"},{category:"Sm",
-mappings:{"default":{"default":"not a subset of"}},key:"2284"},{category:"Sm",mappings:{"default":{"default":"not a superset of"}},key:"2285"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to"}},key:"2286"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to"}},key:"2287"},{category:"Sm",mappings:{"default":{"default":"neither a subset of nor equal to"}},key:"2288"},{category:"Sm",mappings:{"default":{"default":"neither a superset of nor equal to"}},key:"2289"},
-{category:"Sm",mappings:{"default":{"default":"subset of with not equal to",alternative:"subset of or not equal to","short":"subset of or not equal to"}},key:"228A"},{category:"Sm",mappings:{"default":{"default":"superset of with not equal to",alternative:"superset of or not equal to","short":"superset of or not equal to"}},key:"228B"},{category:"Sm",mappings:{"default":{"default":"multiset"}},key:"228C"},{category:"Sm",mappings:{"default":{"default":"multiset multiplication"}},key:"228D"},{category:"Sm",
-mappings:{"default":{"default":"multiset union"}},key:"228E"},{category:"Sm",mappings:{"default":{"default":"square image of"}},key:"228F"},{category:"Sm",mappings:{"default":{"default":"square original of"}},key:"2290"},{category:"Sm",mappings:{"default":{"default":"square image of or equal to"}},key:"2291"},{category:"Sm",mappings:{"default":{"default":"square original of or equal to"}},key:"2292"},{category:"Sm",mappings:{"default":{"default":"square cap"}},key:"2293"},{category:"Sm",mappings:{"default":{"default":"square cup"}},
-key:"2294"},{category:"Sm",mappings:{"default":{"default":"circled plus"}},key:"2295"},{category:"Sm",mappings:{"default":{"default":"circled minus"}},key:"2296"},{category:"Sm",mappings:{"default":{"default":"circled times"}},key:"2297"},{category:"Sm",mappings:{"default":{"default":"circled division slash"}},key:"2298"},{category:"Sm",mappings:{"default":{"default":"circled dot operator"}},key:"2299"},{category:"Sm",mappings:{"default":{"default":"circled ring operator"}},key:"229A"},{category:"Sm",
-mappings:{"default":{"default":"circled asterisk operator"}},key:"229B"},{category:"Sm",mappings:{"default":{"default":"circled equals"}},key:"229C"},{category:"Sm",mappings:{"default":{"default":"circled dash"}},key:"229D"},{category:"Sm",mappings:{"default":{"default":"squared plus"}},key:"229E"},{category:"Sm",mappings:{"default":{"default":"squared minus"}},key:"229F"},{category:"Sm",mappings:{"default":{"default":"squared times"}},key:"22A0"},{category:"Sm",mappings:{"default":{"default":"squared dot operator"}},
-key:"22A1"},{category:"Sm",mappings:{"default":{"default":"right tack"}},key:"22A2"},{category:"Sm",mappings:{"default":{"default":"left tack"}},key:"22A3"},{category:"Sm",mappings:{"default":{"default":"down tack"}},key:"22A4"},{category:"Sm",mappings:{"default":{"default":"up tack"}},key:"22A5"},{category:"Sm",mappings:{"default":{"default":"assertion"}},key:"22A6"},{category:"Sm",mappings:{"default":{"default":"models"}},key:"22A7"},{category:"Sm",mappings:{"default":{"default":"true"}},key:"22A8"},
-{category:"Sm",mappings:{"default":{"default":"forces"}},key:"22A9"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar right turnstile"}},key:"22AA"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double right turnstile"}},key:"22AB"},{category:"Sm",mappings:{"default":{"default":"does not prove"}},key:"22AC"},{category:"Sm",mappings:{"default":{"default":"not true"}},key:"22AD"},{category:"Sm",mappings:{"default":{"default":"does not force"}},key:"22AE"},{category:"Sm",
-mappings:{"default":{"default":"negated double vertical bar double right turnstile"}},key:"22AF"},{category:"Sm",mappings:{"default":{"default":"precedes under relation"}},key:"22B0"},{category:"Sm",mappings:{"default":{"default":"succeeds under relation"}},key:"22B1"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of"}},key:"22B2"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup"}},key:"22B3"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of or equal to"}},
-key:"22B4"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup or equal to"}},key:"22B5"},{category:"Sm",mappings:{"default":{"default":"original of"}},key:"22B6"},{category:"Sm",mappings:{"default":{"default":"image of"}},key:"22B7"},{category:"Sm",mappings:{"default":{"default":"multimap"}},key:"22B8"},{category:"Sm",mappings:{"default":{"default":"hermitian conjugate matrix"}},key:"22B9"},{category:"Sm",mappings:{"default":{"default":"intercalate"}},key:"22BA"},{category:"Sm",
-mappings:{"default":{"default":"xor"}},key:"22BB"},{category:"Sm",mappings:{"default":{"default":"nand"}},key:"22BC"},{category:"Sm",mappings:{"default":{"default":"nor"}},key:"22BD"},{category:"Sm",mappings:{"default":{"default":"right triangle"}},key:"22BF"},{category:"Sm",mappings:{"default":{"default":"n ary logical and"}},key:"22C0"},{category:"Sm",mappings:{"default":{"default":"n ary logical or"}},key:"22C1"},{category:"Sm",mappings:{"default":{"default":"n ary intersection"}},key:"22C2"},
-{category:"Sm",mappings:{"default":{"default":"n ary union"}},key:"22C3"},{category:"Sm",mappings:{"default":{"default":"diamond operator"}},key:"22C4"},{category:"Sm",mappings:{"default":{"default":"dot operator"}},key:"22C5"},{category:"Sm",mappings:{"default":{"default":"star operator"}},key:"22C6"},{category:"Sm",mappings:{"default":{"default":"division times"}},key:"22C7"},{category:"Sm",mappings:{"default":{"default":"bowtie"}},key:"22C8"},{category:"Sm",mappings:{"default":{"default":"left normal factor semidirect product"}},
-key:"22C9"},{category:"Sm",mappings:{"default":{"default":"right normal factor semidirect product"}},key:"22CA"},{category:"Sm",mappings:{"default":{"default":"left semidirect product"}},key:"22CB"},{category:"Sm",mappings:{"default":{"default":"right semidirect product"}},key:"22CC"},{category:"Sm",mappings:{"default":{"default":"reversed tilde equals"}},key:"22CD"},{category:"Sm",mappings:{"default":{"default":"curly logical or"}},key:"22CE"},{category:"Sm",mappings:{"default":{"default":"curly logical and"}},
-key:"22CF"},{category:"Sm",mappings:{"default":{"default":"double subset"}},key:"22D0"},{category:"Sm",mappings:{"default":{"default":"double superset"}},key:"22D1"},{category:"Sm",mappings:{"default":{"default":"double intersection"}},key:"22D2"},{category:"Sm",mappings:{"default":{"default":"double union"}},key:"22D3"},{category:"Sm",mappings:{"default":{"default":"pitchfork"}},key:"22D4"},{category:"Sm",mappings:{"default":{"default":"equal and parallel to"}},key:"22D5"},{category:"Sm",mappings:{"default":{"default":"less than with dot",
-alternative:"less than with dot","short":"less than dot"}},key:"22D6"},{category:"Sm",mappings:{"default":{"default":"greater than with dot",alternative:"greater than with dot","short":"greater than dot"}},key:"22D7"},{category:"Sm",mappings:{"default":{"default":"very much less than",alternative:"very much less than"}},key:"22D8"},{category:"Sm",mappings:{"default":{"default":"very much greater than",alternative:"very much greater than"}},key:"22D9"},{category:"Sm",mappings:{"default":{"default":"less than equal to or greater than",
-alternative:"less than equal to or greater than"}},key:"22DA"},{category:"Sm",mappings:{"default":{"default":"greater than equal to or less than",alternative:"greater than equal to or less than"}},key:"22DB"},{category:"Sm",mappings:{"default":{"default":"equal to or less than",alternative:"equal to or less than"}},key:"22DC"},{category:"Sm",mappings:{"default":{"default":"equal to or greater than",alternative:"equal to or greater than"}},key:"22DD"},{category:"Sm",mappings:{"default":{"default":"equal to or precedes"}},
-key:"22DE"},{category:"Sm",mappings:{"default":{"default":"equal to or succeeds"}},key:"22DF"},{category:"Sm",mappings:{"default":{"default":"does not precede or equal"}},key:"22E0"},{category:"Sm",mappings:{"default":{"default":"does not succeed or equal"}},key:"22E1"},{category:"Sm",mappings:{"default":{"default":"not square image of or equal to"}},key:"22E2"},{category:"Sm",mappings:{"default":{"default":"not square original of or equal to"}},key:"22E3"},{category:"Sm",mappings:{"default":{"default":"square image of or not equal to"}},
-key:"22E4"},{category:"Sm",mappings:{"default":{"default":"square original of or not equal to"}},key:"22E5"},{category:"Sm",mappings:{"default":{"default":"less than but not equivalent to",alternative:"less than but not equivalent to"}},key:"22E6"},{category:"Sm",mappings:{"default":{"default":"greater than but not equivalent to",alternative:"greater than but not equivalent to"}},key:"22E7"},{category:"Sm",mappings:{"default":{"default":"precedes but not equivalent to"}},key:"22E8"},{category:"Sm",
-mappings:{"default":{"default":"succeeds but not equivalent to"}},key:"22E9"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of"}},key:"22EA"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup"}},key:"22EB"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of or equal to"}},key:"22EC"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup or equal"}},key:"22ED"},{category:"Sm",mappings:{"default":{"default":"vertical ellipsis",
-"short":"dot dot dot"}},key:"22EE"},{category:"Sm",mappings:{"default":{"default":"midline horizontal ellipsis","short":"dot dot dot"}},key:"22EF"},{category:"Sm",mappings:{"default":{"default":"up right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F0"},{category:"Sm",mappings:{"default":{"default":"down right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F1"},{category:"Sm",mappings:{"default":{"default":"element of with long horizontal stroke"}},key:"22F2"},{category:"Sm",
-mappings:{"default":{"default":"element of with vertical bar at end of horizontal stroke"}},key:"22F3"},{category:"Sm",mappings:{"default":{"default":"small element of with vertical bar at end of horizontal stroke"}},key:"22F4"},{category:"Sm",mappings:{"default":{"default":"element of with dot above"}},key:"22F5"},{category:"Sm",mappings:{"default":{"default":"element of with overbar"}},key:"22F6"},{category:"Sm",mappings:{"default":{"default":"small element of with overbar"}},key:"22F7"},{category:"Sm",
-mappings:{"default":{"default":"element of with underbar"}},key:"22F8"},{category:"Sm",mappings:{"default":{"default":"element of with two horizontal strokes"}},key:"22F9"},{category:"Sm",mappings:{"default":{"default":"contains with long horizontal stroke"}},key:"22FA"},{category:"Sm",mappings:{"default":{"default":"contains with vertical bar at end of horizontal stroke"}},key:"22FB"},{category:"Sm",mappings:{"default":{"default":"small contains with vertical bar at end of horizontal stroke"}},key:"22FC"},
-{category:"Sm",mappings:{"default":{"default":"contains with overbar"}},key:"22FD"},{category:"Sm",mappings:{"default":{"default":"small contains with overbar"}},key:"22FE"},{category:"Sm",mappings:{"default":{"default":"z notation bag membership"}},key:"22FF"},{category:"So",mappings:{"default":{"default":"diameter sign","short":"diameter"}},key:"2300"},{category:"So",mappings:{"default":{"default":"house"}},key:"2302"},{category:"So",mappings:{"default":{"default":"projective"}},key:"2305"},{category:"So",
-mappings:{"default":{"default":"perspective"}},key:"2306"},{category:"So",mappings:{"default":{"default":"wavy line"}},key:"2307"},{category:"So",mappings:{"default":{"default":"reversed not sign","short":"reversed not"}},key:"2310"},{category:"So",mappings:{"default":{"default":"square lozenge"}},key:"2311"},{category:"So",mappings:{"default":{"default":"arc"}},key:"2312"},{category:"So",mappings:{"default":{"default":"segment"}},key:"2313"},{category:"So",mappings:{"default":{"default":"sector"}},
-key:"2314"},{category:"So",mappings:{"default":{"default":"heavy plus sign",alternative:"heavy plus","short":"bold plus"}},key:"2795"},{category:"So",mappings:{"default":{"default":"heavy minus sign",alternative:"heavy minus","short":"bold minus"}},key:"2796"},{category:"So",mappings:{"default":{"default":"heavy division sign",alternative:"heavy division","short":"bold division"}},key:"2797"},{category:"So",mappings:{"default":{"default":"curly loop"}},key:"27B0"},{category:"So",mappings:{"default":{"default":"double curly loop"}},
-key:"27BF"},{category:"Sm",mappings:{"default":{"default":"white triangle containing small white triangle"}},key:"27C1"},{category:"Sm",mappings:{"default":{"default":"perpendicular"}},key:"27C2"},{category:"Sm",mappings:{"default":{"default":"open subset"}},key:"27C3"},{category:"Sm",mappings:{"default":{"default":"open superset"}},key:"27C4"},{category:"Sm",mappings:{"default":{"default":"or with dot inside"}},key:"27C7"},{category:"Sm",mappings:{"default":{"default":"reverse solidus preceding subset"}},
-key:"27C8"},{category:"Sm",mappings:{"default":{"default":"superset preceding solidus"}},key:"27C9"},{category:"Sm",mappings:{"default":{"default":"vertical bar with horizontal stroke"}},key:"27CA"},{category:"Sm",mappings:{"default":{"default":"mathematical rising diagonal"}},key:"27CB"},{category:"Sm",mappings:{"default":{"default":"long division"}},key:"27CC"},{category:"Sm",mappings:{"default":{"default":"mathematical falling diagonal"}},key:"27CD"},{category:"Sm",mappings:{"default":{"default":"squared logical and"}},
-key:"27CE"},{category:"Sm",mappings:{"default":{"default":"squared logical or"}},key:"27CF"},{category:"Sm",mappings:{"default":{"default":"white diamond with centered dot"}},key:"27D0"},{category:"Sm",mappings:{"default":{"default":"and with dot"}},key:"27D1"},{category:"Sm",mappings:{"default":{"default":"element of opening upwards"}},key:"27D2"},{category:"Sm",mappings:{"default":{"default":"lower right corner with dot"}},key:"27D3"},{category:"Sm",mappings:{"default":{"default":"upper left corner with dot"}},
-key:"27D4"},{category:"Sm",mappings:{"default":{"default":"left outer join"}},key:"27D5"},{category:"Sm",mappings:{"default":{"default":"right outer join"}},key:"27D6"},{category:"Sm",mappings:{"default":{"default":"full outer join"}},key:"27D7"},{category:"Sm",mappings:{"default":{"default":"large up tack"}},key:"27D8"},{category:"Sm",mappings:{"default":{"default":"large down tack"}},key:"27D9"},{category:"Sm",mappings:{"default":{"default":"left and right double turnstile"}},key:"27DA"},{category:"Sm",
-mappings:{"default":{"default":"left and right tack"}},key:"27DB"},{category:"Sm",mappings:{"default":{"default":"left multimap"}},key:"27DC"},{category:"Sm",mappings:{"default":{"default":"long right tack"}},key:"27DD"},{category:"Sm",mappings:{"default":{"default":"long left tack"}},key:"27DE"},{category:"Sm",mappings:{"default":{"default":"up tack with circle above"}},key:"27DF"},{category:"Sm",mappings:{"default":{"default":"lozenge divided by horizontal rule"}},key:"27E0"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond"}},
-key:"27E1"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with leftwards tick"}},key:"27E2"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with rightwards tick"}},key:"27E3"},{category:"Sm",mappings:{"default":{"default":"white square with leftwards tick"}},key:"27E4"},{category:"Sm",mappings:{"default":{"default":"white square with rightwards tick"}},key:"27E5"},{category:"Sm",mappings:{"default":{"default":"rising diagonal crossing falling diagonal"}},
-key:"292B"},{category:"Sm",mappings:{"default":{"default":"falling diagonal crossing rising diagonal"}},key:"292C"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar delimiter"}},key:"2980"},{category:"Sm",mappings:{"default":{"default":"z notation spot"}},key:"2981"},{category:"Sm",mappings:{"default":{"default":"z notation type colon"}},key:"2982"},{category:"Sm",mappings:{"default":{"default":"dotted fence"}},key:"2999"},{category:"Sm",mappings:{"default":{"default":"vertical zigzag line"}},
-key:"299A"},{category:"Sm",mappings:{"default":{"default":"reversed empty set"}},key:"29B0"},{category:"Sm",mappings:{"default":{"default":"empty set with overbar"}},key:"29B1"},{category:"Sm",mappings:{"default":{"default":"empty set with small circle above"}},key:"29B2"},{category:"Sm",mappings:{"default":{"default":"circle with horizontal bar"}},key:"29B5"},{category:"Sm",mappings:{"default":{"default":"circled vertical bar"}},key:"29B6"},{category:"Sm",mappings:{"default":{"default":"circled parallel"}},
-key:"29B7"},{category:"Sm",mappings:{"default":{"default":"circled reverse solidus"}},key:"29B8"},{category:"Sm",mappings:{"default":{"default":"circled perpendicular"}},key:"29B9"},{category:"Sm",mappings:{"default":{"default":"circle divided by horizontal bar and top half divided by vertical bar"}},key:"29BA"},{category:"Sm",mappings:{"default":{"default":"circle with superimposed x"}},key:"29BB"},{category:"Sm",mappings:{"default":{"default":"circled anticlockwise rotated division sign","short":"circled anticlockwise rotated division"}},
-key:"29BC"},{category:"Sm",mappings:{"default":{"default":"circled white bullet"}},key:"29BE"},{category:"Sm",mappings:{"default":{"default":"circled bullet"}},key:"29BF"},{category:"Sm",mappings:{"default":{"default":"circled less than"}},key:"29C0"},{category:"Sm",mappings:{"default":{"default":"circled greater than"}},key:"29C1"},{category:"Sm",mappings:{"default":{"default":"circle with small circle to the right"}},key:"29C2"},{category:"Sm",mappings:{"default":{"default":"circle with two horizontal strokes to the right"}},
-key:"29C3"},{category:"Sm",mappings:{"default":{"default":"squared rising diagonal slash"}},key:"29C4"},{category:"Sm",mappings:{"default":{"default":"squared falling diagonal slash"}},key:"29C5"},{category:"Sm",mappings:{"default":{"default":"squared asterisk"}},key:"29C6"},{category:"Sm",mappings:{"default":{"default":"squared small circle"}},key:"29C7"},{category:"Sm",mappings:{"default":{"default":"squared square"}},key:"29C8"},{category:"Sm",mappings:{"default":{"default":"two joined squares"}},
-key:"29C9"},{category:"Sm",mappings:{"default":{"default":"triangle with dot above"}},key:"29CA"},{category:"Sm",mappings:{"default":{"default":"triangle with underbar"}},key:"29CB"},{category:"Sm",mappings:{"default":{"default":"s in triangle"}},key:"29CC"},{category:"Sm",mappings:{"default":{"default":"triangle with serifs at bottom"}},key:"29CD"},{category:"Sm",mappings:{"default":{"default":"right triangle above left triangle"}},key:"29CE"},{category:"Sm",mappings:{"default":{"default":"left triangle beside vertical bar"}},
-key:"29CF"},{category:"Sm",mappings:{"default":{"default":"vertical bar beside right triangle"}},key:"29D0"},{category:"Sm",mappings:{"default":{"default":"bowtie with left half black"}},key:"29D1"},{category:"Sm",mappings:{"default":{"default":"bowtie with right half black"}},key:"29D2"},{category:"Sm",mappings:{"default":{"default":"black bowtie"}},key:"29D3"},{category:"Sm",mappings:{"default":{"default":"times with left half black"}},key:"29D4"},{category:"Sm",mappings:{"default":{"default":"times with right half black"}},
-key:"29D5"},{category:"Sm",mappings:{"default":{"default":"white hourglass"}},key:"29D6"},{category:"Sm",mappings:{"default":{"default":"black hourglass"}},key:"29D7"},{category:"Sm",mappings:{"default":{"default":"incomplete infinity"}},key:"29DC"},{category:"Sm",mappings:{"default":{"default":"tie over infinity"}},key:"29DD"},{category:"Sm",mappings:{"default":{"default":"infinity negated with vertical bar"}},key:"29DE"},{category:"Sm",mappings:{"default":{"default":"double ended multimap"}},key:"29DF"},
-{category:"Sm",mappings:{"default":{"default":"square with contoured outline"}},key:"29E0"},{category:"Sm",mappings:{"default":{"default":"increases as"}},key:"29E1"},{category:"Sm",mappings:{"default":{"default":"shuffle product"}},key:"29E2"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel"}},key:"29E3"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel with tilde above"}},key:"29E4"},{category:"Sm",mappings:{"default":{"default":"identical to and slanted parallel"}},
-key:"29E5"},{category:"Sm",mappings:{"default":{"default":"gleich stark"}},key:"29E6"},{category:"Sm",mappings:{"default":{"default":"thermodynamic"}},key:"29E7"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with left half black"}},key:"29E8"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with right half black"}},key:"29E9"},{category:"Sm",mappings:{"default":{"default":"black lozenge"}},key:"29EB"},{category:"Sm",mappings:{"default":{"default":"error barred white square"}},
-key:"29EE"},{category:"Sm",mappings:{"default":{"default":"error barred black square"}},key:"29EF"},{category:"Sm",mappings:{"default":{"default":"error barred white diamond"}},key:"29F0"},{category:"Sm",mappings:{"default":{"default":"error barred black diamond"}},key:"29F1"},{category:"Sm",mappings:{"default":{"default":"error barred white circle"}},key:"29F2"},{category:"Sm",mappings:{"default":{"default":"error barred black circle"}},key:"29F3"},{category:"Sm",mappings:{"default":{"default":"rule delayed"}},
-key:"29F4"},{category:"Sm",mappings:{"default":{"default":"reverse solidus operator"}},key:"29F5"},{category:"Sm",mappings:{"default":{"default":"solidus with overbar"}},key:"29F6"},{category:"Sm",mappings:{"default":{"default":"reverse solidus with horizontal stroke"}},key:"29F7"},{category:"Sm",mappings:{"default":{"default":"big solidus"}},key:"29F8"},{category:"Sm",mappings:{"default":{"default":"big reverse solidus"}},key:"29F9"},{category:"Sm",mappings:{"default":{"default":"double plus"}},
-key:"29FA"},{category:"Sm",mappings:{"default":{"default":"triple plus"}},key:"29FB"},{category:"Sm",mappings:{"default":{"default":"tiny"}},key:"29FE"},{category:"Sm",mappings:{"default":{"default":"miny"}},key:"29FF"},{category:"Sm",mappings:{"default":{"default":"n ary circled dot operator"}},key:"2A00"},{category:"Sm",mappings:{"default":{"default":"n ary circled plus operator"}},key:"2A01"},{category:"Sm",mappings:{"default":{"default":"n ary circled times operator"}},key:"2A02"},{category:"Sm",
-mappings:{"default":{"default":"n ary union operator with dot"}},key:"2A03"},{category:"Sm",mappings:{"default":{"default":"n ary union operator with plus"}},key:"2A04"},{category:"Sm",mappings:{"default":{"default":"n ary square intersection operator"}},key:"2A05"},{category:"Sm",mappings:{"default":{"default":"n ary square union operator"}},key:"2A06"},{category:"Sm",mappings:{"default":{"default":"two logical and operator"}},key:"2A07"},{category:"Sm",mappings:{"default":{"default":"two logical or operator"}},
-key:"2A08"},{category:"Sm",mappings:{"default":{"default":"n ary times operator"}},key:"2A09"},{category:"Sm",mappings:{"default":{"default":"modulo two sum"}},key:"2A0A"},{category:"Sm",mappings:{"default":{"default":"summation with integral"}},key:"2A0B"},{category:"Sm",mappings:{"default":{"default":"quadruple integral operator"}},key:"2A0C"},{category:"Sm",mappings:{"default":{"default":"finite part integral"}},key:"2A0D"},{category:"Sm",mappings:{"default":{"default":"integral with double stroke"}},
-key:"2A0E"},{category:"Sm",mappings:{"default":{"default":"integral average with slash"}},key:"2A0F"},{category:"Sm",mappings:{"default":{"default":"circulation function"}},key:"2A10"},{category:"Sm",mappings:{"default":{"default":"anticlockwise integration"}},key:"2A11"},{category:"Sm",mappings:{"default":{"default":"line integration with rectangular path around pole"}},key:"2A12"},{category:"Sm",mappings:{"default":{"default":"line integration with semicircular path around pole"}},key:"2A13"},{category:"Sm",
-mappings:{"default":{"default":"line integration not including the pole"}},key:"2A14"},{category:"Sm",mappings:{"default":{"default":"integral around a point operator"}},key:"2A15"},{category:"Sm",mappings:{"default":{"default":"quaternion integral operator"}},key:"2A16"},{category:"Sm",mappings:{"default":{"default":"integral with times sign","short":"integral with times"}},key:"2A18"},{category:"Sm",mappings:{"default":{"default":"integral with intersection"}},key:"2A19"},{category:"Sm",mappings:{"default":{"default":"integral with union"}},
-key:"2A1A"},{category:"Sm",mappings:{"default":{"default":"integral with overbar"}},key:"2A1B"},{category:"Sm",mappings:{"default":{"default":"integral with underbar"}},key:"2A1C"},{category:"Sm",mappings:{"default":{"default":"join"}},key:"2A1D"},{category:"Sm",mappings:{"default":{"default":"large left triangle operator"}},key:"2A1E"},{category:"Sm",mappings:{"default":{"default":"z notation schema composition"}},key:"2A1F"},{category:"Sm",mappings:{"default":{"default":"z notation schema piping"}},
-key:"2A20"},{category:"Sm",mappings:{"default":{"default":"z notation schema projection"}},key:"2A21"},{category:"Sm",mappings:{"default":{"default":"plus sign with small circle above","short":"plus with circle above"}},key:"2A22"},{category:"Sm",mappings:{"default":{"default":"plus sign with circumflex accent above","short":"plus hat"}},key:"2A23"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde above","short":"plus tilde"}},key:"2A24"},{category:"Sm",mappings:{"default":{"default":"plus sign with dot below",
-"short":"plus underdot"}},key:"2A25"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde below"}},key:"2A26"},{category:"Sm",mappings:{"default":{"default":"plus sign with subscript two"}},key:"2A27"},{category:"Sm",mappings:{"default":{"default":"plus sign with black triangle"}},key:"2A28"},{category:"Sm",mappings:{"default":{"default":"minus sign with comma above"}},key:"2A29"},{category:"Sm",mappings:{"default":{"default":"minus sign with dot below"}},key:"2A2A"},{category:"Sm",
-mappings:{"default":{"default":"minus sign with falling dots"}},key:"2A2B"},{category:"Sm",mappings:{"default":{"default":"minus sign with rising dots"}},key:"2A2C"},{category:"Sm",mappings:{"default":{"default":"plus sign in left half circle"}},key:"2A2D"},{category:"Sm",mappings:{"default":{"default":"plus sign in right half circle"}},key:"2A2E"},{category:"Sm",mappings:{"default":{"default":"vector or cross product"}},key:"2A2F"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with dot above"}},
-key:"2A30"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with underbar"}},key:"2A31"},{category:"Sm",mappings:{"default":{"default":"semidirect product with bottom closed"}},key:"2A32"},{category:"Sm",mappings:{"default":{"default":"smash product"}},key:"2A33"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in left half circle"}},key:"2A34"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in right half circle"}},key:"2A35"},{category:"Sm",
-mappings:{"default":{"default":"circled multiplication sign with circumflex accent"}},key:"2A36"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in double circle"}},key:"2A37"},{category:"Sm",mappings:{"default":{"default":"circled division sign","short":"circled division"}},key:"2A38"},{category:"Sm",mappings:{"default":{"default":"plus sign in triangle"}},key:"2A39"},{category:"Sm",mappings:{"default":{"default":"minus sign in triangle"}},key:"2A3A"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in triangle"}},
-key:"2A3B"},{category:"Sm",mappings:{"default":{"default":"interior product"}},key:"2A3C"},{category:"Sm",mappings:{"default":{"default":"righthand interior product"}},key:"2A3D"},{category:"Sm",mappings:{"default":{"default":"z notation relational composition"}},key:"2A3E"},{category:"Sm",mappings:{"default":{"default":"amalgamation or coproduct"}},key:"2A3F"},{category:"Sm",mappings:{"default":{"default":"intersection with dot"}},key:"2A40"},{category:"Sm",mappings:{"default":{"default":"union with minus sign",
-"short":"union with minus"}},key:"2A41"},{category:"Sm",mappings:{"default":{"default":"union with overbar"}},key:"2A42"},{category:"Sm",mappings:{"default":{"default":"intersection with overbar"}},key:"2A43"},{category:"Sm",mappings:{"default":{"default":"intersection with logical and"}},key:"2A44"},{category:"Sm",mappings:{"default":{"default":"union with logical or"}},key:"2A45"},{category:"Sm",mappings:{"default":{"default":"union above intersection"}},key:"2A46"},{category:"Sm",mappings:{"default":{"default":"intersection above union"}},
-key:"2A47"},{category:"Sm",mappings:{"default":{"default":"union above bar above intersection"}},key:"2A48"},{category:"Sm",mappings:{"default":{"default":"intersection above bar above union"}},key:"2A49"},{category:"Sm",mappings:{"default":{"default":"union beside and joined with union"}},key:"2A4A"},{category:"Sm",mappings:{"default":{"default":"intersection beside and joined with intersection"}},key:"2A4B"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs"}},key:"2A4C"},
-{category:"Sm",mappings:{"default":{"default":"closed intersection with serifs"}},key:"2A4D"},{category:"Sm",mappings:{"default":{"default":"double square intersection"}},key:"2A4E"},{category:"Sm",mappings:{"default":{"default":"double square union"}},key:"2A4F"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs and smash product"}},key:"2A50"},{category:"Sm",mappings:{"default":{"default":"logical and with dot above"}},key:"2A51"},{category:"Sm",mappings:{"default":{"default":"logical or with dot above"}},
-key:"2A52"},{category:"Sm",mappings:{"default":{"default":"double logical and"}},key:"2A53"},{category:"Sm",mappings:{"default":{"default":"double logical or"}},key:"2A54"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical and"}},key:"2A55"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical or"}},key:"2A56"},{category:"Sm",mappings:{"default":{"default":"sloping large or"}},key:"2A57"},{category:"Sm",mappings:{"default":{"default":"sloping large and"}},
-key:"2A58"},{category:"Sm",mappings:{"default":{"default":"logical or overlapping logical and"}},key:"2A59"},{category:"Sm",mappings:{"default":{"default":"logical and with middle stem"}},key:"2A5A"},{category:"Sm",mappings:{"default":{"default":"logical or with middle stem"}},key:"2A5B"},{category:"Sm",mappings:{"default":{"default":"logical and with horizontal dash"}},key:"2A5C"},{category:"Sm",mappings:{"default":{"default":"logical or with horizontal dash"}},key:"2A5D"},{category:"Sm",mappings:{"default":{"default":"logical and with double overbar"}},
-key:"2A5E"},{category:"Sm",mappings:{"default":{"default":"logical and with underbar"}},key:"2A5F"},{category:"Sm",mappings:{"default":{"default":"logical and with double underbar"}},key:"2A60"},{category:"Sm",mappings:{"default":{"default":"small vee with underbar"}},key:"2A61"},{category:"Sm",mappings:{"default":{"default":"logical or with double overbar"}},key:"2A62"},{category:"Sm",mappings:{"default":{"default":"logical or with double underbar"}},key:"2A63"},{category:"Sm",mappings:{"default":{"default":"z notation domain antirestriction"}},
-key:"2A64"},{category:"Sm",mappings:{"default":{"default":"z notation range antirestriction"}},key:"2A65"},{category:"Sm",mappings:{"default":{"default":"equals sign with dot below"}},key:"2A66"},{category:"Sm",mappings:{"default":{"default":"identical with dot above"}},key:"2A67"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with double vertical stroke"}},key:"2A68"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with triple vertical stroke"}},key:"2A69"},
-{category:"Sm",mappings:{"default":{"default":"tilde operator with dot above"}},key:"2A6A"},{category:"Sm",mappings:{"default":{"default":"tilde operator with rising dots"}},key:"2A6B"},{category:"Sm",mappings:{"default":{"default":"similar minus similar"}},key:"2A6C"},{category:"Sm",mappings:{"default":{"default":"congruent with dot above"}},key:"2A6D"},{category:"Sm",mappings:{"default":{"default":"equals with asterisk"}},key:"2A6E"},{category:"Sm",mappings:{"default":{"default":"almost equal to with circumflex accent",
-"short":"almost equal hat"}},key:"2A6F"},{category:"Sm",mappings:{"default":{"default":"approximately equal or equal to"}},key:"2A70"},{category:"Sm",mappings:{"default":{"default":"equals sign above plus sign","short":"equals above plus"}},key:"2A71"},{category:"Sm",mappings:{"default":{"default":"plus sign above equals sign","short":"plus above equals"}},key:"2A72"},{category:"Sm",mappings:{"default":{"default":"equals sign above tilde operator","short":"equals above tilde operator"}},key:"2A73"},
-{category:"Sm",mappings:{"default":{"default":"double colon equal"}},key:"2A74"},{category:"Sm",mappings:{"default":{"default":"two consecutive equals signs","short":"two consecutive equals"}},key:"2A75"},{category:"Sm",mappings:{"default":{"default":"three consecutive equals signs","short":"three consecutive equals"}},key:"2A76"},{category:"Sm",mappings:{"default":{"default":"equals sign with two dots above and two dots below"}},key:"2A77"},{category:"Sm",mappings:{"default":{"default":"equivalent with four dots above"}},
-key:"2A78"},{category:"Sm",mappings:{"default":{"default":"less than with circle inside"}},key:"2A79"},{category:"Sm",mappings:{"default":{"default":"greater than with circle inside"}},key:"2A7A"},{category:"Sm",mappings:{"default":{"default":"less than with question mark above"}},key:"2A7B"},{category:"Sm",mappings:{"default":{"default":"greater than with question mark above"}},key:"2A7C"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to"}},key:"2A7D"},{category:"Sm",
-mappings:{"default":{"default":"greater than or slanted equal to"}},key:"2A7E"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot inside"}},key:"2A7F"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot inside"}},key:"2A80"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above"}},key:"2A81"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above"}},
-key:"2A82"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above right"}},key:"2A83"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above left"}},key:"2A84"},{category:"Sm",mappings:{"default":{"default":"less than or approximate"}},key:"2A85"},{category:"Sm",mappings:{"default":{"default":"greater than or approximate"}},key:"2A86"},{category:"Sm",mappings:{"default":{"default":"less than and single line not equal to"}},
-key:"2A87"},{category:"Sm",mappings:{"default":{"default":"greater than and single line not equal to"}},key:"2A88"},{category:"Sm",mappings:{"default":{"default":"less than and not approximate"}},key:"2A89"},{category:"Sm",mappings:{"default":{"default":"greater than and not approximate"}},key:"2A8A"},{category:"Sm",mappings:{"default":{"default":"less than above double line equal above greater than"}},key:"2A8B"},{category:"Sm",mappings:{"default":{"default":"greater than above double line equal above less than"}},
-key:"2A8C"},{category:"Sm",mappings:{"default":{"default":"less than above similar or equal"}},key:"2A8D"},{category:"Sm",mappings:{"default":{"default":"greater than above similar or equal"}},key:"2A8E"},{category:"Sm",mappings:{"default":{"default":"less than above similar above greater than"}},key:"2A8F"},{category:"Sm",mappings:{"default":{"default":"greater than above similar above less than"}},key:"2A90"},{category:"Sm",mappings:{"default":{"default":"less than above greater than above double line equal"}},
-key:"2A91"},{category:"Sm",mappings:{"default":{"default":"greater than above less than above double line equal"}},key:"2A92"},{category:"Sm",mappings:{"default":{"default":"less than above slanted equal above greater than above slanted equal"}},key:"2A93"},{category:"Sm",mappings:{"default":{"default":"greater than above slanted equal above less than above slanted equal"}},key:"2A94"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than"}},key:"2A95"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than"}},
-key:"2A96"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than with dot inside"}},key:"2A97"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than with dot inside"}},key:"2A98"},{category:"Sm",mappings:{"default":{"default":"double line equal to or less than"}},key:"2A99"},{category:"Sm",mappings:{"default":{"default":"double line equal to or greater than"}},key:"2A9A"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or less than"}},
-key:"2A9B"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or greater than"}},key:"2A9C"},{category:"Sm",mappings:{"default":{"default":"similar or less than"}},key:"2A9D"},{category:"Sm",mappings:{"default":{"default":"similar or greater than"}},key:"2A9E"},{category:"Sm",mappings:{"default":{"default":"similar above less than above equals sign"}},key:"2A9F"},{category:"Sm",mappings:{"default":{"default":"similar above greater than above equals sign"}},key:"2AA0"},{category:"Sm",
-mappings:{"default":{"default":"double nested less than"}},key:"2AA1"},{category:"Sm",mappings:{"default":{"default":"double nested greater than"}},key:"2AA2"},{category:"Sm",mappings:{"default":{"default":"double nested less than with underbar"}},key:"2AA3"},{category:"Sm",mappings:{"default":{"default":"greater than overlapping less than"}},key:"2AA4"},{category:"Sm",mappings:{"default":{"default":"greater than beside less than"}},key:"2AA5"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve"}},
-key:"2AA6"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve"}},key:"2AA7"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve above slanted equal"}},key:"2AA8"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve above slanted equal"}},key:"2AA9"},{category:"Sm",mappings:{"default":{"default":"smaller than"}},key:"2AAA"},{category:"Sm",mappings:{"default":{"default":"larger than"}},key:"2AAB"},{category:"Sm",mappings:{"default":{"default":"smaller than or equal to"}},
-key:"2AAC"},{category:"Sm",mappings:{"default":{"default":"larger than or equal to"}},key:"2AAD"},{category:"Sm",mappings:{"default":{"default":"equals sign with bumpy above"}},key:"2AAE"},{category:"Sm",mappings:{"default":{"default":"precedes above single line equals sign"}},key:"2AAF"},{category:"Sm",mappings:{"default":{"default":"succeeds above single line equals sign"}},key:"2AB0"},{category:"Sm",mappings:{"default":{"default":"precedes above single line not equal to"}},key:"2AB1"},{category:"Sm",
-mappings:{"default":{"default":"succeeds above single line not equal to"}},key:"2AB2"},{category:"Sm",mappings:{"default":{"default":"precedes above equals sign"}},key:"2AB3"},{category:"Sm",mappings:{"default":{"default":"succeeds above equals sign"}},key:"2AB4"},{category:"Sm",mappings:{"default":{"default":"precedes above not equal to"}},key:"2AB5"},{category:"Sm",mappings:{"default":{"default":"succeeds above not equal to"}},key:"2AB6"},{category:"Sm",mappings:{"default":{"default":"precedes above almost equal to"}},
-key:"2AB7"},{category:"Sm",mappings:{"default":{"default":"succeeds above almost equal to"}},key:"2AB8"},{category:"Sm",mappings:{"default":{"default":"precedes above not almost equal to"}},key:"2AB9"},{category:"Sm",mappings:{"default":{"default":"succeeds above not almost equal to"}},key:"2ABA"},{category:"Sm",mappings:{"default":{"default":"double precedes"}},key:"2ABB"},{category:"Sm",mappings:{"default":{"default":"double succeeds"}},key:"2ABC"},{category:"Sm",mappings:{"default":{"default":"subset with dot"}},
-key:"2ABD"},{category:"Sm",mappings:{"default":{"default":"superset with dot"}},key:"2ABE"},{category:"Sm",mappings:{"default":{"default":"subset with plus sign below"}},key:"2ABF"},{category:"Sm",mappings:{"default":{"default":"superset with plus sign below"}},key:"2AC0"},{category:"Sm",mappings:{"default":{"default":"subset with multiplication sign below"}},key:"2AC1"},{category:"Sm",mappings:{"default":{"default":"superset with multiplication sign below"}},key:"2AC2"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to with dot above"}},
-key:"2AC3"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to with dot above"}},key:"2AC4"},{category:"Sm",mappings:{"default":{"default":"subset of above equals sign"}},key:"2AC5"},{category:"Sm",mappings:{"default":{"default":"superset of above equals sign"}},key:"2AC6"},{category:"Sm",mappings:{"default":{"default":"subset of above tilde operator"}},key:"2AC7"},{category:"Sm",mappings:{"default":{"default":"superset of above tilde operator"}},key:"2AC8"},{category:"Sm",mappings:{"default":{"default":"subset of above almost equal to"}},
-key:"2AC9"},{category:"Sm",mappings:{"default":{"default":"superset of above almost equal to"}},key:"2ACA"},{category:"Sm",mappings:{"default":{"default":"subset of above not equal to"}},key:"2ACB"},{category:"Sm",mappings:{"default":{"default":"superset of above not equal to"}},key:"2ACC"},{category:"Sm",mappings:{"default":{"default":"square left open box operator"}},key:"2ACD"},{category:"Sm",mappings:{"default":{"default":"square right open box operator"}},key:"2ACE"},{category:"Sm",mappings:{"default":{"default":"closed subset"}},
-key:"2ACF"},{category:"Sm",mappings:{"default":{"default":"closed superset"}},key:"2AD0"},{category:"Sm",mappings:{"default":{"default":"closed subset or equal to"}},key:"2AD1"},{category:"Sm",mappings:{"default":{"default":"closed superset or equal to"}},key:"2AD2"},{category:"Sm",mappings:{"default":{"default":"subset above superset"}},key:"2AD3"},{category:"Sm",mappings:{"default":{"default":"superset above subset"}},key:"2AD4"},{category:"Sm",mappings:{"default":{"default":"subset above subset"}},
-key:"2AD5"},{category:"Sm",mappings:{"default":{"default":"superset above superset"}},key:"2AD6"},{category:"Sm",mappings:{"default":{"default":"superset beside subset"}},key:"2AD7"},{category:"Sm",mappings:{"default":{"default":"superset beside and joined by dash with subset"}},key:"2AD8"},{category:"Sm",mappings:{"default":{"default":"element of opening downwards"}},key:"2AD9"},{category:"Sm",mappings:{"default":{"default":"pitchfork with tee top"}},key:"2ADA"},{category:"Sm",mappings:{"default":{"default":"transversal intersection"}},
-key:"2ADB"},{category:"Sm",mappings:{"default":{"default":"forking"}},key:"2ADC"},{category:"Sm",mappings:{"default":{"default":"nonforking"}},key:"2ADD"},{category:"Sm",mappings:{"default":{"default":"short left tack"}},key:"2ADE"},{category:"Sm",mappings:{"default":{"default":"short down tack"}},key:"2ADF"},{category:"Sm",mappings:{"default":{"default":"short up tack"}},key:"2AE0"},{category:"Sm",mappings:{"default":{"default":"perpendicular with s"}},key:"2AE1"},{category:"Sm",mappings:{"default":{"default":"vertical bar triple right turnstile"}},
-key:"2AE2"},{category:"Sm",mappings:{"default":{"default":"double vertical bar left turnstile"}},key:"2AE3"},{category:"Sm",mappings:{"default":{"default":"vertical bar double left turnstile"}},key:"2AE4"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double left turnstile"}},key:"2AE5"},{category:"Sm",mappings:{"default":{"default":"long dash from left member of double vertical"}},key:"2AE6"},{category:"Sm",mappings:{"default":{"default":"short down tack with overbar"}},key:"2AE7"},
-{category:"Sm",mappings:{"default":{"default":"short up tack with underbar"}},key:"2AE8"},{category:"Sm",mappings:{"default":{"default":"short up tack above short down tack"}},key:"2AE9"},{category:"Sm",mappings:{"default":{"default":"double down tack"}},key:"2AEA"},{category:"Sm",mappings:{"default":{"default":"double up tack"}},key:"2AEB"},{category:"Sm",mappings:{"default":{"default":"double stroke not sign"}},key:"2AEC"},{category:"Sm",mappings:{"default":{"default":"reversed double stroke not sign"}},
-key:"2AED"},{category:"Sm",mappings:{"default":{"default":"does not divide with reversed negation slash"}},key:"2AEE"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle above"}},key:"2AEF"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle below"}},key:"2AF0"},{category:"Sm",mappings:{"default":{"default":"down tack with circle below"}},key:"2AF1"},{category:"Sm",mappings:{"default":{"default":"parallel with horizontal stroke"}},key:"2AF2"},{category:"Sm",
-mappings:{"default":{"default":"parallel with tilde operator"}},key:"2AF3"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar binary relation"}},key:"2AF4"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar with horizontal stroke"}},key:"2AF5"},{category:"Sm",mappings:{"default":{"default":"triple colon operator"}},key:"2AF6"},{category:"Sm",mappings:{"default":{"default":"triple nested less than"}},key:"2AF7"},{category:"Sm",mappings:{"default":{"default":"triple nested greater than"}},
-key:"2AF8"},{category:"Sm",mappings:{"default":{"default":"double line slanted less than or equal to"}},key:"2AF9"},{category:"Sm",mappings:{"default":{"default":"double line slanted greater than or equal to"}},key:"2AFA"},{category:"Sm",mappings:{"default":{"default":"triple solidus binary relation"}},key:"2AFB"},{category:"Sm",mappings:{"default":{"default":"large triple vertical bar operator"}},key:"2AFC"},{category:"Sm",mappings:{"default":{"default":"double solidus operator"}},key:"2AFD"},{category:"Sm",
-mappings:{"default":{"default":"white vertical bar"}},key:"2AFE"},{category:"Sm",mappings:{"default":{"default":"n ary white vertical bar"}},key:"2AFF"},{category:"Pd",mappings:{"default":{"default":"wave dash"}},key:"301C"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical comma"}},key:"FE10"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical colon"}},key:"FE13"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical semicolon"}},
-key:"FE14"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical exclamation mark"}},key:"FE15"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical question mark"}},key:"FE16"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical horizontal ellipsis"}},key:"FE19"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical two dot leader",alternative:"glyph for vertical two dot leader"}},key:"FE30"},{category:"Pd",
-mappings:{"default":{"default":"presentation form for vertical em dash",alternative:"glyph for vertical em dash"}},key:"FE31"},{category:"Pd",mappings:{"default":{"default":"presentation form for vertical en dash",alternative:"glyph for vertical en dash"}},key:"FE32"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical low line",alternative:"glyph for vertical spacing underscore"}},key:"FE33"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical wavy low line",
-alternative:"glyph for vertical spacing wavy underscore"}},key:"FE34"},{category:"Po",mappings:{"default":{"default":"sesame dot"}},key:"FE45"},{category:"Po",mappings:{"default":{"default":"white sesame dot"}},key:"FE46"},{category:"Po",mappings:{"default":{"default":"dashed overline",alternative:"spacing dashed overscore"}},key:"FE49"},{category:"Po",mappings:{"default":{"default":"centerline overline",alternative:"spacing centerline overscore"}},key:"FE4A"},{category:"Po",mappings:{"default":{"default":"wavy overline",
-alternative:"spacing wavy overscore"}},key:"FE4B"},{category:"Po",mappings:{"default":{"default":"double wavy overline",alternative:"spacing double wavy overscore"}},key:"FE4C"},{category:"Pc",mappings:{"default":{"default":"dashed low line",alternative:"spacing dashed underscore"}},key:"FE4D"},{category:"Pc",mappings:{"default":{"default":"centerline low line",alternative:"spacing centerline underscore"}},key:"FE4E"},{category:"Pc",mappings:{"default":{"default":"wavy low line",alternative:"spacing wavy underscore"}},
-key:"FE4F"},{category:"Po",mappings:{"default":{"default":"small comma"}},key:"FE50"},{category:"Po",mappings:{"default":{"default":"small full stop",alternative:"small period"}},key:"FE52"},{category:"Po",mappings:{"default":{"default":"small semicolon"}},key:"FE54"},{category:"Po",mappings:{"default":{"default":"small colon"}},key:"FE55"},{category:"Po",mappings:{"default":{"default":"small question mark"}},key:"FE56"},{category:"Po",mappings:{"default":{"default":"small exclamation mark"}},key:"FE57"},
-{category:"Pd",mappings:{"default":{"default":"small em dash"}},key:"FE58"},{category:"Po",mappings:{"default":{"default":"small number sign"}},key:"FE5F"},{category:"Po",mappings:{"default":{"default":"small ampersand"}},key:"FE60"},{category:"Po",mappings:{"default":{"default":"small asterisk"}},key:"FE61"},{category:"Sm",mappings:{"default":{"default":"small plus sign"}},key:"FE62"},{category:"Pd",mappings:{"default":{"default":"small hyphen minus"}},key:"FE63"},{category:"Sm",mappings:{"default":{"default":"small less than sign"}},
-key:"FE64"},{category:"Sm",mappings:{"default":{"default":"small greater than sign"}},key:"FE65"},{category:"Sm",mappings:{"default":{"default":"small equals sign"}},key:"FE66"},{category:"Po",mappings:{"default":{"default":"small reverse solidus",alternative:"small backslash"}},key:"FE68"},{category:"Sc",mappings:{"default":{"default":"small dollar sign"}},key:"FE69"},{category:"Po",mappings:{"default":{"default":"small percent sign"}},key:"FE6A"},{category:"Po",mappings:{"default":{"default":"small commercial at"}},
-key:"FE6B"},{category:"Po",mappings:{"default":{"default":"fullwidth exclamation mark"}},key:"FF01"},{category:"Po",mappings:{"default":{"default":"fullwidth quotation mark"}},key:"FF02"},{category:"Po",mappings:{"default":{"default":"fullwidth number sign"}},key:"FF03"},{category:"Sc",mappings:{"default":{"default":"fullwidth dollar sign"}},key:"FF04"},{category:"Po",mappings:{"default":{"default":"fullwidth percent sign"}},key:"FF05"},{category:"Po",mappings:{"default":{"default":"fullwidth ampersand"}},
-key:"FF06"},{category:"Po",mappings:{"default":{"default":"fullwidth apostrophe"}},key:"FF07"},{category:"Po",mappings:{"default":{"default":"fullwidth asterisk"}},key:"FF0A"},{category:"Sm",mappings:{"default":{"default":"fullwidth plus sign"}},key:"FF0B"},{category:"Po",mappings:{"default":{"default":"fullwidth comma"}},key:"FF0C"},{category:"Pd",mappings:{"default":{"default":"fullwidth hyphen minus"}},key:"FF0D"},{category:"Po",mappings:{"default":{"default":"fullwidth full stop",alternative:"fullwidth period"}},
-key:"FF0E"},{category:"Po",mappings:{"default":{"default":"fullwidth solidus",alternative:"fullwidth slash"}},key:"FF0F"},{category:"Po",mappings:{"default":{"default":"fullwidth colon"}},key:"FF1A"},{category:"Po",mappings:{"default":{"default":"fullwidth semicolon"}},key:"FF1B"},{category:"Sm",mappings:{"default":{"default":"fullwidth less than sign"}},key:"FF1C"},{category:"Sm",mappings:{"default":{"default":"fullwidth equals sign"}},key:"FF1D"},{category:"Sm",mappings:{"default":{"default":"fullwidth greater than sign"}},
-key:"FF1E"},{category:"Po",mappings:{"default":{"default":"fullwidth question mark"}},key:"FF1F"},{category:"Po",mappings:{"default":{"default":"fullwidth commercial at"}},key:"FF20"},{category:"Po",mappings:{"default":{"default":"fullwidth reverse solidus",alternative:"fullwidth backslash"}},key:"FF3C"},{category:"Sk",mappings:{"default":{"default":"fullwidth circumflex accent",alternative:"fullwidth spacing circumflex"}},key:"FF3E"},{category:"Pc",mappings:{"default":{"default":"fullwidth low line",
-alternative:"fullwidth spacing underscore"}},key:"FF3F"},{category:"Sk",mappings:{"default":{"default":"fullwidth grave accent",alternative:"fullwidth spacing grave"}},key:"FF40"},{category:"Sm",mappings:{"default":{"default":"fullwidth vertical line",alternative:"fullwidth vertical bar"}},key:"FF5C"},{category:"Sm",mappings:{"default":{"default":"fullwidth tilde",alternative:"fullwidth spacing tilde"}},key:"FF5E"},{category:"Sc",mappings:{"default":{"default":"fullwidth cent sign"}},key:"FFE0"},
-{category:"Sc",mappings:{"default":{"default":"fullwidth pound sign"}},key:"FFE1"},{category:"Sm",mappings:{"default":{"default":"fullwidth not sign"}},key:"FFE2"},{category:"Sk",mappings:{"default":{"default":"fullwidth macron",alternative:"fullwidth spacing macron"}},key:"FFE3"},{category:"So",mappings:{"default":{"default":"fullwidth broken bar",alternative:"fullwidth broken vertical bar"}},key:"FFE4"},{category:"Sc",mappings:{"default":{"default":"fullwidth yen sign"}},key:"FFE5"},{category:"Sc",
-mappings:{"default":{"default":"fullwidth won sign"}},key:"FFE6"},{category:"So",mappings:{"default":{"default":"halfwidth forms light vertical"}},key:"FFE8"},{category:"So",mappings:{"default":{"default":"halfwidth black square"}},key:"FFED"},{category:"So",mappings:{"default":{"default":"halfwidth white circle"}},key:"FFEE"},{category:"Ll",names:[],key:"03B1",mappings:{"default":{"default":"greek small letter alpha","short":"alpha"}}},{category:"Ll",names:[],key:"03B2",mappings:{"default":{"default":"greek small letter beta",
-"short":"beta"}}},{category:"Ll",names:[],key:"03B3",mappings:{"default":{"default":"greek small letter gamma","short":"gamma"}}},{category:"Ll",names:[],key:"03B4",mappings:{"default":{"default":"greek small letter delta","short":"delta"}}},{category:"Ll",names:[],key:"03B5",mappings:{"default":{"default":"greek small letter epsilon","short":"epsilon"}}},{category:"Ll",names:[],key:"03B6",mappings:{"default":{"default":"greek small letter zeta","short":"zeta"}}},{category:"Ll",names:[],key:"03B7",
-mappings:{"default":{"default":"greek small letter eta","short":"eta"}}},{category:"Ll",names:[],key:"03B8",mappings:{"default":{"default":"greek small letter theta","short":"theta"}}},{category:"Ll",names:[],key:"03B9",mappings:{"default":{"default":"greek small letter iota","short":"iota"}}},{category:"Ll",names:[],key:"03BA",mappings:{"default":{"default":"greek small letter kappa","short":"kappa"}}},{category:"Ll",names:[],key:"03BB",mappings:{"default":{"default":"greek small letter lamda",alternative:"greek small letter lambda",
-"short":"lamda"}}},{category:"Ll",names:[],key:"03BC",mappings:{"default":{"default":"greek small letter mu","short":"mu"}}},{category:"Ll",names:[],key:"03BD",mappings:{"default":{"default":"greek small letter nu","short":"nu"}}},{category:"Ll",names:[],key:"03BE",mappings:{"default":{"default":"greek small letter xi","short":"xi"}}},{category:"Ll",names:[],key:"03BF",mappings:{"default":{"default":"greek small letter omicron","short":"omicron"}}},{category:"Ll",names:[],key:"03C0",mappings:{"default":{"default":"greek small letter pi",
-"short":"pi"}}},{category:"Ll",names:[],key:"03C1",mappings:{"default":{"default":"greek small letter rho","short":"rho"}}},{category:"Ll",names:[],key:"03C2",mappings:{"default":{"default":"greek small letter final sigma","short":"final sigma"}}},{category:"Ll",names:[],key:"03C3",mappings:{"default":{"default":"greek small letter sigma","short":"sigma"}}},{category:"Ll",names:[],key:"03C4",mappings:{"default":{"default":"greek small letter tau","short":"tau"}}},{category:"Ll",names:[],key:"03C5",
-mappings:{"default":{"default":"greek small letter upsilon","short":"upsilon"}}},{category:"Ll",names:[],key:"03C6",mappings:{"default":{"default":"greek small letter phi","short":"phi"}}},{category:"Ll",names:[],key:"03C7",mappings:{"default":{"default":"greek small letter chi","short":"chi"}}},{category:"Ll",names:[],key:"03C8",mappings:{"default":{"default":"greek small letter psi","short":"psi"}}},{category:"Ll",names:[],key:"03C9",mappings:{"default":{"default":"greek small letter omega","short":"omega"}}},
-{category:"Ll",mappings:{"default":{"default":"greek beta symbol",alternative:"greek small letter curled beta","short":"beta"}},key:"03D0"},{category:"Ll",mappings:{"default":{"default":"greek theta symbol",alternative:"greek small letter script theta","short":"theta"}},key:"03D1"},{category:"Ll",mappings:{"default":{"default":"greek phi symbol",alternative:"greek small letter script phi","short":"phi"}},key:"03D5"},{category:"Ll",mappings:{"default":{"default":"greek pi symbol",alternative:"greek small letter omega pi",
-"short":"pi"}},key:"03D6"},{category:"Ll",mappings:{"default":{"default":"greek kai symbol","short":"kai"}},key:"03D7"},{category:"Ll",mappings:{"default":{"default":"greek kappa symbol",alternative:"greek small letter script kappa","short":"kappa"}},key:"03F0"},{category:"Ll",mappings:{"default":{"default":"greek rho symbol",alternative:"greek small letter tailed rho","short":"rho"}},key:"03F1"},{category:"Ll",mappings:{"default":{"default":"greek lunate epsilon symbol","short":"epsilon"}},key:"03F5"},
-{category:"Sm",mappings:{"default":{"default":"greek reversed lunate epsilon symbol","short":"reversed epsilon"}},key:"03F6"},{category:"Lu",names:[],key:"0391",mappings:{"default":{"default":"greek capital letter alpha","short":"cap alpha"}}},{category:"Lu",names:[],key:"0392",mappings:{"default":{"default":"greek capital letter beta","short":"cap beta"}}},{category:"Lu",names:[],key:"0393",mappings:{"default":{"default":"greek capital letter gamma","short":"cap gamma"}}},{category:"Lu",names:[],
-key:"0394",mappings:{"default":{"default":"greek capital letter delta","short":"cap delta"}}},{category:"Lu",names:[],key:"0395",mappings:{"default":{"default":"greek capital letter epsilon","short":"cap epsilon"}}},{category:"Lu",names:[],key:"0396",mappings:{"default":{"default":"greek capital letter zeta","short":"cap zeta"}}},{category:"Lu",names:[],key:"0397",mappings:{"default":{"default":"greek capital letter eta","short":"cap eta"}}},{category:"Lu",names:[],key:"0398",mappings:{"default":{"default":"greek capital letter theta",
-"short":"cap theta"}}},{category:"Lu",names:[],key:"0399",mappings:{"default":{"default":"greek capital letter iota","short":"cap iota"}}},{category:"Lu",names:[],key:"039A",mappings:{"default":{"default":"greek capital letter kappa","short":"cap kappa"}}},{category:"Lu",names:[],key:"039B",mappings:{"default":{"default":"greek capital letter lamda",alternative:"greek capital letter lambda","short":"cap lamda"}}},{category:"Lu",names:[],key:"039C",mappings:{"default":{"default":"greek capital letter mu",
-"short":"cap mu"}}},{category:"Lu",names:[],key:"039D",mappings:{"default":{"default":"greek capital letter nu","short":"cap nu"}}},{category:"Lu",names:[],key:"039E",mappings:{"default":{"default":"greek capital letter xi","short":"cap xi"}}},{category:"Lu",names:[],key:"039F",mappings:{"default":{"default":"greek capital letter omicron","short":"cap omicron"}}},{category:"Lu",names:[],key:"03A0",mappings:{"default":{"default":"greek capital letter pi","short":"cap pi"}}},{category:"Lu",names:[],
-key:"03A1",mappings:{"default":{"default":"greek capital letter rho","short":"cap rho"}}},{category:"Lu",names:[],key:"03A3",mappings:{"default":{"default":"greek capital letter sigma","short":"cap sigma"}}},{category:"Lu",names:[],key:"03A4",mappings:{"default":{"default":"greek capital letter tau","short":"cap tau"}}},{category:"Lu",names:[],key:"03A5",mappings:{"default":{"default":"greek capital letter upsilon","short":"cap upsilon"}}},{category:"Lu",names:[],key:"03A6",mappings:{"default":{"default":"greek capital letter phi",
-"short":"cap phi"}}},{category:"Lu",names:[],key:"03A7",mappings:{"default":{"default":"greek capital letter chi","short":"cap chi"}}},{category:"Lu",names:[],key:"03A8",mappings:{"default":{"default":"greek capital letter psi","short":"cap psi"}}},{category:"Lu",names:[],key:"03A9",mappings:{"default":{"default":"greek capital letter omega","short":"cap omega"}}},{category:"Lu",mappings:{"default":{"default":"greek capital theta symbol","short":"cap theta"}},key:"03F4"},{category:"Ps",mappings:{"default":{"default":"left parenthesis",
-alternative:"opening parenthesis"}},key:"0028"},{category:"Pe",mappings:{"default":{"default":"right parenthesis",alternative:"closing parenthesis"}},key:"0029"},{category:"Ps",mappings:{"default":{"default":"left square bracket",alternative:"opening square bracket"}},key:"005B"},{category:"Pe",mappings:{"default":{"default":"right square bracket",alternative:"closing square bracket"}},key:"005D"},{category:"Ps",mappings:{"default":{"default":"left curly bracket",alternative:"opening curly bracket"}},
-key:"007B"},{category:"Pe",mappings:{"default":{"default":"right curly bracket",alternative:"closing curly bracket"}},key:"007D"},{category:"Ps",mappings:{"default":{"default":"left square bracket with quill"}},key:"2045"},{category:"Pe",mappings:{"default":{"default":"right square bracket with quill"}},key:"2046"},{category:"Sm",mappings:{"default":{"default":"left ceiling"}},key:"2308"},{category:"Sm",mappings:{"default":{"default":"right ceiling"}},key:"2309"},{category:"Sm",mappings:{"default":{"default":"left floor"}},
-key:"230A"},{category:"Sm",mappings:{"default":{"default":"right floor"}},key:"230B"},{category:"So",mappings:{"default":{"default":"bottom right crop"}},key:"230C"},{category:"So",mappings:{"default":{"default":"bottom left crop"}},key:"230D"},{category:"So",mappings:{"default":{"default":"top right crop"}},key:"230E"},{category:"So",mappings:{"default":{"default":"top left crop"}},key:"230F"},{category:"So",mappings:{"default":{"default":"top left corner"}},key:"231C"},{category:"So",mappings:{"default":{"default":"top right corner"}},
-key:"231D"},{category:"So",mappings:{"default":{"default":"bottom left corner"}},key:"231E"},{category:"So",mappings:{"default":{"default":"bottom right corner"}},key:"231F"},{category:"Sm",mappings:{"default":{"default":"top half integral"}},key:"2320"},{category:"Sm",mappings:{"default":{"default":"bottom half integral"}},key:"2321"},{category:"Ps",mappings:{"default":{"default":"left pointing angle bracket",alternative:"bra"}},key:"2329"},{category:"Pe",mappings:{"default":{"default":"right pointing angle bracket",
-alternative:"ket"}},key:"232A"},{category:"Sm",mappings:{"default":{"default":"left parenthesis upper hook"}},key:"239B"},{category:"Sm",mappings:{"default":{"default":"left parenthesis extension"}},key:"239C"},{category:"Sm",mappings:{"default":{"default":"left parenthesis lower hook"}},key:"239D"},{category:"Sm",mappings:{"default":{"default":"right parenthesis upper hook"}},key:"239E"},{category:"Sm",mappings:{"default":{"default":"right parenthesis extension"}},key:"239F"},{category:"Sm",mappings:{"default":{"default":"right parenthesis lower hook"}},
-key:"23A0"},{category:"Sm",mappings:{"default":{"default":"left square bracket upper corner"}},key:"23A1"},{category:"Sm",mappings:{"default":{"default":"left square bracket extension"}},key:"23A2"},{category:"Sm",mappings:{"default":{"default":"left square bracket lower corner"}},key:"23A3"},{category:"Sm",mappings:{"default":{"default":"right square bracket upper corner"}},key:"23A4"},{category:"Sm",mappings:{"default":{"default":"right square bracket extension"}},key:"23A5"},{category:"Sm",mappings:{"default":{"default":"right square bracket lower corner"}},
-key:"23A6"},{category:"Sm",mappings:{"default":{"default":"left curly bracket upper hook"}},key:"23A7"},{category:"Sm",mappings:{"default":{"default":"left curly bracket middle piece"}},key:"23A8"},{category:"Sm",mappings:{"default":{"default":"left curly bracket lower hook"}},key:"23A9"},{category:"Sm",mappings:{"default":{"default":"curly bracket extension"}},key:"23AA"},{category:"Sm",mappings:{"default":{"default":"right curly bracket upper hook"}},key:"23AB"},{category:"Sm",mappings:{"default":{"default":"right curly bracket middle piece"}},
-key:"23AC"},{category:"Sm",mappings:{"default":{"default":"right curly bracket lower hook"}},key:"23AD"},{category:"Sm",mappings:{"default":{"default":"integral extension"}},key:"23AE"},{category:"Sm",mappings:{"default":{"default":"horizontal line extension"}},key:"23AF"},{category:"Sm",mappings:{"default":{"default":"upper left or lower right curly bracket section"}},key:"23B0"},{category:"Sm",mappings:{"default":{"default":"upper right or lower left curly bracket section"}},key:"23B1"},{category:"Sm",
-mappings:{"default":{"default":"summation top"}},key:"23B2"},{category:"Sm",mappings:{"default":{"default":"summation bottom"}},key:"23B3"},{category:"So",mappings:{"default":{"default":"top square bracket"}},key:"23B4"},{category:"So",mappings:{"default":{"default":"bottom square bracket"}},key:"23B5"},{category:"So",mappings:{"default":{"default":"bottom square bracket over top square bracket"}},key:"23B6"},{category:"So",mappings:{"default":{"default":"radical symbol bottom"}},key:"23B7"},{category:"So",
-mappings:{"default":{"default":"left vertical box line"}},key:"23B8"},{category:"So",mappings:{"default":{"default":"right vertical box line"}},key:"23B9"},{category:"Sm",mappings:{"default":{"default":"top parenthesis"}},key:"23DC"},{category:"Sm",mappings:{"default":{"default":"bottom parenthesis"}},key:"23DD"},{category:"Sm",mappings:{"default":{"default":"top curly bracket"}},key:"23DE"},{category:"Sm",mappings:{"default":{"default":"bottom curly bracket"}},key:"23DF"},{category:"Sm",mappings:{"default":{"default":"top tortoise shell bracket"}},
-key:"23E0"},{category:"Sm",mappings:{"default":{"default":"bottom tortoise shell bracket"}},key:"23E1"},{category:"Ps",mappings:{"default":{"default":"medium left parenthesis ornament"}},key:"2768"},{category:"Pe",mappings:{"default":{"default":"medium right parenthesis ornament"}},key:"2769"},{category:"Ps",mappings:{"default":{"default":"medium flattened left parenthesis ornament"}},key:"276A"},{category:"Pe",mappings:{"default":{"default":"medium flattened right parenthesis ornament"}},key:"276B"},
-{category:"Ps",mappings:{"default":{"default":"medium left pointing angle bracket ornament"}},key:"276C"},{category:"Pe",mappings:{"default":{"default":"medium right pointing angle bracket ornament"}},key:"276D"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle quotation mark ornament"}},key:"276E"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle quotation mark ornament"}},key:"276F"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle bracket ornament"}},
-key:"2770"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle bracket ornament"}},key:"2771"},{category:"Ps",mappings:{"default":{"default":"light left tortoise shell bracket ornament"}},key:"2772"},{category:"Pe",mappings:{"default":{"default":"light right tortoise shell bracket ornament"}},key:"2773"},{category:"Ps",mappings:{"default":{"default":"medium left curly bracket ornament"}},key:"2774"},{category:"Pe",mappings:{"default":{"default":"medium right curly bracket ornament"}},
-key:"2775"},{category:"Ps",mappings:{"default":{"default":"left s shaped bag delimiter"}},key:"27C5"},{category:"Pe",mappings:{"default":{"default":"right s shaped bag delimiter"}},key:"27C6"},{category:"Ps",mappings:{"default":{"default":"mathematical left white square bracket"}},key:"27E6"},{category:"Pe",mappings:{"default":{"default":"mathematical right white square bracket"}},key:"27E7"},{category:"Ps",mappings:{"default":{"default":"mathematical left angle bracket"}},key:"27E8"},{category:"Pe",
-mappings:{"default":{"default":"mathematical right angle bracket"}},key:"27E9"},{category:"Ps",mappings:{"default":{"default":"mathematical left double angle bracket"}},key:"27EA"},{category:"Pe",mappings:{"default":{"default":"mathematical right double angle bracket"}},key:"27EB"},{category:"Ps",mappings:{"default":{"default":"mathematical left white tortoise shell bracket"}},key:"27EC"},{category:"Pe",mappings:{"default":{"default":"mathematical right white tortoise shell bracket"}},key:"27ED"},
-{category:"Ps",mappings:{"default":{"default":"mathematical left flattened parenthesis"}},key:"27EE"},{category:"Pe",mappings:{"default":{"default":"mathematical right flattened parenthesis"}},key:"27EF"},{category:"Ps",mappings:{"default":{"default":"left white curly bracket"}},key:"2983"},{category:"Pe",mappings:{"default":{"default":"right white curly bracket"}},key:"2984"},{category:"Ps",mappings:{"default":{"default":"left white parenthesis"}},key:"2985"},{category:"Pe",mappings:{"default":{"default":"right white parenthesis"}},
-key:"2986"},{category:"Ps",mappings:{"default":{"default":"z notation left image bracket"}},key:"2987"},{category:"Pe",mappings:{"default":{"default":"z notation right image bracket"}},key:"2988"},{category:"Ps",mappings:{"default":{"default":"z notation left binding bracket"}},key:"2989"},{category:"Pe",mappings:{"default":{"default":"z notation right binding bracket"}},key:"298A"},{category:"Ps",mappings:{"default":{"default":"left square bracket with underbar"}},key:"298B"},{category:"Pe",mappings:{"default":{"default":"right square bracket with underbar"}},
-key:"298C"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in top corner"}},key:"298D"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in bottom corner"}},key:"298E"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in bottom corner"}},key:"298F"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in top corner"}},key:"2990"},{category:"Ps",mappings:{"default":{"default":"left angle bracket with dot"}},
-key:"2991"},{category:"Pe",mappings:{"default":{"default":"right angle bracket with dot"}},key:"2992"},{category:"Ps",mappings:{"default":{"default":"left arc less than bracket"}},key:"2993"},{category:"Pe",mappings:{"default":{"default":"right arc greater than bracket"}},key:"2994"},{category:"Ps",mappings:{"default":{"default":"double left arc greater than bracket"}},key:"2995"},{category:"Pe",mappings:{"default":{"default":"double right arc less than bracket"}},key:"2996"},{category:"Ps",mappings:{"default":{"default":"left black tortoise shell bracket"}},
-key:"2997"},{category:"Pe",mappings:{"default":{"default":"right black tortoise shell bracket"}},key:"2998"},{category:"Ps",mappings:{"default":{"default":"left wiggly fence"}},key:"29D8"},{category:"Pe",mappings:{"default":{"default":"right wiggly fence"}},key:"29D9"},{category:"Ps",mappings:{"default":{"default":"left double wiggly fence"}},key:"29DA"},{category:"Pe",mappings:{"default":{"default":"right double wiggly fence"}},key:"29DB"},{category:"Ps",mappings:{"default":{"default":"left pointing curved angle bracket"}},
-key:"29FC"},{category:"Pe",mappings:{"default":{"default":"right pointing curved angle bracket"}},key:"29FD"},{category:"Ps",mappings:{"default":{"default":"top left half bracket"}},key:"2E22"},{category:"Pe",mappings:{"default":{"default":"top right half bracket"}},key:"2E23"},{category:"Ps",mappings:{"default":{"default":"bottom left half bracket"}},key:"2E24"},{category:"Pe",mappings:{"default":{"default":"bottom right half bracket"}},key:"2E25"},{category:"Ps",mappings:{"default":{"default":"left sideways u bracket"}},
-key:"2E26"},{category:"Pe",mappings:{"default":{"default":"right sideways u bracket"}},key:"2E27"},{category:"Ps",mappings:{"default":{"default":"left double parenthesis"}},key:"2E28"},{category:"Pe",mappings:{"default":{"default":"right double parenthesis"}},key:"2E29"},{category:"Ps",mappings:{"default":{"default":"left angle bracket",alternative:"opening angle bracket"}},key:"3008"},{category:"Pe",mappings:{"default":{"default":"right angle bracket",alternative:"closing angle bracket"}},key:"3009"},
-{category:"Ps",mappings:{"default":{"default":"left double angle bracket",alternative:"opening double angle bracket"}},key:"300A"},{category:"Pe",mappings:{"default":{"default":"right double angle bracket",alternative:"closing double angle bracket"}},key:"300B"},{category:"Ps",mappings:{"default":{"default":"left corner bracket",alternative:"opening corner bracket"}},key:"300C"},{category:"Pe",mappings:{"default":{"default":"right corner bracket",alternative:"closing corner bracket"}},key:"300D"},
-{category:"Ps",mappings:{"default":{"default":"left white corner bracket",alternative:"opening white corner bracket"}},key:"300E"},{category:"Pe",mappings:{"default":{"default":"right white corner bracket",alternative:"closing white corner bracket"}},key:"300F"},{category:"Ps",mappings:{"default":{"default":"left black lenticular bracket",alternative:"opening black lenticular bracket"}},key:"3010"},{category:"Pe",mappings:{"default":{"default":"right black lenticular bracket",alternative:"closing black lenticular bracket"}},
-key:"3011"},{category:"Ps",mappings:{"default":{"default":"left tortoise shell bracket",alternative:"opening tortoise shell bracket"}},key:"3014"},{category:"Pe",mappings:{"default":{"default":"right tortoise shell bracket",alternative:"closing tortoise shell bracket"}},key:"3015"},{category:"Ps",mappings:{"default":{"default":"left white lenticular bracket",alternative:"opening white lenticular bracket"}},key:"3016"},{category:"Pe",mappings:{"default":{"default":"right white lenticular bracket",
-alternative:"closing white lenticular bracket"}},key:"3017"},{category:"Ps",mappings:{"default":{"default":"left white tortoise shell bracket",alternative:"opening white tortoise shell bracket"}},key:"3018"},{category:"Pe",mappings:{"default":{"default":"right white tortoise shell bracket",alternative:"closing white tortoise shell bracket"}},key:"3019"},{category:"Ps",mappings:{"default":{"default":"left white square bracket",alternative:"opening white square bracket"}},key:"301A"},{category:"Pe",
-mappings:{"default":{"default":"right white square bracket",alternative:"closing white square bracket"}},key:"301B"},{category:"Ps",mappings:{"default":{"default":"reversed double prime quotation mark"}},key:"301D"},{category:"Pe",mappings:{"default":{"default":"double prime quotation mark"}},key:"301E"},{category:"Pe",mappings:{"default":{"default":"low double prime quotation mark"}},key:"301F"},{category:"Ps",mappings:{"default":{"default":"ornate left parenthesis"}},key:"FD3E"},{category:"Pe",
-mappings:{"default":{"default":"ornate right parenthesis"}},key:"FD3F"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white lenticular bracket"}},key:"FE17"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white lenticular bracket"}},key:"FE18"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left parenthesis",alternative:"glyph for vertical opening parenthesis"}},key:"FE35"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right parenthesis",
-alternative:"glyph for vertical closing parenthesis"}},key:"FE36"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left curly bracket",alternative:"glyph for vertical opening curly bracket"}},key:"FE37"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right curly bracket",alternative:"glyph for vertical closing curly bracket"}},key:"FE38"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left tortoise shell bracket",
-alternative:"glyph for vertical opening tortoise shell bracket"}},key:"FE39"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right tortoise shell bracket",alternative:"glyph for vertical closing tortoise shell bracket"}},key:"FE3A"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left black lenticular bracket",alternative:"glyph for vertical opening black lenticular bracket"}},key:"FE3B"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right black lenticular bracket",
-alternative:"glyph for vertical closing black lenticular bracket"}},key:"FE3C"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left double angle bracket",alternative:"glyph for vertical opening double angle bracket"}},key:"FE3D"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right double angle bracket",alternative:"glyph for vertical closing double angle bracket"}},key:"FE3E"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left angle bracket",
-alternative:"glyph for vertical opening angle bracket"}},key:"FE3F"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right angle bracket",alternative:"glyph for vertical closing angle bracket"}},key:"FE40"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left corner bracket",alternative:"glyph for vertical opening corner bracket"}},key:"FE41"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right corner bracket",
-alternative:"glyph for vertical closing corner bracket"}},key:"FE42"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white corner bracket",alternative:"glyph for vertical opening white corner bracket"}},key:"FE43"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white corner bracket",alternative:"glyph for vertical closing white corner bracket"}},key:"FE44"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left square bracket"}},
-key:"FE47"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right square bracket"}},key:"FE48"},{category:"Ps",mappings:{"default":{"default":"small left parenthesis",alternative:"small opening parenthesis"}},key:"FE59"},{category:"Pe",mappings:{"default":{"default":"small right parenthesis",alternative:"small closing parenthesis"}},key:"FE5A"},{category:"Ps",mappings:{"default":{"default":"small left curly bracket",alternative:"small opening curly bracket"}},key:"FE5B"},
-{category:"Pe",mappings:{"default":{"default":"small right curly bracket",alternative:"small closing curly bracket"}},key:"FE5C"},{category:"Ps",mappings:{"default":{"default":"small left tortoise shell bracket",alternative:"small opening tortoise shell bracket"}},key:"FE5D"},{category:"Pe",mappings:{"default":{"default":"small right tortoise shell bracket",alternative:"small closing tortoise shell bracket"}},key:"FE5E"},{category:"Ps",mappings:{"default":{"default":"fullwidth left parenthesis",alternative:"fullwidth opening parenthesis"}},
-key:"FF08"},{category:"Pe",mappings:{"default":{"default":"fullwidth right parenthesis",alternative:"fullwidth closing parenthesis"}},key:"FF09"},{category:"Ps",mappings:{"default":{"default":"fullwidth left square bracket",alternative:"fullwidth opening square bracket"}},key:"FF3B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right square bracket",alternative:"fullwidth closing square bracket"}},key:"FF3D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left curly bracket",
-alternative:"fullwidth opening curly bracket"}},key:"FF5B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right curly bracket",alternative:"fullwidth closing curly bracket"}},key:"FF5D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left white parenthesis"}},key:"FF5F"},{category:"Pe",mappings:{"default":{"default":"fullwidth right white parenthesis"}},key:"FF60"},{category:"Ps",mappings:{"default":{"default":"halfwidth left corner bracket",alternative:"halfwidth opening corner bracket"}},
-key:"FF62"},{category:"Pe",mappings:{"default":{"default":"halfwidth right corner bracket",alternative:"halfwidth closing corner bracket"}},key:"FF63"}];
-cvox.AndroidMathMap.FUNCTION_MAPPINGS_=[{category:"Elementary",mappings:{"default":{"default":"logarithm",alternative:"logarithm function","short":"log"}},key:"log",names:["log"]},{category:"Elementary",mappings:{"default":{"default":"natural logarithm",alternative:"natural logarithm function","short":"natural log"}},key:"ln",names:["ln"]},{category:"Elementary",mappings:{"default":{"default":"logarithm base 10","short":"log base 10"}},key:"lg",names:["lg"]},{category:"Elementary",mappings:{"default":{"default":"exponential",
-alternative:"exponential function","short":"exp"}},key:"exp",names:["exp","expt"]},{category:"Elementary",mappings:{"default":{"default":"greatest common divisor","short":"gcd"}},key:"gcd",names:["gcd"]},{category:"Elementary",mappings:{"default":{"default":"least common multiple","short":"lcm"}},key:"gcd",names:["gcd"]},{category:"Complex",mappings:{"default":{"default":"argument","short":"arg"}},key:"arg",names:["arg"]},{category:"Complex",mappings:{"default":{"default":"imaginary part","short":"imaginary"}},
-key:"im",names:["im"]},{category:"Complex",mappings:{"default":{"default":"real part","short":"real"}},key:"re",names:["re"]},{category:"Limits",mappings:{"default":{"default":"infimum","short":"inf"}},key:"inf",names:["inf"]},{category:"Limits",mappings:{"default":{"default":"limit","short":"lim"}},key:"lim",names:["lim"]},{category:"Limits",mappings:{"default":{"default":"infimum default",alternative:"inferior limit","short":"liminf"}},key:"liminf",names:["lim inf"]},{category:"Limits",mappings:{"default":{"default":"supremum limit",
-alternative:"superior limit","short":"limsup"}},key:"limsup",names:["lim sup"]},{category:"Limits",mappings:{"default":{"default":"maximum","short":"max"}},key:"max",names:["max"]},{category:"Limits",mappings:{"default":{"default":"minimum","short":"min"}},key:"min",names:["min"]},{category:"Limits",mappings:{"default":{"default":"supremum","short":"sup"}},key:"sup",names:["sup"]},{category:"Limits",mappings:{"default":{"default":"injective limit",alternative:"direct limit","short":"colimit"}},key:"injlim",
-names:["injlim","inj lim"]},{category:"Limits",mappings:{"default":{"default":"projective limit",alternative:"inverse limit","short":"limit"}},key:"projlim",names:["projlim","proj lim"]},{category:"Elementary",mappings:{"default":{"default":"modulo","short":"mod"}},key:"mod",names:["mod"]},{category:"Probability",mappings:{"default":{"default":"probability"}},key:"Pr",names:["Pr"]},{category:"Trigonometric",mappings:{"default":{"default":"cosine function","short":"cosine"}},key:"cos",names:["cos",
-"cosine"]},{category:"Trigonometric",mappings:{"default":{"default":"cotangent function","short":"cotangent"}},key:"cot",names:["cot"]},{category:"Trigonometric",mappings:{"default":{"default":"cosecant function","short":"cosecant"}},key:"csc",names:["csc"]},{category:"Trigonometric",mappings:{"default":{"default":"secant function","short":"secant"}},key:"sec",names:["sec"]},{category:"Trigonometric",mappings:{"default":{"default":"sine function",alternative:"sine function","short":"sine"}},key:"sin",
-names:["sin","sine"]},{category:"Trigonometric",mappings:{"default":{"default":"tangent function","short":"tangent"}},key:"tan",names:["tan"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cosine function",alternative:"arc cosine function","short":"arc cosine"}},key:"arccos",names:["arccos"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cotangent function",alternative:"arc cotangent function","short":"arc cotangent"}},key:"arccot",names:["arccot"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse cosecant function",alternative:"arc cosecant function","short":"arc cosecant"}},key:"arccsc",names:["arccsc"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse secant function",alternative:"arc secant function","short":"arc secant"}},key:"arcsec",names:["arcsec"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse sine function",alternative:"arc sine function","short":"arc sine"}},key:"arcsin",names:["arcsin"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse tangent function",alternative:"arc tangent function","short":"arc tangent"}},key:"arctan",names:["arctan"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosine function","short":"hyperbolic cosine"}},key:"cosh",names:["cosh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cotangent function","short":"hyperbolic cotangent"}},key:"coth",names:["coth"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosecant function",
-"short":"hyperbolic cosecant"}},key:"csch",names:["csch"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic secant function","short":"hyperbolic secant"}},key:"sech",names:["sech"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic sine function","short":"hyperbolic sine"}},key:"sinh",names:["sinh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic tangent function","short":"hyperbolic tangent"}},key:"tanh",names:["tanh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosine function",
-alternative:"area hyperbolic cosine function","short":"area hyperbolic cosine"}},key:"arcosh",names:["arcosh","arccosh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cotangent function",alternative:"area hyperbolic cotangent function","short":"area hyperbolic cotangent"}},key:"arcoth",names:["arcoth","arccoth"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosecant function",alternative:"area hyperbolic cosecant function","short":"area hyperbolic cosecant"}},
-key:"arcsch",names:["arcsch","arccsch"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic secant function",alternative:"area hyperbolic secant function","short":"area hyperbolic secant"}},key:"arsech",names:["arsech","arcsech"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic sine function",alternative:"area hyperbolic sine function","short":"area hyperbolic sine"}},key:"arsinh",names:["arsinh","arcsinh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic tangent function",
-alternative:"area hyperbolic tangent function","short":"area hyperbolic tangent"}},key:"artanh",names:["artanh","arctanh"]},{category:"Algebra",mappings:{"default":{"default":"degree"}},key:"deg",names:["deg"]},{category:"Algebra",mappings:{"default":{"default":"determinant","short":"det"}},key:"det",names:["det"]},{category:"Algebra",mappings:{"default":{"default":"dimension"}},key:"dim",names:["dim"]},{category:"Algebra",mappings:{"default":{"default":"homomorphism","short":"hom"}},key:"hom",names:["hom",
-"Hom"]},{category:"Algebra",mappings:{"default":{"default":"kernel"}},key:"ker",names:["ker"]},{category:"Algebra",mappings:{"default":{"default":"trace"}},key:"Tr",names:["Tr","tr"]}];cvox.AndroidVox=function(){cvox.ChromeVox.navigationManager.ignoreIframesNoMatterWhat()};goog.exportSymbol("cvox.AndroidVox",cvox.AndroidVox);
-cvox.AndroidVox.performAction=function(a){var b=JSON.parse(a);a=b.action;var c=b.granularity,b=b.element,d=cvox.SearchWidget.getInstance().isActive();16==c&&512==a&&(cvox.ChromeVox.navigationManager.setReversed(!1),cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.navigationManager.updateIndicator());if(16==c)return cvox.ChromeVoxUserCommands.commands.readFromHere(),!0;cvox.ChromeVoxUserCommands.commands.stopSpeech();if(256==a||512==a)d||cvox.ChromeVoxEventWatcher.setUpTextHandler();
-var e=cvox.ChromeVoxEventWatcher.currentTextHandler;e||document.activeElement==document.body||console.log("no text handler, but there is an active element",document.activeElement);if(e&&1==c){if(256==a)return e.moveCursorToNextCharacter();if(512==a)return e.moveCursorToPreviousCharacter()}else if(e&&2==c){if(256==a)return e.moveCursorToNextWord();if(512==a)return e.moveCursorToPreviousWord()}else if(e&&8==c){if(256==a)return e.moveCursorToNextParagraph();if(512==a)return e.moveCursorToPreviousParagraph()}else if(e&&
-4==c){var f=!1;256==a?f=e.moveCursorToNextLine():512==a&&(f=e.moveCursorToPreviousLine());if(f)return!0}switch(c){case -1:return cvox.ChromeVox.navigationManager.finishNavCommand(""),!0;case -2:return cvox.ChromeVoxUserCommands.commands.readCurrentTitle(),!0;case -3:return!0;case -4:return 512==a?cvox.ChromeVoxUserCommands.commands.exitShifter():cvox.ChromeVoxUserCommands.commands.enterShifter(),!0;case -5:return cvox.SearchWidget.getInstance().toggle(),!0}if(-275999999<=c&&-275E6>=c){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),
-cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);a=cvox.ChromeVox.navigationManager.getBraille();b=-275E6-c;if(c=a.text.getSpan(b))a=b-a.text.getSpanStart(c),cvox.AndroidVox.performClickAction(c,a);return!0}if(0>c)return!1;e=[];e[8]=cvox.NavigationShifter.GRANULARITIES.GROUP;e[4]=cvox.NavigationShifter.GRANULARITIES.LINE;e[2]=cvox.NavigationShifter.GRANULARITIES.WORD;e[1]=cvox.NavigationShifter.GRANULARITIES.CHARACTER;d||(c=c?e[c]:cvox.NavigationShifter.GRANULARITIES.OBJECT,
-cvox.ChromeVox.navigationManager.setGranularity(c));c=!1;switch(a){case 16:if(d)break;cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);(c=cvox.ChromeVox.navigationManager.getCurrentNode())&&cvox.AndroidVox.performClickAction(c);c=!0;break;case 1024:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.nextSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.nextList();break;case "CONTROL":c=
-!cvox.ChromeVoxUserCommands.commands.nextControl()}if(c)break;case 256:d?(cvox.SearchWidget.getInstance().nextResult(!1),c=!0):c=!cvox.ChromeVoxUserCommands.commands.forward();break;case 2048:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.previousSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.previousList();break;case "CONTROL":c=!cvox.ChromeVoxUserCommands.commands.previousControl()}if(c)break;case 512:d?(cvox.SearchWidget.getInstance().nextResult(!0),c=!0):c=
-!cvox.ChromeVoxUserCommands.commands.backward()}return c};goog.exportSymbol("cvox.AndroidVox.performAction",cvox.AndroidVox.performAction);
-cvox.AndroidVox.performClickAction=function(a,b){cvox.ChromeVox.navigationManager.getCurrentNode()!=a&&cvox.ApiImplementation.syncToNode(a,!1);cvox.Focuser.setFocus(a);var c=cvox.DomUtil.isInputTypeText(a)||a instanceof HTMLTextAreaElement;if(goog.isDef(b)&&c){var d=cvox.BrailleUtil.getTemplated(null,a),c=d.getSpanInstanceOf(cvox.BrailleUtil.ValueSpan),e=d.getSpanStart(c),d=d.getSpanEnd(c);e<=b&&b<=d&&(c=b-e+c.offset,a.selectionStart=a.selectionEnd=c,cvox.ChromeVoxEventWatcher.handleTextChanged(!0))}cvox.DomUtil.clickElem(a,
-!1,!0)};cvox.AndroidHost=function(){};goog.inherits(cvox.AndroidHost,cvox.AbstractHost);
-cvox.AndroidHost.prototype.init=function(){cvox.ChromeVox.version="AndroidVox";var a=cvox.AndroidKeyMap.getStringifiedKeyMap();cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable(a);cvox.ApiImplementation.siteSpecificScriptLoader="";cvox.ApiImplementation.siteSpecificScriptBase="";cvox.ApiImplementation.init();cvox.ChromeVox.earcons.earconsAvailable()&&(cvox.ChromeVox.verbosity=cvox.VERBOSITY_BRIEF);new cvox.AndroidMathMap;cvox.InitialSpeech.speak()};cvox.AndroidHost.prototype.reinit=function(){};
-cvox.AndroidHost.prototype.onPageLoad=function(){cvox.ChromeVoxEventWatcher.focusFollowsMouse=!0;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=0};cvox.AndroidHost.prototype.ttsLoaded=function(){return"undefined"!=typeof accessibility};cvox.AndroidHost.prototype.getApiSrc=function(){return""};cvox.AndroidHost.prototype.hasTtsCallback=function(){return!1};cvox.AndroidHost.prototype.mustRedispatchClickEvent=function(){return!0};
-cvox.AndroidHost.prototype.activateOrDeactivateChromeVox=function(a){cvox.ChromeVox.tts.stop();cvox.AndroidHost.superClass_.activateOrDeactivateChromeVox.call(this,a);this.onPageLoad()};goog.exportSymbol("cvox.AndroidHost.prototype.activateOrDeactivateChromeVox",cvox.AndroidHost.prototype.activateOrDeactivateChromeVox);cvox.HostFactory.hostConstructor=cvox.AndroidHost;window.cvox||(window.cvox={});cvox.MathJaxExternalUtil=function(){};cvox.MathJaxExternalUtil.mmlAttr=function(){return""};
-cvox.MathJaxExternalUtil.mfenced=function(a){null==a&&(a="");var b=[a+'<mrow mfenced="true"'+this.toMathMLattributes()+">"],c=a+" ";this.data.open&&b.push(this.data.open.toMathML(c));null!=this.data[0]&&b.push(this.data[0].toMathML(c));for(var d=1,e=this.data.length;d<e;d++)this.data[d]&&(this.data["sep"+d]&&b.push(this.data["sep"+d].toMathML(c)),b.push(this.data[d].toMathML(c)));this.data.close&&b.push(this.data.close.toMathML(c));b.push(a+"</mrow>");return b.join("\n")};
-cvox.MathJaxExternalUtil.getMathml=function(a,b){var c=MathJax.ElementJax.mml.mbase.prototype,d=MathJax.ElementJax.mml.mfenced.prototype;this.mmlAttr=c.toMathMLattributes;var e=d.toMathML;try{c.toMathMLattributes=cvox.MathJaxExternalUtil.mbase;d.toMathML=cvox.MathJaxExternalUtil.mfenced;var f=a.root.toMathML("");c.toMathMLattributes=this.mmlAttr;d.toMathML=e;MathJax.Callback(b)(f)}catch(g){c.toMathMLattributes=this.mmlAttr;d.toMathML=e;if(!g.restart)throw g;return MathJax.Callback.After([cvox.MathJaxExternalUtil.getMathml,
-a,b],g.restart)}};cvox.MathJaxExternalUtil.mbase=function(){var a=cvox.MathJaxExternalUtil.mmlAttr.call(this);if(null!=this.spanID)var b=(this.id||"MathJax-Span-"+this.spanID)+MathJax.OutputJax["HTML-CSS"].idPostfix,a=a+(' spanID="'+b+'"');null!=this.texClass&&(a+=' texClass="'+this.texClass+'"');return a};cvox.MathJaxExternalUtil.isActive=function(){return"undefined"!=typeof MathJax&&"undefined"!=typeof MathJax.Hub&&"undefined"!=typeof MathJax.ElementJax&&"undefined"!=typeof MathJax.InputJax};
-cvox.MathJaxExternalUtil.getMathjaxCallback_=function(a,b){cvox.MathJaxExternalUtil.getMathml(b,function(c){b.root.inputID&&a(c,b.root.inputID)})};cvox.MathJaxExternalUtil.registerSignal=function(a,b){MathJax.Hub.Register.MessageHook(b,function(b){b=MathJax.Hub.getJaxFor(b[1]);cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};cvox.MathJaxExternalUtil.getAllJax=function(a){var b=MathJax.Hub.getAllJax();b&&b.forEach(function(b){b.root.spanID&&cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};
-cvox.MathJaxExternalUtil.injectConfigScript=function(){var a=document.createElement("script");a.setAttribute("type","text/x-mathjax-config");a.textContent='MathJax.Hub.Config({\n jax: ["input/AsciiMath", "input/TeX"],\n extensions: ["toMathML.js"],\n skipStartupTypeset: true,\n messageStyle: "none",\n TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]}\n});\nMathJax.Hub.Queue(\n function() {MathJax.Hub.inputJax["math/asciimath"].Process();\n MathJax.Hub.inputJax["math/tex"].Process()}\n);\n//\n// Prevent these from being loaded\n//\nif (!MathJax.Extension.MathMenu) {MathJax.Extension.MathMenu = {}};\nif (!MathJax.Extension.MathZoom) {MathJax.Extension.MathZoom = {}};';
-document.activeElement.appendChild(a)};cvox.MathJaxExternalUtil.injectLoadScript=function(){var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src","http://cdn.mathjax.org/mathjax/latest/MathJax.js");document.activeElement.appendChild(a)};
-cvox.MathJaxExternalUtil.configMediaWiki=function(){mediaWiki&&MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions,{mathchar0mi:{thetasym:"03B8",koppa:"03DF",stigma:"03DB",varstigma:"03DB",coppa:"03D9",varcoppa:"03D9",sampi:"03E1",C:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],cnums:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Complex:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],H:["210D",{mathvariant:a.VARIANT.DOUBLESTRUCK}],
-N:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],natnums:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Q:["0051",{mathvariant:a.VARIANT.DOUBLESTRUCK}],R:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Z:["005A",{mathvariant:a.VARIANT.DOUBLESTRUCK}],sect:"00A7",P:"00B6",AA:["00C5",{mathvariant:a.VARIANT.NORMAL}],alef:["2135",{mathvariant:a.VARIANT.NORMAL}],alefsym:["2135",{mathvariant:a.VARIANT.NORMAL}],
-weierp:["2118",{mathvariant:a.VARIANT.NORMAL}],real:["211C",{mathvariant:a.VARIANT.NORMAL}],part:["2202",{mathvariant:a.VARIANT.NORMAL}],infin:["221E",{mathvariant:a.VARIANT.NORMAL}],empty:["2205",{mathvariant:a.VARIANT.NORMAL}],O:["2205",{mathvariant:a.VARIANT.NORMAL}],ang:["2220",{mathvariant:a.VARIANT.NORMAL}],exist:["2203",{mathvariant:a.VARIANT.NORMAL}],clubs:["2663",{mathvariant:a.VARIANT.NORMAL}],diamonds:["2662",{mathvariant:a.VARIANT.NORMAL}],hearts:["2661",{mathvariant:a.VARIANT.NORMAL}],
-spades:["2660",{mathvariant:a.VARIANT.NORMAL}],textvisiblespace:"2423",geneuro:"20AC",euro:"20AC"},mathchar0mo:{and:"2227",or:"2228",bull:"2219",plusmn:"00B1",sdot:"22C5",Dagger:"2021",sup:"2283",sub:"2282",supe:"2287",sube:"2286",isin:"2208",hAar:"21D4",hArr:"21D4",Harr:"21D4",Lrarr:"21D4",lrArr:"21D4",lArr:"21D0",Larr:"21D0",rArr:"21D2",Rarr:"21D2",harr:"2194",lrarr:"2194",larr:"2190",gets:"2190",rarr:"2192",oiint:["222F",{texClass:a.TEXCLASS.OP}],oiiint:["2230",{texClass:a.TEXCLASS.OP}]},mathchar7:{Alpha:"0391",
-Beta:"0392",Epsilon:"0395",Zeta:"0396",Eta:"0397",Iota:"0399",Kappa:"039A",Mu:"039C",Nu:"039D",Omicron:"039F",Rho:"03A1",Tau:"03A4",Chi:"03A7",Koppa:"03DE",Stigma:"03DA",Digamma:"03DC",Coppa:"03D8",Sampi:"03E0"},delimiter:{"\\uarr":"2191","\\darr":"2193","\\Uarr":"21D1","\\uArr":"21D1","\\Darr":"21D3","\\dArr":"21D3","\\rang":"27E9","\\lang":"27E8"},macros:{sgn:"NamedFn",arccot:"NamedFn",arcsec:"NamedFn",arccsc:"NamedFn",sen:"NamedFn",image:["Macro","\\Im"],bold:["Macro","\\mathbf{#1}",1],pagecolor:["Macro",
-"",1],emph:["Macro","\\textit{#1}",1],textsf:["Macro","\\mathord{\\sf{\\text{#1}}}",1],texttt:["Macro","\\mathord{\\tt{\\text{#1}}}",1],vline:["Macro","\\smash{\\large\\lvert}",0]}})})};
-cvox.MathJaxExternalUtil.convertToMml=function(a,b,c,d,e,f){var g=MathJax.HTML.Element("script",{type:c},[b]),g={math:b,script:g};MathJax.InputJax[d].prefilterHooks.Execute(g);var h;try{h=f(g.math)}catch(k){if(k[e])h=MathJax.ElementJax.mml.merror(k.message.replace(/\n.*/,""));else{if(k.restart)return MathJax.Callback.After([cvox.MathJaxExternalUtil.convertToMml,a,b,c,d,e,f],k.restart);throw k;}}h=h.inferred?MathJax.ElementJax.mml.apply(MathJax.ElementJax,h.data):MathJax.ElementJax.mml(h);h.root.display=
-"block";g.math=h;g.script.MathJax={};MathJax.InputJax[d].postfilterHooks.Execute(g);return cvox.MathJaxExternalUtil.getMathml(g.math,a)};cvox.MathJaxExternalUtil.texToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/tex;mode=display","TeX","texError",function(a){return MathJax.InputJax.TeX.Parse(a).mml()})};cvox.MathJaxExternalUtil.asciiMathToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/asciimath","AsciiMath","asciimathError",MathJax.InputJax.AsciiMath.AM.parseMath)};cvox.AndroidMathJax=function(){this.altMathNodeId_=0};goog.inherits(cvox.AndroidMathJax,cvox.AbstractMathJax);cvox.AndroidMathJax.prototype.getMathmlToDomCallback_=function(a){return goog.bind(function(b,c){return this.convertMarkupToDom(a,b,c)},this)};cvox.AndroidMathJax.prototype.isMathjaxActive=function(a){var b=0,c=function(){b++;cvox.MathJaxExternalUtil.isActive()?a(!0):5>b&&setTimeout(c,1E3)};c()};cvox.AndroidMathJax.prototype.getAllJax=function(a){cvox.MathJaxExternalUtil.getAllJax(this.getMathmlToDomCallback_(a))};
-cvox.AndroidMathJax.prototype.registerSignal=function(a,b){cvox.MathJaxExternalUtil.registerSignal(this.getMathmlToDomCallback_(a),b)};cvox.AndroidMathJax.prototype.injectScripts=function(){cvox.MathJaxExternalUtil.injectConfigScript();cvox.MathJaxExternalUtil.injectLoadScript()};cvox.AndroidMathJax.prototype.configMediaWiki=function(){cvox.MathJaxExternalUtil.configMediaWiki()};
-cvox.AndroidMathJax.prototype.getTex=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.texToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};cvox.AndroidMathJax.prototype.getAsciiMath=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.asciiMathToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};
-cvox.HostFactory.mathJaxConstructor=cvox.AndroidMathJax;cvox.AndroidTts=function(){cvox.AbstractTts.call(this);this.ttsProperties.rate=0.5;this.ttsProperties.pitch=0.5;this.ttsProperties.volume=1};goog.inherits(cvox.AndroidTts,cvox.AbstractTts);cvox.AndroidTts.prototype.speak=function(a,b,c){cvox.AndroidTts.superClass_.speak.call(this,a,b,c);c=this.mergeProperties(c);accessibility.speak(a,b,c);return this};cvox.AndroidTts.prototype.isSpeaking=function(){cvox.AndroidTts.superClass_.isSpeaking.call(this);return accessibility.isSpeaking()};
-cvox.AndroidTts.prototype.stop=function(){cvox.AndroidTts.superClass_.stop.call(this);accessibility.stop()};cvox.HostFactory.ttsConstructor=cvox.AndroidTts;cvox.TestMessages={locale:{message:"en"},chromevox_name:{message:"ChromeVox"},chromevox_description:{message:"ChromeVox - Giving Voice to Chrome"},chromevox_stop_speech_key:{message:"Stop speech"},chromevox_toggle_sticky_mode:{message:"Enable/Disable sticky mode"},chromevox_prefix_key:{message:"Prefix key"},chromevox_handle_tab_next:{message:"Jump to next focusable item"},chromevox_handle_tab_prev:{message:"Jump to previous focusable item"},chromevox_backward:{message:"Navigate backward"},chromevox_forward:{message:"Navigate forward"},
-chromevox_left:{message:"Move left"},chromevox_right:{message:"Move right"},chromevox_skip_backward:{message:"Skip backward during continuous reading"},chromevox_skip_forward:{message:"Skip forward during continuous reading"},chromevox_previous_granularity:{message:"Decrease navigation granularity"},chromevox_next_granularity:{message:"Increase navigation granularity"},chromevox_act_on_current_item:{message:"Take action on current item"},chromevox_force_click_on_current_item:{message:"Click on current item"},
-chromevox_read_link_url:{message:"Announce the URL behind a link"},chromevox_read_current_title:{message:"Announce the title of the current page"},chromevox_read_current_url:{message:"Announce the URL of the current page"},chromevox_read_from_here:{message:"Start reading from current location"},chromevox_show_power_key:{message:"Open ChromeVox keyboard help"},chromevox_hide_power_key:{message:"Hide ChromeVox help"},chromevox_power_key_help:{message:"Press up or down to review commands, press enter to activate"},
-chromevox_help:{message:"Open ChromeVox tutorial"},chromevox_toggle_search_widget:{message:"Toggle search widget"},chromevox_show_options_page:{message:"Open options page"},chromevox_show_kb_explorer_page:{message:"Open keyboard explorer"},chromevox_decrease_tts_rate:{message:"Decrease rate of speech"},chromevox_increase_tts_rate:{message:"Increase rate of speech"},chromevox_decrease_tts_pitch:{message:"Decrease pitch"},chromevox_increase_tts_pitch:{message:"Increase pitch"},chromevox_decrease_tts_volume:{message:"Decrease speech volume"},
-chromevox_increase_tts_volume:{message:"Increase speech volume"},chromevox_show_forms_list:{message:"Show forms list"},chromevox_show_headings_list:{message:"Show headings list"},chromevox_show_links_list:{message:"Show links list"},chromevox_show_tables_list:{message:"Show tables list"},chromevox_show_landmarks_list:{message:"Show landmarks list"},chromevox_previous_row:{message:"Previous table row"},chromevox_next_row:{message:"Next table row"},chromevox_previous_col:{message:"Previous table column"},
-chromevox_next_col:{message:"Next table column"},chromevox_announce_headers:{message:"Announce the headers of the current cell"},chromevox_speak_table_location:{message:"Announce current cell coordinates"},chromevox_guess_row_header:{message:"Make a guess at the row header of the current cell"},chromevox_guess_col_header:{message:"Make a guess at the column header of the current cell"},chromevox_skip_to_beginning:{message:"Go to beginning of table"},chromevox_skip_to_end:{message:"Go to end of table"},
-chromevox_skip_to_row_beginning:{message:"Go to beginning of the current row"},chromevox_skip_to_row_end:{message:"Go to end of the current row"},chromevox_skip_to_col_beginning:{message:"Go to beginning of the current column"},chromevox_skip_to_col_end:{message:"Go to end of the current column"},chromevox_next_heading1:{message:"Next level 1 heading"},chromevox_previous_heading1:{message:"Previous level 1 heading"},chromevox_next_heading2:{message:"Next level 2 heading"},chromevox_previous_heading2:{message:"Previous level 2 heading"},
-chromevox_next_heading3:{message:"Next level 3 heading"},chromevox_previous_heading3:{message:"Previous level 3 heading"},chromevox_next_heading4:{message:"Next level 4 heading"},chromevox_previous_heading4:{message:"Previous level 4 heading"},chromevox_next_heading5:{message:"Next level 5 heading"},chromevox_previous_heading5:{message:"Previous level 5 heading"},chromevox_next_heading6:{message:"Next level 6 heading"},chromevox_previous_heading6:{message:"Previous level 6 heading"},chromevox_next_combo_box:{message:"Next combo box"},
-chromevox_previous_combo_box:{message:"Previous combo box"},chromevox_next_edit_text:{message:"Next editable text area"},chromevox_previous_edit_text:{message:"Previous editable text area"},chromevox_next_form_field:{message:"Next form field"},chromevox_previous_form_field:{message:"Previous form field"},chromevox_next_graphic:{message:"Next graphic"},chromevox_previous_graphic:{message:"Previous graphic"},chromevox_next_heading:{message:"Next heading"},chromevox_previous_heading:{message:"Previous heading"},
-chromevox_next_list_item:{message:"Next list item"},chromevox_previous_list_item:{message:"Previous list item"},chromevox_next_jump:{message:"Next jump"},chromevox_previous_jump:{message:"Previous jump"},chromevox_next_link:{message:"Next link"},chromevox_previous_link:{message:"Previous link"},chromevox_next_list:{message:"Next list"},chromevox_previous_list:{message:"Previous list"},chromevox_next_math:{message:"Next math"},chromevox_previous_math:{message:"Previous math"},chromevox_next_media:{message:"Next media"},
-chromevox_previous_media:{message:"Previous media"},chromevox_next_blockquote:{message:"Next block quote"},chromevox_previous_blockquote:{message:"Previous block quote"},chromevox_next_radio:{message:"Next radio button"},chromevox_previous_radio:{message:"Previous radio button"},chromevox_next_slider:{message:"Next slider"},chromevox_previous_slider:{message:"Previous slider"},chromevox_next_table:{message:"Next table"},chromevox_next_visited_link:{message:"Next visited link"},chromevox_previous_table:{message:"Previous table"},
-chromevox_previous_visited_link:{message:"Previous visited link"},chromevox_next_button:{message:"Next button"},chromevox_previous_button:{message:"Previous button"},chromevox_next_checkbox:{message:"Next checkbox"},chromevox_previous_checkbox:{message:"Previous checkbox"},chromevox_next_landmark:{message:"Next landmark"},chromevox_previous_landmark:{message:"Previous landmark"},chromevox_benchmark:{message:"Debug benchmark"},chromevox_announce_position:{message:"Announces a brief description of the current position"},
-chromevox_fully_describe:{message:"Announces a complete description of the current position"},chromevox_options_page_title:{message:"ChromeVox Options"},chromevox_options_page_summary:{message:"Use the options below to customize ChromeVox. Changes take effect immediately."},chromevox_options_mouse_focus_follows:{message:"Use the mouse to change focus."},chromevox_options_site_specific_enhancements:{message:"Enhance specific sites (like Google Search)."},chromevox_options_verbosity_verbose:{message:"Enable verbose descriptions."},
-chromevox_options_cursor_between_characters:{message:"Place cursor between characters when editing text (like Mac OS X)."},chromevox_options_magnifier_show_checkbox:{message:"Show a magnified view of the page content."},chromevox_options_voices:{message:"Voices"},chromevox_options_voices_description:{message:"Change the current voice by selecting an option from the list below."},chromevox_options_braille:{message:"Braille"},chromevox_options_braille_table_type_6:{message:"Switch to 8 dot braille"},
-chromevox_options_braille_table_type_8:{message:"Switch to 6 dot braille"},chromevox_options_braille_description_6:{message:"Change the current 6 dot braille table by selecting an option from the list below."},chromevox_options_braille_locale_grade:{message:"$1, Grade $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_options_braille_description_8:{message:"Change the current 8 dot braille table by selecting an option from the list below."},chromevox_options_keyboard_shortcuts:{message:"Keyboard shortcuts"},
-chromevox_options_keymap_description:{message:"Change the current keymap by selecting an option from the list below."},chromevox_options_select_keys:{message:"Reset current keymap"},chromevox_options_shortcuts_description:{message:"Customize keyboard shortcuts for frequently used commands by typing them into the corresponding fields below."},chromevox_options_modifier_keys:{message:"Modifier keys"},chromevox_options_cvox_modifier_key:{message:"ChromeVox modifier key"},chromevox_kbexplorer_title:{message:"ChromeOS Keyboard Explorer"},
-chromevox_kbexplorer_instructions:{message:"Press any key to learn its name. Ctrl+W will close the keyboard explorer."},chromevox_chrome_system_need_restart:{message:"System was updated. Restart is recommended."},chromevox_chrome_brightness_changed:{message:"Brightness $1 percent",placeholders:{1:{content:"$1"}}},chromevox_chrome_tab_created:{message:"tab created"},chromevox_chrome_tab_selected:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_normal_window_selected:{message:"window $1 tab",
-placeholders:{1:{content:"$1"}}},chromevox_chrome_incognito_window_selected:{message:"incognito window $1 tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_menu_opened:{message:"$1 menu opened",placeholders:{1:{content:"$1"}}},chromevox_describe_checkbox_checked:{message:"$1 checkbox checked",placeholders:{1:{content:"$1"}}},chromevox_checkbox_checked_state:{message:"checked"},chromevox_checkbox_checked_state_brl:{message:"x"},chromevox_describe_checkbox_unchecked:{message:"$1, checkbox not checked",
-placeholders:{1:{content:"$1"}}},chromevox_checkbox_unchecked_state:{message:"not checked"},chromevox_checkbox_unchecked_state_brl:{message:" "},chromevox_describe_radio_selected:{message:"$1, radio button selected",placeholders:{1:{content:"$1"}}},chromevox_radio_selected_state:{message:"selected"},chromevox_radio_selected_state_brl:{message:"x"},chromevox_describe_radio_unselected:{message:"$1, radio button unselected",placeholders:{1:{content:"$1"}}},chromevox_radio_unselected_state:{message:"unselected"},
-chromevox_radio_unselected_state_brl:{message:" "},chromevox_describe_menu:{message:"$1, menu",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item:{message:"$1, menu item",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item_with_submenu:{message:"$1, menu item, with submenu",placeholders:{1:{content:"$1"}}},chromevox_describe_window:{message:"$1, window",placeholders:{1:{content:"$1"}}},chromevox_describe_textbox:{message:"$1, $2, text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},
-chromevox_describe_unnamed_textbox:{message:"$1, text box",placeholders:{1:{content:"$1"}}},chromevox_describe_password:{message:"$1, $2, password text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_password:{message:"$1, password text box",placeholders:{1:{content:"$1"}}},chromevox_describe_button:{message:"$1, button",placeholders:{1:{content:"$1"}}},chromevox_describe_combobox:{message:"$1, $2, combo box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_combobox:{message:"$1, combo box",
-placeholders:{1:{content:"$1"}}},chromevox_describe_listbox:{message:"$1, $2, list box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_listbox:{message:"$1, list box",placeholders:{1:{content:"$1"}}},chromevox_describe_link:{message:"$1, link",placeholders:{1:{content:"$1"}}},chromevox_describe_tab:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_describe_slider:{message:"$1, $2, slider",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_selected:{message:", selected"},
-chromevox_describe_unselected:{message:", unselected"},chromevox_describe_index:{message:" $1 of $2 ",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_announce_rate:{message:"Rate $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_pitch:{message:"Pitch $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_volume:{message:"Volume $1 percent",placeholders:{1:{content:"$1"}}},chromevox_exiting_dialog:{message:"Exited dialog."},chromevox_exited_container:{message:"Exited $1.",
-placeholders:{1:{content:"$1"}}},chromevox_entering_dialog:{message:"Entered dialog"},chromevox_live_regions_removed:{message:"removed:"},chromevox_sticky_mode_enabled:{message:"Sticky mode enabled"},chromevox_sticky_mode_disabled:{message:"Sticky mode disabled"},chromevox_keyboard_help_intro:{message:"Keyboard Help"},chromevox_context_menu_intro:{message:"Context Menu"},chromevox_choice_widget_name:{message:"$1 list.",placeholders:{1:{content:"$1"}}},chromevox_choice_widget_help:{message:"Use up and down arrow keys to browse, or type to search."},
-chromevox_choice_widget_exited:{message:"Exited"},chromevox_choice_widget_type_generic:{message:" "},chromevox_end_of_cell:{message:"End of cell."},chromevox_no_url_found:{message:"No URL found"},chromevox_leaving_table:{message:"Leaving table."},chromevox_leaving_grid:{message:"Leaving grid."},chromevox_inside_table:{message:"Inside table"},chromevox_no_tables:{message:"No table found."},chromevox_not_inside_table:{message:"Not inside table."},chromevox_no_cell_below:{message:"No cell below."},chromevox_no_cell_above:{message:"No cell above."},
-chromevox_no_cell_right:{message:"No cell right."},chromevox_no_cell_left:{message:"No cell left."},chromevox_empty_cell:{message:"Empty cell."},chromevox_spanned:{message:"Spanned."},chromevox_row_header:{message:"Row header:"},chromevox_empty_row_header:{message:"Empty row header"},chromevox_column_header:{message:"Column header:"},chromevox_empty_column_header:{message:"Empty column header"},chromevox_no_headers:{message:"No headers"},chromevox_empty_headers:{message:"Empty headers"},chromevox_table_location:{message:"Row $1 of $2, Column $3 of $4",
-placeholders:{1:{content:"$1"},2:{content:"$2"},3:{content:"$3"},4:{content:"$4"}}},chromevox_no_next_checkbox:{message:"No next checkbox."},chromevox_no_previous_checkbox:{message:"No previous checkbox."},chromevox_no_next_edit_text:{message:"No next editable text field."},chromevox_no_previous_edit_text:{message:"No previous editable text field."},chromevox_no_next_heading:{message:"No next heading."},chromevox_no_previous_heading:{message:"No previous heading."},chromevox_no_next_heading_1:{message:"No next level 1 heading."},
-chromevox_no_previous_heading_1:{message:"No previous level 1 heading."},chromevox_no_next_heading_2:{message:"No next level 2 heading."},chromevox_no_previous_heading_2:{message:"No previous level 2 heading."},chromevox_no_next_heading_3:{message:"No next level 3 heading."},chromevox_no_previous_heading_3:{message:"No previous level 3 heading."},chromevox_no_next_heading_4:{message:"No next level 4 heading."},chromevox_no_previous_heading_4:{message:"No previous level 4 heading."},chromevox_no_next_heading_5:{message:"No next level 5 heading."},
-chromevox_no_previous_heading_5:{message:"No previous level 5 heading."},chromevox_no_next_heading_6:{message:"No next level 6 heading."},chromevox_no_previous_heading_6:{message:"No previous level 6 heading."},chromevox_no_next_not_link:{message:"No next item that isn't a link."},chromevox_no_previous_not_link:{message:"No previous item that isn't a link."},chromevox_no_next_anchor:{message:"No next anchor."},chromevox_no_previous_anchor:{message:"No previous anchor."},chromevox_no_next_link:{message:"No next link."},
-chromevox_no_previous_link:{message:"No previous link."},chromevox_no_next_table:{message:"No next table."},chromevox_no_previous_table:{message:"No previous table."},chromevox_no_next_visited_link:{message:"No next visited link."},chromevox_no_previous_visited_link:{message:"No previous visited link."},chromevox_no_next_math:{message:"No next math expression."},chromevox_no_previous_math:{message:"No previous math expression."},chromevox_no_next_media_widget:{message:"No next media widget."},chromevox_no_previous_media_widget:{message:"No previous media widget."},
-chromevox_no_next_list:{message:"No next list."},chromevox_no_previous_list:{message:"No previous list."},chromevox_no_next_list_item:{message:"No next list item."},chromevox_no_previous_list_item:{message:"No previous list item."},chromevox_no_next_blockquote:{message:"No next blockquote."},chromevox_no_previous_blockquote:{message:"No previous blockquote."},chromevox_no_next_form_field:{message:"No next form field."},chromevox_no_previous_form_field:{message:"No previous form field."},chromevox_no_next_jump:{message:"No next jump point."},
-chromevox_no_previous_jump:{message:"No previous jump point."},chromevox_no_next_landmark:{message:"No next ARIA landmark."},chromevox_no_previous_landmark:{message:"No previous ARIA landmark."},chromevox_no_next_combo_box:{message:"No next combo box."},chromevox_no_previous_combo_box:{message:"No previous combo box."},chromevox_no_next_button:{message:"No next button."},chromevox_no_previous_button:{message:"No previous button."},chromevox_no_next_graphic:{message:"No next graphic."},chromevox_no_previous_graphic:{message:"No previous graphic."},
-chromevox_no_next_slider:{message:"No next slider."},chromevox_no_previous_slider:{message:"No previous slider."},chromevox_no_next_radio_button:{message:"No next radio button."},chromevox_no_previous_radio_button:{message:"No previous radio button."},chromevox_no_next_section:{message:"No next section."},chromevox_no_previous_section:{message:"No previous section."},chromevox_no_next_control:{message:"No next control."},chromevox_no_previous_control:{message:"No previous control."},chromevox_element_clicked:{message:"Clicked"},
-chromevox_element_double_clicked:{message:"double clicked"},chromevox_powerkey_no_headings:{message:"No headings."},chromevox_powerkey_no_links:{message:"No links."},chromevox_powerkey_no_forms:{message:"No forms."},chromevox_powerkey_no_tables:{message:"No tables."},chromevox_powerkey_no_landmarks:{message:"No ARIA landmarks."},chromevox_powerkey_no_jumps:{message:"No jumps."},chromevox_list_position:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_list_position_brl:{message:"$1/$2",
-placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_aria_has_submenu:{message:"has submenu"},chromevox_aria_has_submenu_brl:{message:"+submnu"},chromevox_aria_has_popup:{message:"has pop up"},chromevox_aria_has_popup_brl:{message:"+popup"},chromevox_aria_value_min:{message:"Min $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_min_brl:{message:"min:$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max:{message:"Max $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max_brl:{message:"max:$1",
-placeholders:{1:{content:"$1"}}},chromevox_aria_value_now:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_now_brl:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_role_alert:{message:"Alert"},chromevox_aria_role_alert_brl:{message:"alrt"},chromevox_aria_role_alertdialog:{message:"Alert dialog"},chromevox_aria_role_alertdialog_brl:{message:"alrt dlg"},chromevox_aria_role_button:{message:"Button"},chromevox_aria_role_button_brl:{message:"btn"},chromevox_aria_role_checkbox:{message:"Check box"},
-chromevox_aria_role_checkbox_brl:{message:"chx"},chromevox_aria_role_combobox:{message:"Combo box"},chromevox_aria_role_combobox_brl:{message:"cbx"},chromevox_aria_role_dialog:{message:"Dialog"},chromevox_aria_role_dialog_brl:{message:"dlg"},chromevox_aria_role_grid:{message:"Grid"},chromevox_aria_role_grid_brl:{message:"grd"},chromevox_aria_role_gridcell:{message:"Cell"},chromevox_aria_role_gridcell_brl:{message:"cl"},chromevox_aria_role_gridcell_pos:{message:"row $1 column $2",placeholders:{1:{content:"$1"},
-2:{content:"$2"}}},chromevox_aria_role_link:{message:"Link"},chromevox_aria_role_link_brl:{message:"lnk"},chromevox_aria_role_link_singular:{message:"1 link"},chromevox_aria_role_link_plural:{message:"$1 links",placeholders:{1:{content:"$1"}}},chromevox_aria_role_listbox:{message:"List box"},chromevox_aria_role_listbox_brl:{message:"lstbx"},chromevox_aria_role_log:{message:"Log"},chromevox_aria_role_log_brl:{message:"log"},chromevox_aria_role_marquee:{message:"Marquee"},chromevox_aria_role_marquee_brl:{message:"maqe"},
-chromevox_aria_role_menu:{message:"Menu"},chromevox_aria_role_menu_brl:{message:"mnu"},chromevox_aria_role_menubar:{message:"Menu bar"},chromevox_aria_role_menubar_brl:{message:"mnu br"},chromevox_aria_role_menuitem:{message:"Menu item"},chromevox_aria_role_menuitem_brl:{message:"mnu itm"},chromevox_aria_role_menuitemcheckbox:{message:"Menu item check box"},chromevox_aria_role_menuitemcheckbox_brl:{message:"mnu itm chx"},chromevox_aria_role_menuitemradio:{message:"Menu item radio button"},chromevox_aria_role_menuitemradio_brl:{message:"mnu itm rd"},
-chromevox_aria_role_option:{message:" "},chromevox_aria_role_option_brl:{message:" "},chromevox_aria_role_popup_button:{message:"Pop-up button"},chromevox_aria_role_popup_button_brl:{message:"pup btn"},chromevox_aria_role_progressbar:{message:"Progress bar"},chromevox_aria_role_progressbar_brl:{message:"prog br"},chromevox_aria_role_radio:{message:"Radio button"},chromevox_aria_role_radio_brl:{message:"rd"},chromevox_aria_role_radiogroup:{message:"Radio button group"},chromevox_aria_role_radiogroup_brl:{message:"rd grp"},
-chromevox_aria_role_scrollbar:{message:"Scroll bar"},chromevox_aria_role_scrollbar_brl:{message:"scr br"},chromevox_aria_role_slider:{message:"Slider"},chromevox_aria_role_slider_brl:{message:"slr"},chromevox_aria_role_spinbutton:{message:"Spin button"},chromevox_aria_role_spinbutton_brl:{message:"spn btn"},chromevox_aria_role_status:{message:"Status"},chromevox_aria_role_status_brl:{message:"sts"},chromevox_aria_role_tab:{message:"Tab"},chromevox_aria_role_tab_brl:{message:"tab"},chromevox_aria_role_tabpanel:{message:"Tab panel"},
-chromevox_aria_role_tabpanel_brl:{message:"tab pnl"},chromevox_aria_role_textbox:{message:"Text box"},chromevox_aria_role_textbox_brl:{message:"txtbx"},chromevox_aria_role_timer:{message:"Timer"},chromevox_aria_role_timer_brl:{message:"tmr"},chromevox_aria_role_toolbar:{message:"Tool bar"},chromevox_aria_role_toolbar_brl:{message:"tl br"},chromevox_aria_role_tooltip:{message:"Tool tip"},chromevox_aria_role_tooltip_brl:{message:"tl tp"},chromevox_aria_role_treeitem:{message:"Tree item"},chromevox_aria_role_treeitem_brl:{message:"tr itm"},
-chromevox_aria_role_article:{message:"Article"},chromevox_aria_role_article_brl:{message:"acl"},chromevox_aria_role_application:{message:"Application"},chromevox_aria_role_application_brl:{message:"app"},chromevox_aria_role_banner:{message:"Banner"},chromevox_aria_role_banner_brl:{message:"bnr"},chromevox_aria_role_columnheader:{message:"Column header"},chromevox_aria_role_columnheader_brl:{message:"clm hd"},chromevox_aria_role_complementary:{message:"Complementary"},chromevox_aria_role_complementary_brl:{message:"cmpy"},
-chromevox_aria_role_contentinfo:{message:"Content info"},chromevox_aria_role_contentinfo_brl:{message:"cnt in"},chromevox_aria_role_definition:{message:"Definition"},chromevox_aria_role_definition_brl:{message:"def"},chromevox_aria_role_directory:{message:"Directory"},chromevox_aria_role_directory_brl:{message:"dir"},chromevox_aria_role_document:{message:"Document"},chromevox_aria_role_document_brl:{message:"doc"},chromevox_aria_role_form:{message:"Form"},chromevox_aria_role_form_brl:{message:"frm"},
-chromevox_aria_role_form_singular:{message:"1 form"},chromevox_aria_role_form_plural:{message:"$1 forms",placeholders:{1:{content:"$1"}}},chromevox_aria_role_group:{message:"Group"},chromevox_aria_role_group_brl:{message:"grp"},chromevox_aria_role_heading:{message:"Heading"},chromevox_aria_role_heading_brl:{message:"hd"},chromevox_aria_role_img:{message:"Image"},chromevox_aria_role_img_brl:{message:"img"},chromevox_aria_role_list:{message:"List"},chromevox_aria_role_list_brl:{message:"lst"},chromevox_aria_role_listitem:{message:"List item"},
-chromevox_aria_role_listitem_brl:{message:"lstitm"},chromevox_aria_role_main:{message:"Main"},chromevox_aria_role_main_brl:{message:"main"},chromevox_aria_role_math:{message:"Math"},chromevox_aria_role_math_brl:{message:"math"},chromevox_aria_role_navigation:{message:"Navigation"},chromevox_aria_role_navigation_brl:{message:"nav"},chromevox_aria_role_note:{message:"Note"},chromevox_aria_role_note_brl:{message:"note"},chromevox_aria_role_region:{message:"Region"},chromevox_aria_role_region_brl:{message:"rgn"},
-chromevox_aria_role_rowheader:{message:"Row header"},chromevox_aria_role_rowheader_brl:{message:"rw hd"},chromevox_aria_role_search:{message:"Search"},chromevox_aria_role_search_brl:{message:"srch"},chromevox_aria_role_separator:{message:"Separator"},chromevox_aria_role_separator_brl:{message:"sprtr"},chromevox_aria_autocomplete_inline:{message:"Autocompletion inline"},chromevox_aria_autocomplete_inline_brl:{message:"autocomplete"},chromevox_aria_autocomplete_list:{message:"Autocompletion list"},
-chromevox_aria_autocomplete_list_brl:{message:"autocomplete lst"},chromevox_aria_autocomplete_both:{message:"Autocompletion inline and list"},chromevox_aria_autocomplete_both_brl:{message:"autocomplete lst"},chromevox_aria_checked_true:{message:"Checked"},chromevox_aria_checked_true_brl:{message:"x"},chromevox_aria_checked_false:{message:"Not checked"},chromevox_aria_checked_false_brl:{message:" "},chromevox_aria_checked_mixed:{message:"Partially checked"},chromevox_aria_checked_mixed_brl:{message:"/x"},
-chromevox_aria_disabled_true:{message:"Disabled"},chromevox_aria_disabled_true_brl:{message:"="},chromevox_aria_expanded_true:{message:"Expanded"},chromevox_aria_expanded_true_brl:{message:">"},chromevox_aria_expanded_false:{message:"Collapsed"},chromevox_aria_expanded_false_brl:{message:"<"},chromevox_aria_invalid_true:{message:"Invalid input"},chromevox_aria_invalid_true_brl:{message:"!"},chromevox_aria_invalid_grammar:{message:"Grammatical mistake detected"},chromevox_aria_invalid_grammar_brl:{message:"Grammatical mistake detected"},
-chromevox_aria_invalid_spelling:{message:"Spelling mistake detected"},chromevox_aria_invalid_spelling_brl:{message:"misspelled"},chromevox_aria_multiline_true:{message:"Multi line"},chromevox_aria_multiline_true_brl:{message:"mult ln"},chromevox_aria_multiselectable_true:{message:"Multi select"},chromevox_aria_multiselectable_true_brl:{message:"mult sel"},chromevox_aria_pressed_true:{message:"Pressed"},chromevox_aria_pressed_true_brl:{message:"x"},chromevox_aria_pressed_false:{message:"Not pressed"},
-chromevox_aria_pressed_false_brl:{message:" "},chromevox_aria_pressed_mixed:{message:"Partially pressed"},chromevox_aria_pressed_mixed_brl:{message:"/x"},chromevox_aria_readonly_true:{message:"Read only"},chromevox_aria_readonly_true_brl:{message:"rdonly"},chromevox_aria_required_true:{message:"Required"},chromevox_aria_required_true_brl:{message:"req"},chromevox_aria_selected_true:{message:"Selected"},chromevox_aria_selected_true_brl:{message:"x"},chromevox_aria_selected_false:{message:"Not selected"},
-chromevox_aria_selected_false_brl:{message:" "},chromevox_tag_link:{message:"Link"},chromevox_tag_link_brl:{message:"lnk"},chromevox_tag_button:{message:"Button"},chromevox_tag_button_brl:{message:"btn"},chromevox_tag_h1:{message:"Heading 1"},chromevox_tag_h1_brl:{message:"h1"},chromevox_tag_h2:{message:"Heading 2"},chromevox_tag_h2_brl:{message:"h2"},chromevox_tag_h3:{message:"Heading 3"},chromevox_tag_h3_brl:{message:"h3"},chromevox_tag_h4:{message:"Heading 4"},chromevox_tag_h4_brl:{message:"h4"},
-chromevox_tag_h5:{message:"Heading 5"},chromevox_tag_h5_brl:{message:"h5"},chromevox_tag_h6:{message:"Heading 6"},chromevox_tag_h6_brl:{message:"h6"},chromevox_tag_li:{message:"List item"},chromevox_tag_li_brl:{message:"lstitm"},chromevox_tag_ol:{message:"Ordered List"},chromevox_tag_ol_brl:{message:"lst"},chromevox_tag_select:{message:"Combo box"},chromevox_tag_select_brl:{message:"cbx"},chromevox_tag_textarea:{message:"Text area"},chromevox_tag_textarea_brl:{message:"txta"},chromevox_tag_table:{message:"table"},
-chromevox_tag_table_brl:{message:"tbl"},chromevox_tag_ul:{message:"List"},chromevox_tag_ul_brl:{message:"lst"},chromevox_tag_section:{message:"Section"},chromevox_tag_section_brl:{message:"stn"},chromevox_tag_nav:{message:"Navigation"},chromevox_tag_nav_brl:{message:"nav"},chromevox_tag_article:{message:"Article"},chromevox_tag_article_brl:{message:"article"},chromevox_tag_aside:{message:"Aside"},chromevox_tag_aside_brl:{message:"aside"},chromevox_tag_hgroup:{message:"Heading group"},chromevox_tag_hgroup_brl:{message:"hgrp"},
-chromevox_tag_header:{message:"Header"},chromevox_tag_header_brl:{message:"hdr"},chromevox_tag_footer:{message:"Footer"},chromevox_tag_footer_brl:{message:"ftr"},chromevox_tag_time:{message:"Time"},chromevox_tag_time_brl:{message:" "},chromevox_tag_mark:{message:"Mark"},chromevox_tag_mark_brl:{message:"mark"},chromevox_tag_video:{message:"Video"},chromevox_tag_video_brl:{message:"video"},chromevox_tag_audio:{message:"Audio"},chromevox_tag_audio_brl:{message:"audio"},chromevox_input_type_button:{message:"Button"},
-chromevox_input_type_button_brl:{message:"btn"},chromevox_input_type_checkbox:{message:"Check box"},chromevox_input_type_checkbox_brl:{message:"chx"},chromevox_input_type_color:{message:"Color picker"},chromevox_input_type_color_brl:{message:"color picker"},chromevox_input_type_datetime:{message:"Date time control"},chromevox_input_type_datetime_brl:{message:"date time"},chromevox_input_type_datetime_local:{message:"Date time control"},chromevox_input_type_datetime_local_brl:{message:"date time"},
-chromevox_input_type_date:{message:"Date control"},chromevox_input_type_date_brl:{message:"date"},chromevox_input_type_email:{message:"Edit text, email entry"},chromevox_input_type_email_brl:{message:"edtxt email"},chromevox_input_type_file:{message:"File selection"},chromevox_input_type_file_brl:{message:"file"},chromevox_input_type_image:{message:"Button"},chromevox_input_type_image_brl:{message:"btn"},chromevox_input_type_month:{message:"Month control"},chromevox_input_type_month_brl:{message:"month"},
-chromevox_input_type_number:{message:"Edit text numeric only"},chromevox_input_type_number_brl:{message:"edtxt#"},chromevox_input_type_password:{message:"Password edit text"},chromevox_input_type_password_brl:{message:"pwd edtxt"},chromevox_input_type_radio:{message:"Radio button"},chromevox_input_type_radio_brl:{message:"rd btn"},chromevox_input_type_range:{message:"Slider"},chromevox_input_type_range_brl:{message:"slr"},chromevox_input_type_reset:{message:"Reset"},chromevox_input_type_reset_brl:{message:"reset"},
-chromevox_input_type_search:{message:"Edit text, search entry"},chromevox_input_type_search_brl:{message:"search edtxt"},chromevox_input_type_submit:{message:"Button"},chromevox_input_type_submit_brl:{message:"btn"},chromevox_input_type_tel:{message:"Edit text, number entry"},chromevox_input_type_tel_brl:{message:"tele# edtxt"},chromevox_input_type_text:{message:"Edit text"},chromevox_input_type_text_brl:{message:"edtxt"},chromevox_input_type_url:{message:"Edit text, URL entry"},chromevox_input_type_url_brl:{message:"url edtxt"},
-chromevox_input_type_week:{message:"Week of the year control"},chromevox_input_type_week_brl:{message:"week"},chromevox_internal_link:{message:"Internal link"},chromevox_internal_link_brl:{message:"int lnk"},chromevox_text_box_blank:{message:"Blank"},chromevox_list_with_items:{message:"with $1 items",placeholders:{1:{content:"$1"}}},chromevox_list_with_items_brl:{message:"+$1",placeholders:{1:{content:"$1"}}},chromevox_state_percent:{message:"$1%",placeholders:{1:{content:"$1"}}},chromevox_state_percent_brl:{message:"$1%",
-placeholders:{1:{content:"$1"}}},chromevox_has_submenu:{message:"with submenu"},chromevox_has_submenu_brl:{message:"+submnu"},chromevox_has_popup:{message:"has popup"},chromevox_has_popup_brl:{message:"has popup"},chromevox_collection:{message:"$1 collection with $2 items",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_key:{message:"Enter"},chromevox_space_key:{message:"Space"},chromevox_backspace_key:{message:"Backspace"},chromevox_tab_key:{message:"Tab"},chromevox_left_key:{message:"Left"},
-chromevox_up_key:{message:"Up"},chromevox_right_key:{message:"Right"},chromevox_down_key:{message:"Down"},chromevox_unknown_link:{message:"Unknown link"},chromevox_toggle_chromevox_active:{message:"Toggle ChromeVox active or inactive."},chromevox_chromevox_inactive:{message:"ChromeVox is now inactive."},chromevox_pause:{message:", "},chromevox_end:{message:". "},chromevox_previous_different_element:{message:"Previous different element."},chromevox_next_different_element:{message:"Next different element."},
-chromevox_previous_similar_element:{message:"Previous similar element."},chromevox_next_similar_element:{message:"Next similar element."},chromevox_no_more_similar_elements:{message:"No more similar elements."},chromevox_no_more_different_elements:{message:"No more different elements."},chromevox_index_total:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_css_space:{message:"Enter group exploration"},chromevox_enter_group_exploration:{message:"Exploring groups"},
-chromevox_pdf_header:{message:'This page contains the text automatically extracted from the PDF file <b>$1</b>. <a href="$2">Click here for the original.</a>',placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_object_strategy:{message:"Object"},chromevox_group_strategy:{message:"Group"},chromevox_table_strategy:{message:"Table"},chromevox_row_granularity:{message:"Row"},chromevox_column_granularity:{message:"Column"},chromevox_mathml_tree_granularity:{message:"Math ML Tree"},chromevox_mathml_layout_granularity:{message:"Math ML Layout"},
-chromevox_mathml_token_granularity:{message:"Math ML Token"},chromevox_mathml_leaf_granularity:{message:"Math ML Leaf"},chromevox_visual_strategy:{message:"Visual"},chromevox_custom_strategy:{message:"Custom"},chromevox_line_granularity:{message:"Line"},chromevox_sentence_granularity:{message:"Sentence"},chromevox_word_granularity:{message:"Word"},chromevox_character_granularity:{message:"Character"},chromevox_search_widget_intro:{message:"Find in page."},chromevox_search_widget_intro_help:{message:"Enter a search query."},
-chromevox_search_widget_outro:{message:"Exited find in page."},chromevox_search_widget_no_results:{message:"No more results."},chromevox_modifier_keys:{message:"Modifier Keys"},chromevox_navigation:{message:"ChromeVox Navigation"},chromevox_information:{message:"Information"},chromevox_help_commands:{message:"Help Commands"},chromevox_controlling_speech:{message:"Controlling Speech"},chromevox_overview:{message:"Overview"},chromevox_tables:{message:"Tables"},chromevox_jump_commands:{message:"Jump Commands"},
-chromevox_braille:{message:"Braille"},chromevox_developer:{message:"Developer"},chromevox_keymap_classic:{message:"Classic keymap"},chromevox_keymap_flat:{message:"Flat keymap"},chromevox_keymap_experimental:{message:"Experimental keymap"},chromevox_enable_tts_log:{message:"Enable TTS logging"},chromevox_begin_selection:{message:"Start selection"},chromevox_end_selection:{message:"End selection"},chromevox_selection_is:{message:"Selection is "},chromevox_toggle_selection:{message:"Start or end selection."},
-chromevox_copy:{message:"copy."},chromevox_cut:{message:"cut."},chromevox_paste:{message:"paste."},chromevox_selected:{message:"selected"},chromevox_unselected:{message:"unselected"},chromevox_added_to_selection:{message:"added to selection"},chromevox_removed_from_selection:{message:"removed from selection"},chromevox_then:{message:"then"},chromevox_followed_by:{message:"followed by"},chromevox_modifier_key:{message:"ChromeVox modifier"},chromevox_key_conflict:{message:"$1 is already assigned to a command.",
-placeholders:{1:{content:"$1"}}},chromevox_math_expr:{message:"Math"},chromevox_math_expr_brl:{message:"Math"},chromevox_not_inside_math:{message:"Not inside math"},chromevox_timewidget_ampm:{message:"AM PM"},chromevox_timewidget_hours:{message:"hours"},chromevox_timewidget_minutes:{message:"minutes"},chromevox_timewidget_seconds:{message:"seconds"},chromevox_timewidget_milliseconds:{message:"milliseconds"},chromevox_timewidget_am:{message:"AM"},chromevox_timewidget_pm:{message:"PM"},chromevox_datewidget_week:{message:"week"},
-chromevox_datewidget_january:{message:"January"},chromevox_datewidget_february:{message:"February"},chromevox_datewidget_march:{message:"March"},chromevox_datewidget_april:{message:"April"},chromevox_datewidget_may:{message:"May"},chromevox_datewidget_june:{message:"June"},chromevox_datewidget_july:{message:"July"},chromevox_datewidget_august:{message:"August"},chromevox_datewidget_september:{message:"September"},chromevox_datewidget_october:{message:"October"},chromevox_datewidget_november:{message:"November"},
-chromevox_datewidget_december:{message:"December"},chromevox_no_punctuation:{message:"No punctuation"},chromevox_some_punctuation:{message:"Some punctuation"},chromevox_all_punctuation:{message:"All punctuation"},chromevox_search_help_item:{message:"Press enter to accept or escape to cancel, down for next and up for previous."},chromevox_clickable:{message:"clickable"},chromevox_clickable_brl:{message:"clickable"},chromevox_previous_character:{message:"Previous Character"},chromevox_next_character:{message:"Next Character"},
-chromevox_previous_word:{message:"Previous Word"},chromevox_next_word:{message:"Next Word"},chromevox_previous_sentence:{message:"Previous Sentence"},chromevox_next_sentence:{message:"Next Sentence"},chromevox_previous_line:{message:"Previous Line"},chromevox_next_line:{message:"Next Line"},chromevox_previous_object:{message:"Previous Object"},chromevox_next_object:{message:"Next Object"},chromevox_previous_group:{message:"Previous Group"},chromevox_next_group:{message:"Next Group"},chromevox_role_landmark:{message:"Landmark"},
-chromevox_modifier_entry_error:{message:"No modifier pressed; please press and hold one or more modifiers; lift your fingers once done and you will hear the keys set. Tab to exit."},chromevox_modifier_entry_set:{message:"$1 is now the new ChromeVox modifier.",placeholders:{1:{content:"$1"}}},chromevox_keymap_reset:{message:"$1 has been reset.",placeholders:{1:{content:"$1"}}},chromevox_keymap_switch:{message:"Switched to $1.",placeholders:{1:{content:"$1"}}},chromevox_jump_to_top:{message:"Jump to the top of the page"},
-chromevox_jump_to_bottom:{message:"Jump to the bottom of the page"},chromevox_wrapped_to_top:{message:"Wrapped to top"},chromevox_wrapped_to_bottom:{message:"Wrapped to bottom"},chromevox_cycle_punctuation_echo:{message:"Cycle punctuation echo"},chromevox_cycle_typing_echo:{message:"Cycle typing echo"},chromevox_pause_all_media:{message:"Pauses all currently playing media widgets"},chromevox_open_long_desc:{message:"Open long description in a new tab"},chromevox_no_long_desc:{message:"No long description"},
-chromevox_image_with_long_desc:{message:"Image with long description"},chromevox_selected_options_value:{message:"$1 to $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_value_brl:{message:"$1-$2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_state:{message:"selected $1 items",placeholders:{1:{content:"$1"}}},chromevox_selected_options_state_brl:{message:"sld $1",placeholders:{1:{content:"$1"}}},chromevox_clear_page_selection:{message:"cleared selection"},
-chromevox_character_echo:{message:"character echo"},chromevox_word_echo:{message:"word echo"},chromevox_character_and_word_echo:{message:"character and word echo"},chromevox_none_echo:{message:"no typing echo"},chromevox_enter_content:{message:"enter structured content, such as tables"},chromevox_exit_content:{message:"exit structured content, such as tables"},chromevox_enter_content_say:{message:"entered $1",placeholders:{1:{content:"$1"}}},chromevox_structural_line:{message:"structural line"},chromevox_layout_line:{message:"line"},
-chromevox_toggle_line_type:{message:"Toggle line type between structural or layout"},chromevox_table_shifter:{message:"table"},chromevox_navigation_shifter:{message:"default navigation"},chromevox_math_shifter:{message:"math"},chromevox_toggle_semantics:{message:"Toggle interpretation of math expressions between structural and semantic"},chromevox_semantics_on:{message:"Semantics on"},chromevox_semantics_off:{message:"Semantics off"},chromevox_phonetic_map:{message:'{"a": "alpha", "b": "bravo", "c": "charlie", "d": "delta", "e": "echo", "f": "foxtrot", "g": "golf", "h": "hotel", "i": "india", "j": "juliet","k": "kilo", "l": "lima", "m": "mike", "n": "november", "o": "oscar","p": "papa", "q": "quebec", "r": "romeo", "s": "sierra", "t": "tango", "u": "uniform", "v": "victor", "w": "whiskey","x": "xray", "y": "yankee", "z": "zulu"}'},
-chromevox_page_has_one_alert_singular:{message:"This page has 1 alert"},chromevox_page_has_alerts_plural:{message:"This page has $1 alerts",placeholders:{1:{content:"$1"}}},chromevox_review_alerts:{message:"Press Alt+Shift+A to review alerts"},chromevox_no_next_article:{message:"No next article."},chromevox_no_previous_article:{message:"No previous article."},chromevox_chromevox_intro:{message:"ChromeVox spoken feedback is ready"},chromevox_intro_brl:{message:"ChromeVox ready"},chromevox_earcons_on:{message:"Earcons on"},
-chromevox_earcons_off:{message:"Earcons off"},chromevox_toggle_earcons:{message:"Turn sound feedback (earcons) on or off."},chromevox_speak_time_and_date:{message:"Speak the current time and date."},chromevox_mark_as_search_result_brl:{message:"S:$1",placeholders:{1:{content:"$1"}}},chromevox_text_deleted:{message:"Deleted"},chromevox_perform_default_action:{message:"Perform default action"},chromevox_visited_url:{message:"visited"},chromevox_visited_url_brl:{message:"visited"},chromevox_exclamation:{message:"{COUNT, plural, =1 {exclamation point}other {# exclamation points}}"},
-chromevox_space:{message:"{COUNT, plural, =1 {space}other {# spaces}}"},chromevox_backtick:{message:"{COUNT, plural, =1 {backtick}other {# backticks}}"},chromevox_tilde:{message:"{COUNT, plural, =1 {TILDE}other {# tildes}}"},chromevox_at:{message:"{COUNT, plural, =1 {at}other {# at signs}}"},chromevox_pound:{message:"{COUNT, plural, =1 {pound}other {# pound signs}}"},chromevox_dollar:{message:"{COUNT, plural, =1 {dollar}other {# dollar signs}}"},chromevox_percent:{message:"{COUNT, plural, =1 {percent}other {# percent signs}}"},
-chromevox_caret:{message:"{COUNT, plural, =1 {caret}other {# carets}}"},chromevox_ampersand:{message:"{COUNT, plural, =1 {ampersand}other {# ampersands}}"},chromevox_asterisk:{message:"{COUNT, plural, =1 {asterisk}other {# asterisks}}"},chromevox_open_paren:{message:"{COUNT, plural, =1 {open paren}other {# open parens}}"},chromevox_close_paren:{message:"{COUNT, plural, =1 {close paren}other {# close parens}}"},chromevox_dash:{message:"{COUNT, plural, =1 {dash}other {# dashes}}"},chromevox_underscore:{message:"{COUNT, plural, =1 {underscore}other {# underscores}}"},
-chromevox_equals:{message:"{COUNT, plural, =1 {equal}other {# equal signs}}"},chromevox_plus:{message:"{COUNT, plural, =1 {plus}other {# plus signs}}"},chromevox_left_bracket:{message:"{COUNT, plural, =1 {left bracket}other {# left brackets}}"},chromevox_right_bracket:{message:"{COUNT, plural, =1 {right bracket}other {# right brackets}}"},chromevox_left_brace:{message:"{COUNT, plural, =1 {left brace}other {# left braces}}"},chromevox_right_brace:{message:"{COUNT, plural, =1 {right brace}other {# right braces}}"},
-chromevox_pipe:{message:"{COUNT, plural, =1 {pipe}other {# vertical pipes}}"},chromevox_semicolon:{message:"{COUNT, plural, =1 {semicolon}other {# semicolons}}"},chromevox_colon:{message:"{COUNT, plural, =1 {colon}other {# colons}}"},chromevox_comma:{message:"{COUNT, plural, =1 {comma}other {# commas}}"},chromevox_dot:{message:"{COUNT, plural, =1 {dot}=3 {ellipsis}other {# dots}}"},chromevox_less_than:{message:"{COUNT, plural, =1 {less than}other {# less than signs}}"},chromevox_greater_than:{message:"{COUNT, plural, =1 {greater than}other {# greater than signs}}"},
-chromevox_slash:{message:"{COUNT, plural, =1 {slash}other {# slashes}}"},chromevox_question_mark:{message:"{COUNT, plural, =1 {question mark}other {# question marks}}"},chromevox_quote:{message:"{COUNT, plural, =1 {quote}other {# quotes}}"},chromevox_apostrophe:{message:"{COUNT, plural, =1 {apostrophe}other {# apostrophes}}"},chromevox_tab:{message:"{COUNT, plural, =1 {tab}other {# tabs}}"},chromevox_backslash:{message:"{COUNT, plural, =1 {backslash}other {# backslashes}}"},chromevox_braille_routing:{message:"Click the item under a routing key"},
-chromevox_braille_pan_left:{message:"Pan backward"},chromevox_braille_pan_right:{message:"Pan bforward"},chromevox_braille_line_up:{message:"Braille previous Line"},chromevox_braille_line_down:{message:"Braille next Line"},chromevox_braille_top:{message:"Move braille display to top of page"},chromevox_braille_bottom:{message:"Move braille display to bottom of page"},chromevox_access_key:{message:"has access key, $1",placeholders:{1:{content:"$1"}}},chromevox_locale_dict:{message:'{"ar": "Arabic","bg": "Bulgarian","ca": "Catalan","hr": "Croatian","cs": "Czech","da": "Danish","nl": "Dutch","en_CA": "English (Canada)","en_GB": "English (United Kingdom)","en_US": "English (United States)","et": "Estonian","fr": "French","fr_CA": "French (Canada)","fr_FR": "French (France)","fi": "Finnish","de": "German","de_CH": "German (Switzerland)","de_DE": "German (Germany)","el": "Greek","hi": "Hindi","hu": "Hungarian","is": "Icelandic","it": "Italian","lv": "Latvian","lt": "Lithuanian","nb": "Norwegian Bokm\u00e5l","pl": "Polish","pt": "Portuguese","ro": "Romanian","ru": "Russian","sr": "Serbian","sk": "Slovak","sl": "Slovenian","es": "Spanish","sv": "Swedish","tr": "Turkish","vi": "Vietnamese","zh": "Chinese","zh_TW": "Chinese (Traditional Han)"}'}};cvox.TestMsgs=function(){};goog.inherits(cvox.TestMsgs,cvox.AbstractMsgs);cvox.TestMsgs.prototype.getMsg=function(a,b){if(!a){var c=Error();c.message="Message id required";throw c;}c=cvox.TestMessages["chromevox_"+a];if(void 0==c)throw c=Error(),c.message="missing-msg: "+a,c;var d=c.message;if(b)for(var e=0;e<b.length;e++){var f=c.placeholders[e+1];if(!f)throw c=Error(),c.message="Bad placeholder "+e+" for message id "+a,c;f=c.placeholders[e+1].content;d=d.replace(f,b[e])}return d};
-cvox.TestMsgs.prototype.getNumber=function(a){return""+a};cvox.HostFactory.msgsConstructor=cvox.TestMsgs;cvox.ChromeVox.initDocument();
diff --git a/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js b/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js
deleted file mode 100644
index 8229b168..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js
+++ /dev/null
@@ -1,1778 +0,0 @@
-// Copyright 2013 Google 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.
-var goog=goog||{};goog.global=this;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||void 0===b?c=c[d]?c[d]:c[d]={}:c[d]=b};goog.define=function(a,b){var c=b;goog.exportPath_(a,c)};goog.DEBUG=!1;goog.LOCALE="en";goog.TRUSTED_SITE=!0;goog.provide=function(a){goog.exportPath_(a)};
-goog.setTestOnly=function(a){if(!goog.DEBUG)throw a=a||"",Error("Importing test-only code into non-debug environment"+a?": "+a:".");};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};goog.globalize=function(a,b){var c=b||goog.global,d;for(d in a)c[d]=a[d]};
-goog.addDependency=function(a,b,c){if(goog.DEPENDENCIES_ENABLED){var d;a=a.replace(/\\/g,"/");for(var e=goog.dependencies_,f=0;d=b[f];f++)e.nameToPath[d]=a,a in e.pathToNames||(e.pathToNames[a]={}),e.pathToNames[a][d]=!0;for(d=0;b=c[d];d++)a in e.requires||(e.requires[a]={}),e.requires[a][b]=!0}};goog.useStrictRequires=!1;goog.ENABLE_DEBUG_LOADER=!0;goog.require=function(){};goog.basePath="";goog.nullFunction=function(){};goog.identityFunction=function(a){return a};
-goog.abstractMethod=function(){throw Error("unimplemented abstract method");};goog.addSingletonGetter=function(a){a.getInstance=function(){if(a.instance_)return a.instance_;goog.DEBUG&&(goog.instantiatedSingletons_[goog.instantiatedSingletons_.length]=a);return a.instance_=new a}};goog.instantiatedSingletons_=[];goog.DEPENDENCIES_ENABLED=!1;
-goog.DEPENDENCIES_ENABLED&&(goog.included_={},goog.dependencies_={pathToNames:{},nameToPath:{},requires:{},visited:{},written:{}},goog.inHtmlDocument_=function(){var a=goog.global.document;return"undefined"!=typeof a&&"write"in a},goog.findBasePath_=function(){if(goog.global.CLOSURE_BASE_PATH)goog.basePath=goog.global.CLOSURE_BASE_PATH;else if(goog.inHtmlDocument_())for(var a=goog.global.document,a=a.getElementsByTagName("script"),b=a.length-1;0<=b;--b){var c=a[b].src,d=c.lastIndexOf("?"),d=-1==d?
-c.length:d;if("base.js"==c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=function(a){var b=goog.global.CLOSURE_IMPORT_SCRIPT||goog.writeScriptTag_;!goog.dependencies_.written[a]&&b(a)&&(goog.dependencies_.written[a]=!0)},goog.writeScriptTag_=function(a){if(goog.inHtmlDocument_()){var b=goog.global.document;if("complete"==b.readyState){if(b=/\bdeps.js$/.test(a))return!1;throw Error('Cannot write "'+a+'" after document load');}b.write('<script type="text/javascript" src="'+
-a+'">\x3c/script>');return!0}return!1},goog.writeScripts_=function(){function a(e){if(!(e in d.written)){if(!(e in d.visited)&&(d.visited[e]=!0,e in d.requires))for(var g in d.requires[e])if(!goog.isProvided_(g))if(g in d.nameToPath)a(d.nameToPath[g]);else throw Error("Undefined nameToPath for "+g);e in c||(c[e]=!0,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("Undefined script input");
-},goog.getPathFromDeps_=function(a){return a in goog.dependencies_.nameToPath?goog.dependencies_.nameToPath[a]:null},goog.findBasePath_(),goog.global.CLOSURE_NO_DEPS||goog.importScript_(goog.basePath+"deps.js"));
-goog.typeOf=function(a){var b=typeof a;if("object"==b)if(a){if(a instanceof Array)return"array";if(a instanceof Object)return b;var c=Object.prototype.toString.call(a);if("[object Window]"==c)return"object";if("[object Array]"==c||"number"==typeof a.length&&"undefined"!=typeof a.splice&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("splice"))return"array";if("[object Function]"==c||"undefined"!=typeof a.call&&"undefined"!=typeof a.propertyIsEnumerable&&!a.propertyIsEnumerable("call"))return"function"}else return"null";
-else if("function"==b&&"undefined"==typeof a.call)return"object";return b};goog.isDef=function(a){return void 0!==a};goog.isNull=function(a){return null===a};goog.isDefAndNotNull=function(a){return null!=a};goog.isArray=function(a){return"array"==goog.typeOf(a)};goog.isArrayLike=function(a){var b=goog.typeOf(a);return"array"==b||"object"==b&&"number"==typeof a.length};goog.isDateLike=function(a){return goog.isObject(a)&&"function"==typeof a.getFullYear};goog.isString=function(a){return"string"==typeof a};
-goog.isBoolean=function(a){return"boolean"==typeof a};goog.isNumber=function(a){return"number"==typeof a};goog.isFunction=function(a){return"function"==goog.typeOf(a)};goog.isObject=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};goog.getUid=function(a){return a[goog.UID_PROPERTY_]||(a[goog.UID_PROPERTY_]=++goog.uidCounter_)};goog.hasUid=function(a){return!!a[goog.UID_PROPERTY_]};goog.removeUid=function(a){"removeAttribute"in a&&a.removeAttribute(goog.UID_PROPERTY_);try{delete a[goog.UID_PROPERTY_]}catch(b){}};
-goog.UID_PROPERTY_="closure_uid_"+(1E9*Math.random()>>>0);goog.uidCounter_=0;goog.getHashCode=goog.getUid;goog.removeHashCode=goog.removeUid;goog.cloneObject=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},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.bindJs_=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}};goog.bind=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?goog.bind=goog.bindNative_:goog.bind=goog.bindJs_;return goog.bind.apply(null,arguments)};
-goog.partial=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var b=c.slice();b.push.apply(b,arguments);return a.apply(this,b)}};goog.mixin=function(a,b){for(var c in b)a[c]=b[c]};goog.now=goog.TRUSTED_SITE&&Date.now||function(){return+new Date};
-goog.globalEval=function(a){if(goog.global.execScript)goog.global.execScript(a,"JavaScript");else if(goog.global.eval)if(null==goog.evalWorksForGlobals_&&(goog.global.eval("var _et_ = 1;"),"undefined"!=typeof goog.global._et_?(delete goog.global._et_,goog.evalWorksForGlobals_=!0):goog.evalWorksForGlobals_=!1),goog.evalWorksForGlobals_)goog.global.eval(a);else{var b=goog.global.document,c=b.createElement("script");c.type="text/javascript";c.defer=!1;c.appendChild(b.createTextNode(a));b.body.appendChild(c);
-b.body.removeChild(c)}else throw Error("goog.globalEval not available");};goog.evalWorksForGlobals_=null;goog.getCssName=function(a,b){var c=function(a){return goog.cssNameMapping_[a]||a},d=function(a){a=a.split("-");for(var b=[],d=0;d<a.length;d++)b.push(c(a[d]));return b.join("-")},d=goog.cssNameMapping_?"BY_WHOLE"==goog.cssNameMappingStyle_?c:d:function(a){return a};return b?a+"-"+d(b):d(a)};goog.setCssNameMapping=function(a,b){goog.cssNameMapping_=a;goog.cssNameMappingStyle_=b};
-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.getMsgWithFallback=function(a){return a};goog.exportSymbol=function(a,b,c){goog.exportPath_(a,b,c)};goog.exportProperty=function(a,b,c){a[b]=c};goog.inherits=function(a,b){function c(){}c.prototype=b.prototype;a.superClass_=b.prototype;a.prototype=new c;a.prototype.constructor=a};
-goog.base=function(a,b,c){var d=arguments.callee.caller;if(goog.DEBUG&&!d)throw Error("arguments.caller not defined. goog.base() expects not to be running in strict mode. See http://www.ecma-international.org/ecma-262/5.1/#sec-C");if(d.superClass_)return d.superClass_.constructor.apply(a,Array.prototype.slice.call(arguments,1));for(var e=Array.prototype.slice.call(arguments,2),f=!1,g=a.constructor;g;g=g.superClass_&&g.superClass_.constructor)if(g.prototype[b]===d)f=!0;else if(f)return g.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 method of a different name");};goog.scope=function(a){a.call(goog.global)};goog.MODIFY_FUNCTION_PROTOTYPES=!0;
-goog.MODIFY_FUNCTION_PROTOTYPES&&(Function.prototype.bind=Function.prototype.bind||function(a,b){if(1<arguments.length){var c=Array.prototype.slice.call(arguments,1);c.unshift(this,a);return goog.bind.apply(null,c)}return goog.bind(this,a)},Function.prototype.partial=function(a){var b=Array.prototype.slice.call(arguments);b.unshift(this,null);return goog.bind.apply(null,b)},Function.prototype.inherits=function(a){goog.inherits(this,a)},Function.prototype.mixin=function(a){goog.mixin(this.prototype,
-a)});var cvox={VERBOSITY_VERBOSE:0,VERBOSITY_BRIEF:1,ChromeVox:function(){}};cvox.ChromeVox.host=null;cvox.ChromeVox.msgs=null;cvox.ChromeVox.isActive=!0;cvox.ChromeVox.version=null;cvox.ChromeVox.earcons=null;cvox.ChromeVox.navigationManager=null;cvox.ChromeVox.serializer=null;cvox.ChromeVox.isStickyOn=!1;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVox.verbosity=cvox.VERBOSITY_VERBOSE;cvox.ChromeVox.typingEcho=0;cvox.ChromeVox.keyEcho={};cvox.ChromeVox.position={};cvox.ChromeVox.isChromeOS=-1!=navigator.userAgent.indexOf("CrOS");
-cvox.ChromeVox.isMac=-1!=navigator.platform.indexOf("Mac");cvox.ChromeVox.modKeyStr=cvox.ChromeVox.isChromeOS?"Shift+Search":cvox.ChromeVox.isMac?"Ctrl+Cmd":"Ctrl+Meta";cvox.ChromeVox.sequenceSwitchKeyCodes=[];cvox.ChromeVox.visitedUrls={};cvox.ChromeVox.markInUserCommand=function(){};cvox.ChromeVox.syncToNode=function(){};cvox.ChromeVox.speakNode=function(){};cvox.ChromeVox.executeUserCommand=function(){};cvox.ChromeVox.entireDocumentIsHidden=!1;
-cvox.ChromeVox.storeOn=function(a){a.isStickyOn=cvox.ChromeVox.isStickyOn;cvox.ChromeVox.navigationManager.storeOn(a)};cvox.ChromeVox.readFrom=function(a){cvox.ChromeVox.isStickyOn=a.isStickyOn;cvox.ChromeVox.navigationManager.readFrom(a)};cvox.Cursor=function(a,b,c){this.node=a;this.index=b;this.text=c};cvox.Cursor.prototype.clone=function(){return new cvox.Cursor(this.node,this.index,this.text)};cvox.Cursor.prototype.copyFrom=function(a){this.node=a.node;this.index=a.index;this.text=a.text};cvox.Cursor.prototype.equals=function(a){return this.node==a.node&&this.index==a.index&&this.text==a.text};goog.debug={};goog.debug.Error=function(a){Error.captureStackTrace?Error.captureStackTrace(this,goog.debug.Error):this.stack=Error().stack||"";a&&(this.message=String(a))};goog.inherits(goog.debug.Error,Error);goog.debug.Error.prototype.name="CustomError";goog.dom={};goog.dom.NodeType={ELEMENT:1,ATTRIBUTE:2,TEXT:3,CDATA_SECTION:4,ENTITY_REFERENCE:5,ENTITY:6,PROCESSING_INSTRUCTION:7,COMMENT:8,DOCUMENT:9,DOCUMENT_TYPE:10,DOCUMENT_FRAGMENT:11,NOTATION:12};goog.string={};goog.string.Unicode={NBSP:"\u00a0"};goog.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};goog.string.endsWith=function(a,b){var c=a.length-b.length;return 0<=c&&a.indexOf(b,c)==c};goog.string.caseInsensitiveStartsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(0,b.length))};goog.string.caseInsensitiveEndsWith=function(a,b){return 0==goog.string.caseInsensitiveCompare(b,a.substr(a.length-b.length,b.length))};
-goog.string.caseInsensitiveEquals=function(a,b){return a.toLowerCase()==b.toLowerCase()};goog.string.subs=function(a,b){for(var c=a.split("%s"),d="",e=Array.prototype.slice.call(arguments,1);e.length&&1<c.length;)d+=c.shift()+e.shift();return d+c.join("%s")};goog.string.collapseWhitespace=function(a){return a.replace(/[\s\xa0]+/g," ").replace(/^\s+|\s+$/g,"")};goog.string.isEmpty=function(a){return/^[\s\xa0]*$/.test(a)};goog.string.isEmptySafe=function(a){return goog.string.isEmpty(goog.string.makeSafe(a))};
-goog.string.isBreakingWhitespace=function(a){return!/[^\t\n\r ]/.test(a)};goog.string.isAlpha=function(a){return!/[^a-zA-Z]/.test(a)};goog.string.isNumeric=function(a){return!/[^0-9]/.test(a)};goog.string.isAlphaNumeric=function(a){return!/[^a-zA-Z0-9]/.test(a)};goog.string.isSpace=function(a){return" "==a};goog.string.isUnicodeChar=function(a){return 1==a.length&&" "<=a&&"~">=a||"\u0080"<=a&&"\ufffd">=a};goog.string.stripNewlines=function(a){return a.replace(/(\r\n|\r|\n)+/g," ")};
-goog.string.canonicalizeNewlines=function(a){return a.replace(/(\r\n|\r|\n)/g,"\n")};goog.string.normalizeWhitespace=function(a){return a.replace(/\xa0|\s/g," ")};goog.string.normalizeSpaces=function(a){return a.replace(/\xa0|[ \t]+/g," ")};goog.string.collapseBreakingSpaces=function(a){return a.replace(/[\t\r\n ]+/g," ").replace(/^[\t\r\n ]+|[\t\r\n ]+$/g,"")};goog.string.trim=function(a){return a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")};
-goog.string.trimLeft=function(a){return a.replace(/^[\s\xa0]+/,"")};goog.string.trimRight=function(a){return a.replace(/[\s\xa0]+$/,"")};goog.string.caseInsensitiveCompare=function(a,b){var c=String(a).toLowerCase(),d=String(b).toLowerCase();return c<d?-1:c==d?0:1};goog.string.numerateCompareRegExp_=/(\.\d+)|(\d+)|(\D+)/g;
-goog.string.numerateCompare=function(a,b){if(a==b)return 0;if(!a)return-1;if(!b)return 1;for(var c=a.toLowerCase().match(goog.string.numerateCompareRegExp_),d=b.toLowerCase().match(goog.string.numerateCompareRegExp_),e=Math.min(c.length,d.length),f=0;f<e;f++){var g=c[f],h=d[f];if(g!=h)return c=parseInt(g,10),!isNaN(c)&&(d=parseInt(h,10),!isNaN(d)&&c-d)?c-d:g<h?-1:1}return c.length!=d.length?c.length-d.length:a<b?-1:1};goog.string.urlEncode=function(a){return encodeURIComponent(String(a))};
-goog.string.urlDecode=function(a){return decodeURIComponent(a.replace(/\+/g," "))};goog.string.newLineToBr=function(a,b){return a.replace(/(\r\n|\r|\n)/g,b?"<br />":"<br>")};
-goog.string.htmlEscape=function(a,b){if(b)return a.replace(goog.string.amperRe_,"&amp;").replace(goog.string.ltRe_,"&lt;").replace(goog.string.gtRe_,"&gt;").replace(goog.string.quotRe_,"&quot;");if(!goog.string.allRe_.test(a))return a;-1!=a.indexOf("&")&&(a=a.replace(goog.string.amperRe_,"&amp;"));-1!=a.indexOf("<")&&(a=a.replace(goog.string.ltRe_,"&lt;"));-1!=a.indexOf(">")&&(a=a.replace(goog.string.gtRe_,"&gt;"));-1!=a.indexOf('"')&&(a=a.replace(goog.string.quotRe_,"&quot;"));return a};
-goog.string.amperRe_=/&/g;goog.string.ltRe_=/</g;goog.string.gtRe_=/>/g;goog.string.quotRe_=/\"/g;goog.string.allRe_=/[&<>\"]/;goog.string.unescapeEntities=function(a){return goog.string.contains(a,"&")?"document"in goog.global?goog.string.unescapeEntitiesUsingDom_(a):goog.string.unescapePureXmlEntities_(a):a};goog.string.unescapeEntitiesWithDocument=function(a,b){return goog.string.contains(a,"&")?goog.string.unescapeEntitiesUsingDom_(a,b):a};
-goog.string.unescapeEntitiesUsingDom_=function(a,b){var c={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"'},d;d=b?b.createElement("div"):document.createElement("div");return a.replace(goog.string.HTML_ENTITY_PATTERN_,function(a,b){var g=c[a];if(g)return g;if("#"==b.charAt(0)){var h=Number("0"+b.substr(1));isNaN(h)||(g=String.fromCharCode(h))}g||(d.innerHTML=a+" ",g=d.firstChild.nodeValue.slice(0,-1));return c[a]=g})};
-goog.string.unescapePureXmlEntities_=function(a){return a.replace(/&([^;]+);/g,function(a,c){switch(c){case "amp":return"&";case "lt":return"<";case "gt":return">";case "quot":return'"';default:if("#"==c.charAt(0)){var d=Number("0"+c.substr(1));if(!isNaN(d))return String.fromCharCode(d)}return a}})};goog.string.HTML_ENTITY_PATTERN_=/&([^;\s<&]+);?/g;goog.string.whitespaceEscape=function(a,b){return goog.string.newLineToBr(a.replace(/ /g," &#160;"),b)};
-goog.string.stripQuotes=function(a,b){for(var c=b.length,d=0;d<c;d++){var e=1==c?b:b.charAt(d);if(a.charAt(0)==e&&a.charAt(a.length-1)==e)return a.substring(1,a.length-1)}return a};goog.string.truncate=function(a,b,c){c&&(a=goog.string.unescapeEntities(a));a.length>b&&(a=a.substring(0,b-3)+"...");c&&(a=goog.string.htmlEscape(a));return a};
-goog.string.truncateMiddle=function(a,b,c,d){c&&(a=goog.string.unescapeEntities(a));if(d&&a.length>b){d>b&&(d=b);var e=a.length-d;b-=d;a=a.substring(0,b)+"..."+a.substring(e)}else a.length>b&&(e=Math.floor(b/2),d=a.length-e,e+=b%2,a=a.substring(0,e)+"..."+a.substring(d));c&&(a=goog.string.htmlEscape(a));return a};goog.string.specialEscapeChars_={"\x00":"\\0","\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r","\t":"\\t","\x0B":"\\x0B",'"':'\\"',"\\":"\\\\"};goog.string.jsEscapeCache_={"'":"\\'"};
-goog.string.quote=function(a){a=String(a);if(a.quote)return a.quote();for(var b=['"'],c=0;c<a.length;c++){var d=a.charAt(c),e=d.charCodeAt(0);b[c+1]=goog.string.specialEscapeChars_[d]||(31<e&&127>e?d:goog.string.escapeChar(d))}b.push('"');return b.join("")};goog.string.escapeString=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=goog.string.escapeChar(a.charAt(c));return b.join("")};
-goog.string.escapeChar=function(a){if(a in goog.string.jsEscapeCache_)return goog.string.jsEscapeCache_[a];if(a in goog.string.specialEscapeChars_)return goog.string.jsEscapeCache_[a]=goog.string.specialEscapeChars_[a];var b=a,c=a.charCodeAt(0);if(31<c&&127>c)b=a;else{if(256>c){if(b="\\x",16>c||256<c)b+="0"}else b="\\u",4096>c&&(b+="0");b+=c.toString(16).toUpperCase()}return goog.string.jsEscapeCache_[a]=b};goog.string.toMap=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=!0;return b};
-goog.string.contains=function(a,b){return-1!=a.indexOf(b)};goog.string.countOf=function(a,b){return a&&b?a.split(b).length-1:0};goog.string.removeAt=function(a,b,c){var d=a;0<=b&&b<a.length&&0<c&&(d=a.substr(0,b)+a.substr(b+c,a.length-b-c));return d};goog.string.remove=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"");return a.replace(c,"")};goog.string.removeAll=function(a,b){var c=RegExp(goog.string.regExpEscape(b),"g");return a.replace(c,"")};
-goog.string.regExpEscape=function(a){return String(a).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")};goog.string.repeat=function(a,b){return Array(b+1).join(a)};goog.string.padNumber=function(a,b,c){a=goog.isDef(c)?a.toFixed(c):String(a);c=a.indexOf(".");-1==c&&(c=a.length);return goog.string.repeat("0",Math.max(0,b-c))+a};goog.string.makeSafe=function(a){return null==a?"":String(a)};goog.string.buildString=function(a){return Array.prototype.join.call(arguments,"")};
-goog.string.getRandomString=function(){var a=2147483648;return Math.floor(Math.random()*a).toString(36)+Math.abs(Math.floor(Math.random()*a)^goog.now()).toString(36)};
-goog.string.compareVersions=function(a,b){for(var c=0,d=goog.string.trim(String(a)).split("."),e=goog.string.trim(String(b)).split("."),f=Math.max(d.length,e.length),g=0;0==c&&g<f;g++){var h=d[g]||"",k=e[g]||"",l=/(\d*)(\D*)/g,m=/(\d*)(\D*)/g;do{var p=l.exec(h)||["","",""],q=m.exec(k)||["","",""];if(0==p[0].length&&0==q[0].length)break;var c=0==p[1].length?0:parseInt(p[1],10),n=0==q[1].length?0:parseInt(q[1],10),c=goog.string.compareElements_(c,n)||goog.string.compareElements_(0==p[2].length,0==q[2].length)||
-goog.string.compareElements_(p[2],q[2])}while(0==c)}return c};goog.string.compareElements_=function(a,b){return a<b?-1:a>b?1:0};goog.string.HASHCODE_MAX_=4294967296;goog.string.hashCode=function(a){for(var b=0,c=0;c<a.length;++c)b=31*b+a.charCodeAt(c),b%=goog.string.HASHCODE_MAX_;return b};goog.string.uniqueStringCounter_=2147483648*Math.random()|0;goog.string.createUniqueString=function(){return"goog_"+goog.string.uniqueStringCounter_++};
-goog.string.toNumber=function(a){var b=Number(a);return 0==b&&goog.string.isEmpty(a)?NaN:b};goog.string.isLowerCamelCase=function(a){return/^[a-z]+([A-Z][a-z]*)*$/.test(a)};goog.string.isUpperCamelCase=function(a){return/^([A-Z][a-z]*)+$/.test(a)};goog.string.toCamelCase=function(a){return String(a).replace(/\-([a-z])/g,function(a,c){return c.toUpperCase()})};goog.string.toSelectorCase=function(a){return String(a).replace(/([A-Z])/g,"-$1").toLowerCase()};
-goog.string.toTitleCase=function(a,b){var c=goog.isString(b)?goog.string.regExpEscape(b):"\\s",c=c?"|["+c+"]+":"",c=RegExp("(^"+c+")([a-z])","g");return a.replace(c,function(a,b,c){return b+c.toUpperCase()})};goog.string.parseInt=function(a){isFinite(a)&&(a=String(a));return goog.isString(a)?/^\s*-?0x/i.test(a)?parseInt(a,16):parseInt(a,10):NaN};goog.string.splitLimit=function(a,b,c){a=a.split(b);for(var d=[];0<c&&a.length;)d.push(a.shift()),c--;a.length&&d.push(a.join(b));return d};goog.asserts={};goog.asserts.ENABLE_ASSERTS=goog.DEBUG;goog.asserts.AssertionError=function(a,b){b.unshift(a);goog.debug.Error.call(this,goog.string.subs.apply(null,b));b.shift()};goog.inherits(goog.asserts.AssertionError,goog.debug.Error);goog.asserts.AssertionError.prototype.name="AssertionError";goog.asserts.doAssertFailure_=function(a,b,c,d){var e="Assertion failed";if(c)var e=e+(": "+c),f=d;else a&&(e+=": "+a,f=b);throw new goog.asserts.AssertionError(""+e,f||[]);};
-goog.asserts.assert=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!a&&goog.asserts.doAssertFailure_("",null,b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.fail=function(a,b){if(goog.asserts.ENABLE_ASSERTS)throw new goog.asserts.AssertionError("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));};
-goog.asserts.assertNumber=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isNumber(a)&&goog.asserts.doAssertFailure_("Expected number but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertString=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isString(a)&&goog.asserts.doAssertFailure_("Expected string but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertFunction=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isFunction(a)&&goog.asserts.doAssertFailure_("Expected function but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertObject=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isObject(a)&&goog.asserts.doAssertFailure_("Expected object but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertArray=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isArray(a)&&goog.asserts.doAssertFailure_("Expected array but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertBoolean=function(a,b,c){goog.asserts.ENABLE_ASSERTS&&!goog.isBoolean(a)&&goog.asserts.doAssertFailure_("Expected boolean but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};
-goog.asserts.assertElement=function(a,b,c){!goog.asserts.ENABLE_ASSERTS||goog.isObject(a)&&a.nodeType==goog.dom.NodeType.ELEMENT||goog.asserts.doAssertFailure_("Expected Element but got %s: %s.",[goog.typeOf(a),a],b,Array.prototype.slice.call(arguments,2));return a};goog.asserts.assertInstanceof=function(a,b,c,d){!goog.asserts.ENABLE_ASSERTS||a instanceof b||goog.asserts.doAssertFailure_("instanceof check failed.",null,c,Array.prototype.slice.call(arguments,3));return a};
-goog.asserts.assertObjectPrototypeIsIntact=function(){for(var a in Object.prototype)goog.asserts.fail(a+" should not be enumerable in Object.prototype.")};goog.array={};goog.NATIVE_ARRAY_PROTOTYPES=goog.TRUSTED_SITE;goog.array.peek=function(a){return a[a.length-1]};goog.array.ARRAY_PROTOTYPE_=Array.prototype;
-goog.array.indexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.indexOf?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.indexOf.call(a,b,c)}:function(a,b,c){c=null==c?0:0>c?Math.max(0,a.length+c):c;if(goog.isString(a))return goog.isString(b)&&1==b.length?a.indexOf(b,c):-1;for(;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};
-goog.array.lastIndexOf=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.lastIndexOf?function(a,b,c){goog.asserts.assert(null!=a.length);c=null==c?a.length-1:c;return goog.array.ARRAY_PROTOTYPE_.lastIndexOf.call(a,b,c)}:function(a,b,c){c=null==c?a.length-1:c;0>c&&(c=Math.max(0,a.length+c));if(goog.isString(a))return goog.isString(b)&&1==b.length?a.lastIndexOf(b,c):-1;for(;0<=c;c--)if(c in a&&a[c]===b)return c;return-1};
-goog.array.forEach=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.forEach?function(a,b,c){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};goog.array.forEachRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;--d)d in e&&b.call(c,e[d],d,a)};
-goog.array.filter=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.filter?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g=goog.isString(a)?a.split(""):a,h=0;h<d;h++)if(h in g){var k=g[h];b.call(c,k,h,a)&&(e[f++]=k)}return e};
-goog.array.map=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.map?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f=goog.isString(a)?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
-goog.array.reduce=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduce?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduce.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEach(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.reduceRight=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.reduceRight?function(a,b,c,d){goog.asserts.assert(null!=a.length);d&&(b=goog.bind(b,d));return goog.array.ARRAY_PROTOTYPE_.reduceRight.call(a,b,c)}:function(a,b,c,d){var e=c;goog.array.forEachRight(a,function(c,g){e=b.call(d,e,c,g,a)});return e};
-goog.array.some=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.some?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.some.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return!0;return!1};
-goog.array.every=goog.NATIVE_ARRAY_PROTOTYPES&&goog.array.ARRAY_PROTOTYPE_.every?function(a,b,c){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.every.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&!b.call(c,e[f],f,a))return!1;return!0};goog.array.count=function(a,b,c){var d=0;goog.array.forEach(a,function(a,f,g){b.call(c,a,f,g)&&++d},c);return d};
-goog.array.find=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};goog.array.findIndex=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,f=0;f<d;f++)if(f in e&&b.call(c,e[f],f,a))return f;return-1};goog.array.findRight=function(a,b,c){b=goog.array.findIndexRight(a,b,c);return 0>b?null:goog.isString(a)?a.charAt(b):a[b]};
-goog.array.findIndexRight=function(a,b,c){for(var d=a.length,e=goog.isString(a)?a.split(""):a,d=d-1;0<=d;d--)if(d in e&&b.call(c,e[d],d,a))return d;return-1};goog.array.contains=function(a,b){return 0<=goog.array.indexOf(a,b)};goog.array.isEmpty=function(a){return 0==a.length};goog.array.clear=function(a){if(!goog.isArray(a))for(var b=a.length-1;0<=b;b--)delete a[b];a.length=0};goog.array.insert=function(a,b){goog.array.contains(a,b)||a.push(b)};
-goog.array.insertAt=function(a,b,c){goog.array.splice(a,c,0,b)};goog.array.insertArrayAt=function(a,b,c){goog.partial(goog.array.splice,a,c,0).apply(null,b)};goog.array.insertBefore=function(a,b,c){var d;2==arguments.length||0>(d=goog.array.indexOf(a,c))?a.push(b):goog.array.insertAt(a,b,d)};goog.array.remove=function(a,b){var c=goog.array.indexOf(a,b),d;(d=0<=c)&&goog.array.removeAt(a,c);return d};
-goog.array.removeAt=function(a,b){goog.asserts.assert(null!=a.length);return 1==goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1).length};goog.array.removeIf=function(a,b,c){b=goog.array.findIndex(a,b,c);return 0<=b?(goog.array.removeAt(a,b),!0):!1};goog.array.concat=function(a){return goog.array.ARRAY_PROTOTYPE_.concat.apply(goog.array.ARRAY_PROTOTYPE_,arguments)};goog.array.toArray=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};goog.array.clone=goog.array.toArray;
-goog.array.extend=function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c],e;if(goog.isArray(d)||(e=goog.isArrayLike(d))&&Object.prototype.hasOwnProperty.call(d,"callee"))a.push.apply(a,d);else if(e)for(var f=a.length,g=d.length,h=0;h<g;h++)a[f+h]=d[h];else a.push(d)}};goog.array.splice=function(a,b,c,d){goog.asserts.assert(null!=a.length);return goog.array.ARRAY_PROTOTYPE_.splice.apply(a,goog.array.slice(arguments,1))};
-goog.array.slice=function(a,b,c){goog.asserts.assert(null!=a.length);return 2>=arguments.length?goog.array.ARRAY_PROTOTYPE_.slice.call(a,b):goog.array.ARRAY_PROTOTYPE_.slice.call(a,b,c)};goog.array.removeDuplicates=function(a,b,c){b=b||a;var d=function(){return goog.isObject(g)?"o"+goog.getUid(g):(typeof g).charAt(0)+g};c=c||d;for(var d={},e=0,f=0;f<a.length;){var g=a[f++],h=c(g);Object.prototype.hasOwnProperty.call(d,h)||(d[h]=!0,b[e++]=g)}b.length=e};
-goog.array.binarySearch=function(a,b,c){return goog.array.binarySearch_(a,c||goog.array.defaultCompare,!1,b)};goog.array.binarySelect=function(a,b,c){return goog.array.binarySearch_(a,b,!0,void 0,c)};goog.array.binarySearch_=function(a,b,c,d,e){for(var f=0,g=a.length,h;f<g;){var k=f+g>>1,l;l=c?b.call(e,a[k],k,a):b(d,a[k]);0<l?f=k+1:(g=k,h=!l)}return h?f:~f};goog.array.sort=function(a,b){goog.asserts.assert(null!=a.length);goog.array.ARRAY_PROTOTYPE_.sort.call(a,b||goog.array.defaultCompare)};
-goog.array.stableSort=function(a,b){function c(a,b){return e(a.value,b.value)||a.index-b.index}for(var d=0;d<a.length;d++)a[d]={index:d,value:a[d]};var e=b||goog.array.defaultCompare;goog.array.sort(a,c);for(d=0;d<a.length;d++)a[d]=a[d].value};goog.array.sortObjectsByKey=function(a,b,c){var d=c||goog.array.defaultCompare;goog.array.sort(a,function(a,c){return d(a[b],c[b])})};
-goog.array.isSorted=function(a,b,c){b=b||goog.array.defaultCompare;for(var d=1;d<a.length;d++){var e=b(a[d-1],a[d]);if(0<e||0==e&&c)return!1}return!0};goog.array.equals=function(a,b,c){if(!goog.isArrayLike(a)||!goog.isArrayLike(b)||a.length!=b.length)return!1;var d=a.length;c=c||goog.array.defaultCompareEquality;for(var e=0;e<d;e++)if(!c(a[e],b[e]))return!1;return!0};goog.array.compare=function(a,b,c){return goog.array.equals(a,b,c)};
-goog.array.compare3=function(a,b,c){c=c||goog.array.defaultCompare;for(var d=Math.min(a.length,b.length),e=0;e<d;e++){var f=c(a[e],b[e]);if(0!=f)return f}return goog.array.defaultCompare(a.length,b.length)};goog.array.defaultCompare=function(a,b){return a>b?1:a<b?-1:0};goog.array.defaultCompareEquality=function(a,b){return a===b};goog.array.binaryInsert=function(a,b,c){c=goog.array.binarySearch(a,b,c);return 0>c?(goog.array.insertAt(a,b,-(c+1)),!0):!1};
-goog.array.binaryRemove=function(a,b,c){b=goog.array.binarySearch(a,b,c);return 0<=b?goog.array.removeAt(a,b):!1};goog.array.bucket=function(a,b,c){for(var d={},e=0;e<a.length;e++){var f=a[e],g=b.call(c,f,e,a);goog.isDef(g)&&(g=d[g]||(d[g]=[]),g.push(f))}return d};goog.array.toObject=function(a,b,c){var d={};goog.array.forEach(a,function(e,f){d[b.call(c,e,f,a)]=e});return d};
-goog.array.range=function(a,b,c){var d=[],e=0,f=a;c=c||1;void 0!==b&&(e=a,f=b);if(0>c*(f-e))return[];if(0<c)for(a=e;a<f;a+=c)d.push(a);else for(a=e;a>f;a+=c)d.push(a);return d};goog.array.repeat=function(a,b){for(var c=[],d=0;d<b;d++)c[d]=a;return c};goog.array.flatten=function(a){for(var b=[],c=0;c<arguments.length;c++){var d=arguments[c];goog.isArray(d)?b.push.apply(b,goog.array.flatten.apply(null,d)):b.push(d)}return b};
-goog.array.rotate=function(a,b){goog.asserts.assert(null!=a.length);a.length&&(b%=a.length,0<b?goog.array.ARRAY_PROTOTYPE_.unshift.apply(a,a.splice(-b,b)):0>b&&goog.array.ARRAY_PROTOTYPE_.push.apply(a,a.splice(0,-b)));return a};goog.array.moveItem=function(a,b,c){goog.asserts.assert(0<=b&&b<a.length);goog.asserts.assert(0<=c&&c<a.length);b=goog.array.ARRAY_PROTOTYPE_.splice.call(a,b,1);goog.array.ARRAY_PROTOTYPE_.splice.call(a,c,0,b[0])};
-goog.array.zip=function(a){if(!arguments.length)return[];for(var b=[],c=0;;c++){for(var d=[],e=0;e<arguments.length;e++){var f=arguments[e];if(c>=f.length)return b;d.push(f[c])}b.push(d)}};goog.array.shuffle=function(a,b){for(var c=b||Math.random,d=a.length-1;0<d;d--){var e=Math.floor(c()*(d+1)),f=a[d];a[d]=a[e];a[e]=f}};goog.math={};goog.math.randomInt=function(a){return Math.floor(Math.random()*a)};goog.math.uniformRandom=function(a,b){return a+Math.random()*(b-a)};goog.math.clamp=function(a,b,c){return Math.min(Math.max(a,b),c)};goog.math.modulo=function(a,b){var c=a%b;return 0>c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)};
-goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))};goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180<c?c-=360:-180>=c&&(c=360+c);return c};
-goog.math.sign=function(a){return 0==a?0:0>a?-1:1};goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;h<e+1;h++)g[h]=[],g[h][0]=0;for(var k=0;k<f+1;k++)g[0][k]=0;for(h=1;h<=e;h++)for(k=1;k<=f;k++)c(a[h-1],b[k-1])?g[h][k]=g[h-1][k-1]+1:g[h][k]=Math.max(g[h-1][k],g[h][k-1]);for(var l=[],h=e,k=f;0<h&&0<k;)c(a[h-1],b[k-1])?(l.unshift(d(h-1,k-1)),h--,k--):g[h-1][k]>g[h][k-1]?h--:k--;return l};
-goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return b=goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};
-goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))};goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.floor(a+(b||2E-15))};goog.math.safeCeil=function(a,b){goog.asserts.assert(!goog.isDef(b)||0<b);return Math.ceil(a-(b||2E-15))};goog.i18n={};
-goog.i18n.CompactNumberFormatSymbols_af={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0m"},1E7:{other:"00\u00a0m"},1E8:{other:"000\u00a0m"},1E9:{other:"0\u00a0mjd"},1E10:{other:"00\u00a0mjd"},1E11:{other:"000\u00a0mjd"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duisend"},1E4:{other:"00 duisend"},1E5:{other:"000 duisend"},1E6:{other:"0 miljoen"},1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},
-1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_af_ZA=goog.i18n.CompactNumberFormatSymbols_af;
-goog.i18n.CompactNumberFormatSymbols_am={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u123a"},1E4:{other:"00\u00a0\u123a"},1E5:{other:"000\u00a0\u123a"},1E6:{other:"0\u00a0\u121c\u1275\u122d"},1E7:{other:"00\u00a0\u121c\u1275\u122d"},1E8:{other:"000\u00a0\u121c\u1275\u122d"},1E9:{other:"0\u00a0\u1262"},1E10:{other:"00\u00a0\u1262"},1E11:{other:"000\u00a0\u1262"},1E12:{other:"0\u00a0\u1275"},1E13:{other:"00\u00a0\u1275"},1E14:{other:"000\u00a0\u1275"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u123a"},
-1E4:{other:"00 \u123a"},1E5:{other:"000 \u123a"},1E6:{other:"0 \u121a\u120a\u12ee\u1295"},1E7:{other:"00 \u121a\u120a\u12ee\u1295"},1E8:{other:"000 \u121a\u120a\u12ee\u1295"},1E9:{other:"0 \u1262\u120a\u12ee\u1295"},1E10:{other:"00 \u1262\u120a\u12ee\u1295"},1E11:{other:"000 \u1262\u120a\u12ee\u1295"},1E12:{other:"0 \u1275\u122a\u120a\u12ee\u1295"},1E13:{other:"00 \u1275\u122a\u120a\u12ee\u1295"},1E14:{other:"000 \u1275\u122a\u120a\u12ee\u1295"}}};goog.i18n.CompactNumberFormatSymbols_am_ET=goog.i18n.CompactNumberFormatSymbols_am;
-goog.i18n.CompactNumberFormatSymbols_ar={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0623\u0644\u0641"},1E4:{other:"00\u00a0\u0623\u0644\u0641"},1E5:{other:"000\u00a0\u0623\u0644\u0641"},1E6:{other:"0\u00a0\u0645\u0644\u064a\u0648"},1E7:{other:"00\u00a0\u0645\u0644\u064a\u0648"},1E8:{other:"000\u00a0\u0645\u0644\u064a\u0648"},1E9:{other:"0\u00a0\u0628\u0644\u064a\u0648"},1E10:{other:"00\u00a0\u0628\u0644\u064a\u0648"},1E11:{other:"000\u00a0\u0628\u0644\u064a\u0648"},1E12:{other:"0\u00a0\u062a\u0631\u0644\u064a\u0648"},
-1E13:{other:"00\u00a0\u062a\u0631\u0644\u064a\u0648"},1E14:{other:"000\u00a0\u062a\u0631\u0644\u064a\u0648"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0623\u0644\u0641"},1E4:{other:"00 \u0623\u0644\u0641"},1E5:{other:"000 \u0623\u0644\u0641"},1E6:{other:"0 \u0645\u0644\u064a\u0648\u0646"},1E7:{other:"00 \u0645\u0644\u064a\u0648\u0646"},1E8:{other:"000 \u0645\u0644\u064a\u0648\u0646"},1E9:{other:"0 \u0628\u0644\u064a\u0648\u0646"},1E10:{other:"00 \u0628\u0644\u064a\u0648\u0646"},1E11:{other:"000 \u0628\u0644\u064a\u0648\u0646"},
-1E12:{other:"0 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E13:{other:"00 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"},1E14:{other:"000 \u062a\u0631\u064a\u0644\u064a\u0648\u0646"}}};goog.i18n.CompactNumberFormatSymbols_ar_001=goog.i18n.CompactNumberFormatSymbols_ar;goog.i18n.CompactNumberFormatSymbols_ar_EG=goog.i18n.CompactNumberFormatSymbols_ar;
-goog.i18n.CompactNumberFormatSymbols_bg={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0425"},1E4:{other:"00\u00a0\u0425"},1E5:{other:"000\u00a0\u0425"},1E6:{other:"0\u00a0\u041c"},1E7:{other:"00\u00a0\u041c"},1E8:{other:"000\u00a0\u041c"},1E9:{other:"0\u00a0\u0411"},1E10:{other:"00\u00a0\u0411"},1E11:{other:"000\u00a0\u0411"},1E12:{other:"0\u00a0\u0422"},1E13:{other:"00\u00a0\u0422"},1E14:{other:"000\u00a0\u0422"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u043b\u044f\u0434\u0438"},
-1E4:{other:"00 \u0445\u0438\u043b\u044f\u0434\u0438"},1E5:{other:"000 \u0445\u0438\u043b\u044f\u0434\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},
-1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_bg_BG=goog.i18n.CompactNumberFormatSymbols_bg;
-goog.i18n.CompactNumberFormatSymbols_bn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u09b9\u09be\u099c\u09be\u09b0"},1E4:{other:"00 \u09b9\u09be\u099c\u09be\u09b0"},1E5:{other:"000 \u09b9\u09be\u099c\u09be\u09b0"},1E6:{other:"0 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},
-1E7:{other:"00 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E8:{other:"000 \u09ae\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E9:{other:"0 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E10:{other:"00 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E11:{other:"000 \u09ac\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E12:{other:"0 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E13:{other:"00 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"},1E14:{other:"000 \u099f\u09cd\u09b0\u09bf\u09b2\u09bf\u09af\u09bc\u09a8"}}};
-goog.i18n.CompactNumberFormatSymbols_bn_BD=goog.i18n.CompactNumberFormatSymbols_bn;goog.i18n.CompactNumberFormatSymbols_br={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_br_FR=goog.i18n.CompactNumberFormatSymbols_br;
-goog.i18n.CompactNumberFormatSymbols_ca={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milions"},1E7:{other:"00 milions"},
-1E8:{other:"000 milions"},1E9:{other:"0 miliards"},1E10:{other:"00 miliards"},1E11:{other:"000 miliards"},1E12:{other:"0 bilions"},1E13:{other:"00 bilions"},1E14:{other:"000 bilions"}}};goog.i18n.CompactNumberFormatSymbols_ca_AD=goog.i18n.CompactNumberFormatSymbols_ca;goog.i18n.CompactNumberFormatSymbols_ca_ES=goog.i18n.CompactNumberFormatSymbols_ca;
-goog.i18n.CompactNumberFormatSymbols_chr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_chr_US=goog.i18n.CompactNumberFormatSymbols_chr;
-goog.i18n.CompactNumberFormatSymbols_cs={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 milion\u016f"},1E7:{other:"00 milion\u016f"},1E8:{other:"000 milion\u016f"},1E9:{other:"0 miliard"},1E10:{other:"00 miliard"},1E11:{other:"000 miliard"},1E12:{other:"0 bilion\u016f"},1E13:{other:"00 bilion\u016f"},1E14:{other:"000 bilion\u016f"}}};goog.i18n.CompactNumberFormatSymbols_cs_CZ=goog.i18n.CompactNumberFormatSymbols_cs;
-goog.i18n.CompactNumberFormatSymbols_cy={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 miliwn"},1E7:{other:"00 miliwn"},1E8:{other:"000 miliwn"},1E9:{other:"0 biliwn"},1E10:{other:"00 biliwn"},
-1E11:{other:"000 biliwn"},1E12:{other:"0 triliwn"},1E13:{other:"00 triliwn"},1E14:{other:"000 triliwn"}}};goog.i18n.CompactNumberFormatSymbols_cy_GB=goog.i18n.CompactNumberFormatSymbols_cy;
-goog.i18n.CompactNumberFormatSymbols_da={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mio"},1E7:{other:"00\u00a0mio"},1E8:{other:"000\u00a0mio"},1E9:{other:"0\u00a0mia"},1E10:{other:"00\u00a0mia"},1E11:{other:"000\u00a0mia"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusind"},1E4:{other:"00 tusind"},1E5:{other:"000 tusind"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_da_DK=goog.i18n.CompactNumberFormatSymbols_da;
-goog.i18n.CompactNumberFormatSymbols_de={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};
-goog.i18n.CompactNumberFormatSymbols_de_AT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_BE=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_de_CH={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 Tausend"},1E4:{other:"00 Tausend"},1E5:{other:"000 Tausend"},1E6:{other:"0 Millionen"},1E7:{other:"00 Millionen"},
-1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_de_DE=goog.i18n.CompactNumberFormatSymbols_de;goog.i18n.CompactNumberFormatSymbols_de_LU=goog.i18n.CompactNumberFormatSymbols_de;
-goog.i18n.CompactNumberFormatSymbols_el={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u03c7\u03b9\u03bb."},1E4:{other:"00\u00a0\u03c7\u03b9\u03bb."},1E5:{other:"000\u00a0\u03c7\u03b9\u03bb."},1E6:{other:"0\u00a0\u03b5\u03ba."},1E7:{other:"00\u00a0\u03b5\u03ba."},1E8:{other:"000\u00a0\u03b5\u03ba."},1E9:{other:"0\u00a0\u03b4\u03b9\u03c2"},1E10:{other:"00\u00a0\u03b4\u03b9\u03c2"},1E11:{other:"000\u00a0\u03b4\u03b9\u03c2"},1E12:{other:"0\u00a0\u03c4\u03c1\u03b9\u03c2"},1E13:{other:"00\u00a0\u03c4\u03c1\u03b9\u03c2"},
-1E14:{other:"000\u00a0\u03c4\u03c1\u03b9\u03c2"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E4:{other:"00 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E5:{other:"000 \u03c7\u03b9\u03bb\u03b9\u03ac\u03b4\u03b5\u03c2"},1E6:{other:"0 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E7:{other:"00 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E8:{other:"000 \u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E9:{other:"0 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E10:{other:"00 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E11:{other:"000 \u03b4\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E12:{other:"0 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},1E13:{other:"00 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"},
-1E14:{other:"000 \u03c4\u03c1\u03b9\u03c3\u03b5\u03ba\u03b1\u03c4\u03bf\u03bc\u03bc\u03cd\u03c1\u03b9\u03b1"}}};goog.i18n.CompactNumberFormatSymbols_el_GR=goog.i18n.CompactNumberFormatSymbols_el;
-goog.i18n.CompactNumberFormatSymbols_en={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_AS=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_AU={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_Dsrt_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_FM=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_GB={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_GU=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_IE={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_en_IN={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_MH=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_MP=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PR=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_PW=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_SG={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};goog.i18n.CompactNumberFormatSymbols_en_TC=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_UM=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_US=goog.i18n.CompactNumberFormatSymbols_en;goog.i18n.CompactNumberFormatSymbols_en_VG=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_VI=goog.i18n.CompactNumberFormatSymbols_en;
-goog.i18n.CompactNumberFormatSymbols_en_ZA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 thousand"},1E4:{other:"00 thousand"},1E5:{other:"000 thousand"},1E6:{other:"0 million"},1E7:{other:"00 million"},1E8:{other:"000 million"},1E9:{other:"0 billion"},
-1E10:{other:"00 billion"},1E11:{other:"000 billion"},1E12:{other:"0 trillion"},1E13:{other:"00 trillion"},1E14:{other:"000 trillion"}}};
-goog.i18n.CompactNumberFormatSymbols_es={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00\u00a0K\u00a0M"},1E11:{other:"000\u00a0K\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},
-1E7:{other:"00 millones"},1E8:{other:"000 millones"},1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};
-goog.i18n.CompactNumberFormatSymbols_es_419={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0k\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 millones"},1E7:{other:"00 millones"},1E8:{other:"000 millones"},
-1E9:{other:"0 millardos"},1E10:{other:"00 millardos"},1E11:{other:"000 millardos"},1E12:{other:"0 billones"},1E13:{other:"00 billones"},1E14:{other:"000 billones"}}};goog.i18n.CompactNumberFormatSymbols_es_EA=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_ES=goog.i18n.CompactNumberFormatSymbols_es;goog.i18n.CompactNumberFormatSymbols_es_IC=goog.i18n.CompactNumberFormatSymbols_es;
-goog.i18n.CompactNumberFormatSymbols_et={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tuh"},1E4:{other:"00\u00a0tuh"},1E5:{other:"000\u00a0tuh"},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0trl"},1E13:{other:"00\u00a0trl"},1E14:{other:"000\u00a0trl"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhat"},1E4:{other:"00 tuhat"},1E5:{other:"000 tuhat"},1E6:{other:"0 miljonit"},
-1E7:{other:"00 miljonit"},1E8:{other:"000 miljonit"},1E9:{other:"0 miljardit"},1E10:{other:"00 miljardit"},1E11:{other:"000 miljardit"},1E12:{other:"0 triljonit"},1E13:{other:"00 triljonit"},1E14:{other:"000 triljonit"}}};goog.i18n.CompactNumberFormatSymbols_et_EE=goog.i18n.CompactNumberFormatSymbols_et;
-goog.i18n.CompactNumberFormatSymbols_eu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milioi"},1E7:{other:"00 milioi"},1E8:{other:"000 milioi"},1E9:{other:"0000 milioi"},
-1E10:{other:"00000 milioi"},1E11:{other:"000000 milioi"},1E12:{other:"0 bilioi"},1E13:{other:"00 bilioi"},1E14:{other:"000 bilioi"}}};goog.i18n.CompactNumberFormatSymbols_eu_ES=goog.i18n.CompactNumberFormatSymbols_eu;
-goog.i18n.CompactNumberFormatSymbols_fa={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0647\u0632\u0627\u0631"},1E4:{other:"00 \u0647\u0632\u0627\u0631"},1E5:{other:"000 \u0647\u0632\u0627\u0631"},1E6:{other:"0 \u0645\u06cc\u0644\u06cc\u0648\u0646"},
-1E7:{other:"00 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E8:{other:"000 \u0645\u06cc\u0644\u06cc\u0648\u0646"},1E9:{other:"0 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E10:{other:"00 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E11:{other:"000 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E12:{other:"0 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E13:{other:"00 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"},1E14:{other:"000 \u0647\u0632\u0627\u0631 \u0645\u06cc\u0644\u06cc\u0627\u0631\u062f"}}};
-goog.i18n.CompactNumberFormatSymbols_fa_IR=goog.i18n.CompactNumberFormatSymbols_fa;
-goog.i18n.CompactNumberFormatSymbols_fi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t."},1E4:{other:"00\u00a0t."},1E5:{other:"000\u00a0t."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bilj."},1E13:{other:"00\u00a0bilj."},1E14:{other:"000\u00a0bilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tuhatta"},1E4:{other:"00 tuhatta"},1E5:{other:"000 tuhatta"},
-1E6:{other:"0 miljoonaa"},1E7:{other:"00 miljoonaa"},1E8:{other:"000 miljoonaa"},1E9:{other:"0 miljardia"},1E10:{other:"00 miljardia"},1E11:{other:"000 miljardia"},1E12:{other:"0 biljoonaa"},1E13:{other:"00 biljoonaa"},1E14:{other:"000 biljoonaa"}}};goog.i18n.CompactNumberFormatSymbols_fi_FI=goog.i18n.CompactNumberFormatSymbols_fi;
-goog.i18n.CompactNumberFormatSymbols_fil={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};goog.i18n.CompactNumberFormatSymbols_fil_PH=goog.i18n.CompactNumberFormatSymbols_fil;
-goog.i18n.CompactNumberFormatSymbols_fr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_BL=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_CA={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Md"},1E10:{other:"00\u00a0Md"},1E11:{other:"000\u00a0Md"},1E12:{other:"0\u00a0Bn"},1E13:{other:"00\u00a0Bn"},1E14:{other:"000\u00a0Bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mille"},1E4:{other:"00 mille"},1E5:{other:"000 mille"},1E6:{other:"0 millions"},1E7:{other:"00 millions"},
-1E8:{other:"000 millions"},1E9:{other:"0 milliards"},1E10:{other:"00 milliards"},1E11:{other:"000 milliards"},1E12:{other:"0 billions"},1E13:{other:"00 billions"},1E14:{other:"000 billions"}}};goog.i18n.CompactNumberFormatSymbols_fr_FR=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_GP=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MC=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_fr_MF=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_MQ=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_RE=goog.i18n.CompactNumberFormatSymbols_fr;goog.i18n.CompactNumberFormatSymbols_fr_YT=goog.i18n.CompactNumberFormatSymbols_fr;
-goog.i18n.CompactNumberFormatSymbols_gl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00k"},1E5:{other:"000k"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0000\u00a0M"},1E10:{other:"00k\u00a0M"},1E11:{other:"000k\u00a0M"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 mill\u00f3ns"},1E7:{other:"00 mill\u00f3ns"},
-1E8:{other:"000 mill\u00f3ns"},1E9:{other:"0 mil mill\u00f3ns"},1E10:{other:"00 mil mill\u00f3ns"},1E11:{other:"000 mil mill\u00f3ns"},1E12:{other:"0 bill\u00f3ns"},1E13:{other:"00 bill\u00f3ns"},1E14:{other:"000 bill\u00f3ns"}}};goog.i18n.CompactNumberFormatSymbols_gl_ES=goog.i18n.CompactNumberFormatSymbols_gl;
-goog.i18n.CompactNumberFormatSymbols_gsw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tsd"},1E4:{other:"00\u00a0tsd"},1E5:{other:"000\u00a0tsd"},1E6:{other:"0\u00a0Mio"},1E7:{other:"00\u00a0Mio"},1E8:{other:"000\u00a0Mio"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0Bio"},1E13:{other:"00\u00a0Bio"},1E14:{other:"000\u00a0Bio"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tausend"},1E4:{other:"00 tausend"},1E5:{other:"000 tausend"},1E6:{other:"0 Millionen"},
-1E7:{other:"00 Millionen"},1E8:{other:"000 Millionen"},1E9:{other:"0 Milliarden"},1E10:{other:"00 Milliarden"},1E11:{other:"000 Milliarden"},1E12:{other:"0 Billionen"},1E13:{other:"00 Billionen"},1E14:{other:"000 Billionen"}}};goog.i18n.CompactNumberFormatSymbols_gsw_CH=goog.i18n.CompactNumberFormatSymbols_gsw;
-goog.i18n.CompactNumberFormatSymbols_gu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0ab9\u0a9c\u0abe\u0ab0"},1E4:{other:"00 \u0ab9\u0a9c\u0abe\u0ab0"},1E5:{other:"000 \u0ab9\u0a9c\u0abe\u0ab0"},1E6:{other:"0 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},
-1E7:{other:"00 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E8:{other:"000 \u0aae\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E9:{other:"0 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E10:{other:"00 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E11:{other:"000 \u0aac\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E12:{other:"0 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E13:{other:"00 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"},1E14:{other:"000 \u0a9f\u0acd\u0ab0\u0abf\u0ab2\u0abf\u0aaf\u0aa8"}}};
-goog.i18n.CompactNumberFormatSymbols_gu_IN=goog.i18n.CompactNumberFormatSymbols_gu;goog.i18n.CompactNumberFormatSymbols_haw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_haw_US=goog.i18n.CompactNumberFormatSymbols_haw;
-goog.i18n.CompactNumberFormatSymbols_he={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};goog.i18n.CompactNumberFormatSymbols_he_IL=goog.i18n.CompactNumberFormatSymbols_he;
-goog.i18n.CompactNumberFormatSymbols_hi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0L"},1E6:{other:"00L"},1E7:{other:"0Cr"},1E8:{other:"00Cr"},1E9:{other:"000Cr"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093c\u093e\u0930"},1E5:{other:"0 \u0932\u093e\u0916"},1E6:{other:"00 \u0932\u093e\u0916"},1E7:{other:"0 \u0915\u0930\u094b\u0921\u093c"},
-1E8:{other:"00 \u0915\u0930\u094b\u0921\u093c"},1E9:{other:"0 \u0905\u0930\u092c"},1E10:{other:"00 \u0905\u0930\u092c"},1E11:{other:"0 \u0916\u0930\u092c"},1E12:{other:"00 \u0916\u0930\u092c"},1E13:{other:"000 \u0916\u0930\u092c"},1E14:{other:"0000 \u0916\u0930\u092c"}}};goog.i18n.CompactNumberFormatSymbols_hi_IN=goog.i18n.CompactNumberFormatSymbols_hi;
-goog.i18n.CompactNumberFormatSymbols_hr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mlr."},1E10:{other:"00\u00a0mlr."},1E11:{other:"000\u00a0mlr."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0 milijuna"},1E7:{other:"00 milijuna"},1E8:{other:"000 milijuna"},
-1E9:{other:"0 milijarda"},1E10:{other:"00 milijarda"},1E11:{other:"000 milijarda"},1E12:{other:"0 bilijuna"},1E13:{other:"00 bilijuna"},1E14:{other:"000 bilijuna"}}};goog.i18n.CompactNumberFormatSymbols_hr_HR=goog.i18n.CompactNumberFormatSymbols_hr;
-goog.i18n.CompactNumberFormatSymbols_hu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0E"},1E4:{other:"00\u00a0E"},1E5:{other:"000\u00a0E"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0Mrd"},1E10:{other:"00\u00a0Mrd"},1E11:{other:"000\u00a0Mrd"},1E12:{other:"0\u00a0B"},1E13:{other:"00\u00a0B"},1E14:{other:"000\u00a0B"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ezer"},1E4:{other:"00 ezer"},1E5:{other:"000 ezer"},1E6:{other:"0 milli\u00f3"},1E7:{other:"00 milli\u00f3"},
-1E8:{other:"000 milli\u00f3"},1E9:{other:"0 milli\u00e1rd"},1E10:{other:"00 milli\u00e1rd"},1E11:{other:"000 milli\u00e1rd"},1E12:{other:"0 billi\u00f3"},1E13:{other:"00 billi\u00f3"},1E14:{other:"000 billi\u00f3"}}};goog.i18n.CompactNumberFormatSymbols_hu_HU=goog.i18n.CompactNumberFormatSymbols_hu;
-goog.i18n.CompactNumberFormatSymbols_id={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};goog.i18n.CompactNumberFormatSymbols_id_ID=goog.i18n.CompactNumberFormatSymbols_id;
-goog.i18n.CompactNumberFormatSymbols_in={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0rb"},1E5:{other:"000\u00a0rb"},1E6:{other:"0\u00a0jt"},1E7:{other:"00\u00a0jt"},1E8:{other:"000\u00a0jt"},1E9:{other:"0\u00a0M"},1E10:{other:"00\u00a0M"},1E11:{other:"000\u00a0M"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},
-1E8:{other:"000 juta"},1E9:{other:"0 miliar"},1E10:{other:"00 miliar"},1E11:{other:"000 miliar"},1E12:{other:"0 triliun"},1E13:{other:"00 triliun"},1E14:{other:"000 triliun"}}};
-goog.i18n.CompactNumberFormatSymbols_is={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u00fe."},1E4:{other:"00\u00a0\u00fe."},1E5:{other:"000\u00a0\u00fe."},1E6:{other:"0\u00a0m."},1E7:{other:"00\u00a0m."},1E8:{other:"000\u00a0m."},1E9:{other:"0\u00a0ma."},1E10:{other:"00\u00a0ma."},1E11:{other:"000\u00a0ma."},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u00fe\u00fasund"},1E4:{other:"00 \u00fe\u00fasund"},1E5:{other:"000 \u00fe\u00fasund"},
-1E6:{other:"0 millj\u00f3nir"},1E7:{other:"00 millj\u00f3nir"},1E8:{other:"000 millj\u00f3nir"},1E9:{other:"0 milljar\u00f0ar"},1E10:{other:"00 milljar\u00f0ar"},1E11:{other:"000 milljar\u00f0ar"},1E12:{other:"0 billj\u00f3nir"},1E13:{other:"00 billj\u00f3nir"},1E14:{other:"000 billj\u00f3nir"}}};goog.i18n.CompactNumberFormatSymbols_is_IS=goog.i18n.CompactNumberFormatSymbols_is;
-goog.i18n.CompactNumberFormatSymbols_it={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0Mln"},1E7:{other:"00\u00a0Mln"},1E8:{other:"000\u00a0Mln"},1E9:{other:"0\u00a0Mld"},1E10:{other:"00\u00a0Mld"},1E11:{other:"000\u00a0Mld"},1E12:{other:"0\u00a0Bln"},1E13:{other:"00\u00a0Bln"},1E14:{other:"000\u00a0Bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 migliaia"},1E4:{other:"00 migliaia"},1E5:{other:"000 migliaia"},1E6:{other:"0 milioni"},1E7:{other:"00 milioni"},
-1E8:{other:"000 milioni"},1E9:{other:"0 miliardi"},1E10:{other:"00 miliardi"},1E11:{other:"000 miliardi"},1E12:{other:"0 bilioni"},1E13:{other:"00 bilioni"},1E14:{other:"000 bilioni"}}};goog.i18n.CompactNumberFormatSymbols_it_IT=goog.i18n.CompactNumberFormatSymbols_it;goog.i18n.CompactNumberFormatSymbols_it_SM=goog.i18n.CompactNumberFormatSymbols_it;
-goog.i18n.CompactNumberFormatSymbols_iw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"\u200f0\u00a0\u05d0\u05dc\u05e3"},1E4:{other:"\u200f00\u00a0\u05d0\u05dc\u05e3"},1E5:{other:"\u200f000\u00a0\u05d0\u05dc\u05e3"},1E6:{other:"\u200f0\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000\u00a0\u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},
-1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"\u200f0 \u05d0\u05dc\u05e3"},1E4:{other:"\u200f00 \u05d0\u05dc\u05e3"},1E5:{other:"\u200f000 \u05d0\u05dc\u05e3"},1E6:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E7:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E8:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d5\u05df"},1E9:{other:"\u200f0 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E10:{other:"\u200f00 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},1E11:{other:"\u200f000 \u05de\u05d9\u05dc\u05d9\u05d0\u05e8\u05d3"},
-1E12:{other:"\u200f0 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E13:{other:"\u200f00 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"},1E14:{other:"\u200f000 \u05d8\u05e8\u05d9\u05dc\u05d9\u05d5\u05df"}}};
-goog.i18n.CompactNumberFormatSymbols_ja={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0\u5343"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_ja_JP=goog.i18n.CompactNumberFormatSymbols_ja;
-goog.i18n.CompactNumberFormatSymbols_kn={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E4:{other:"00 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E5:{other:"000 \u0cb8\u0cbe\u0cb5\u0cbf\u0cb0"},1E6:{other:"0 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},
-1E7:{other:"00 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E8:{other:"000 \u0cae\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E9:{other:"0 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E10:{other:"00 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E11:{other:"000 \u0cac\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd"},1E12:{other:"0 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E13:{other:"00 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"},1E14:{other:"000 \u0c9f\u0ccd\u0cb0\u0cbf\u0cb2\u0cbf\u0caf\u0ca8\u0ccd\u200c"}}};
-goog.i18n.CompactNumberFormatSymbols_kn_IN=goog.i18n.CompactNumberFormatSymbols_kn;
-goog.i18n.CompactNumberFormatSymbols_ko={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\ub9cc"},1E5:{other:"00\ub9cc"},1E6:{other:"000\ub9cc"},1E7:{other:"0000\ub9cc"},1E8:{other:"0\uc5b5"},
-1E9:{other:"00\uc5b5"},1E10:{other:"000\uc5b5"},1E11:{other:"0000\uc5b5"},1E12:{other:"0\uc870"},1E13:{other:"00\uc870"},1E14:{other:"000\uc870"}}};goog.i18n.CompactNumberFormatSymbols_ko_KR=goog.i18n.CompactNumberFormatSymbols_ko;
-goog.i18n.CompactNumberFormatSymbols_ln={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_ln_CD=goog.i18n.CompactNumberFormatSymbols_ln;
-goog.i18n.CompactNumberFormatSymbols_lt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0G"},1E10:{other:"00\u00a0G"},1E11:{other:"000\u00a0G"},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bkstan\u010di\u0173"},1E4:{other:"00 t\u016bkstan\u010di\u0173"},1E5:{other:"000 t\u016bkstan\u010di\u0173"},
-1E6:{other:"0 milijon\u0173"},1E7:{other:"00 milijon\u0173"},1E8:{other:"000 milijon\u0173"},1E9:{other:"0 milijard\u0173"},1E10:{other:"00 milijard\u0173"},1E11:{other:"000 milijard\u0173"},1E12:{other:"0 trilijon\u0173"},1E13:{other:"00 trilijon\u0173"},1E14:{other:"000 trilijon\u0173"}}};goog.i18n.CompactNumberFormatSymbols_lt_LT=goog.i18n.CompactNumberFormatSymbols_lt;
-goog.i18n.CompactNumberFormatSymbols_lv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0t\u016bkst."},1E4:{other:"00\u00a0t\u016bkst."},1E5:{other:"000\u00a0t\u016bkst."},1E6:{other:"0\u00a0milj."},1E7:{other:"00\u00a0milj."},1E8:{other:"000\u00a0milj."},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0trilj."},1E13:{other:"00\u00a0trilj."},1E14:{other:"000\u00a0trilj."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 t\u016bksto\u0161i"},1E4:{other:"00 t\u016bksto\u0161i"},
-1E5:{other:"000 t\u016bksto\u0161i"},1E6:{other:"0 miljoni"},1E7:{other:"00 miljoni"},1E8:{other:"000 miljoni"},1E9:{other:"0 miljardi"},1E10:{other:"00 miljardi"},1E11:{other:"000 miljardi"},1E12:{other:"0 trilj."},1E13:{other:"00 trilj."},1E14:{other:"000 trilj."}}};goog.i18n.CompactNumberFormatSymbols_lv_LV=goog.i18n.CompactNumberFormatSymbols_lv;
-goog.i18n.CompactNumberFormatSymbols_ml={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E4:{other:"00 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E5:{other:"000 \u0d06\u0d2f\u0d3f\u0d30\u0d02"},1E6:{other:"0 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},
-1E7:{other:"00 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E8:{other:"000 \u0d26\u0d36\u0d32\u0d15\u0d4d\u0d37\u0d02"},1E9:{other:"0 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E10:{other:"00 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E11:{other:"000 \u0d32\u0d15\u0d4d\u0d37\u0d02 \u0d15\u0d4b\u0d1f\u0d3f"},1E12:{other:"0 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E13:{other:"00 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"},1E14:{other:"000 \u0d1f\u0d4d\u0d30\u0d3f\u0d32\u0d4d\u0d2f\u0d7a"}}};
-goog.i18n.CompactNumberFormatSymbols_ml_IN=goog.i18n.CompactNumberFormatSymbols_ml;
-goog.i18n.CompactNumberFormatSymbols_mr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0939\u091c\u093e\u0930"},1E4:{other:"00 \u0939\u091c\u093e\u0930"},1E5:{other:"000 \u0939\u091c\u093e\u0930"},1E6:{other:"0 \u0926\u0936\u0932\u0915\u094d\u0937"},
-1E7:{other:"00 \u0926\u0936\u0932\u0915\u094d\u0937"},1E8:{other:"000 \u0926\u0936\u0932\u0915\u094d\u0937"},1E9:{other:"0 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E10:{other:"00 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E11:{other:"000 \u092e\u0939\u093e\u092a\u0926\u094d\u092e"},1E12:{other:"0 \u0926\u0939\u093e \u0916\u0930\u092c"},1E13:{other:"00 \u0926\u0939\u093e \u0916\u0930\u092c"},1E14:{other:"000 \u0926\u0939\u093e \u0916\u0930\u092c"}}};
-goog.i18n.CompactNumberFormatSymbols_mr_IN=goog.i18n.CompactNumberFormatSymbols_mr;
-goog.i18n.CompactNumberFormatSymbols_ms={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0J"},1E7:{other:"00J"},1E8:{other:"000J"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ribu"},1E4:{other:"00 ribu"},1E5:{other:"000 ribu"},1E6:{other:"0 juta"},1E7:{other:"00 juta"},1E8:{other:"000 juta"},1E9:{other:"0 bilion"},1E10:{other:"00 bilion"},
-1E11:{other:"000 bilion"},1E12:{other:"0 trilion"},1E13:{other:"00 trilion"},1E14:{other:"000 trilion"}}};goog.i18n.CompactNumberFormatSymbols_ms_Latn_MY=goog.i18n.CompactNumberFormatSymbols_ms;goog.i18n.CompactNumberFormatSymbols_mt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_mt_MT=goog.i18n.CompactNumberFormatSymbols_mt;
-goog.i18n.CompactNumberFormatSymbols_nb={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_nb_NO=goog.i18n.CompactNumberFormatSymbols_nb;
-goog.i18n.CompactNumberFormatSymbols_nl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0\u00a0mln."},1E7:{other:"00\u00a0mln."},1E8:{other:"000\u00a0mln."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bln."},1E13:{other:"00\u00a0bln."},1E14:{other:"000\u00a0bln."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 duizend"},1E4:{other:"00 duizend"},1E5:{other:"000 duizend"},1E6:{other:"0 miljoen"},
-1E7:{other:"00 miljoen"},1E8:{other:"000 miljoen"},1E9:{other:"0 miljard"},1E10:{other:"00 miljard"},1E11:{other:"000 miljard"},1E12:{other:"0 biljoen"},1E13:{other:"00 biljoen"},1E14:{other:"000 biljoen"}}};goog.i18n.CompactNumberFormatSymbols_nl_NL=goog.i18n.CompactNumberFormatSymbols_nl;
-goog.i18n.CompactNumberFormatSymbols_no={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0"},1E5:{other:"0"},1E6:{other:"0\u00a0mill"},1E7:{other:"00\u00a0mill"},1E8:{other:"000\u00a0mill"},1E9:{other:"0\u00a0mrd"},1E10:{other:"00\u00a0mrd"},1E11:{other:"000\u00a0mrd"},1E12:{other:"0\u00a0bill"},1E13:{other:"00\u00a0bill"},1E14:{other:"000\u00a0bill"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 millioner"},1E7:{other:"00 millioner"},
-1E8:{other:"000 millioner"},1E9:{other:"0 milliarder"},1E10:{other:"00 milliarder"},1E11:{other:"000 milliarder"},1E12:{other:"0 billioner"},1E13:{other:"00 billioner"},1E14:{other:"000 billioner"}}};goog.i18n.CompactNumberFormatSymbols_or={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};
-goog.i18n.CompactNumberFormatSymbols_or_IN=goog.i18n.CompactNumberFormatSymbols_or;
-goog.i18n.CompactNumberFormatSymbols_pl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tys."},1E4:{other:"00\u00a0tys."},1E5:{other:"000\u00a0tys."},1E6:{other:"0\u00a0mln"},1E7:{other:"00\u00a0mln"},1E8:{other:"000\u00a0mln"},1E9:{other:"0\u00a0mld"},1E10:{other:"00\u00a0mld"},1E11:{other:"000\u00a0mld"},1E12:{other:"0\u00a0bln"},1E13:{other:"00\u00a0bln"},1E14:{other:"000\u00a0bln"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tysi\u0105ca"},1E4:{other:"00 tysi\u0105ca"},1E5:{other:"000 tysi\u0105ca"},
-1E6:{other:"0 miliona"},1E7:{other:"00 miliona"},1E8:{other:"000 miliona"},1E9:{other:"0 miliarda"},1E10:{other:"00 miliarda"},1E11:{other:"000 miliarda"},1E12:{other:"0 biliona"},1E13:{other:"00 biliona"},1E14:{other:"000 biliona"}}};goog.i18n.CompactNumberFormatSymbols_pl_PL=goog.i18n.CompactNumberFormatSymbols_pl;
-goog.i18n.CompactNumberFormatSymbols_pt={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0mi"},1E7:{other:"00\u00a0mi"},1E8:{other:"000\u00a0mi"},1E9:{other:"0\u00a0bi"},1E10:{other:"00\u00a0bi"},1E11:{other:"000\u00a0bi"},1E12:{other:"0\u00a0tri"},1E13:{other:"00\u00a0tri"},1E14:{other:"000\u00a0tri"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 bilh\u00f5es"},1E10:{other:"00 bilh\u00f5es"},1E11:{other:"000 bilh\u00f5es"},1E12:{other:"0 trilh\u00f5es"},1E13:{other:"00 trilh\u00f5es"},1E14:{other:"000 trilh\u00f5es"}}};goog.i18n.CompactNumberFormatSymbols_pt_BR=goog.i18n.CompactNumberFormatSymbols_pt;
-goog.i18n.CompactNumberFormatSymbols_pt_PT={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0mil"},1E4:{other:"00\u00a0mil"},1E5:{other:"000\u00a0mil"},1E6:{other:"0\u00a0M"},1E7:{other:"00\u00a0M"},1E8:{other:"000\u00a0M"},1E9:{other:"0\u00a0MM"},1E10:{other:"00\u00a0MM"},1E11:{other:"000\u00a0MM"},1E12:{other:"0\u00a0Bi"},1E13:{other:"00\u00a0Bi"},1E14:{other:"000\u00a0Bi"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 mil"},1E4:{other:"00 mil"},1E5:{other:"000 mil"},1E6:{other:"0 milh\u00f5es"},
-1E7:{other:"00 milh\u00f5es"},1E8:{other:"000 milh\u00f5es"},1E9:{other:"0 mil milh\u00f5es"},1E10:{other:"00 mil milh\u00f5es"},1E11:{other:"000 mil milh\u00f5es"},1E12:{other:"0 bili\u00f5es"},1E13:{other:"00 bili\u00f5es"},1E14:{other:"000 bili\u00f5es"}}};
-goog.i18n.CompactNumberFormatSymbols_ro={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0K"},1E4:{other:"00\u00a0K"},1E5:{other:"000\u00a0K"},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0T"},1E13:{other:"00\u00a0T"},1E14:{other:"000\u00a0T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 de mii"},1E4:{other:"00 de mii"},1E5:{other:"000 de mii"},1E6:{other:"0 de milioane"},
-1E7:{other:"00 de milioane"},1E8:{other:"000 de milioane"},1E9:{other:"0 de miliarde"},1E10:{other:"00 de miliarde"},1E11:{other:"000 de miliarde"},1E12:{other:"0 de trilioane"},1E13:{other:"00 de trilioane"},1E14:{other:"000 de trilioane"}}};goog.i18n.CompactNumberFormatSymbols_ro_RO=goog.i18n.CompactNumberFormatSymbols_ro;
-goog.i18n.CompactNumberFormatSymbols_ru={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u044b\u0441."},1E4:{other:"00\u00a0\u0442\u044b\u0441."},1E5:{other:"000\u00a0\u0442\u044b\u0441."},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u044b\u0441\u044f\u0447\u0438"},1E4:{other:"00 \u0442\u044b\u0441\u044f\u0447\u0438"},1E5:{other:"000 \u0442\u044b\u0441\u044f\u0447\u0438"},1E6:{other:"0 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0438\u043b\u043b\u0438\u0430\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_ru_RU=goog.i18n.CompactNumberFormatSymbols_ru;
-goog.i18n.CompactNumberFormatSymbols_sk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mil."},1E7:{other:"00\u00a0mil."},1E8:{other:"000\u00a0mil."},1E9:{other:"0\u00a0mld."},1E10:{other:"00\u00a0mld."},1E11:{other:"000\u00a0mld."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tis\u00edc"},1E4:{other:"00 tis\u00edc"},1E5:{other:"000 tis\u00edc"},
-1E6:{other:"0 mili\u00f3nov"},1E7:{other:"00 mili\u00f3nov"},1E8:{other:"000 mili\u00f3nov"},1E9:{other:"0 miliard"},1E10:{other:"00 mili\u00e1rd"},1E11:{other:"000 mili\u00e1rd"},1E12:{other:"0 bili\u00f3nov"},1E13:{other:"00 bili\u00f3nov"},1E14:{other:"000 bili\u00f3nov"}}};goog.i18n.CompactNumberFormatSymbols_sk_SK=goog.i18n.CompactNumberFormatSymbols_sk;
-goog.i18n.CompactNumberFormatSymbols_sl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tis."},1E4:{other:"00\u00a0tis."},1E5:{other:"000\u00a0tis."},1E6:{other:"0\u00a0mio."},1E7:{other:"00\u00a0mio."},1E8:{other:"000\u00a0mio."},1E9:{other:"0\u00a0mrd."},1E10:{other:"00\u00a0mrd."},1E11:{other:"000\u00a0mrd."},1E12:{other:"0\u00a0bil."},1E13:{other:"00\u00a0bil."},1E14:{other:"000\u00a0bil."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tiso\u010d"},1E4:{other:"00 tiso\u010d"},1E5:{other:"000 tiso\u010d"},
-1E6:{other:"0 milijonov"},1E7:{other:"00 milijonov"},1E8:{other:"000 milijonov"},1E9:{other:"0 milijard"},1E10:{other:"00 milijard"},1E11:{other:"000 milijard"},1E12:{other:"0 bilijonov"},1E13:{other:"00 bilijonov"},1E14:{other:"000 bilijonov"}}};goog.i18n.CompactNumberFormatSymbols_sl_SI=goog.i18n.CompactNumberFormatSymbols_sl;
-goog.i18n.CompactNumberFormatSymbols_sq={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}}};goog.i18n.CompactNumberFormatSymbols_sq_AL=goog.i18n.CompactNumberFormatSymbols_sq;
-goog.i18n.CompactNumberFormatSymbols_sr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0\u0445\u0438\u0459"},1E5:{other:"000\u00a0\u0445\u0438\u0459"},1E6:{other:"0\u00a0\u043c\u0438\u043b"},1E7:{other:"00\u00a0\u043c\u0438\u043b"},1E8:{other:"000\u00a0\u043c\u0438\u043b"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0431\u0438\u043b"},1E13:{other:"00\u00a0\u0431\u0438\u043b"},
-1E14:{other:"000\u00a0\u0431\u0438\u043b"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0445\u0438\u0459\u0430\u0434\u0430"},1E4:{other:"00 \u0445\u0438\u0459\u0430\u0434\u0430"},1E5:{other:"000 \u0445\u0438\u0459\u0430\u0434\u0430"},1E6:{other:"0 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0438\u043b\u0438\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E10:{other:"00 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},
-1E11:{other:"000 \u043c\u0438\u043b\u0438\u0458\u0430\u0440\u0434\u0438"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u0438\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_sr_Cyrl_RS=goog.i18n.CompactNumberFormatSymbols_sr;
-goog.i18n.CompactNumberFormatSymbols_sv={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0tn"},1E4:{other:"00\u00a0tn"},1E5:{other:"000\u00a0tn"},1E6:{other:"0\u00a0mn"},1E7:{other:"00\u00a0mn"},1E8:{other:"000\u00a0mn"},1E9:{other:"0\u00a0md"},1E10:{other:"00\u00a0md"},1E11:{other:"000\u00a0md"},1E12:{other:"0\u00a0bn"},1E13:{other:"00\u00a0bn"},1E14:{other:"000\u00a0bn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 tusen"},1E4:{other:"00 tusen"},1E5:{other:"000 tusen"},1E6:{other:"0 miljoner"},
-1E7:{other:"00 miljoner"},1E8:{other:"000 miljoner"},1E9:{other:"0 miljarder"},1E10:{other:"00 miljarder"},1E11:{other:"000 miljarder"},1E12:{other:"0 biljoner"},1E13:{other:"00 biljoner"},1E14:{other:"000 biljoner"}}};goog.i18n.CompactNumberFormatSymbols_sv_SE=goog.i18n.CompactNumberFormatSymbols_sv;
-goog.i18n.CompactNumberFormatSymbols_sw={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"elfu\u00a00"},1E4:{other:"elfu\u00a000"},1E5:{other:"laki0"},1E6:{other:"M0"},1E7:{other:"M00"},1E8:{other:"M000"},1E9:{other:"B0"},1E10:{other:"B00"},1E11:{other:"B000"},1E12:{other:"T0"},1E13:{other:"T00"},1E14:{other:"T000"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"Elfu 0"},1E4:{other:"Elfu 00"},1E5:{other:"Elfu 000"},1E6:{other:"Milioni 0"},1E7:{other:"Milioni 00"},1E8:{other:"Milioni 000"},1E9:{other:"Bilioni 0"},
-1E10:{other:"Bilioni 00"},1E11:{other:"Bilioni 000"},1E12:{other:"Trilioni 0"},1E13:{other:"Trilioni 00"},1E14:{other:"Trilioni 000"}}};goog.i18n.CompactNumberFormatSymbols_sw_TZ=goog.i18n.CompactNumberFormatSymbols_sw;
-goog.i18n.CompactNumberFormatSymbols_ta={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E4:{other:"00 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E5:{other:"000 \u0b86\u0baf\u0bbf\u0bb0\u0bae\u0bcd"},1E6:{other:"0 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E7:{other:"00 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E8:{other:"000 \u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E9:{other:"0 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E10:{other:"00 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E11:{other:"000 \u0baa\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E12:{other:"0 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},1E13:{other:"00 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"},
-1E14:{other:"000 \u0b9f\u0bbf\u0bb0\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf\u0baf\u0ba9\u0bcd"}}};goog.i18n.CompactNumberFormatSymbols_ta_IN=goog.i18n.CompactNumberFormatSymbols_ta;
-goog.i18n.CompactNumberFormatSymbols_te={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0c35\u0c47\u0c32\u0c41"},1E4:{other:"00 \u0c35\u0c47\u0c32\u0c41"},1E5:{other:"000 \u0c35\u0c47\u0c32\u0c41"},1E6:{other:"0 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},
-1E7:{other:"00 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E8:{other:"000 \u0c2e\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E9:{other:"0 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E10:{other:"00 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E11:{other:"000 \u0c2c\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E12:{other:"0 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E13:{other:"00 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"},1E14:{other:"000 \u0c1f\u0c4d\u0c30\u0c3f\u0c32\u0c3f\u0c2f\u0c28\u0c4d"}}};
-goog.i18n.CompactNumberFormatSymbols_te_IN=goog.i18n.CompactNumberFormatSymbols_te;
-goog.i18n.CompactNumberFormatSymbols_th={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0e1e."},1E4:{other:"0\u00a0\u0e21."},1E5:{other:"0\u00a0\u0e2a."},1E6:{other:"0\u00a0\u0e25."},1E7:{other:"00\u00a0\u0e25."},1E8:{other:"000\u00a0\u0e25."},1E9:{other:"0\u00a0\u0e1e.\u0e25."},1E10:{other:"0\u00a0\u0e21.\u0e25."},1E11:{other:"0\u00a0\u0e2a.\u0e25."},1E12:{other:"0\u00a0\u0e25.\u0e25."},1E13:{other:"00\u00a0\u0e25.\u0e25."},1E14:{other:"000\u00a0\u0e25.\u0e25."}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0e1e\u0e31\u0e19"},
-1E4:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19"},1E5:{other:"0 \u0e41\u0e2a\u0e19"},1E6:{other:"0 \u0e25\u0e49\u0e32\u0e19"},1E7:{other:"00 \u0e25\u0e49\u0e32\u0e19"},1E8:{other:"000 \u0e25\u0e49\u0e32\u0e19"},1E9:{other:"0 \u0e1e\u0e31\u0e19\u0e25\u0e49\u0e32\u0e19"},1E10:{other:"0 \u0e2b\u0e21\u0e37\u0e48\u0e19\u0e25\u0e49\u0e32\u0e19"},1E11:{other:"0 \u0e41\u0e2a\u0e19\u0e25\u0e49\u0e32\u0e19"},1E12:{other:"0 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},1E13:{other:"00 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"},
-1E14:{other:"000 \u0e25\u0e49\u0e32\u0e19\u0e25\u0e49\u0e32\u0e19"}}};goog.i18n.CompactNumberFormatSymbols_th_TH=goog.i18n.CompactNumberFormatSymbols_th;
-goog.i18n.CompactNumberFormatSymbols_tl={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 (na) libo"},1E4:{other:"00 (na) libo"},1E5:{other:"000 (na) libo"},1E6:{other:"0 (na) milyon"},1E7:{other:"00 (na) milyon"},1E8:{other:"000 (na) milyon"},1E9:{other:"0 (na) bilyon"},
-1E10:{other:"00 (na) bilyon"},1E11:{other:"000 (na) bilyon"},1E12:{other:"0 (na) trilyon"},1E13:{other:"00 (na) trilyon"},1E14:{other:"000 (na) trilyon"}}};
-goog.i18n.CompactNumberFormatSymbols_tr={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"00\u00a0B"},1E5:{other:"000\u00a0B"},1E6:{other:"0\u00a0Mn"},1E7:{other:"00\u00a0Mn"},1E8:{other:"000\u00a0Mn"},1E9:{other:"0\u00a0Mr"},1E10:{other:"00\u00a0Mr"},1E11:{other:"000\u00a0Mr"},1E12:{other:"0\u00a0Tn"},1E13:{other:"00\u00a0Tn"},1E14:{other:"000\u00a0Tn"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 bin"},1E4:{other:"00 bin"},1E5:{other:"000 bin"},1E6:{other:"0 milyon"},1E7:{other:"00 milyon"},
-1E8:{other:"000 milyon"},1E9:{other:"0 milyar"},1E10:{other:"00 milyar"},1E11:{other:"000 milyar"},1E12:{other:"0 trilyon"},1E13:{other:"00 trilyon"},1E14:{other:"000 trilyon"}}};goog.i18n.CompactNumberFormatSymbols_tr_TR=goog.i18n.CompactNumberFormatSymbols_tr;
-goog.i18n.CompactNumberFormatSymbols_uk={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u0442\u0438\u0441"},1E4:{other:"00\u00a0\u0442\u0438\u0441"},1E5:{other:"000\u00a0\u0442\u0438\u0441"},1E6:{other:"0\u00a0\u043c\u043b\u043d"},1E7:{other:"00\u00a0\u043c\u043b\u043d"},1E8:{other:"000\u00a0\u043c\u043b\u043d"},1E9:{other:"0\u00a0\u043c\u043b\u0440\u0434"},1E10:{other:"00\u00a0\u043c\u043b\u0440\u0434"},1E11:{other:"000\u00a0\u043c\u043b\u0440\u0434"},1E12:{other:"0\u00a0\u0442\u0440\u043b\u043d"},
-1E13:{other:"00\u00a0\u0442\u0440\u043b\u043d"},1E14:{other:"000\u00a0\u0442\u0440\u043b\u043d"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 \u0442\u0438\u0441\u044f\u0447\u0456"},1E4:{other:"00 \u0442\u0438\u0441\u044f\u0447\u0456"},1E5:{other:"000 \u0442\u0438\u0441\u044f\u0447\u0456"},1E6:{other:"0 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E7:{other:"00 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E8:{other:"000 \u043c\u0456\u043b\u044c\u0439\u043e\u043d\u0430"},1E9:{other:"0 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},
-1E10:{other:"00 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E11:{other:"000 \u043c\u0456\u043b\u044c\u044f\u0440\u0434\u0430"},1E12:{other:"0 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E13:{other:"00 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"},1E14:{other:"000 \u0442\u0440\u0438\u043b\u044c\u0439\u043e\u043d\u0430"}}};goog.i18n.CompactNumberFormatSymbols_uk_UA=goog.i18n.CompactNumberFormatSymbols_uk;
-goog.i18n.CompactNumberFormatSymbols_ur={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0\u06c1\u0632\u0627\u0631"},1E4:{other:"00\u00a0\u06c1\u0632\u0627\u0631"},1E5:{other:"0\u00a0\u0644\u0627\u06a9\u06be"},1E6:{other:"00\u00a0\u0644\u0627\u06a9\u06be"},1E7:{other:"0\u00a0\u06a9\u0631\u0648\u0691"},1E8:{other:"00\u00a0\u06a9\u0631\u0648\u0691"},1E9:{other:"0\u00a0\u0627\u0631\u0628"},1E10:{other:"00\u00a0\u0627\u0631\u0628"},1E11:{other:"0\u00a0\u06a9\u06be\u0631\u0628"},1E12:{other:"00\u00a0\u06a9\u06be\u0631\u0628"},
-1E13:{other:"000\u00a0\u06a9\u06be\u0631\u0628"},1E14:{other:"0000\u00a0\u06a9\u06be\u0631\u0628"}}};goog.i18n.CompactNumberFormatSymbols_ur_PK=goog.i18n.CompactNumberFormatSymbols_ur;
-goog.i18n.CompactNumberFormatSymbols_vi={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0\u00a0N"},1E4:{other:"00\u00a0N"},1E5:{other:"000\u00a0N"},1E6:{other:"0\u00a0Tr"},1E7:{other:"00\u00a0Tr"},1E8:{other:"000\u00a0Tr"},1E9:{other:"0\u00a0T"},1E10:{other:"00\u00a0T"},1E11:{other:"000\u00a0T"},1E12:{other:"0\u00a0NT"},1E13:{other:"00\u00a0NT"},1E14:{other:"000\u00a0NT"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 ngh\u00ecn"},1E4:{other:"00 ngh\u00ecn"},1E5:{other:"000 ngh\u00ecn"},1E6:{other:"0 tri\u1ec7u"},
-1E7:{other:"00 tri\u1ec7u"},1E8:{other:"000 tri\u1ec7u"},1E9:{other:"0 t\u1ef7"},1E10:{other:"00 t\u1ef7"},1E11:{other:"000 t\u1ef7"},1E12:{other:"0 ngh\u00ecn t\u1ef7"},1E13:{other:"00 ngh\u00ecn t\u1ef7"},1E14:{other:"000 ngh\u00ecn t\u1ef7"}}};goog.i18n.CompactNumberFormatSymbols_vi_VN=goog.i18n.CompactNumberFormatSymbols_vi;
-goog.i18n.CompactNumberFormatSymbols_zh={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u4e07"},1E5:{other:"00\u4e07"},1E6:{other:"000\u4e07"},1E7:{other:"0000\u4e07"},
-1E8:{other:"0\u4ebf"},1E9:{other:"00\u4ebf"},1E10:{other:"000\u4ebf"},1E11:{other:"0000\u4ebf"},1E12:{other:"0\u4e07\u4ebf"},1E13:{other:"00\u4e07\u4ebf"},1E14:{other:"000\u4e07\u4ebf"}}};goog.i18n.CompactNumberFormatSymbols_zh_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_HK={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};goog.i18n.CompactNumberFormatSymbols_zh_Hans_CN=goog.i18n.CompactNumberFormatSymbols_zh;
-goog.i18n.CompactNumberFormatSymbols_zh_TW={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0G"},1E10:{other:"00G"},1E11:{other:"000G"},1E12:{other:"0T"},1E13:{other:"00\u5146"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0"},1E4:{other:"0\u842c"},1E5:{other:"00\u842c"},1E6:{other:"000\u842c"},1E7:{other:"0000\u842c"},1E8:{other:"0\u5104"},1E9:{other:"00\u5104"},1E10:{other:"000\u5104"},
-1E11:{other:"0000\u5104"},1E12:{other:"0\u5146"},1E13:{other:"00\u5146"},1E14:{other:"000\u5146"}}};
-goog.i18n.CompactNumberFormatSymbols_zu={COMPACT_DECIMAL_SHORT_PATTERN:{1E3:{other:"0K"},1E4:{other:"00K"},1E5:{other:"000K"},1E6:{other:"0M"},1E7:{other:"00M"},1E8:{other:"000M"},1E9:{other:"0B"},1E10:{other:"00B"},1E11:{other:"000B"},1E12:{other:"0T"},1E13:{other:"00T"},1E14:{other:"000T"}},COMPACT_DECIMAL_LONG_PATTERN:{1E3:{other:"0 inkulungwane"},1E4:{other:"00 inkulungwane"},1E5:{other:"000 inkulungwane"},1E6:{other:"0 isigidi"},1E7:{other:"00 isigidi"},1E8:{other:"000 isigidi"},1E9:{other:"0 isigidi sezigidi"},
-1E10:{other:"00 isigidi sezigidi"},1E11:{other:"000 isigidi sezigidi"},1E12:{other:"0 isigidintathu"},1E13:{other:"00 isigidintathu"},1E14:{other:"000 isigidintathu"}}};goog.i18n.CompactNumberFormatSymbols_zu_ZA=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;"af"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af);
-if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bg;
-"bn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn);if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca);
-if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_chr;
-"cs"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cs;"cy"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da);
-if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el);
-if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_AU;
-if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_GB;if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_SG;if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_et;
-"eu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu);if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi);
-if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fi;"fil"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr);
-if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr_CA;if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;
-if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl);if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gl;
-"gsw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_he;
-"hi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi);if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu);
-if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_hu;"id"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is);
-if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_is;"it"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_it;
-"iw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja);if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_kn;
-"ko"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ko;"ln"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt);
-if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv);if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml);
-if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mr;"ms"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms);
-if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt);
-if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ro;
-"ru"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ru;"sk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl);
-if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq);if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr);
-if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sv;"sw"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw);
-if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur);
-if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_ur;"vi"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_HK;if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zh_TW;
-"zu"==goog.LOCALE&&(goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.CompactNumberFormatSymbols=goog.i18n.CompactNumberFormatSymbols_zu;goog.i18n.currency={};goog.i18n.currency.PRECISION_MASK_=7;goog.i18n.currency.POSITION_FLAG_=16;goog.i18n.currency.SPACE_FLAG_=32;goog.i18n.currency.tier2Enabled_=!1;goog.i18n.currency.addTier2Support=function(){if(!goog.i18n.currency.tier2Enabled_){for(var a in goog.i18n.currency.CurrencyInfoTier2)goog.i18n.currency.CurrencyInfo[a]=goog.i18n.currency.CurrencyInfoTier2[a];goog.i18n.currency.tier2Enabled_=!0}};
-goog.i18n.currency.getGlobalCurrencyPattern=function(a){var b=goog.i18n.currency.CurrencyInfo[a],c=b[0];return a==b[1]?goog.i18n.currency.getCurrencyPattern_(c,b[1]):a+" "+goog.i18n.currency.getCurrencyPattern_(c,b[1])};goog.i18n.currency.getGlobalCurrencySign=function(a){var b=goog.i18n.currency.CurrencyInfo[a];return a==b[1]?a:a+" "+b[1]};goog.i18n.currency.getLocalCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[1])};
-goog.i18n.currency.getLocalCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][1]};goog.i18n.currency.getPortableCurrencyPattern=function(a){a=goog.i18n.currency.CurrencyInfo[a];return goog.i18n.currency.getCurrencyPattern_(a[0],a[2])};goog.i18n.currency.getPortableCurrencySign=function(a){return goog.i18n.currency.CurrencyInfo[a][2]};goog.i18n.currency.isPrefixSignPosition=function(a){return 0==(goog.i18n.currency.CurrencyInfo[a][0]&goog.i18n.currency.POSITION_FLAG_)};
-goog.i18n.currency.getCurrencyPattern_=function(a,b){var c=["#,##0"],d=a&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}0==(a&goog.i18n.currency.POSITION_FLAG_)?(c.unshift(a&goog.i18n.currency.SPACE_FLAG_?"' ":"'"),c.unshift(b),c.unshift("'")):c.push(a&goog.i18n.currency.SPACE_FLAG_?" '":"'",b,"'");return c.join("")};
-goog.i18n.currency.adjustPrecision=function(a,b){var c=["0"],d=goog.i18n.currency.CurrencyInfo[b],d=d[0]&goog.i18n.currency.PRECISION_MASK_;if(0<d){c.push(".");for(var e=0;e<d;e++)c.push("0")}return a.replace(/0.00/g,c.join(""))};
-goog.i18n.currency.CurrencyInfo={AED:[2,"dh","\u062f.\u0625.","DH"],ALL:[0,"Lek","Lek"],AUD:[2,"$","AU$"],BDT:[2,"\u09f3","Tk"],BGN:[2,"lev","lev"],BRL:[2,"R$","R$"],CAD:[2,"$","C$"],CDF:[2,"FrCD","CDF"],CHF:[2,"CHF","CHF"],CLP:[0,"$","CL$"],CNY:[2,"\u00a5","RMB\u00a5"],COP:[0,"$","COL$"],CRC:[0,"\u20a1","CR\u20a1"],CZK:[50,"K\u010d","K\u010d"],DKK:[18,"kr","kr"],DOP:[2,"$","RD$"],EGP:[2,"\u00a3","LE"],ETB:[2,"Birr","Birr"],EUR:[2,"\u20ac","\u20ac"],GBP:[2,"\u00a3","GB\u00a3"],HKD:[2,"$","HK$"],HRK:[2,
-"kn","kn"],HUF:[0,"Ft","Ft"],IDR:[0,"Rp","Rp"],ILS:[2,"\u20aa","IL\u20aa"],INR:[2,"\u20b9","Rs"],IRR:[0,"Rial","IRR"],ISK:[0,"kr","kr"],JMD:[2,"$","JA$"],JPY:[0,"\u00a5","JP\u00a5"],KRW:[0,"\u20a9","KR\u20a9"],LKR:[2,"Rs","SLRs"],LTL:[2,"Lt","Lt"],LVL:[2,"Ls","Ls"],MNT:[0,"\u20ae","MN\u20ae"],MXN:[2,"$","Mex$"],MYR:[2,"RM","RM"],NOK:[50,"kr","NOkr"],PAB:[2,"B/.","B/."],PEN:[2,"S/.","S/."],PHP:[2,"\u20b1","Php"],PKR:[0,"Rs","PKRs."],PLN:[50,"z\u0142","z\u0142"],RON:[2,"RON","RON"],RSD:[0,"din","RSD"],
-RUB:[50,"\u0440\u0443\u0431.","\u0440\u0443\u0431."],SAR:[2,"Rial","Rial"],SEK:[2,"kr","kr"],SGD:[2,"$","S$"],THB:[2,"\u0e3f","THB"],TRY:[2,"TL","YTL"],TWD:[2,"NT$","NT$"],TZS:[0,"TSh","TSh"],UAH:[2,"\u20b4","UAH"],USD:[2,"$","US$"],UYU:[2,"$","$U"],VND:[0,"\u20ab","VN\u20ab"],YER:[0,"Rial","Rial"],ZAR:[2,"R","ZAR"]};
-goog.i18n.currency.CurrencyInfoTier2={AFN:[48,"Af.","AFN"],AMD:[0,"Dram","dram"],AOA:[2,"Kz","Kz"],ARS:[2,"$","AR$"],AWG:[2,"Afl.","Afl."],AZN:[2,"man.","man."],BAM:[2,"KM","KM"],BBD:[2,"$","Bds$"],BHD:[3,"din","din"],BIF:[0,"FBu","FBu"],BMD:[2,"$","BD$"],BND:[2,"$","B$"],BOB:[2,"Bs","Bs"],BSD:[2,"$","BS$"],BTN:[2,"Nu.","Nu."],BWP:[2,"P","pula"],BYR:[0,"BYR","BYR"],BZD:[2,"$","BZ$"],CUC:[1,"$","CUC$"],CUP:[2,"$","CU$"],CVE:[2,"CVE","Esc"],DJF:[0,"Fdj","Fdj"],DZD:[2,"din","din"],ERN:[2,"Nfk","Nfk"],
-FJD:[2,"$","FJ$"],FKP:[2,"\u00a3","FK\u00a3"],GEL:[2,"GEL","GEL"],GHS:[2,"GHS","GHS"],GIP:[2,"\u00a3","GI\u00a3"],GMD:[2,"GMD","GMD"],GNF:[0,"FG","FG"],GTQ:[2,"Q","GTQ"],GYD:[0,"$","GY$"],HNL:[2,"L","HNL"],HTG:[2,"HTG","HTG"],IQD:[0,"din","IQD"],JOD:[3,"din","JOD"],KES:[2,"Ksh","Ksh"],KGS:[2,"KGS","KGS"],KHR:[2,"Riel","KHR"],KMF:[0,"CF","KMF"],KPW:[0,"\u20a9KP","KPW"],KWD:[3,"din","KWD"],KYD:[2,"$","KY$"],KZT:[2,"\u20b8","KZT"],LAK:[0,"\u20ad","\u20ad"],LBP:[0,"L\u00a3","LBP"],LRD:[2,"$","L$"],LSL:[2,
-"LSL","LSL"],LYD:[3,"din","LD"],MAD:[2,"dh","MAD"],MDL:[2,"MDL","MDL"],MGA:[0,"Ar","MGA"],MKD:[2,"din","MKD"],MMK:[0,"K","MMK"],MOP:[2,"MOP","MOP$"],MRO:[0,"MRO","MRO"],MUR:[0,"MURs","MURs"],MWK:[2,"MWK","MWK"],MZN:[2,"MTn","MTn"],NAD:[2,"$","N$"],NGN:[2,"\u20a6","NG\u20a6"],NIO:[2,"C$","C$"],NPR:[2,"Rs","NPRs"],NZD:[2,"$","NZ$"],OMR:[3,"Rial","OMR"],PGK:[2,"PGK","PGK"],PYG:[0,"Gs","PYG"],QAR:[2,"Rial","QR"],RWF:[0,"RF","RF"],SBD:[2,"$","SI$"],SCR:[2,"SCR","SCR"],SDG:[2,"SDG","SDG"],SHP:[2,"\u00a3",
-"SH\u00a3"],SLL:[0,"SLL","SLL"],SOS:[0,"SOS","SOS"],SRD:[2,"$","SR$"],STD:[0,"Db","Db"],SYP:[0,"\u00a3","SY\u00a3"],SZL:[2,"SZL","SZL"],TJS:[2,"Som","TJS"],TND:[3,"din","DT"],TOP:[2,"T$","T$"],TTD:[2,"$","TT$"],UGX:[0,"UGX","UGX"],UZS:[0,"so\u02bcm","UZS"],VEF:[2,"Bs","Bs"],VUV:[0,"VUV","VUV"],WST:[2,"WST","WST"],XAF:[0,"FCFA","FCFA"],XCD:[2,"$","EC$"],XOF:[0,"CFA","CFA"],XPF:[0,"FCFP","FCFP"],ZMK:[0,"ZMK","ZMK"]};goog.i18n.NumberFormatSymbols_af={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_af_ZA=goog.i18n.NumberFormatSymbols_af;
-goog.i18n.NumberFormatSymbols_am={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ETB"};goog.i18n.NumberFormatSymbols_am_ET=goog.i18n.NumberFormatSymbols_am;
-goog.i18n.NumberFormatSymbols_ar={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u0660",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0627\u0633",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0644\u064a\u0633\u00a0\u0631\u0642\u0645",DECIMAL_PATTERN:"#0.###;#0.###-",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#0.00;\u00a4\u00a0#0.00-",DEF_CURRENCY_CODE:"EGP"};goog.i18n.NumberFormatSymbols_ar_001=goog.i18n.NumberFormatSymbols_ar;
-goog.i18n.NumberFormatSymbols_ar_EG=goog.i18n.NumberFormatSymbols_ar;goog.i18n.NumberFormatSymbols_bg={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"BGN"};goog.i18n.NumberFormatSymbols_bg_BG=goog.i18n.NumberFormatSymbols_bg;
-goog.i18n.NumberFormatSymbols_bn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u09e6",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u09b8\u0982\u0996\u09cd\u09af\u09be\u00a0\u09a8\u09be",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4;(#,##,##0.00\u00a4)",DEF_CURRENCY_CODE:"BDT"};goog.i18n.NumberFormatSymbols_bn_BD=goog.i18n.NumberFormatSymbols_bn;
-goog.i18n.NumberFormatSymbols_br={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_br_FR=goog.i18n.NumberFormatSymbols_br;
-goog.i18n.NumberFormatSymbols_ca={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_ca_AD=goog.i18n.NumberFormatSymbols_ca;goog.i18n.NumberFormatSymbols_ca_ES=goog.i18n.NumberFormatSymbols_ca;
-goog.i18n.NumberFormatSymbols_chr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_chr_US=goog.i18n.NumberFormatSymbols_chr;
-goog.i18n.NumberFormatSymbols_cs={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CZK"};goog.i18n.NumberFormatSymbols_cs_CZ=goog.i18n.NumberFormatSymbols_cs;
-goog.i18n.NumberFormatSymbols_cy={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_cy_GB=goog.i18n.NumberFormatSymbols_cy;
-goog.i18n.NumberFormatSymbols_da={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"DKK"};goog.i18n.NumberFormatSymbols_da_DK=goog.i18n.NumberFormatSymbols_da;
-goog.i18n.NumberFormatSymbols_de={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_de_AT={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_de_BE=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_de_CH={DECIMAL_SEP:".",GROUP_SEP:"'",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4-#,##0.00",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_de_DE=goog.i18n.NumberFormatSymbols_de;goog.i18n.NumberFormatSymbols_de_LU=goog.i18n.NumberFormatSymbols_de;
-goog.i18n.NumberFormatSymbols_el={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"[#E0]",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_el_GR=goog.i18n.NumberFormatSymbols_el;
-goog.i18n.NumberFormatSymbols_en={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_en_AS=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_AU={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"AUD"};goog.i18n.NumberFormatSymbols_en_Dsrt_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_FM=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_GB={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"GBP"};goog.i18n.NumberFormatSymbols_en_GU=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_IE={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_en_IN={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_en_MH=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_MP=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_PR=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_PW=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_SG={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"SGD"};
-goog.i18n.NumberFormatSymbols_en_TC=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_UM=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_US=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VG=goog.i18n.NumberFormatSymbols_en;goog.i18n.NumberFormatSymbols_en_VI=goog.i18n.NumberFormatSymbols_en;
-goog.i18n.NumberFormatSymbols_en_ZA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};
-goog.i18n.NumberFormatSymbols_es={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_es_419={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"MXN"};goog.i18n.NumberFormatSymbols_es_EA=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_ES=goog.i18n.NumberFormatSymbols_es;goog.i18n.NumberFormatSymbols_es_IC=goog.i18n.NumberFormatSymbols_es;
-goog.i18n.NumberFormatSymbols_et={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_et_EE=goog.i18n.NumberFormatSymbols_et;
-goog.i18n.NumberFormatSymbols_eu={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%\u00a0#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_eu_ES=goog.i18n.NumberFormatSymbols_eu;
-goog.i18n.NumberFormatSymbols_fa={DECIMAL_SEP:"\u066b",GROUP_SEP:"\u066c",PERCENT:"\u066a",ZERO_DIGIT:"\u06f0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d7\u06f1\u06f0^",PERMILL:"\u0609",INFINITY:"\u221e",NAN:"\u0646\u0627\u0639\u062f\u062f",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u200e\u00a4#,##0.00;\u200e(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"IRR"};goog.i18n.NumberFormatSymbols_fa_IR=goog.i18n.NumberFormatSymbols_fa;
-goog.i18n.NumberFormatSymbols_fi={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"ep\u00e4luku",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fi_FI=goog.i18n.NumberFormatSymbols_fi;
-goog.i18n.NumberFormatSymbols_fil={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};goog.i18n.NumberFormatSymbols_fil_PH=goog.i18n.NumberFormatSymbols_fil;
-goog.i18n.NumberFormatSymbols_fr={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_fr_BL=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_CA={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"CAD"};goog.i18n.NumberFormatSymbols_fr_FR=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_GF=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_fr_GP=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MC=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MF=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_MQ=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_RE=goog.i18n.NumberFormatSymbols_fr;goog.i18n.NumberFormatSymbols_fr_YT=goog.i18n.NumberFormatSymbols_fr;
-goog.i18n.NumberFormatSymbols_gl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_gl_ES=goog.i18n.NumberFormatSymbols_gl;
-goog.i18n.NumberFormatSymbols_gsw={DECIMAL_SEP:".",GROUP_SEP:"\u2019",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CHF"};goog.i18n.NumberFormatSymbols_gsw_CH=goog.i18n.NumberFormatSymbols_gsw;
-goog.i18n.NumberFormatSymbols_gu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_gu_IN=goog.i18n.NumberFormatSymbols_gu;
-goog.i18n.NumberFormatSymbols_haw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"USD"};goog.i18n.NumberFormatSymbols_haw_US=goog.i18n.NumberFormatSymbols_haw;
-goog.i18n.NumberFormatSymbols_he={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};goog.i18n.NumberFormatSymbols_he_IL=goog.i18n.NumberFormatSymbols_he;
-goog.i18n.NumberFormatSymbols_hi={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_hi_IN=goog.i18n.NumberFormatSymbols_hi;
-goog.i18n.NumberFormatSymbols_hr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HRK"};goog.i18n.NumberFormatSymbols_hr_HR=goog.i18n.NumberFormatSymbols_hr;
-goog.i18n.NumberFormatSymbols_hu={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"HUF"};goog.i18n.NumberFormatSymbols_hu_HU=goog.i18n.NumberFormatSymbols_hu;
-goog.i18n.NumberFormatSymbols_id={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};goog.i18n.NumberFormatSymbols_id_ID=goog.i18n.NumberFormatSymbols_id;
-goog.i18n.NumberFormatSymbols_in={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"IDR"};
-goog.i18n.NumberFormatSymbols_is={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ISK"};goog.i18n.NumberFormatSymbols_is_IS=goog.i18n.NumberFormatSymbols_is;
-goog.i18n.NumberFormatSymbols_it={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_it_IT=goog.i18n.NumberFormatSymbols_it;goog.i18n.NumberFormatSymbols_it_SM=goog.i18n.NumberFormatSymbols_it;
-goog.i18n.NumberFormatSymbols_iw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"ILS"};
-goog.i18n.NumberFormatSymbols_ja={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"JPY"};goog.i18n.NumberFormatSymbols_ja_JP=goog.i18n.NumberFormatSymbols_ja;
-goog.i18n.NumberFormatSymbols_kn={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0c88",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_kn_IN=goog.i18n.NumberFormatSymbols_kn;
-goog.i18n.NumberFormatSymbols_ko={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"KRW"};goog.i18n.NumberFormatSymbols_ko_KR=goog.i18n.NumberFormatSymbols_ko;
-goog.i18n.NumberFormatSymbols_ln={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"CDF"};goog.i18n.NumberFormatSymbols_ln_CD=goog.i18n.NumberFormatSymbols_ln;
-goog.i18n.NumberFormatSymbols_lt={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2013",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"LTL"};goog.i18n.NumberFormatSymbols_lt_LT=goog.i18n.NumberFormatSymbols_lt;
-goog.i18n.NumberFormatSymbols_lv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"nav\u00a0skaitlis",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"LVL"};goog.i18n.NumberFormatSymbols_lv_LV=goog.i18n.NumberFormatSymbols_lv;
-goog.i18n.NumberFormatSymbols_ml={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"#,##,##0.00\u00a4",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ml_IN=goog.i18n.NumberFormatSymbols_ml;
-goog.i18n.NumberFormatSymbols_mr={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"\u0966",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_mr_IN=goog.i18n.NumberFormatSymbols_mr;
-goog.i18n.NumberFormatSymbols_ms={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"MYR"};goog.i18n.NumberFormatSymbols_ms_Latn_MY=goog.i18n.NumberFormatSymbols_ms;
-goog.i18n.NumberFormatSymbols_mt={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_mt_MT=goog.i18n.NumberFormatSymbols_mt;
-goog.i18n.NumberFormatSymbols_nb={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};goog.i18n.NumberFormatSymbols_nb_NO=goog.i18n.NumberFormatSymbols_nb;
-goog.i18n.NumberFormatSymbols_nl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00;\u00a4\u00a0#,##0.00-",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_nl_NL=goog.i18n.NumberFormatSymbols_nl;
-goog.i18n.NumberFormatSymbols_no={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##0.00",DEF_CURRENCY_CODE:"NOK"};
-goog.i18n.NumberFormatSymbols_or={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_or_IN=goog.i18n.NumberFormatSymbols_or;
-goog.i18n.NumberFormatSymbols_pl={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"PLN"};goog.i18n.NumberFormatSymbols_pl_PL=goog.i18n.NumberFormatSymbols_pl;
-goog.i18n.NumberFormatSymbols_pt={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"BRL"};goog.i18n.NumberFormatSymbols_pt_BR=goog.i18n.NumberFormatSymbols_pt;
-goog.i18n.NumberFormatSymbols_pt_PT={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};
-goog.i18n.NumberFormatSymbols_ro={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RON"};goog.i18n.NumberFormatSymbols_ro_RO=goog.i18n.NumberFormatSymbols_ro;
-goog.i18n.NumberFormatSymbols_ru={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u043d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RUB"};goog.i18n.NumberFormatSymbols_ru_RU=goog.i18n.NumberFormatSymbols_ru;
-goog.i18n.NumberFormatSymbols_sk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sk_SK=goog.i18n.NumberFormatSymbols_sk;
-goog.i18n.NumberFormatSymbols_sl={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"e",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"EUR"};goog.i18n.NumberFormatSymbols_sl_SI=goog.i18n.NumberFormatSymbols_sl;
-goog.i18n.NumberFormatSymbols_sq={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"ALL"};goog.i18n.NumberFormatSymbols_sq_AL=goog.i18n.NumberFormatSymbols_sq;
-goog.i18n.NumberFormatSymbols_sr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"RSD"};goog.i18n.NumberFormatSymbols_sr_Cyrl_RS=goog.i18n.NumberFormatSymbols_sr;
-goog.i18n.NumberFormatSymbols_sv={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"\u2212",EXP_SYMBOL:"\u00d710^",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u00a4\u00a4\u00a4",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0\u00a0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"SEK"};goog.i18n.NumberFormatSymbols_sv_SE=goog.i18n.NumberFormatSymbols_sv;
-goog.i18n.NumberFormatSymbols_sw={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"TZS"};goog.i18n.NumberFormatSymbols_sw_TZ=goog.i18n.NumberFormatSymbols_sw;
-goog.i18n.NumberFormatSymbols_ta={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##,##0%",CURRENCY_PATTERN:"\u00a4\u00a0#,##,##0.00",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_ta_IN=goog.i18n.NumberFormatSymbols_ta;
-goog.i18n.NumberFormatSymbols_te={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"INR"};goog.i18n.NumberFormatSymbols_te_IN=goog.i18n.NumberFormatSymbols_te;
-goog.i18n.NumberFormatSymbols_th={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"THB"};goog.i18n.NumberFormatSymbols_th_TH=goog.i18n.NumberFormatSymbols_th;
-goog.i18n.NumberFormatSymbols_tl={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"PHP"};
-goog.i18n.NumberFormatSymbols_tr={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"%#,##0",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4;(#,##0.00\u00a0\u00a4)",DEF_CURRENCY_CODE:"TRY"};goog.i18n.NumberFormatSymbols_tr_TR=goog.i18n.NumberFormatSymbols_tr;
-goog.i18n.NumberFormatSymbols_uk={DECIMAL_SEP:",",GROUP_SEP:"\u00a0",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"\u0415",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u041d\u0435\u00a0\u0447\u0438\u0441\u043b\u043e",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"UAH"};goog.i18n.NumberFormatSymbols_uk_UA=goog.i18n.NumberFormatSymbols_uk;
-goog.i18n.NumberFormatSymbols_ur={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"PKR"};goog.i18n.NumberFormatSymbols_ur_PK=goog.i18n.NumberFormatSymbols_ur;
-goog.i18n.NumberFormatSymbols_vi={DECIMAL_SEP:",",GROUP_SEP:".",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"#,##0.00\u00a0\u00a4",DEF_CURRENCY_CODE:"VND"};goog.i18n.NumberFormatSymbols_vi_VN=goog.i18n.NumberFormatSymbols_vi;
-goog.i18n.NumberFormatSymbols_zh={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"CNY"};goog.i18n.NumberFormatSymbols_zh_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_HK={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"HKD"};goog.i18n.NumberFormatSymbols_zh_Hans_CN=goog.i18n.NumberFormatSymbols_zh;
-goog.i18n.NumberFormatSymbols_zh_TW={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"\u975e\u6578\u503c",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00",DEF_CURRENCY_CODE:"TWD"};
-goog.i18n.NumberFormatSymbols_zu={DECIMAL_SEP:".",GROUP_SEP:",",PERCENT:"%",ZERO_DIGIT:"0",PLUS_SIGN:"+",MINUS_SIGN:"-",EXP_SYMBOL:"E",PERMILL:"\u2030",INFINITY:"\u221e",NAN:"I-NaN",DECIMAL_PATTERN:"#,##0.###",SCIENTIFIC_PATTERN:"#E0",PERCENT_PATTERN:"#,##0%",CURRENCY_PATTERN:"\u00a4#,##0.00;(\u00a4#,##0.00)",DEF_CURRENCY_CODE:"ZAR"};goog.i18n.NumberFormatSymbols_zu_ZA=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-"af"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af);if("af_ZA"==goog.LOCALE||"af-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_af;"am"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am);if("am_ET"==goog.LOCALE||"am-ET"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_am;"ar"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar);
-if("ar_001"==goog.LOCALE||"ar-001"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;if("ar_EG"==goog.LOCALE||"ar-EG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ar;"bg"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg);if("bg_BG"==goog.LOCALE||"bg-BG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bg;"bn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn);
-if("bn_BD"==goog.LOCALE||"bn-BD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_bn;"br"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br);if("br_FR"==goog.LOCALE||"br-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_br;"ca"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca);if("ca_AD"==goog.LOCALE||"ca-AD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;
-if("ca_ES"==goog.LOCALE||"ca-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ca;"chr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr);if("chr_US"==goog.LOCALE||"chr-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_chr;"cs"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs);if("cs_CZ"==goog.LOCALE||"cs-CZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cs;
-"cy"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy);if("cy_GB"==goog.LOCALE||"cy-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_cy;"da"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da);if("da_DK"==goog.LOCALE||"da-DK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_da;"de"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de);
-if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_AT;if("de_BE"==goog.LOCALE||"de-BE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de_CH;if("de_DE"==goog.LOCALE||"de-DE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;
-if("de_LU"==goog.LOCALE||"de-LU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_de;"el"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el);if("el_GR"==goog.LOCALE||"el-GR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_el;"en"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en);if("en_AS"==goog.LOCALE||"en-AS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_AU;if("en_Dsrt_US"==goog.LOCALE||"en-Dsrt-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_FM"==goog.LOCALE||"en-FM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_GB;
-if("en_GU"==goog.LOCALE||"en-GU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IE;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_IN;if("en_MH"==goog.LOCALE||"en-MH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_MP"==goog.LOCALE||"en-MP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PR"==goog.LOCALE||"en-PR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_PW"==goog.LOCALE||"en-PW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_SG;
-if("en_TC"==goog.LOCALE||"en-TC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_UM"==goog.LOCALE||"en-UM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_VG"==goog.LOCALE||"en-VG"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;
-if("en_VI"==goog.LOCALE||"en-VI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en;if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_en_ZA;"es"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es_419;if("es_EA"==goog.LOCALE||"es-EA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;
-if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;if("es_IC"==goog.LOCALE||"es-IC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_es;"et"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et);if("et_EE"==goog.LOCALE||"et-EE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_et;"eu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu);
-if("eu_ES"==goog.LOCALE||"eu-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_eu;"fa"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa);if("fa_IR"==goog.LOCALE||"fa-IR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fa;"fi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi);if("fi_FI"==goog.LOCALE||"fi-FI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fi;
-"fil"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil);if("fil_PH"==goog.LOCALE||"fil-PH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fil;"fr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr);if("fr_BL"==goog.LOCALE||"fr-BL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr_CA;
-if("fr_FR"==goog.LOCALE||"fr-FR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GF"==goog.LOCALE||"fr-GF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_GP"==goog.LOCALE||"fr-GP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MC"==goog.LOCALE||"fr-MC"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;
-if("fr_MF"==goog.LOCALE||"fr-MF"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_MQ"==goog.LOCALE||"fr-MQ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_RE"==goog.LOCALE||"fr-RE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;if("fr_YT"==goog.LOCALE||"fr-YT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_fr;"gl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl);
-if("gl_ES"==goog.LOCALE||"gl-ES"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gl;"gsw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw);if("gsw_CH"==goog.LOCALE||"gsw-CH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gsw;"gu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu);if("gu_IN"==goog.LOCALE||"gu-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_gu;
-"haw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw);if("haw_US"==goog.LOCALE||"haw-US"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_haw;"he"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he);if("he_IL"==goog.LOCALE||"he-IL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_he;"hi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi);
-if("hi_IN"==goog.LOCALE||"hi-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hi;"hr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr);if("hr_HR"==goog.LOCALE||"hr-HR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hr;"hu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu);if("hu_HU"==goog.LOCALE||"hu-HU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_hu;
-"id"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id);if("id_ID"==goog.LOCALE||"id-ID"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_id;"in"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_in);"is"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is);if("is_IS"==goog.LOCALE||"is-IS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_is;
-"it"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it);if("it_IT"==goog.LOCALE||"it-IT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;if("it_SM"==goog.LOCALE||"it-SM"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_it;"iw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_iw);"ja"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja);
-if("ja_JP"==goog.LOCALE||"ja-JP"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ja;"kn"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn);if("kn_IN"==goog.LOCALE||"kn-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_kn;"ko"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko);if("ko_KR"==goog.LOCALE||"ko-KR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ko;
-"ln"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln);if("ln_CD"==goog.LOCALE||"ln-CD"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ln;"lt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt);if("lt_LT"==goog.LOCALE||"lt-LT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lt;"lv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv);
-if("lv_LV"==goog.LOCALE||"lv-LV"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_lv;"ml"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml);if("ml_IN"==goog.LOCALE||"ml-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ml;"mr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr);if("mr_IN"==goog.LOCALE||"mr-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mr;
-"ms"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms);if("ms_Latn_MY"==goog.LOCALE||"ms-Latn-MY"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ms;"mt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt);if("mt_MT"==goog.LOCALE||"mt-MT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_mt;"nb"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb);
-if("nb_NO"==goog.LOCALE||"nb-NO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nb;"nl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl);if("nl_NL"==goog.LOCALE||"nl-NL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_nl;"no"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_no);"or"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or);
-if("or_IN"==goog.LOCALE||"or-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_or;"pl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl);if("pl_PL"==goog.LOCALE||"pl-PL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pl;"pt"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_pt_PT;"ro"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro);if("ro_RO"==goog.LOCALE||"ro-RO"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ro;"ru"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru);if("ru_RU"==goog.LOCALE||"ru-RU"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ru;
-"sk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk);if("sk_SK"==goog.LOCALE||"sk-SK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sk;"sl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl);if("sl_SI"==goog.LOCALE||"sl-SI"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sl;"sq"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq);
-if("sq_AL"==goog.LOCALE||"sq-AL"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sq;"sr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr);if("sr_Cyrl_RS"==goog.LOCALE||"sr-Cyrl-RS"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sr;"sv"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv);if("sv_SE"==goog.LOCALE||"sv-SE"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sv;
-"sw"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw);if("sw_TZ"==goog.LOCALE||"sw-TZ"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_sw;"ta"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta);if("ta_IN"==goog.LOCALE||"ta-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ta;"te"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te);
-if("te_IN"==goog.LOCALE||"te-IN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_te;"th"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th);if("th_TH"==goog.LOCALE||"th-TH"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_th;"tl"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tl);"tr"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr);
-if("tr_TR"==goog.LOCALE||"tr-TR"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_tr;"uk"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk);if("uk_UA"==goog.LOCALE||"uk-UA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_uk;"ur"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur);if("ur_PK"==goog.LOCALE||"ur-PK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_ur;
-"vi"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi);if("vi_VN"==goog.LOCALE||"vi-VN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_vi;"zh"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_HK;
-if("zh_Hans_CN"==goog.LOCALE||"zh-Hans-CN"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zh_TW;"zu"==goog.LOCALE&&(goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu);if("zu_ZA"==goog.LOCALE||"zu-ZA"==goog.LOCALE)goog.i18n.NumberFormatSymbols=goog.i18n.NumberFormatSymbols_zu;goog.i18n.NumberFormat=function(a,b,c){this.intlCurrencyCode_=b||goog.i18n.NumberFormatSymbols.DEF_CURRENCY_CODE;this.currencyStyle_=c||goog.i18n.NumberFormat.CurrencyStyle.LOCAL;this.maximumIntegerDigits_=40;this.minimumIntegerDigits_=1;this.significantDigits_=0;this.maximumFractionDigits_=3;this.minExponentDigits_=this.minimumFractionDigits_=0;this.showTrailingZeros_=this.useSignForPositiveExponent_=!1;this.positiveSuffix_=this.positivePrefix_="";this.negativePrefix_="-";this.negativeSuffix_="";
-this.multiplier_=1;this.groupingSize_=3;this.useExponentialNotation_=this.decimalSeparatorAlwaysShown_=!1;this.compactStyle_=goog.i18n.NumberFormat.CompactStyle.NONE;this.baseFormattingNumber_=null;"number"==typeof a?this.applyStandardPattern_(a):this.applyPattern_(a)};goog.i18n.NumberFormat.Format={DECIMAL:1,SCIENTIFIC:2,PERCENT:3,CURRENCY:4,COMPACT_SHORT:5,COMPACT_LONG:6};goog.i18n.NumberFormat.CurrencyStyle={LOCAL:0,PORTABLE:1,GLOBAL:2};goog.i18n.NumberFormat.CompactStyle={NONE:0,SHORT:1,LONG:2};
-goog.i18n.NumberFormat.enforceAsciiDigits_=!1;goog.i18n.NumberFormat.setEnforceAsciiDigits=function(a){goog.i18n.NumberFormat.enforceAsciiDigits_=a};goog.i18n.NumberFormat.isEnforceAsciiDigits=function(){return goog.i18n.NumberFormat.enforceAsciiDigits_};goog.i18n.NumberFormat.prototype.setMinimumFractionDigits=function(a){if(0<this.significantDigits_&&0<a)throw Error("Can't combine significant digits and minimum fraction digits");this.minimumFractionDigits_=a};
-goog.i18n.NumberFormat.prototype.setMaximumFractionDigits=function(a){this.maximumFractionDigits_=a};goog.i18n.NumberFormat.prototype.setSignificantDigits=function(a){if(0<this.minimumFractionDigits_&&0<=a)throw Error("Can't combine significant digits and minimum fraction digits");this.significantDigits_=a};
-goog.i18n.NumberFormat.prototype.applyPattern_=function(a){a.replace(/ /g,"\u00a0");var b=[0];this.positivePrefix_=this.parseAffix_(a,b);var c=b[0];this.parseTrunk_(a,b);c=b[0]-c;this.positiveSuffix_=this.parseAffix_(a,b);b[0]<a.length&&a.charAt(b[0])==goog.i18n.NumberFormat.PATTERN_SEPARATOR_?(b[0]++,this.negativePrefix_=this.parseAffix_(a,b),b[0]+=c,this.negativeSuffix_=this.parseAffix_(a,b)):(this.negativePrefix_=this.positivePrefix_+this.negativePrefix_,this.negativeSuffix_+=this.positiveSuffix_)};
-goog.i18n.NumberFormat.prototype.applyStandardPattern_=function(a){switch(a){case goog.i18n.NumberFormat.Format.DECIMAL:this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);break;case goog.i18n.NumberFormat.Format.SCIENTIFIC:this.applyPattern_(goog.i18n.NumberFormatSymbols.SCIENTIFIC_PATTERN);break;case goog.i18n.NumberFormat.Format.PERCENT:this.applyPattern_(goog.i18n.NumberFormatSymbols.PERCENT_PATTERN);break;case goog.i18n.NumberFormat.Format.CURRENCY:this.applyPattern_(goog.i18n.currency.adjustPrecision(goog.i18n.NumberFormatSymbols.CURRENCY_PATTERN,
-this.intlCurrencyCode_));break;case goog.i18n.NumberFormat.Format.COMPACT_SHORT:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.SHORT);break;case goog.i18n.NumberFormat.Format.COMPACT_LONG:this.applyCompactStyle_(goog.i18n.NumberFormat.CompactStyle.LONG);break;default:throw Error("Unsupported pattern type.");}};
-goog.i18n.NumberFormat.prototype.applyCompactStyle_=function(a){this.compactStyle_=a;this.applyPattern_(goog.i18n.NumberFormatSymbols.DECIMAL_PATTERN);this.setMinimumFractionDigits(0);this.setMaximumFractionDigits(2);this.setSignificantDigits(2)};
-goog.i18n.NumberFormat.prototype.parse=function(a,b){var c=b||[0];if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact numbers is unimplemented");var d=NaN;a=a.replace(/ /g,"\u00a0");var e=a.indexOf(this.positivePrefix_,c[0])==c[0],f=a.indexOf(this.negativePrefix_,c[0])==c[0];e&&f&&(this.positivePrefix_.length>this.negativePrefix_.length?f=!1:this.positivePrefix_.length<this.negativePrefix_.length&&(e=!1));e?c[0]+=this.positivePrefix_.length:f&&(c[0]+=this.negativePrefix_.length);
-a.indexOf(goog.i18n.NumberFormatSymbols.INFINITY,c[0])==c[0]?(c[0]+=goog.i18n.NumberFormatSymbols.INFINITY.length,d=Infinity):d=this.parseNumber_(a,c);if(e){if(a.indexOf(this.positiveSuffix_,c[0])!=c[0])return NaN;c[0]+=this.positiveSuffix_.length}else if(f){if(a.indexOf(this.negativeSuffix_,c[0])!=c[0])return NaN;c[0]+=this.negativeSuffix_.length}return f?-d:d};
-goog.i18n.NumberFormat.prototype.parseNumber_=function(a,b){var c=!1,d=!1,e=!1,f=1,g=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,h=goog.i18n.NumberFormatSymbols.GROUP_SEP,k=goog.i18n.NumberFormatSymbols.EXP_SYMBOL;if(this.compactStyle_!=goog.i18n.NumberFormat.CompactStyle.NONE)throw Error("Parsing of compact style numbers is not implemented");for(var l="";b[0]<a.length;b[0]++){var m=a.charAt(b[0]),p=this.getDigit_(m);if(0<=p&&9>=p)l+=p,e=!0;else if(m==g.charAt(0)){if(c||d)break;l+=".";c=!0}else if(m==
-h.charAt(0)&&("\u00a0"!=h.charAt(0)||b[0]+1<a.length&&0<=this.getDigit_(a.charAt(b[0]+1)))){if(c||d)break}else if(m==k.charAt(0)){if(d)break;l+="E";d=!0}else if("+"==m||"-"==m)l+=m;else if(m==goog.i18n.NumberFormatSymbols.PERCENT.charAt(0)){if(1!=f)break;f=100;if(e){b[0]++;break}}else if(m==goog.i18n.NumberFormatSymbols.PERMILL.charAt(0)){if(1!=f)break;f=1E3;if(e){b[0]++;break}}else break}return parseFloat(l)/f};
-goog.i18n.NumberFormat.prototype.format=function(a){if(isNaN(a))return goog.i18n.NumberFormatSymbols.NAN;var b=[],c=goog.isNull(this.baseFormattingNumber_)?a:this.baseFormattingNumber_,c=this.getUnitAfterRounding_(c,a);a/=Math.pow(10,c.divisorBase);b.push(c.prefix);var d=0>a||0==a&&0>1/a;b.push(d?this.negativePrefix_:this.positivePrefix_);isFinite(a)?(a*=d?-1:1,a*=this.multiplier_,this.useExponentialNotation_?this.subformatExponential_(a,b):this.subformatFixed_(a,this.minimumIntegerDigits_,b)):b.push(goog.i18n.NumberFormatSymbols.INFINITY);
-b.push(d?this.negativeSuffix_:this.positiveSuffix_);b.push(c.suffix);return b.join("")};goog.i18n.NumberFormat.prototype.roundNumber_=function(a){var b=Math.pow(10,this.maximumFractionDigits_),c=0>=this.significantDigits_?Math.round(a*b):Math.floor(this.roundToSignificantDigits_(a*b,this.significantDigits_,this.maximumFractionDigits_));isFinite(c)?(a=Math.floor(c/b),b=Math.floor(c-a*b)):b=0;return{intValue:a,fracValue:b}};
-goog.i18n.NumberFormat.prototype.subformatFixed_=function(a,b,c){if(this.minimumFractionDigits_>this.maximumFractionDigits_)throw Error("Min value must be less than max value");a=this.roundNumber_(a);var d=Math.pow(10,this.maximumFractionDigits_),e=a.intValue,f=a.fracValue,g=0==e?0:this.intLog10_(e)+1,h=0<this.minimumFractionDigits_||0<f||this.showTrailingZeros_&&g<this.significantDigits_;a=this.minimumFractionDigits_;h&&(a=this.showTrailingZeros_&&0<this.significantDigits_?this.significantDigits_-
-g:this.minimumFractionDigits_);for(var k="",g=e;1E20<g;)k="0"+k,g=Math.round(g/10);var k=g+k,l=goog.i18n.NumberFormatSymbols.DECIMAL_SEP,m=goog.i18n.NumberFormatSymbols.GROUP_SEP,g=goog.i18n.NumberFormat.enforceAsciiDigits_?48:goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0),p=k.length;if(0<e||0<b){for(e=p;e<b;e++)c.push(String.fromCharCode(g));for(e=0;e<p;e++)c.push(String.fromCharCode(g+1*k.charAt(e))),1<p-e&&0<this.groupingSize_&&1==(p-e)%this.groupingSize_&&c.push(m)}else h||c.push(String.fromCharCode(g));
-(this.decimalSeparatorAlwaysShown_||h)&&c.push(l);b=""+(f+d);for(d=b.length;"0"==b.charAt(d-1)&&d>a+1;)d--;for(e=1;e<d;e++)c.push(String.fromCharCode(g+1*b.charAt(e)))};
-goog.i18n.NumberFormat.prototype.addExponentPart_=function(a,b){b.push(goog.i18n.NumberFormatSymbols.EXP_SYMBOL);0>a?(a=-a,b.push(goog.i18n.NumberFormatSymbols.MINUS_SIGN)):this.useSignForPositiveExponent_&&b.push(goog.i18n.NumberFormatSymbols.PLUS_SIGN);for(var c=""+a,d=goog.i18n.NumberFormat.enforceAsciiDigits_?"0":goog.i18n.NumberFormatSymbols.ZERO_DIGIT,e=c.length;e<this.minExponentDigits_;e++)b.push(d);b.push(c)};
-goog.i18n.NumberFormat.prototype.subformatExponential_=function(a,b){if(0==a)this.subformatFixed_(a,this.minimumIntegerDigits_,b),this.addExponentPart_(0,b);else{var c=goog.math.safeFloor(Math.log(a)/Math.log(10));a/=Math.pow(10,c);var d=this.minimumIntegerDigits_;if(1<this.maximumIntegerDigits_&&this.maximumIntegerDigits_>this.minimumIntegerDigits_){for(;0!=c%this.maximumIntegerDigits_;)a*=10,c--;d=1}else 1>this.minimumIntegerDigits_?(c++,a/=10):(c-=this.minimumIntegerDigits_-1,a*=Math.pow(10,this.minimumIntegerDigits_-
-1));this.subformatFixed_(a,d,b);this.addExponentPart_(c,b)}};goog.i18n.NumberFormat.prototype.getDigit_=function(a){a=a.charCodeAt(0);if(48<=a&&58>a)return a-48;var b=goog.i18n.NumberFormatSymbols.ZERO_DIGIT.charCodeAt(0);return b<=a&&a<b+10?a-b:-1};goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_="0";goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_=",";goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_=".";goog.i18n.NumberFormat.PATTERN_PER_MILLE_="\u2030";goog.i18n.NumberFormat.PATTERN_PERCENT_="%";
-goog.i18n.NumberFormat.PATTERN_DIGIT_="#";goog.i18n.NumberFormat.PATTERN_SEPARATOR_=";";goog.i18n.NumberFormat.PATTERN_EXPONENT_="E";goog.i18n.NumberFormat.PATTERN_PLUS_="+";goog.i18n.NumberFormat.PATTERN_MINUS_="-";goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_="\u00a4";goog.i18n.NumberFormat.QUOTE_="'";
-goog.i18n.NumberFormat.prototype.parseAffix_=function(a,b){for(var c="",d=!1,e=a.length;b[0]<e;b[0]++){var f=a.charAt(b[0]);if(f==goog.i18n.NumberFormat.QUOTE_)b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.QUOTE_?(b[0]++,c+="'"):d=!d;else if(d)c+=f;else switch(f){case goog.i18n.NumberFormat.PATTERN_DIGIT_:case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:case goog.i18n.NumberFormat.PATTERN_SEPARATOR_:return c;
-case goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_:if(b[0]+1<e&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_CURRENCY_SIGN_)b[0]++,c+=this.intlCurrencyCode_;else switch(this.currencyStyle_){case goog.i18n.NumberFormat.CurrencyStyle.LOCAL:c+=goog.i18n.currency.getLocalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.GLOBAL:c+=goog.i18n.currency.getGlobalCurrencySign(this.intlCurrencyCode_);break;case goog.i18n.NumberFormat.CurrencyStyle.PORTABLE:c+=goog.i18n.currency.getPortableCurrencySign(this.intlCurrencyCode_)}break;
-case goog.i18n.NumberFormat.PATTERN_PERCENT_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=100;c+=goog.i18n.NumberFormatSymbols.PERCENT;break;case goog.i18n.NumberFormat.PATTERN_PER_MILLE_:if(1!=this.multiplier_)throw Error("Too many percent/permill");this.multiplier_=1E3;c+=goog.i18n.NumberFormatSymbols.PERMILL;break;default:c+=f}}return c};
-goog.i18n.NumberFormat.prototype.parseTrunk_=function(a,b){for(var c=-1,d=0,e=0,f=0,g=-1,h=a.length,k=!0;b[0]<h&&k;b[0]++){var l=a.charAt(b[0]);switch(l){case goog.i18n.NumberFormat.PATTERN_DIGIT_:0<e?f++:d++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_:if(0<f)throw Error('Unexpected "0" in pattern "'+a+'"');e++;0<=g&&0>c&&g++;break;case goog.i18n.NumberFormat.PATTERN_GROUPING_SEPARATOR_:g=0;break;case goog.i18n.NumberFormat.PATTERN_DECIMAL_SEPARATOR_:if(0<=c)throw Error('Multiple decimal separators in pattern "'+
-a+'"');c=d+e+f;break;case goog.i18n.NumberFormat.PATTERN_EXPONENT_:if(this.useExponentialNotation_)throw Error('Multiple exponential symbols in pattern "'+a+'"');this.useExponentialNotation_=!0;this.minExponentDigits_=0;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_PLUS_&&(b[0]++,this.useSignForPositiveExponent_=!0);for(;b[0]+1<h&&a.charAt(b[0]+1)==goog.i18n.NumberFormat.PATTERN_ZERO_DIGIT_;)b[0]++,this.minExponentDigits_++;if(1>d+e||1>this.minExponentDigits_)throw Error('Malformed exponential pattern "'+
-a+'"');k=!1;break;default:b[0]--,k=!1}}0==e&&0<d&&0<=c&&(e=c,0==e&&e++,f=d-e,d=e-1,e=1);if(0>c&&0<f||0<=c&&(c<d||c>d+e)||0==g)throw Error('Malformed pattern "'+a+'"');f=d+e+f;this.maximumFractionDigits_=0<=c?f-c:0;0<=c&&(this.minimumFractionDigits_=d+e-c,0>this.minimumFractionDigits_&&(this.minimumFractionDigits_=0));e=0<=c?c:f;this.minimumIntegerDigits_=e-d;this.useExponentialNotation_&&(this.maximumIntegerDigits_=d+this.minimumIntegerDigits_,0==this.maximumFractionDigits_&&0==this.minimumIntegerDigits_&&
-(this.minimumIntegerDigits_=1));this.groupingSize_=Math.max(0,g);this.decimalSeparatorAlwaysShown_=0==c||c==f};goog.i18n.NumberFormat.NULL_UNIT_={prefix:"",suffix:"",divisorBase:0};
-goog.i18n.NumberFormat.prototype.getUnitFor_=function(a,b){var c=this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.SHORT?goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_SHORT_PATTERN:goog.i18n.CompactNumberFormatSymbols.COMPACT_DECIMAL_LONG_PATTERN;if(3>a)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.min(14,a);c=c[Math.pow(10,a)];if(!c)return goog.i18n.NumberFormat.NULL_UNIT_;c=c[b];return c&&"0"!=c?(c=/([^0]*)(0+)(.*)/.exec(c))?{prefix:c[1],suffix:c[3],divisorBase:a-(c[2].length-1)}:
-goog.i18n.NumberFormat.NULL_UNIT_:goog.i18n.NumberFormat.NULL_UNIT_};
-goog.i18n.NumberFormat.prototype.getUnitAfterRounding_=function(a,b){if(this.compactStyle_==goog.i18n.NumberFormat.CompactStyle.NONE)return goog.i18n.NumberFormat.NULL_UNIT_;a=Math.abs(a);b=Math.abs(b);var c=this.pluralForm_(a),d=1>=a?0:this.intLog10_(a),c=this.getUnitFor_(d,c).divisorBase,d=b/Math.pow(10,c),d=this.roundNumber_(d),e=a/Math.pow(10,c),e=this.roundNumber_(e),d=this.pluralForm_(d.intValue+d.fracValue);return this.getUnitFor_(c+this.intLog10_(e.intValue),d)};
-goog.i18n.NumberFormat.prototype.intLog10_=function(a){for(var b=0;1<=(a/=10);)b++;return b};goog.i18n.NumberFormat.prototype.roundToSignificantDigits_=function(a,b,c){if(!a)return a;var d=this.intLog10_(a);b=b-d-1;if(b<-c)return c=Math.pow(10,c),Math.round(a/c)*c;c=Math.pow(10,b);a=Math.round(a*c);return a/c};goog.i18n.NumberFormat.prototype.pluralForm_=function(){return"other"};goog.i18n.ordinalRules={};goog.i18n.ordinalRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.ordinalRules.defaultSelect_=function(){return goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.frSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.huSelect_=function(a){return 1==a||5==a?goog.i18n.ordinalRules.Keyword.ONE:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.svSelect_=function(a){return 1!=a%10&&2!=a%10||11==a%100||12==a%100?goog.i18n.ordinalRules.Keyword.OTHER:goog.i18n.ordinalRules.Keyword.ONE};goog.i18n.ordinalRules.enSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.ordinalRules.Keyword.ONE:2==a%10&&12!=a%100?goog.i18n.ordinalRules.Keyword.TWO:3==a%10&&13!=a%100?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.itSelect_=function(a){return 11==a||8==a||80==a||800==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.caSelect_=function(a){return 1==a||3==a?goog.i18n.ordinalRules.Keyword.ONE:2==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.mrSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.guSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.bnSelect_=function(a){return 1==a||5==a||7==a||8==a||9==a||10==a?goog.i18n.ordinalRules.Keyword.ONE:2==a||3==a?goog.i18n.ordinalRules.Keyword.TWO:4==a?goog.i18n.ordinalRules.Keyword.FEW:6==a?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};
-goog.i18n.ordinalRules.zuSelect_=function(a){return 1==a?goog.i18n.ordinalRules.Keyword.ONE:a==(a|0)&&2<=a&&9>=a?goog.i18n.ordinalRules.Keyword.FEW:a==(a|0)&&(10<=a&&19>=a||100<=a&&199>=a||1E3<=a&&1999>=a)?goog.i18n.ordinalRules.Keyword.MANY:goog.i18n.ordinalRules.Keyword.OTHER};goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"am"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bg"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"bn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.bnSelect_);"br"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ca"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.caSelect_);"chr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"cy"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"da"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"de"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"el"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"en"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"et"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fa"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"fil"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"fr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_;"gl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gsw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"gu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"haw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"he"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.guSelect_);"hr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"hu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.huSelect_);"id"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"is"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"it"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.itSelect_);"iw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ja"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ln"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"lv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"ml"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"mr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.mrSelect_);"ms"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);
-"mt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nb"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"nl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"no"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"or"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"pl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"pt"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"ro"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"ru"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"sk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sq"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"sv"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.svSelect_);"sw"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ta"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"te"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"th"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tl"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"tr"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);
-"ur"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);"vi"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.frSelect_);"zh"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_);if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;
-if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.ordinalRules.select=goog.i18n.ordinalRules.zuSelect_);goog.i18n.pluralRules={};goog.i18n.pluralRules.Keyword={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};goog.i18n.pluralRules.defaultSelect_=function(){return goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.arSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&99>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.heSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:0!=a&&0==a%10?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.enSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.filSelect_=function(a){return 0==a||1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.frSelect_=function(a){return 0<=a&&2>=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.lvSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.iuSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gaSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&3<=a&&6>=a?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&7<=a&&10>=a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.roSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||1!=a&&a==(a|0)&&1<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.ltSelect_=function(a){return 1==a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&9>=a%10&&(11>a%100||19<a%100)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.beSelect_=function(a){return 1==a%10&&11!=a%100?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:0==a%10||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&11<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.csSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&4>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.plSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a%10&&4>=a%10&&(12>a%100||14<a%100)?goog.i18n.pluralRules.Keyword.FEW:1!=a&&(0==a%10||1==a%10)||a==(a|0)&&5<=a%10&&9>=a%10||a==(a|0)&&12<=a%100&&14>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.slSelect_=function(a){return 1==a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%100?goog.i18n.pluralRules.Keyword.TWO:3==a%100||4==a%100?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.mtSelect_=function(a){return 1==a?goog.i18n.pluralRules.Keyword.ONE:0==a||a==(a|0)&&2<=a%100&&10>=a%100?goog.i18n.pluralRules.Keyword.FEW:a==(a|0)&&11<=a%100&&19>=a%100?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.mkSelect_=function(a){return 1==a%10&&11!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.cySelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:2==a?goog.i18n.pluralRules.Keyword.TWO:3==a?goog.i18n.pluralRules.Keyword.FEW:6==a?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.lagSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:0<=a&&2>=a&&0!=a&&2!=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.shiSelect_=function(a){return 0<=a&&1>=a?goog.i18n.pluralRules.Keyword.ONE:a==(a|0)&&2<=a&&10>=a?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.brSelect_=function(a){return 1==a%10&&11!=a%100&&71!=a%100&&91!=a%100?goog.i18n.pluralRules.Keyword.ONE:2==a%10&&12!=a%100&&72!=a%100&&92!=a%100?goog.i18n.pluralRules.Keyword.TWO:(3==a%10||4==a%10||9==a%10)&&(10>a%100||19<a%100)&&(70>a%100||79<a%100)&&(90>a%100||99<a%100)?goog.i18n.pluralRules.Keyword.FEW:0!=a&&0==a%1E6?goog.i18n.pluralRules.Keyword.MANY:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.kshSelect_=function(a){return 0==a?goog.i18n.pluralRules.Keyword.ZERO:1==a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.tzmSelect_=function(a){return 0==a||1==a||a==(a|0)&&11<=a&&99>=a?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.gvSelect_=function(a){return 1==a%10||2==a%10||0==a%20?goog.i18n.pluralRules.Keyword.ONE:goog.i18n.pluralRules.Keyword.OTHER};
-goog.i18n.pluralRules.gdSelect_=function(a){return 1==a||11==a?goog.i18n.pluralRules.Keyword.ONE:2==a||12==a?goog.i18n.pluralRules.Keyword.TWO:a==(a|0)&&(3<=a&&10>=a||13<=a&&19>=a)?goog.i18n.pluralRules.Keyword.FEW:goog.i18n.pluralRules.Keyword.OTHER};goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"af"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"am"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"ar"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.arSelect_);"bg"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"bn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"br"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.brSelect_);"ca"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"chr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"cs"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"cy"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.cySelect_);"da"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"de"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("de_AT"==goog.LOCALE||"de-AT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("de_CH"==goog.LOCALE||"de-CH"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"el"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"en"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("en_AU"==goog.LOCALE||"en-AU"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_GB"==goog.LOCALE||"en-GB"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_IE"==goog.LOCALE||"en-IE"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_IN"==goog.LOCALE||"en-IN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_SG"==goog.LOCALE||"en-SG"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("en_US"==goog.LOCALE||"en-US"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("en_ZA"==goog.LOCALE||"en-ZA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"es"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("es_419"==goog.LOCALE||"es-419"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;if("es_ES"==goog.LOCALE||"es-ES"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"et"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"eu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fa"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"fi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"fil"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"fr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_);if("fr_CA"==goog.LOCALE||"fr-CA"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.frSelect_;
-"gl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gsw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"gu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"haw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"he"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"hi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);
-"hr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"hu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"id"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"in"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"is"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"it"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"iw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.heSelect_);"ja"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"kn"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ko"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"ln"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"lt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.ltSelect_);
-"lv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.lvSelect_);"ml"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"mr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ms"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"mt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.mtSelect_);"nb"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"nl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"no"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"or"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"pl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.plSelect_);"pt"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);if("pt_BR"==goog.LOCALE||"pt-BR"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;
-if("pt_PT"==goog.LOCALE||"pt-PT"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_;"ro"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.roSelect_);"ru"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.csSelect_);"sl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.slSelect_);"sq"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);
-"sr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"sv"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"sw"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"ta"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"te"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"th"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-"tl"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.filSelect_);"tr"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"uk"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.beSelect_);"ur"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);"vi"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);"zh"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_);
-if("zh_CN"==goog.LOCALE||"zh-CN"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_HK"==goog.LOCALE||"zh-HK"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;if("zh_TW"==goog.LOCALE||"zh-TW"==goog.LOCALE)goog.i18n.pluralRules.select=goog.i18n.pluralRules.defaultSelect_;"zu"==goog.LOCALE&&(goog.i18n.pluralRules.select=goog.i18n.pluralRules.enSelect_);goog.i18n.MessageFormat=function(a){this.literals_=[];this.parsedPattern_=[];this.numberFormatter_=new goog.i18n.NumberFormat(goog.i18n.NumberFormat.Format.DECIMAL);this.parsePattern_(a)};goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_="\ufddf_";goog.i18n.MessageFormat.Element_={STRING:0,BLOCK:1};goog.i18n.MessageFormat.BlockType_={PLURAL:0,ORDINAL:1,SELECT:2,SIMPLE:3,STRING:4,UNKNOWN:5};goog.i18n.MessageFormat.OTHER_="other";goog.i18n.MessageFormat.REGEX_LITERAL_=/'([{}#].*?)'/g;
-goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_=/''/g;goog.i18n.MessageFormat.prototype.format=function(a){return this.format_(a,!1)};goog.i18n.MessageFormat.prototype.format_=function(a,b){if(0==this.parsedPattern_.length)return"";var c=[];this.formatBlock_(this.parsedPattern_,a,b,c);c=c.join("");for(b||goog.asserts.assert(-1==c.search("#"),"Not all # were replaced.");0<this.literals_.length;)c=c.replace(this.buildPlaceholder_(this.literals_),this.literals_.pop());return c};
-goog.i18n.MessageFormat.prototype.formatBlock_=function(a,b,c,d){for(var e=0;e<a.length;e++)switch(a[e].type){case goog.i18n.MessageFormat.BlockType_.STRING:d.push(a[e].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:var f=a[e].value;this.formatSimplePlaceholder_(f,b,d);break;case goog.i18n.MessageFormat.BlockType_.SELECT:f=a[e].value;this.formatSelectBlock_(f,b,c,d);break;case goog.i18n.MessageFormat.BlockType_.PLURAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.pluralRules.select,
-c,d);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:f=a[e].value;this.formatPluralOrdinalBlock_(f,b,goog.i18n.ordinalRules.select,c,d);break;default:goog.asserts.fail("Unrecognized block type.")}};goog.i18n.MessageFormat.prototype.formatSimplePlaceholder_=function(a,b,c){b=b[a];goog.isDef(b)?(this.literals_.push(b),c.push(this.buildPlaceholder_(this.literals_))):c.push("Undefined parameter - "+a)};
-goog.i18n.MessageFormat.prototype.formatSelectBlock_=function(a,b,c,d){var e=a.argumentIndex;goog.isDef(b[e])?(e=a[b[e]],goog.isDef(e)||(e=a[goog.i18n.MessageFormat.OTHER_],goog.asserts.assertArray(e,"Invalid option or missing other option for select block.")),this.formatBlock_(e,b,c,d)):d.push("Undefined parameter - "+e)};
-goog.i18n.MessageFormat.prototype.formatPluralOrdinalBlock_=function(a,b,c,d,e){var f=a.argumentIndex,g=a.argumentOffset,h=+b[f];isNaN(h)?e.push("Undefined or invalid parameter - "+f):(g=h-g,f=a[b[f]],goog.isDef(f)||(goog.asserts.assert(0<=g,"Argument index smaller than offset."),c=c(g),goog.asserts.assertString(c,"Invalid plural key."),f=a[c],goog.isDef(f)||(f=a[goog.i18n.MessageFormat.OTHER_]),goog.asserts.assertArray(f,"Invalid option or missing other option for plural block.")),a=[],this.formatBlock_(f,
-b,d,a),b=a.join(""),goog.asserts.assertString(b,"Empty block in plural."),d?e.push(b):(d=this.numberFormatter_.format(g),e.push(b.replace(/#/g,d))))};goog.i18n.MessageFormat.prototype.parsePattern_=function(a){a&&(a=this.insertPlaceholders_(a),this.parsedPattern_=this.parseBlock_(a))};
-goog.i18n.MessageFormat.prototype.insertPlaceholders_=function(a){var b=this.literals_,c=goog.bind(this.buildPlaceholder_,this);a=a.replace(goog.i18n.MessageFormat.REGEX_DOUBLE_APOSTROPHE_,function(){b.push("'");return c(b)});return a=a.replace(goog.i18n.MessageFormat.REGEX_LITERAL_,function(a,e){b.push(e);return c(b)})};
-goog.i18n.MessageFormat.prototype.extractParts_=function(a){var b=0,c=[],d=[],e=/[{}]/g;e.lastIndex=0;for(var f;f=e.exec(a);){var g=f.index;"}"==f[0]?(f=c.pop(),goog.asserts.assert(goog.isDef(f)&&"{"==f,"No matching { for }."),0==c.length&&(f={},f.type=goog.i18n.MessageFormat.Element_.BLOCK,f.value=a.substring(b,g),d.push(f),b=g+1)):(0==c.length&&(b=a.substring(b,g),""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b}),b=g+1),c.push("{"))}goog.asserts.assert(0==c.length,"There are mismatched { or } in the pattern.");
-b=a.substring(b);""!=b&&d.push({type:goog.i18n.MessageFormat.Element_.STRING,value:b});return d};goog.i18n.MessageFormat.PLURAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*plural\s*,(?:\s*offset:(\d+))?/;goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_=/^\s*(\w+)\s*,\s*selectordinal\s*,/;goog.i18n.MessageFormat.SELECT_BLOCK_RE_=/^\s*(\w+)\s*,\s*select\s*,/;
-goog.i18n.MessageFormat.prototype.parseBlockType_=function(a){return goog.i18n.MessageFormat.PLURAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.PLURAL:goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.ORDINAL:goog.i18n.MessageFormat.SELECT_BLOCK_RE_.test(a)?goog.i18n.MessageFormat.BlockType_.SELECT:/^\s*\w+\s*/.test(a)?goog.i18n.MessageFormat.BlockType_.SIMPLE:goog.i18n.MessageFormat.BlockType_.UNKNOWN};
-goog.i18n.MessageFormat.prototype.parseBlock_=function(a){var b=[];a=this.extractParts_(a);for(var c=0;c<a.length;c++){var d={};if(goog.i18n.MessageFormat.Element_.STRING==a[c].type)d.type=goog.i18n.MessageFormat.BlockType_.STRING,d.value=a[c].value;else if(goog.i18n.MessageFormat.Element_.BLOCK==a[c].type){var e=this.parseBlockType_(a[c].value);switch(e){case goog.i18n.MessageFormat.BlockType_.SELECT:d.type=goog.i18n.MessageFormat.BlockType_.SELECT;d.value=this.parseSelectBlock_(a[c].value);break;
-case goog.i18n.MessageFormat.BlockType_.PLURAL:d.type=goog.i18n.MessageFormat.BlockType_.PLURAL;d.value=this.parsePluralBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.ORDINAL:d.type=goog.i18n.MessageFormat.BlockType_.ORDINAL;d.value=this.parseOrdinalBlock_(a[c].value);break;case goog.i18n.MessageFormat.BlockType_.SIMPLE:d.type=goog.i18n.MessageFormat.BlockType_.SIMPLE;d.value=a[c].value;break;default:goog.asserts.fail("Unknown block type.")}}else goog.asserts.fail("Unknown part of the pattern.");
-b.push(d)}return b};
-goog.i18n.MessageFormat.prototype.parseSelectBlock_=function(a){var b="",c=goog.i18n.MessageFormat.SELECT_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing select key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid select value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");c[e.replace(/\s/g,
-"")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in select statement.");return c};
-goog.i18n.MessageFormat.prototype.parsePluralBlock_=function(a){var b="",c=0,d=goog.i18n.MessageFormat.PLURAL_BLOCK_RE_;a=a.replace(d,function(a,d,e){b=d;e&&(c=parseInt(e,10));return""});d={};d.argumentIndex=b;d.argumentOffset=c;a=this.extractParts_(a);for(var e=0;e<a.length;){var f=a[e].value;goog.asserts.assertString(f,"Missing plural key element.");e++;goog.asserts.assert(e<a.length,"Missing or invalid plural value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[e].type)var g=this.parseBlock_(a[e].value);
-else goog.asserts.fail("Expected block type.");d[f.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=g;e++}goog.asserts.assertArray(d[goog.i18n.MessageFormat.OTHER_],"Missing other key in plural statement.");return d};
-goog.i18n.MessageFormat.prototype.parseOrdinalBlock_=function(a){var b="",c=goog.i18n.MessageFormat.ORDINAL_BLOCK_RE_;a=a.replace(c,function(a,c){b=c;return""});c={};c.argumentIndex=b;c.argumentOffset=0;a=this.extractParts_(a);for(var d=0;d<a.length;){var e=a[d].value;goog.asserts.assertString(e,"Missing ordinal key element.");d++;goog.asserts.assert(d<a.length,"Missing or invalid ordinal value element.");if(goog.i18n.MessageFormat.Element_.BLOCK==a[d].type)var f=this.parseBlock_(a[d].value);else goog.asserts.fail("Expected block type.");
-c[e.replace(/\s*(?:=)?(\w+)\s*/,"$1")]=f;d++}goog.asserts.assertArray(c[goog.i18n.MessageFormat.OTHER_],"Missing other key in selectordinal statement.");return c};goog.i18n.MessageFormat.prototype.buildPlaceholder_=function(a){goog.asserts.assert(0<a.length,"Literal array is empty.");a=(a.length-1).toString(10);return goog.i18n.MessageFormat.LITERAL_PLACEHOLDER_+a+"_"};cvox.TtsCapturingEventListener=function(){};cvox.TtsInterface=function(){};cvox.TtsInterface.prototype.speak=function(){};cvox.TtsInterface.prototype.isSpeaking=function(){};cvox.TtsInterface.prototype.stop=function(){};cvox.TtsInterface.prototype.increaseOrDecreaseProperty=function(){};cvox.TtsInterface.prototype.getDefaultProperty=function(){};cvox.AbstractTts=function(){this.ttsProperties={};this.propertyDefault={rate:0.5,pitch:0.5,volume:0.5};this.propertyMin={rate:0,pitch:0,volume:0};this.propertyMax={rate:1,pitch:1,volume:1};this.propertyStep={rate:0.1,pitch:0.1,volume:0.1};if(void 0==cvox.AbstractTts.pronunciationDictionaryRegexp_){var a=[],b;for(b in cvox.AbstractTts.PRONUNCIATION_DICTIONARY)a.push(b);a="\\b("+a.join("|")+")\\b";cvox.AbstractTts.pronunciationDictionaryRegexp_=RegExp(a,"ig")}if(void 0==cvox.AbstractTts.substitutionDictionaryRegexp_){var a=
-[],c;for(c in cvox.AbstractTts.SUBSTITUTION_DICTIONARY)a.push(c);a="("+a.join("|")+")";cvox.AbstractTts.substitutionDictionaryRegexp_=RegExp(a,"ig")}};cvox.AbstractTts.prototype.speak=function(){return this};cvox.AbstractTts.prototype.isSpeaking=function(){return!1};cvox.AbstractTts.prototype.stop=function(){};
-cvox.AbstractTts.prototype.increaseOrDecreaseProperty=function(a,b){var c=this.propertyMin[a],d=this.propertyMax[a],e=this.propertyStep[a],f=this.ttsProperties[a],f=b?f+e:f-e;this.ttsProperties[a]=Math.max(Math.min(f,d),c)};
-cvox.AbstractTts.prototype.mergeProperties=function(a){var b={},c;if(this.ttsProperties)for(c in this.ttsProperties)b[c]=this.ttsProperties[c];if(a){c=cvox.AbstractTts;"number"==typeof a[c.VOLUME]&&(b[c.VOLUME]=a[c.VOLUME]);"number"==typeof a[c.PITCH]&&(b[c.PITCH]=a[c.PITCH]);"number"==typeof a[c.RATE]&&(b[c.RATE]=a[c.RATE]);"string"==typeof a[c.LANG]&&(b[c.LANG]=a[c.LANG]);var d=this,e=function(c,e){if("number"==typeof a[e]&&"number"==typeof b[c]){b[c]+=a[e];var h=d.propertyMin[c],k=d.propertyMax[c];
-b[c]>k?b[c]=k:b[c]<h&&(b[c]=h)}};e(c.VOLUME,c.RELATIVE_VOLUME);e(c.PITCH,c.RELATIVE_PITCH);e(c.RATE,c.RELATIVE_RATE)}return b};cvox.AbstractTts.RATE="rate";cvox.AbstractTts.PITCH="pitch";cvox.AbstractTts.VOLUME="volume";cvox.AbstractTts.LANG="lang";cvox.AbstractTts.RELATIVE_RATE="relativeRate";cvox.AbstractTts.RELATIVE_PITCH="relativePitch";cvox.AbstractTts.RELATIVE_VOLUME="relativeVolume";cvox.AbstractTts.COLOR="color";cvox.AbstractTts.FONT_WEIGHT="fontWeight";cvox.AbstractTts.PUNCTUATION_ECHO="punctuationEcho";
-cvox.AbstractTts.PAUSE="pause";cvox.AbstractTts.PERSONALITY_ANNOTATION={relativePitch:-0.25,color:"yellow",punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT={punctuationEcho:"none"};cvox.AbstractTts.PERSONALITY_ASIDE={relativePitch:-0.1,color:"#669"};cvox.AbstractTts.PERSONALITY_CAPITAL={relativePitch:0.6};cvox.AbstractTts.PERSONALITY_DELETED={punctuationEcho:"none",relativePitch:-0.6};cvox.AbstractTts.PERSONALITY_QUOTE={relativePitch:0.1,color:"#b6b",fontWeight:"bold"};
-cvox.AbstractTts.PERSONALITY_STRONG={relativePitch:0.1,color:"#b66",fontWeight:"bold"};cvox.AbstractTts.PERSONALITY_EMPHASIS={relativeVolume:0.1,relativeRate:-0.1,color:"#6bb",fontWeight:"bold"};cvox.AbstractTts.DEBUG=!0;cvox.AbstractTts.QUEUE_MODE_FLUSH=0;cvox.AbstractTts.QUEUE_MODE_QUEUE=1;
-cvox.AbstractTts.CHARACTER_DICTIONARY={" ":"space","`":"backtick","~":"tilde","!":"exclamation","@":"at","#":"pound",$:"dollar","%":"percent","^":"caret","&":"ampersand","*":"asterisk","(":"open_paren",")":"close_paren","-":"dash",_:"underscore","=":"equals","+":"plus","[":"left_bracket","]":"right_bracket","{":"left_brace","}":"right_brace","|":"pipe",";":"semicolon",":":"colon",",":"comma",".":"dot","<":"less_than",">":"greater_than","/":"slash","?":"question_mark",'"':"quote","'":"apostrophe",
-"\t":"tab","\r":"return","\n":"new line","\\":"backslash"};cvox.AbstractTts.PRONUNCIATION_DICTIONARY={admob:"ad-mob",adsense:"ad-sense",adwords:"ad-words",angularjs:"angular j s",bcc:"B C C",cc:"C C",chromevox:"chrome vox",cr48:"C R 48",ctrl:"control",doubleclick:"double-click",gmail:"gee mail",gtalk:"gee talk",http:"H T T P",https:"H T T P S",igoogle:"eye google",pagerank:"page-rank",username:"user-name",www:"W W W",youtube:"you tube"};
-cvox.AbstractTts.SUBSTITUTION_DICTIONARY={"://":"colon slash slash","\u00bc":"one fourth","\u00bd":"one half","\u200e":"left to right mark","\u2190":"left arrow","\u2191":"up arrow","\u2192":"right arrow","\u2193":"down arrow","\u21d0":"left double arrow","\u21d1":"up double arrow","\u21d2":"right double arrow","\u21d3":"down double arrow","\u21e6":"left arrow","\u21e7":"up arrow","\u21e8":"right arrow","\u21e9":"down arrow","\u2303":"control","\u2318":"command","\u2325":"option","\u25b2":"up triangle",
-"\u25b3":"up triangle","\u25b4":"up triangle","\u25b5":"up triangle","\u25b6":"right triangle","\u25b7":"right triangle","\u25b8":"right triangle","\u25b9":"right triangle","\u25ba":"right pointer","\u25bb":"right pointer","\u25bc":"down triangle","\u25bd":"down triangle","\u25be":"down triangle","\u25bf":"down triangle","\u25c0":"left triangle","\u25c1":"left triangle","\u25c2":"left triangle","\u25c3":"left triangle","\u25c4":"left pointer","\u25c5":"left pointer","\uf8ff":"apple"};
-cvox.AbstractTts.repetitionRegexp_=/([-\/\\|!@#$%^&*\(\)=_+\[\]\{\}.?;'":<>])\1{2,}/g;cvox.AbstractTts.repetitionReplace_=function(a){var b=a.length;return" "+(new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg(cvox.AbstractTts.CHARACTER_DICTIONARY[a[0]]))).format({COUNT:b})+" "};cvox.AbstractTts.prototype.getDefaultProperty=function(a){return this.propertyDefault[a]};cvox.AbstractEarcons=function(){this.enabled=!0};cvox.AbstractEarcons.prototype.playEarcon=function(){};cvox.AbstractEarcons.prototype.playEarconByName=function(a){this.playEarcon(this.getEarconId(a))};cvox.AbstractEarcons.prototype.earconsAvailable=function(){return!0};
-cvox.AbstractEarcons.prototype.getEarconId=function(a){this.earconNamesToIds||(this.earconNamesToIds={},this.earconNamesToIds.ALERT_MODAL=cvox.AbstractEarcons.ALERT_MODAL,this.earconNamesToIds.ALERT_NONMODAL=cvox.AbstractEarcons.ALERT_NONMODAL,this.earconNamesToIds.BULLET=cvox.AbstractEarcons.BULLET,this.earconNamesToIds.BUSY_PROGRESS_LOOP=cvox.AbstractEarcons.BUSY_PROGRESS_LOOP,this.earconNamesToIds.BUSY_WORKING_LOOP=cvox.AbstractEarcons.BUSY_WORKING_LOOP,this.earconNamesToIds.BUTTON=cvox.AbstractEarcons.BUTTON,
-this.earconNamesToIds.CHECK_OFF=cvox.AbstractEarcons.CHECK_OFF,this.earconNamesToIds.CHECK_ON=cvox.AbstractEarcons.CHECK_ON,this.earconNamesToIds.CHROMEVOX_DISABLED=cvox.AbstractEarcons.CHROMEVOX_DISABLED,this.earconNamesToIds.CHROMEVOX_ENABLED=cvox.AbstractEarcons.CHROMEVOX_ENABLED,this.earconNamesToIds.COLLAPSED=cvox.AbstractEarcons.COLLAPSED,this.earconNamesToIds.EDITABLE_TEXT=cvox.AbstractEarcons.EDITABLE_TEXT,this.earconNamesToIds.ELLIPSIS=cvox.AbstractEarcons.ELLIPSIS,this.earconNamesToIds.EXPANDED=
-cvox.AbstractEarcons.EXPANDED,this.earconNamesToIds.FONT_CHANGE=cvox.AbstractEarcons.FONT_CHANGE,this.earconNamesToIds.INVALID_KEYPRESS=cvox.AbstractEarcons.INVALID_KEYPRESS,this.earconNamesToIds.LINK=cvox.AbstractEarcons.LINK,this.earconNamesToIds.LISTBOX=cvox.AbstractEarcons.LISTBOX,this.earconNamesToIds.LIST_ITEM=cvox.AbstractEarcons.LIST_ITEM,this.earconNamesToIds.LONG_DESC=cvox.AbstractEarcons.LONG_DESC,this.earconNamesToIds.NEW_MAIL=cvox.AbstractEarcons.NEW_MAIL,this.earconNamesToIds.OBJECT_CLOSE=
-cvox.AbstractEarcons.OBJECT_CLOSE,this.earconNamesToIds.OBJECT_DELETE=cvox.AbstractEarcons.OBJECT_DELETE,this.earconNamesToIds.OBJECT_DESELECT=cvox.AbstractEarcons.OBJECT_DESELECT,this.earconNamesToIds.OBJECT_ENTER=cvox.AbstractEarcons.OBJECT_ENTER,this.earconNamesToIds.OBJECT_EXIT=cvox.AbstractEarcons.OBJECT_EXIT,this.earconNamesToIds.OBJECT_OPEN=cvox.AbstractEarcons.OBJECT_OPEN,this.earconNamesToIds.OBJECT_SELECT=cvox.AbstractEarcons.OBJECT_SELECT,this.earconNamesToIds.PARAGRAPH_BREAK=cvox.AbstractEarcons.PARAGRAPH_BREAK,
-this.earconNamesToIds.SEARCH_HIT=cvox.AbstractEarcons.SEARCH_HIT,this.earconNamesToIds.SEARCH_MISS=cvox.AbstractEarcons.SEARCH_MISS,this.earconNamesToIds.SECTION=cvox.AbstractEarcons.SECTION,this.earconNamesToIds.SELECTION=cvox.AbstractEarcons.SELECTION,this.earconNamesToIds.SELECTION_REVERSE=cvox.AbstractEarcons.SELECTION_REVERSE,this.earconNamesToIds.SPECIAL_CONTENT=cvox.AbstractEarcons.SPECIAL_CONTENT,this.earconNamesToIds.TASK_SUCCESS=cvox.AbstractEarcons.TASK_SUCCESS,this.earconNamesToIds.WRAP=
-cvox.AbstractEarcons.WRAP,this.earconNamesToIds.WRAP_EDGE=cvox.AbstractEarcons.WRAP_EDGE);return this.earconNamesToIds[a]};cvox.AbstractEarcons.prototype.getEarconFilename=function(a){return cvox.AbstractEarcons.earconMap[a]};cvox.AbstractEarcons.prototype.toggle=function(){return this.enabled=!this.enabled};cvox.AbstractEarcons.ALERT_MODAL=0;cvox.AbstractEarcons.ALERT_NONMODAL=1;cvox.AbstractEarcons.BULLET=2;cvox.AbstractEarcons.BUSY_PROGRESS_LOOP=3;cvox.AbstractEarcons.BUSY_WORKING_LOOP=4;
-cvox.AbstractEarcons.BUTTON=5;cvox.AbstractEarcons.CHECK_OFF=6;cvox.AbstractEarcons.CHECK_ON=7;cvox.AbstractEarcons.CHROMEVOX_DISABLED=8;cvox.AbstractEarcons.CHROMEVOX_ENABLED=9;cvox.AbstractEarcons.COLLAPSED=10;cvox.AbstractEarcons.EDITABLE_TEXT=11;cvox.AbstractEarcons.ELLIPSIS=12;cvox.AbstractEarcons.EXPANDED=13;cvox.AbstractEarcons.FONT_CHANGE=14;cvox.AbstractEarcons.INVALID_KEYPRESS=15;cvox.AbstractEarcons.LINK=16;cvox.AbstractEarcons.LISTBOX=17;cvox.AbstractEarcons.LIST_ITEM=18;
-cvox.AbstractEarcons.LONG_DESC=19;cvox.AbstractEarcons.NEW_MAIL=20;cvox.AbstractEarcons.OBJECT_CLOSE=21;cvox.AbstractEarcons.OBJECT_DELETE=22;cvox.AbstractEarcons.OBJECT_DESELECT=23;cvox.AbstractEarcons.OBJECT_ENTER=24;cvox.AbstractEarcons.OBJECT_EXIT=25;cvox.AbstractEarcons.OBJECT_OPEN=26;cvox.AbstractEarcons.OBJECT_SELECT=27;cvox.AbstractEarcons.PARAGRAPH_BREAK=28;cvox.AbstractEarcons.SEARCH_HIT=29;cvox.AbstractEarcons.SEARCH_MISS=30;cvox.AbstractEarcons.SECTION=31;
-cvox.AbstractEarcons.SELECTION=32;cvox.AbstractEarcons.SELECTION_REVERSE=33;cvox.AbstractEarcons.SPECIAL_CONTENT=34;cvox.AbstractEarcons.TASK_SUCCESS=35;cvox.AbstractEarcons.WRAP=36;cvox.AbstractEarcons.WRAP_EDGE=37;cvox.AbstractEarcons.earconMap={};cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_MODAL]="alert_modal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ALERT_NONMODAL]="alert_nonmodal.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BULLET]="bullet.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_PROGRESS_LOOP]="busy_progress_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUSY_WORKING_LOOP]="busy_working_loop.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.BUTTON]="button.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_OFF]="check_off.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHECK_ON]="check_on.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_DISABLED]="chromevox_disabled.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.CHROMEVOX_ENABLED]="chromevox_enabled.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.COLLAPSED]="collapsed.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EDITABLE_TEXT]="editable_text.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.ELLIPSIS]="ellipsis.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.EXPANDED]="expanded.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.FONT_CHANGE]="font_change.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.INVALID_KEYPRESS]="invalid_keypress.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LINK]="link.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LISTBOX]="listbox.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LIST_ITEM]="bullet.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.LONG_DESC]="long_desc.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.NEW_MAIL]="new_mail.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_CLOSE]="object_close.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DELETE]="object_delete.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_DESELECT]="object_deselect.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_ENTER]="object_enter.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_EXIT]="object_exit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_OPEN]="object_open.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.OBJECT_SELECT]="object_select.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.PARAGRAPH_BREAK]="paragraph_break.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_HIT]="search_hit.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SEARCH_MISS]="search_miss.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SECTION]="section.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION]="selection.ogg";
-cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SELECTION_REVERSE]="selection_reverse.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.SPECIAL_CONTENT]="special_content.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.TASK_SUCCESS]="task_success.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP]="wrap.ogg";cvox.AbstractEarcons.earconMap[cvox.AbstractEarcons.WRAP_EDGE]="wrap_edge.ogg";cvox.NodeStateUtil={};cvox.NodeStateUtil.expand=function(a){try{return a.map(function(a){if(1>a.length)throw Error("cvox.NodeState must have at least one entry");var b=a.slice(1).map(function(a){return"number"==typeof a?cvox.ChromeVox.msgs.getNumber(a):a});return cvox.ChromeVox.msgs.getMsg(a[0],b)}).join(" ")}catch(b){throw Error("error: "+b+" state: "+a);}};cvox.AriaUtil=function(){};cvox.AriaUtil.NO_ROLE_NAME=" ";
-cvox.AriaUtil.WIDGET_ROLE_TO_NAME={alert:"aria_role_alert",alertdialog:"aria_role_alertdialog",button:"aria_role_button",checkbox:"aria_role_checkbox",columnheader:"aria_role_columnheader",combobox:"aria_role_combobox",dialog:"aria_role_dialog",grid:"aria_role_grid",gridcell:"aria_role_gridcell",link:"aria_role_link",listbox:"aria_role_listbox",log:"aria_role_log",marquee:"aria_role_marquee",menu:"aria_role_menu",menubar:"aria_role_menubar",menuitem:"aria_role_menuitem",menuitemcheckbox:"aria_role_menuitemcheckbox",
-menuitemradio:"aria_role_menuitemradio",option:cvox.AriaUtil.NO_ROLE_NAME,progressbar:"aria_role_progressbar",radio:"aria_role_radio",radiogroup:"aria_role_radiogroup",rowheader:"aria_role_rowheader",scrollbar:"aria_role_scrollbar",slider:"aria_role_slider",spinbutton:"aria_role_spinbutton",status:"aria_role_status",tab:"aria_role_tab",tabpanel:"aria_role_tabpanel",textbox:"aria_role_textbox",timer:"aria_role_timer",toolbar:"aria_role_toolbar",tooltip:"aria_role_tooltip",treeitem:"aria_role_treeitem"};
-cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME={article:"aria_role_article",application:"aria_role_application",banner:"aria_role_banner",columnheader:"aria_role_columnheader",complementary:"aria_role_complementary",contentinfo:"aria_role_contentinfo",definition:"aria_role_definition",directory:"aria_role_directory",document:"aria_role_document",form:"aria_role_form",group:"aria_role_group",heading:"aria_role_heading",img:"aria_role_img",list:"aria_role_list",listitem:"aria_role_listitem",main:"aria_role_main",
-math:"aria_role_math",navigation:"aria_role_navigation",note:"aria_role_note",region:"aria_role_region",rowheader:"aria_role_rowheader",search:"aria_role_search",separator:"aria_role_separator"};
-cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS=[{name:"aria-autocomplete",values:{inline:"aria_autocomplete_inline",list:"aria_autocomplete_list",both:"aria_autocomplete_both"}},{name:"aria-checked",values:{"true":"aria_checked_true","false":"aria_checked_false",mixed:"aria_checked_mixed"}},{name:"aria-disabled",values:{"true":"aria_disabled_true"}},{name:"aria-expanded",values:{"true":"aria_expanded_true","false":"aria_expanded_false"}},{name:"aria-invalid",values:{"true":"aria_invalid_true",grammar:"aria_invalid_grammar",
-spelling:"aria_invalid_spelling"}},{name:"aria-multiline",values:{"true":"aria_multiline_true"}},{name:"aria-multiselectable",values:{"true":"aria_multiselectable_true"}},{name:"aria-pressed",values:{"true":"aria_pressed_true","false":"aria_pressed_false",mixed:"aria_pressed_mixed"}},{name:"aria-readonly",values:{"true":"aria_readonly_true"}},{name:"aria-required",values:{"true":"aria_required_true"}},{name:"aria-selected",values:{"true":"aria_selected_true","false":"aria_selected_false"}}];
-cvox.AriaUtil.isHiddenRecursive=function(a){if(cvox.AriaUtil.isHidden(a))return!0;for(a=a.parentElement;a;){if("true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return!0;a=a.parentElement}return!1};cvox.AriaUtil.isHidden=function(a){return!a||a.getAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")?!0:!1};
-cvox.AriaUtil.isForcedVisibleRecursive=function(a){for(;a;){if(a.getAttribute&&a.hasAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden"))return"false"==a.getAttribute("aria-hidden");a=a.parentElement}return!1};cvox.AriaUtil.isLeafElement=function(a){var b=a.getAttribute("role");a=a.hasAttribute("aria-label")&&0<a.getAttribute("aria-label").length;return"img"==b||"progressbar"==b||a};
-cvox.AriaUtil.isDescendantOfRole=function(a,b){for(;a;){if(b&&a&&a.getAttribute("role")==b)return!0;a=a.parentNode}return!1};cvox.AriaUtil.getRoleNameMsgForRole_=function(a){return(a=cvox.AriaUtil.WIDGET_ROLE_TO_NAME[a])?a==cvox.AriaUtil.NO_ROLE_NAME?" ":a:null};cvox.AriaUtil.isButton=function(a){var b=cvox.AriaUtil.getRoleAttribute(a);return"button"==b||"BUTTON"==a.tagName?!0:"INPUT"==a.tagName?"submit"==a.type||"reset"==a.type||"button"==a.type:!1};
-cvox.AriaUtil.getRoleNameMsg=function(a){var b;if(a&&a.getAttribute){var c=cvox.AriaUtil.getRoleAttribute(a);if("true"==a.getAttribute("aria-haspopup")&&cvox.AriaUtil.isButton(a))return"aria_role_popup_button";c&&((b=cvox.AriaUtil.getRoleNameMsgForRole_(c))||(b=cvox.AriaUtil.STRUCTURE_ROLE_TO_NAME[c]));if("menuitem"==c){for(a=a.parentElement;a&&(!a.getAttribute||"menu"!=cvox.AriaUtil.getRoleAttribute(a)&&"menubar"!=cvox.AriaUtil.getRoleAttribute(a));)a=a.parentElement;a&&"menubar"==cvox.AriaUtil.getRoleAttribute(a)&&
-(b=cvox.AriaUtil.getRoleNameMsgForRole_("menu"))}}b||(b="");return b};cvox.AriaUtil.getRoleName=function(a){var b=cvox.AriaUtil.getRoleNameMsg(a),b=cvox.ChromeVox.msgs.getMsg(b),c=cvox.AriaUtil.getRoleAttribute(a);"heading"==c&&a.hasAttribute("aria-level")&&(b+=" "+a.getAttribute("aria-level"));return b?b:""};
-cvox.AriaUtil.getStateMsgs=function(a,b){var c=[];if(!a||!a.getAttribute)return c;for(var d=0,e;e=cvox.AriaUtil.ATTRIBUTE_VALUE_TO_STATUS[d];d++){var f=a.getAttribute(e.name);(e=e.values[f])&&c.push([e])}if("grid"==a.getAttribute("role"))return cvox.AriaUtil.getGridState_(a,a);e=cvox.AriaUtil.getRoleAttribute(a);"true"==a.getAttribute("aria-haspopup")&&("menuitem"==e?c.push(["has_submenu"]):cvox.AriaUtil.isButton(a)||c.push(["has_popup"]));if(d=a.getAttribute("aria-valuetext"))return c.push([d]),
-c;var d=a.getAttribute("aria-valuenow"),f=a.getAttribute("aria-valuemin"),g=a.getAttribute("aria-valuemax");if(null!=d&&null!=f&&null!=g&&("scrollbar"==e||"progressbar"==e)){var h=Math.round(d/(g-f)*100);c.push(["state_percent",h]);return c}null!=d&&c.push(["aria_value_now",d]);null!=f&&c.push(["aria_value_min",f]);null!=g&&c.push(["aria_value_max",g]);f=a;d=null;if(cvox.AriaUtil.isCompositeControl(f)&&b)d=cvox.AriaUtil.getActiveDescendant(f);else if(e=cvox.AriaUtil.getRoleAttribute(a),"option"==
-e||"menuitem"==e||"menuitemcheckbox"==e||"menuitemradio"==e||"radio"==e||"tab"==e||"treeitem"==e)for(d=a,f=a.parentElement;f&&!cvox.AriaUtil.isCompositeControl(f)&&(!(f=f.parentElement)||"treeitem"!=cvox.AriaUtil.getRoleAttribute(f)););if(f&&(cvox.AriaUtil.isCompositeControl(f)||"treeitem"==cvox.AriaUtil.getRoleAttribute(f))&&d){e=cvox.AriaUtil.getRoleAttribute(f);var k;switch(e){case "combobox":case "listbox":k=["option"];break;case "menu":k=["menuitem","menuitemcheck","menuitemradio"];break;case "radiogroup":k=
-["radio"];break;case "tablist":k=["tab"];break;case "tree":case "treegrid":case "treeitem":k=["treeitem"]}if(k){var l;e=parseInt(d.getAttribute("aria-setsize"),10);isNaN(e)||(h=e);e=parseInt(d.getAttribute("aria-posinset"),10);isNaN(e)||(l=e);if(void 0==h||void 0==l)if(k=cvox.AriaUtil.getNextLevel(f,k),void 0==h&&(h=k.length),void 0==l)for(e=0;e<k.length;e++)k[e]==d&&(l=e+1);l&&h&&c.push(["list_position",l,h])}}return c};
-cvox.AriaUtil.getGridState_=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(b);if(c)for(var d='*[role~="row"]',d=b.querySelectorAll(d),e=0;e<d.length;e++)for(var f=d[e].querySelectorAll('*[role~="gridcell"]'),g=0;g<f.length;g++)if(f[g]==c)return[["aria_role_gridcell_pos",e+1,g+1]];return[]};cvox.AriaUtil.getActiveDescendantId_=function(a){return a.getAttribute?(a=a.getAttribute("aria-activedescendant"))?a:null:null};
-cvox.AriaUtil.getNextLevel=function(a,b){for(var c=[],d=a.childNodes,e=0;e<d.length;e++)if(!cvox.AriaUtil.isHidden(d[e])&&cvox.DomUtil.isVisible(d[e])){var f=cvox.AriaUtil.getNextLevelItems(d[e],b);0<f.length&&(c=c.concat(f))}return c};
-cvox.AriaUtil.getNextLevelItems=function(a,b){if(1!=a.nodeType)return[];if(-1!=b.indexOf(cvox.AriaUtil.getRoleAttribute(a)))return[a];var c=a.childNodes,d=c.length;if(0==d)return[];for(var e=[],f=0;f<d;f++){var g=cvox.AriaUtil.getNextLevelItems(c[f],b);0<g.length&&(e=e.concat(g))}return e};cvox.AriaUtil.getActiveDescendant=function(a){for(var b={},c=a;c;){var d=cvox.AriaUtil.getActiveDescendantId_(c);if(!d)break;if(d in b)return null;b[d]=!0;c=document.getElementById(d)}return c==a?null:c};
-cvox.AriaUtil.isControlWidget=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "button":case "checkbox":case "combobox":case "listbox":case "menu":case "menuitemcheckbox":case "menuitemradio":case "radio":case "slider":case "progressbar":case "scrollbar":case "spinbutton":case "tab":case "tablist":case "textbox":return!0}return!1};cvox.AriaUtil.isCompositeControl=function(a){if(a&&a.getAttribute)switch(a=cvox.AriaUtil.getRoleAttribute(a),a){case "combobox":case "grid":case "listbox":case "menu":case "menubar":case "radiogroup":case "tablist":case "tree":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getAriaLive=function(a){if(!a.hasAttribute)return null;var b=a.getAttribute("aria-live");if("off"==b)return null;if(b)return b;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "alert":return"assertive";case "log":case "status":return"polite";default:return null}};cvox.AriaUtil.getAriaAtomic=function(a){if(!a.hasAttribute)return!1;var b=a.getAttribute("aria-atomic");if(b)return"true"===b;a=cvox.AriaUtil.getRoleAttribute(a);return"alert"==a?!0:!1};
-cvox.AriaUtil.getAriaBusy=function(a){return a.hasAttribute?(a=a.getAttribute("aria-busy"))?"true"===a:!1:!1};cvox.AriaUtil.getAriaRelevant=function(a,b){if(!a.hasAttribute)return!1;var c;c=a.hasAttribute("aria-relevant")?a.getAttribute("aria-relevant"):"additions text";"all"==c&&(c="additions removals text");c=c.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"").split(" ");return"all"==b?0<=c.indexOf("additions")&&0<=c.indexOf("text")&&0<=c.indexOf("removals"):0<=c.indexOf(b)};
-cvox.AriaUtil.getLiveRegions=function(a){var b=[];if(a.querySelectorAll){var c=a.querySelectorAll('[role="alert"], [role="log"], [role="marquee"], [role="status"], [role="timer"], [aria-live]');if(c)for(var d=0;d<c.length;d++)b.push(c[d])}for(;a;){if(cvox.AriaUtil.getAriaLive(a)){b.push(a);break}a=a.parentElement}return b};cvox.AriaUtil.isLandmark=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "application":case "banner":case "complementary":case "contentinfo":case "form":case "main":case "navigation":case "search":return!0}return!1};
-cvox.AriaUtil.isGrid=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);switch(a){case "grid":case "treegrid":return!0}return!1};
-cvox.AriaUtil.getEarcon=function(a){if(!a||!a.getAttribute)return null;var b=cvox.AriaUtil.getRoleAttribute(a);switch(b){case "button":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":case "menuitemcheckbox":case "menuitemradio":return a=a.getAttribute("aria-checked"),"true"==a?cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;case "combobox":case "listbox":return cvox.AbstractEarcons.LISTBOX;case "textbox":return cvox.AbstractEarcons.EDITABLE_TEXT;case "listitem":return cvox.AbstractEarcons.BULLET;
-case "link":return cvox.AbstractEarcons.LINK}return null};cvox.AriaUtil.getRoleAttribute=function(a){if(!a.getAttribute)return"";var b=a.getAttribute("role");a.hasAttribute("chromevoxoriginalrole")&&(b=a.getAttribute("chromevoxoriginalrole"));return b};cvox.AriaUtil.isMath=function(a){if(!a||!a.getAttribute)return!1;a=cvox.AriaUtil.getRoleAttribute(a);return"math"==a};cvox.DomPredicates={};cvox.DomPredicates.checkboxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"checkbox"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"checkbox"==a[b].type)return a[b];return null};cvox.DomPredicates.radioPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"radio"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"radio"==a[b].type)return a[b];return null};
-cvox.DomPredicates.sliderPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"slider"==a[b].getAttribute("role")||"INPUT"==a[b].tagName&&"range"==a[b].type)return a[b];return null};cvox.DomPredicates.graphicPredicate=function(a){for(var b=0;b<a.length;b++)if("IMG"==a[b].tagName||"INPUT"==a[b].tagName&&"img"==a[b].type)return a[b];return null};
-cvox.DomPredicates.buttonPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"button"==a[b].getAttribute("role")||"BUTTON"==a[b].tagName||"INPUT"==a[b].tagName&&"submit"==a[b].type||"INPUT"==a[b].tagName&&"button"==a[b].type||"INPUT"==a[b].tagName&&"reset"==a[b].type)return a[b];return null};cvox.DomPredicates.comboBoxPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"combobox"==a[b].getAttribute("role")||"SELECT"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.editTextPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"textbox"==a[b].getAttribute("role")||"TEXTAREA"==a[b].tagName||a[b].isContentEditable||"INPUT"==a[b].tagName&&cvox.DomUtil.isInputTypeText(a[b]))return a[b];return null};cvox.DomPredicates.headingPredicate=function(a){for(var b=0;b<a.length;b++){if(a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.heading1Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H1")};cvox.DomPredicates.heading2Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H2")};cvox.DomPredicates.heading3Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H3")};cvox.DomPredicates.heading4Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H4")};cvox.DomPredicates.heading5Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H5")};
-cvox.DomPredicates.heading6Predicate=function(a){return cvox.DomPredicates.containsTagName_(a,"H6")};cvox.DomPredicates.linkPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.tablePredicate=function(a){return(a=cvox.DomUtil.findTableNodeInList(a,{allowCaptions:!0}))&&!cvox.DomUtil.isLayoutTable(a)?a:null};
-cvox.DomPredicates.cellPredicate=function(a){for(var b=a.length-1;0<=b;--b){var c=a[b];if("TD"==c.tagName||"TH"==c.tagName||c.getAttribute&&"gridcell"==c.getAttribute("role"))return c}return null};cvox.DomPredicates.visitedLinkPredicate=function(a){for(var b=a.length-1;0<=b;--b)if(cvox.DomPredicates.linkPredicate([a[b]])&&cvox.ChromeVox.visitedUrls[a[b].href])return a[b]};
-cvox.DomPredicates.listPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"list"==a[b].getAttribute("role")||"UL"==a[b].tagName||"OL"==a[b].tagName)return a[b];return null};cvox.DomPredicates.listItemPredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"listitem"==a[b].getAttribute("role")||"LI"==a[b].tagName)return a[b];return null};cvox.DomPredicates.blockquotePredicate=function(a){return cvox.DomPredicates.containsTagName_(a,"BLOCKQUOTE")};
-cvox.DomPredicates.formFieldPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b]))return a[b];return null};cvox.DomPredicates.landmarkPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.AriaUtil.isLandmark(a[b]))return a[b];return null};cvox.DomPredicates.containsTagName_=function(a,b){for(var c=a.length;c--;)if(a[c].tagName==b)return a[c];return null};cvox.DomPredicates.mathPredicate=function(a){return cvox.DomUtil.findMathNodeInList(a)};
-cvox.DomPredicates.sectionPredicate=function(a){for(var b=0;b<a.length;b++){if(cvox.DomUtil.isSemanticElt(a[b])||cvox.AriaUtil.isLandmark(a[b])||a[b].getAttribute&&"heading"==a[b].getAttribute("role"))return a[b];switch(a[b].tagName){case "H1":case "H2":case "H3":case "H4":case "H5":case "H6":return a[b]}}return null};
-cvox.DomPredicates.controlPredicate=function(a){for(var b=0;b<a.length;b++)if(cvox.DomUtil.isControl(a[b])||a[b].getAttribute&&"link"==a[b].getAttribute("role")||"A"==a[b].tagName&&a[b].href)return a[b];return null};cvox.DomPredicates.captionPredicate=function(a){for(var b=0;b<a.length;b++)if("CAPTION"==a[b].tagName)return a[b];return null};
-cvox.DomPredicates.articlePredicate=function(a){for(var b=0;b<a.length;b++)if(a[b].getAttribute&&"article"==a[b].getAttribute("role")||"ARTICLE"==a[b].tagName)return a[b];return null};cvox.DomPredicates.mediaPredicate=function(a){for(var b=0;b<a.length;b++)if("AUDIO"==a[b].tagName||"VIDEO"==a[b].tagName)return a[b];return null};cvox.DomPredicates.orderedListPredicate=function(a){for(var b=0;b<a.length;b++)if("OL"==a[b].tagName)return a[b];return null};cvox.XpathUtil=function(){};cvox.XpathUtil.nameSpaces_={xhtml:"http://www.w3.org/1999/xhtml",mathml:"http://www.w3.org/1998/Math/MathML"};cvox.XpathUtil.resolveNameSpace=function(a){return cvox.XpathUtil.nameSpaces_[a]||null};cvox.XpathUtil.evalXPath=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(d){return[]}for(var e=[],f=c.iterateNext();f;f=c.iterateNext())e.push(f);return e};
-cvox.XpathUtil.getLeafNodes=function(a){try{var b=a.ownerDocument.evaluate(".//*[count(*)=0]",a,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null)}catch(c){return[]}a=[];for(var d=b.iterateNext();d;d=b.iterateNext())a.push(d);return a};cvox.XpathUtil.xpathSupported=function(){return"undefined"==typeof XPathResult?!1:!0};cvox.XpathUtil.evaluateBoolean=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.BOOLEAN_TYPE,null)}catch(d){return!1}return c.booleanValue};
-cvox.XpathUtil.evaluateString=function(a,b){try{var c=b.ownerDocument.evaluate(a,b,cvox.XpathUtil.resolveNameSpace,XPathResult.STRING_TYPE,null)}catch(d){return""}return c.stringValue};cvox.DomUtil=function(){};
-cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG={button:"input_type_button",checkbox:"input_type_checkbox",color:"input_type_color",datetime:"input_type_datetime","datetime-local":"input_type_datetime_local",date:"input_type_date",email:"input_type_email",file:"input_type_file",image:"input_type_image",month:"input_type_month",number:"input_type_number",password:"input_type_password",radio:"input_type_radio",range:"input_type_range",reset:"input_type_reset",search:"input_type_search",submit:"input_type_submit",
-tel:"input_type_tel",text:"input_type_text",url:"input_type_url",week:"input_type_week"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG={A:"tag_link",ARTICLE:"tag_article",ASIDE:"tag_aside",AUDIO:"tag_audio",BUTTON:"tag_button",FOOTER:"tag_footer",H1:"tag_h1",H2:"tag_h2",H3:"tag_h3",H4:"tag_h4",H5:"tag_h5",H6:"tag_h6",HEADER:"tag_header",HGROUP:"tag_hgroup",LI:"tag_li",MARK:"tag_mark",NAV:"tag_nav",OL:"tag_ol",SECTION:"tag_section",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",TIME:"tag_time",UL:"tag_ul",VIDEO:"tag_video"};
-cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG={AUDIO:"tag_audio",BUTTON:"tag_button",SELECT:"tag_select",TABLE:"tag_table",TEXTAREA:"tag_textarea",VIDEO:"tag_video"};cvox.DomUtil.FORMATTING_TAGS="B BIG CITE CODE DFN EM I KBD SAMP SMALL SPAN STRIKE STRONG SUB SUP U VAR".split(" ");
-cvox.DomUtil.isVisible=function(a,b){b=b||{};"undefined"===typeof b.checkAncestors&&(b.checkAncestors=!0);"undefined"===typeof b.checkDescendants&&(b.checkDescendants=!0);if("IFRAME"==a.tagName&&!a.src)return!1;if(cvox.AriaUtil.isForcedVisibleRecursive(a))return!0;if(b.checkAncestors&&cvox.DomUtil.hasInvisibleAncestor_(a))return!1;var c=b.checkDescendants;return cvox.DomUtil.hasVisibleNodeSubtree_(a,c)?!0:!1};
-cvox.DomUtil.hasInvisibleAncestor_=function(a){for(;a=a.parentElement;){var b=document.defaultView.getComputedStyle(a,null);if(cvox.DomUtil.isInvisibleStyle(b,!0))return!0}return!1};
-cvox.DomUtil.hasVisibleNodeSubtree_=function(a,b){if(!(a instanceof Element)){var c=document.defaultView.getComputedStyle(a.parentElement,null);return c=!cvox.DomUtil.isInvisibleStyle(c)}var c=document.defaultView.getComputedStyle(a,null),d=!cvox.DomUtil.isInvisibleStyle(c);if(d)return!0;c=cvox.DomUtil.isInvisibleStyle(c,!0);if(!b||c)return!1;c=a.childNodes;for(d=0;d<c.length;d++){var e=c[d];if(cvox.DomUtil.hasVisibleNodeSubtree_(e,b))return!0}return!1};
-cvox.DomUtil.isInvisibleStyle=function(a,b){return a?"none"!=a.display&&0!=parseFloat(a.opacity)&&(b||"hidden"!=a.visibility&&"collapse"!=a.visibility)?!1:!0:!1};cvox.DomUtil.isDisabled=function(a){if(a.disabled)return!0;for(;a=a.parentElement;)if("FIELDSET"==a.tagName&&a.disabled)return!0;return!1};cvox.DomUtil.isSemanticElt=function(a){return a.tagName&&(a=a.tagName,"SECTION"==a||"NAV"==a||"ARTICLE"==a||"ASIDE"==a||"HGROUP"==a||"HEADER"==a||"FOOTER"==a||"TIME"==a||"MARK"==a)?!0:!1};
-cvox.DomUtil.isLeafNode=function(a,b){if(!(a instanceof Element))return null==a.firstChild;var c=a;if(!b&&!cvox.DomUtil.isVisible(c,{checkAncestors:!1})||!b&&cvox.AriaUtil.isHidden(c)||cvox.AriaUtil.isLeafElement(c))return!0;switch(c.tagName){case "OBJECT":case "EMBED":case "VIDEO":case "AUDIO":case "IFRAME":case "FRAME":return!0}return cvox.DomPredicates.linkPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.headingPredicate([a])}):cvox.DomUtil.isLeafLevelControl(c)||
-!c.firstChild||cvox.DomUtil.isMath(c)?!0:cvox.DomPredicates.headingPredicate([c])?!cvox.DomUtil.findNode(c,function(a){return!!cvox.DomPredicates.controlPredicate([a])}):!1};cvox.DomUtil.isDescendantOf=function(a,b,c){for(;a;){if(b&&c&&a.tagName&&a.tagName==b&&a.className&&a.className==c||b&&!c&&a.tagName&&a.tagName==b||!b&&c&&a.className&&a.className==c)return!0;a=a.parentNode}return!1};cvox.DomUtil.isDescendantOfNode=function(a,b){for(;a&&b;){if(a.isSameNode(b))return!0;a=a.parentNode}return!1};
-cvox.DomUtil.collapseWhitespace=function(a){return a.replace(/\s+/g," ").replace(/^\s+|\s+$/g,"")};
-cvox.DomUtil.getBaseLabel_=function(a,b,c){var d="";if(a.hasAttribute){if(a.hasAttribute("aria-labelledby"))for(var e=a.getAttribute("aria-labelledby").split(" "),f,g=0;f=e[g];g++)(f=document.getElementById(f))&&(d+=" "+cvox.DomUtil.getName(f,!0,c,!0));else if(a.hasAttribute("aria-label"))d=a.getAttribute("aria-label");else if(a.constructor==HTMLImageElement)d=cvox.DomUtil.getImageTitle(a);else if("FIELDSET"==a.tagName)for(e=a.getElementsByTagName("LEGEND"),d="",g=0;f=e[g];g++)d+=" "+cvox.DomUtil.getName(f,
-!0,c);0==d.length&&a&&a.id&&(a=document.querySelector('label[for="'+a.id+'"]'))&&(d=cvox.DomUtil.getName(a,b,c))}return cvox.DomUtil.collapseWhitespace(d)};cvox.DomUtil.getNearestAncestorLabel_=function(a){for(var b="";a&&"LABEL"!=a.tagName;)a=a.parentElement;a&&!a.hasAttribute("for")&&(b=cvox.DomUtil.getName(a,!0,!1));return b};
-cvox.DomUtil.getInputName_=function(a){var b="";"image"==a.type?b=cvox.DomUtil.getImageTitle(a):"submit"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Submit":"reset"==a.type?b=a.hasAttribute("value")?a.getAttribute("value"):"Reset":"button"==a.type&&a.hasAttribute("value")&&(b=a.getAttribute("value"));return b};
-cvox.DomUtil.getName=function(a,b,c,d){if(!a||!0==a.cvoxGetNameMarked)return"";a.cvoxGetNameMarked=!0;b=cvox.DomUtil.getName_(a,b,c,d);a.cvoxGetNameMarked=!1;a=cvox.DomUtil.getPrefixText(a);return a+b};cvox.DomUtil.hasChildrenBasedName_=function(a,b){return cvox.DomPredicates.linkPredicate([a])||cvox.DomPredicates.headingPredicate([a])||"BUTTON"==a.tagName||cvox.AriaUtil.isControlWidget(a)||!cvox.DomUtil.isLeafNode(a,b)?!0:!1};
-cvox.DomUtil.getName_=function(a,b,c,d){"undefined"===typeof b&&(b=!0);"undefined"===typeof c&&(c=!0);if(a.constructor==Text)return a.data;var e=cvox.DomUtil.getBaseLabel_(a,b,c);0==e.length&&cvox.DomUtil.isControl(a)&&(e=cvox.DomUtil.getNearestAncestorLabel_(a));0==e.length&&a.constructor==HTMLInputElement&&(e=cvox.DomUtil.getInputName_(a));return cvox.DomUtil.isInputTypeText(a)&&a.hasAttribute("placeholder")?(b=a.getAttribute("placeholder"),0<e.length?0<cvox.DomUtil.getValue(a).length?e:e+" with hint "+
-b:b):0<e.length?e:0==cvox.DomUtil.collapseWhitespace(a.textContent).length&&a.hasAttribute&&a.hasAttribute("title")?a.getAttribute("title"):!b||cvox.AriaUtil.isCompositeControl(a)?"":cvox.DomUtil.hasChildrenBasedName_(a,d)?cvox.DomUtil.getNameFromChildren(a,c,d):""};
-cvox.DomUtil.getNameFromChildren=function(a,b,c){void 0==b&&(b=!0);for(var d="",e="",f=0;f<a.childNodes.length;f++){var g=a.childNodes[f],e=a.childNodes[f-1]||g;if(b||!cvox.DomUtil.isControl(g)){var h=cvox.DomUtil.isVisible(g,{checkAncestors:!1});if(c||h&&!cvox.AriaUtil.isHidden(g))e="SPAN"==e.tagName||"SPAN"==g.tagName||"SPAN"==g.parentNode.tagName?"":" ",d+=e+cvox.DomUtil.getName(g,!0,b)}}return d};
-cvox.DomUtil.getPrefixText=function(a,b){b=b||0;for(var c=cvox.DomUtil.getAncestors(a),d="",e=c=cvox.DomPredicates.listItemPredicate(c);e&&e.firstChild;)e=e.firstChild;c&&c.parentNode&&0==b&&"OL"==c.parentNode.tagName&&a==e&&"none"!=document.defaultView.getComputedStyle(c.parentNode).listStyleType&&(d=cvox.DomUtil.toArray(c.parentNode.children).filter(function(a){return"LI"==a.tagName}),d=d.indexOf(c)+1,-1!=document.defaultView.getComputedStyle(c.parentNode).listStyleType.indexOf("latin")&&(d--,d=
-String.fromCharCode(65+d%26)),d+=". ");return d};
-cvox.DomUtil.getControlLabelHeuristics=function(a){if(a.hasAttribute&&(a.hasAttribute("aria-label")&&""==a.getAttribute("aria-label")||a.hasAttribute("aria-title")&&""==a.getAttribute("aria-title")))return"";for(var b=cvox.DomUtil.previousLeafNode(a),c=0;b&&(!cvox.DomUtil.hasContent(b)||cvox.DomUtil.isControl(b));)b=cvox.DomUtil.previousLeafNode(b),c++;for(var c=cvox.DomUtil.directedNextLeafNode(a),d=0;c&&(!cvox.DomUtil.hasContent(c)||cvox.DomUtil.isControl(c));)c=cvox.DomUtil.directedNextLeafNode(c),
-d++;if(b&&c){for(var d=a,e=0;d&&!cvox.DomUtil.isDescendantOfNode(b,d);)d=d.parentNode,e++;d=a;for(a=0;d&&!cvox.DomUtil.isDescendantOfNode(c,d);)d=d.parentNode,a++;b=a<e?c:b}else b=b||c;return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b)):""};
-cvox.DomUtil.getValue=function(a){var b=cvox.AriaUtil.getActiveDescendant(a);if(b)return cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(b)+" "+cvox.DomUtil.getName(b));if(a.constructor==HTMLSelectElement){var b="",c=a.selectedOptions?a.selectedOptions[0]:null;a=a.selectedOptions?a.selectedOptions[a.selectedOptions.length-1]:null;c&&a&&c!=a?b=cvox.ChromeVox.msgs.getMsg("selected_options_value",[c.text,a.text]):c&&(b=c.text+"");return b}if(a.constructor==HTMLTextAreaElement)return a.value;if(a.constructor==
-HTMLInputElement)switch(a.type){case "hidden":case "image":case "submit":case "reset":case "button":case "checkbox":case "radio":return"";case "password":return a.value.replace(/./g,"dot ");default:return a.value}return a.isContentEditable?cvox.DomUtil.getNameFromChildren(a,!0):""};
-cvox.DomUtil.getImageTitle=function(a){a.hasAttribute("alt")?a=a.alt:a.hasAttribute("title")?a=a.title:(a=a.src,"data"!=a.substring(0,4)?(a=a.substring(a.lastIndexOf("/")+1,a.lastIndexOf(".")),a=1<=a.length&&16>=a.length?a+" Image":"Image"):a="Image");return a};
-cvox.DomUtil.hasContent=function(a){if(8==a.nodeType||cvox.DomUtil.isDescendantOf(a,"HEAD")||cvox.DomUtil.isDescendantOf(a,"SCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOSCRIPT")||cvox.DomUtil.isDescendantOf(a,"NOEMBED")||cvox.DomUtil.isDescendantOf(a,"STYLE")||!cvox.DomUtil.isVisible(a)||cvox.AriaUtil.isHidden(a))return!1;if(cvox.DomUtil.isControl(a)||cvox.DomUtil.isDescendantOf(a,"VIDEO")||cvox.DomUtil.isDescendantOf(a,"AUDIO")||"IFRAME"==a.tagName&&a.src&&0!=a.src.indexOf("javascript:"))return!0;
-for(var b="button,input,select,textarea",c=a.parentElement;c&&"LABEL"!=c.tagName;)c=c.parentElement;if(c){var d=c.querySelector(b);if(c.hasAttribute("for")){if(c=c.getAttribute("for"),(c=document.getElementById(c))&&cvox.DomUtil.isControl(c)&&!d)return!1}else if(d)return!1}for(d=a.parentElement;d&&"LEGEND"!=d.tagName;)d=d.parentElement;if(d){for(c=d.parentElement;c&&"FIELDSET"!=c.tagName;)c=c.parentElement;d=c&&c.querySelector(b);if(c&&!d)return!1}if(cvox.DomPredicates.linkPredicate([a])||"TABLE"==
-a.tagName||cvox.DomUtil.isMath(a)||cvox.DomPredicates.headingPredicate([a]))return!0;b=cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a);a=cvox.DomUtil.getState(a,!0);return b.match(/^\s+$/)&&""===a?!1:!0};cvox.DomUtil.getAncestors=function(a){for(var b=[];a;)b.push(a),a=a.parentNode;for(b.reverse();b.length&&!b[0].tagName&&!b[0].nodeValue;)b.shift();return b};cvox.DomUtil.compareAncestors=function(a,b){for(var c=0;a[c]&&b[c]&&a[c]==b[c];)c++;a[c]||b[c]||(c=-1);return c};
-cvox.DomUtil.getUniqueAncestors=function(a,b,c){a=cvox.DomUtil.getAncestors(a);b=cvox.DomUtil.getAncestors(b);a=cvox.DomUtil.compareAncestors(a,b);a=b.slice(a);return 0==a.length&&c?b:a};
-cvox.DomUtil.getRoleMsg=function(a,b){var c;c=cvox.AriaUtil.getRoleNameMsg(a);c||("INPUT"==a.tagName?c=cvox.DomUtil.INPUT_TYPE_TO_INFORMATION_TABLE_MSG[a.type]:"A"==a.tagName&&cvox.DomUtil.isInternalLink(a)?c="internal_link":"A"==a.tagName&&a.getAttribute("name")?c="":a.isContentEditable?c="input_type_text":cvox.DomUtil.isMath(a)?c="math_expr":"TABLE"==a.tagName&&cvox.DomUtil.isLayoutTable(a)?c="":b==cvox.VERBOSITY_BRIEF?c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_BRIEF_MSG[a.tagName]:(c=cvox.DomUtil.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG[a.tagName],
-cvox.DomUtil.hasLongDesc(a)&&(c="image_with_long_desc"),!c&&a.onclick&&(c="clickable")));return c};cvox.DomUtil.getRole=function(a,b){var c=cvox.DomUtil.getRoleMsg(a,b)||"",d=c&&" "!=c?cvox.ChromeVox.msgs.getMsg(c):"";return d?d:c};cvox.DomUtil.getListLength=function(a){var b=0;for(a=a.firstChild;a;a=a.nextSibling)if("LI"==a.tagName||a.getAttribute&&"listitem"==a.getAttribute("role")){if(a.hasAttribute("aria-setsize")){var c=parseInt(a.getAttribute("aria-setsize"),10);if(!isNaN(c))return c}b++}return b};
-cvox.DomUtil.getStateMsgs=function(a,b){var c=cvox.AriaUtil.getActiveDescendant(a);if(c)return cvox.DomUtil.getStateMsgs(c,b);var c=[],d=a.getAttribute?a.getAttribute("role"):"";(c=cvox.AriaUtil.getStateMsgs(a,b))||(c=[]);"INPUT"==a.tagName?a.hasAttribute("aria-checked")||(d={"checkbox-true":"checkbox_checked_state","checkbox-false":"checkbox_unchecked_state","radio-true":"radio_selected_state","radio-false":"radio_unselected_state"},(d=d[a.type+"-"+!!a.checked])&&c.push([d])):"SELECT"==a.tagName?
-a.selectedOptions&&1>=a.selectedOptions.length?c.push(["list_position",cvox.ChromeVox.msgs.getNumber(a.selectedIndex+1),cvox.ChromeVox.msgs.getNumber(a.options.length)]):c.push(["selected_options_state",cvox.ChromeVox.msgs.getNumber(a.selectedOptions.length)]):"UL"!=a.tagName&&"OL"!=a.tagName&&"list"!=d||c.push(["list_with_items",cvox.ChromeVox.msgs.getNumber(cvox.DomUtil.getListLength(a))]);cvox.DomUtil.isDisabled(a)&&c.push(["aria_disabled_true"]);cvox.DomPredicates.linkPredicate([a])&&cvox.ChromeVox.visitedUrls[a.href]&&
-c.push(["visited_url"]);a.accessKey&&c.push(["access_key",a.accessKey]);return c};cvox.DomUtil.getState=function(a,b){return cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,b))};cvox.DomUtil.isFocusable=function(a){return a&&"number"==typeof a.tabIndex&&("A"!=a.tagName||a.hasAttribute("href")||a.hasAttribute("tabindex"))?0<=a.tabIndex||a.hasAttribute&&a.hasAttribute("tabindex")&&"-1"==a.getAttribute("tabindex")?!0:!1:!1};
-cvox.DomUtil.findFocusableDescendant=function(a){return a&&(a=cvox.DomUtil.findNode(a,cvox.DomUtil.isFocusable))?a:null};cvox.DomUtil.countFocusableDescendants=function(a){return a?cvox.DomUtil.countNodes(a,cvox.DomUtil.isFocusable):0};cvox.DomUtil.isAttachedToDocument=function(a){for(;a;){if(a.tagName&&"HTML"==a.tagName)return!0;a=a.parentNode}return!1};
-cvox.DomUtil.clickElem=function(a,b,c,d){var e=cvox.AriaUtil.getActiveDescendant(a);e&&(a=e);if(c){c=null;a.onclick&&(c=a.onclick);!c&&1!=a.nodeType&&a.parentNode&&a.parentNode.onclick&&(c=a.parentNode.onclick);e=!0;if(c)try{e=c()}catch(f){}if(!e)return}c=document.createEvent("MouseEvents");d=d?"dblclick":"mousedown";c.initMouseEvent(d,!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(g){}c=document.createEvent("MouseEvents");c.initMouseEvent("mouseup",
-!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(h){}c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,document.defaultView,1,0,0,0,0,!1,!1,b,!1,0,null);c.fromCvox=!0;try{a.dispatchEvent(c)}catch(k){}cvox.DomUtil.isInternalLink(a)&&cvox.DomUtil.syncInternalLink(a)};
-cvox.DomUtil.syncInternalLink=function(a){var b=a.href.split("#")[1];a=document.getElementById(b);a||(b=document.getElementsByName(b),0<b.length&&(a=b[0]));if(a){var b=a.parentNode,c=document.createElement("div");c.setAttribute("tabindex","-1");b.insertBefore(c,a);c.setAttribute("chromevoxignoreariahidden",1);c.focus();cvox.ChromeVox.syncToNode(a,!0)}};
-cvox.DomUtil.isInputTypeText=function(a){if(!a||a.constructor!=HTMLInputElement)return!1;switch(a.type){case "email":case "number":case "password":case "search":case "text":case "tel":case "url":case "":return!0;default:return!1}};cvox.DomUtil.isControl=function(a){if(cvox.AriaUtil.isControlWidget(a)&&cvox.DomUtil.isFocusable(a))return!0;if(a.tagName)switch(a.tagName){case "BUTTON":case "TEXTAREA":case "SELECT":return!0;case "INPUT":return"hidden"!=a.type}return a.isContentEditable?!0:!1};
-cvox.DomUtil.isLeafLevelControl=function(a){return cvox.DomUtil.isControl(a)?!(cvox.AriaUtil.isCompositeControl(a)&&cvox.DomUtil.findFocusableDescendant(a)):!1};cvox.DomUtil.getSurroundingControl=function(a){var b=null;if(!cvox.DomUtil.isControl(a)&&a.hasAttribute&&a.hasAttribute("role"))for(b=a.parentElement;b&&!cvox.AriaUtil.isCompositeControl(b);)b=b.parentElement;return b};
-cvox.DomUtil.directedNextLeafLikeNode=function(a,b,c){if(a!=document.body){for(;!cvox.DomUtil.directedNextSibling(a,b);){if(!a)return null;a=a.parentNode;if(a==document.body)return null}cvox.DomUtil.directedNextSibling(a,b)&&(a=cvox.DomUtil.directedNextSibling(a,b))}for(;cvox.DomUtil.directedFirstChild(a,b)&&!c(a);)a=cvox.DomUtil.directedFirstChild(a,b);return a==document.body?null:a};cvox.DomUtil.directedNextLeafNode=function(a,b){b=!!b;return cvox.DomUtil.directedNextLeafLikeNode(a,b,cvox.DomUtil.isLeafNode)};
-cvox.DomUtil.previousLeafNode=function(a){return cvox.DomUtil.directedNextLeafNode(a,!0)};cvox.DomUtil.directedFindFirstNode=function(a,b,c){for(a=cvox.DomUtil.directedFirstChild(a,b);a;){if(c(a))return a;var d=cvox.DomUtil.directedFindFirstNode(a,b,c);if(d)return d;a=cvox.DomUtil.directedNextSibling(a,b)}return null};cvox.DomUtil.directedFindDeepestNode=function(a,b,c){var d=cvox.DomUtil.directedFindFirstNode(a,b,c);return d?cvox.DomUtil.directedFindDeepestNode(d,b,c):c(a)?a:null};
-cvox.DomUtil.directedFindNextNode=function(a,b,c,d,e,f){e=!!e;f=!!f;if(!cvox.DomUtil.isDescendantOfNode(a,b)||a==b)return null;for(var g=cvox.DomUtil.directedNextSibling(a,c);g;){if(!f&&d(g))return g;var h=(f?cvox.DomUtil.directedFindDeepestNode:cvox.DomUtil.directedFindFirstNode)(g,c,d);if(h)return h;if(f&&d(g))return g;g=cvox.DomUtil.directedNextSibling(g,c)}a=a.parentNode;return e&&d(a)?a:cvox.DomUtil.directedFindNextNode(a,b,c,d,e,f)};
-cvox.DomUtil.getControlValueAndStateString=function(a){var b=cvox.DomUtil.getSurroundingControl(a);return b?cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a)+" "+cvox.DomUtil.getState(a,!0)):cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getState(a,!0))};cvox.DomUtil.isInternalLink=function(a){return 1==a.nodeType&&(a=a.getAttribute("href"))&&-1!=a.indexOf("#")?(a=a.split("#")[0],""==a||a==window.location.pathname):!1};
-cvox.DomUtil.getLinkURL=function(a){if("A"==a.tagName){if(a.getAttribute("href"))return cvox.DomUtil.isInternalLink(a)?cvox.ChromeVox.msgs.getMsg("internal_link"):a.getAttribute("href")}else if(cvox.AriaUtil.getRoleName(a)==cvox.ChromeVox.msgs.getMsg("aria_role_link"))return cvox.ChromeVox.msgs.getMsg("unknown_link");return""};cvox.DomUtil.getContainingTable=function(a,b){var c=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findTableNodeInList(c,b)};
-cvox.DomUtil.findTableNodeInList=function(a,b){b=b||{allowCaptions:!1};for(var c=a.length-1,d;d=a[c];c--)if(d.constructor!=Text){if(!b.allowCaptions&&"CAPTION"==d.tagName)break;if("TABLE"==d.tagName||cvox.AriaUtil.isGrid(d))return d}return null};
-cvox.DomUtil.isLayoutTable=function(a){if(a.rows&&(1==a.rows.length||1==a.rows[0].childElementCount))return!0;if(cvox.AriaUtil.isGrid(a)||cvox.AriaUtil.isLandmark(a)||a.caption||a.summary||0<cvox.XpathUtil.evalXPath("tbody/tr/th",a).length&&0<cvox.XpathUtil.evalXPath("tbody/tr/td",a).length||0<cvox.XpathUtil.evalXPath("colgroup",a).length||0<cvox.XpathUtil.evalXPath("thead",a).length||0<cvox.XpathUtil.evalXPath("tfoot",a).length)return!1;if(0<cvox.XpathUtil.evalXPath("tbody/tr/td/embed",a).length||
-0<cvox.XpathUtil.evalXPath("tbody/tr/td/object",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/iframe",a).length||0<cvox.XpathUtil.evalXPath("tbody/tr/td/applet",a).length)return!0;var b=0;cvox.DomUtil.hasBorder(a)||b++;6>=a.rows.length&&b++;12>=cvox.DomUtil.countPreviousTags(a)&&b++;0<cvox.XpathUtil.evalXPath("tbody/tr/td/table",a).length&&b++;return 3<=b};cvox.DomUtil.countPreviousTags=function(a){var b=cvox.DomUtil.getAncestors(a);return b.length+cvox.DomUtil.countPreviousSiblings(a)};
-cvox.DomUtil.countPreviousSiblings=function(a){var b=0;for(a=a.previousSibling;null!=a;)a.constructor!=Text&&b++,a=a.previousSibling;return b};cvox.DomUtil.hasBorder=function(a){return a.frame?-1==a.frame.indexOf("void"):a.border?1==a.border.length?"0"!=a.border:0!=a.border.slice(0,-2):a.style.borderStyle&&"none"==a.style.borderStyle?!1:a.style.borderWidth?0!=a.style.borderWidth.slice(0,-2):a.style.borderColor?!0:!1};
-cvox.DomUtil.getFirstLeafNode=function(){for(var a=document.body;a&&a.firstChild;)a=a.firstChild;for(;a&&!cvox.DomUtil.hasContent(a);)a=cvox.DomUtil.directedNextLeafNode(a);return a};cvox.DomUtil.findNode=function(a,b){var c=[],d=cvox.DomUtil.findNodes_(a,b,c,!0,1E4);return d?c[0]:void 0};cvox.DomUtil.countNodes=function(a,b){var c=[];cvox.DomUtil.findNodes_(a,b,c,!1,1E4);return c.length};
-cvox.DomUtil.findNodes_=function(a,b,c,d,e){if(null!=a||0==e)for(a=a.firstChild;a;){if(b(a)&&(c.push(a),d))return!0;e-=1;if(cvox.DomUtil.findNodes_(a,b,c,d,e))return!0;a=a.nextSibling}return!1};cvox.DomUtil.toArray=function(a){for(var b=[],c=0;c<a.length;c++)b.push(a[c]);return b};
-cvox.DomUtil.shallowChildlessClone=function(a,b){if("#text"==a.nodeName)return document.createTextNode(a.nodeValue);if("#comment"==a.nodeName)return document.createComment(a.nodeValue);for(var c=document.createElement(a.nodeName),d=0;d<a.attributes.length;++d){var e=a.attributes[d];b&&b[e.nodeName]||c.setAttribute(e.nodeName,e.nodeValue)}return c};
-cvox.DomUtil.deepClone=function(a,b){for(var c=cvox.DomUtil.shallowChildlessClone(a,b),d=0;d<a.childNodes.length;++d)c.appendChild(cvox.DomUtil.deepClone(a.childNodes[d],b));return c};cvox.DomUtil.directedFirstChild=function(a,b){return b?a.lastChild:a.firstChild};cvox.DomUtil.directedNextSibling=function(a,b){return a?b?a.previousSibling:a.nextSibling:null};cvox.DomUtil.createSimpleClickFunction=function(a){var b=a.cloneNode(!0);return function(){cvox.DomUtil.clickElem(b,!1,!1)}};
-cvox.DomUtil.addNodeToHead=function(a,b){if(!b||!document.getElementById(b)){var c=document.head||document.body;c.appendChild(a)}};cvox.DomUtil.getContainingMath=function(a){a=cvox.DomUtil.getAncestors(a);return cvox.DomUtil.findMathNodeInList(a)};cvox.DomUtil.findMathNodeInList=function(a){for(var b=0,c;c=a[b];b++)if(cvox.DomUtil.isMath(c))return c;return null};cvox.DomUtil.isMath=function(a){return cvox.DomUtil.isMathml(a)||cvox.DomUtil.isMathJax(a)||cvox.DomUtil.isMathImg(a)||cvox.AriaUtil.isMath(a)};
-cvox.DomUtil.ALT_MATH_CLASSES={tex:["tex","latex"],asciimath:["numberedequation","inlineformula","displayformula"]};cvox.DomUtil.altMathQuerySelector=function(a){return(a=cvox.DomUtil.ALT_MATH_CLASSES[a])?a.map(function(a){return"img."+a}).join(", "):""};cvox.DomUtil.isMathImg=function(a){if(!a||!a.tagName||!a.className||"IMG"!=a.tagName)return!1;a=a.className.toLowerCase();return-1!=cvox.DomUtil.ALT_MATH_CLASSES.tex.indexOf(a)||-1!=cvox.DomUtil.ALT_MATH_CLASSES.asciimath.indexOf(a)};
-cvox.DomUtil.isMathml=function(a){return a&&a.tagName?"math"==a.tagName.toLowerCase():!1};cvox.DomUtil.isMathJax=function(a){function b(a,b){return"SPAN"==a.tagName&&a.className.split(" ").some(function(a){return a.toLowerCase()==b})}return a&&a.tagName&&a.className?b(a,"math")?(a=cvox.DomUtil.getAncestors(a),a.some(function(a){return b(a,"mathjax")})):!1:!1};cvox.DomUtil.getMathSpanId=function(a){if(a=document.getElementById(a+"-Frame"))if(a=a.querySelector("span.math"))return a.id};
-cvox.DomUtil.hasLongDesc=function(a){return a&&a.longDesc?!0:!1};cvox.DomUtil.getNodeTagName=function(a){return a.nodeType==Node.ELEMENT_NODE?a.tagName:""};cvox.DomUtil.purgeNodes=function(a){return cvox.DomUtil.toArray(a).filter(function(a){return a.nodeType!=Node.TEXT_NODE||!a.textContent.match(/^\s+$/)})};cvox.DomUtil.elementToPoint=function(a){if(!a)return{x:0,y:0};a.constructor==Text&&(a=a.parentNode);a=a.getBoundingClientRect();return{x:a.left+a.width/2,y:a.top+a.height/2}};cvox.SelectionUtil=function(){};cvox.SelectionUtil.cleanUpParagraphForward=function(a){for(;3==a.focusNode.nodeType;){var b=a.focusNode,c=a.focusOffset;a.modify("extend","forward","sentence");if(b==a.focusNode&&c==a.focusOffset)return!1}return!0};cvox.SelectionUtil.cleanUpParagraphBack=function(a){for(var b,c;3==a.focusNode.nodeType&&(b=a.focusNode,c=a.focusOffset,a.modify("extend","backward","sentence"),b!=a.focusNode||c!=a.focusOffset););return!0};
-cvox.SelectionUtil.cleanUpSentence=function(a){for(var b=!0;b;)if(3==a.focusNode.nodeType){var c=a.focusNode,d=a.focusOffset;if(0<a.rangeCount&&0<a.getRangeAt(0).endOffset)if("."==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else if(" "==c.substringData(a.getRangeAt(0).endOffset-1,1))break;else{if(a.modify("extend","forward","sentence"),c==a.focusNode&&d==a.focusOffset)return!1}else break}else break;return!0};
-cvox.SelectionUtil.findSelPosition=function(a){if(0==a.rangeCount)return[0,0];var b=a.getRangeAt(0).getBoundingClientRect();if(!b)return[0,0];a=window.pageYOffset+b.top;b=window.pageXOffset+b.left;return[a,b]};cvox.SelectionUtil.findTopLeftPosition=function(a){var b=0,c=0;if(a.offsetParent)for(b=a.offsetLeft,c=a.offsetTop,a=a.offsetParent;null!==a;)b+=a.offsetLeft,c+=a.offsetTop,a=a.offsetParent;return[c,b]};
-cvox.SelectionUtil.isSelectionValid=function(a){var b=RegExp(/^\s+$/);return!(b.test(a.toString())||""==a.toString())};cvox.SelectionUtil.isRangeValid=function(a){a=a.cloneContents().textContent;var b=RegExp(/^\s+$/);return!(b.test(a)||""==a)};cvox.SelectionUtil.findPos_=function(a){var b=0,c=0;if(a.offsetParent){do b+=a.offsetLeft,c+=a.offsetTop;while(a=a.offsetParent)}return[b,c]};
-cvox.SelectionUtil.scrollElementsToView=function(a){for(;a&&!a.getBoundingClientRect;)a=a.parentElement;if(a){for(var b=a,c=b.parentElement;b!=document.body&&c;)b.scrollTop=b.offsetTop,b.scrollLeft=b.offsetLeft,b=c,c=b.parentElement;a=cvox.SelectionUtil.findPos_(a);window.scrollTo(a[0]-window.innerWidth/2,a[1]-window.innerHeight/2)}};
-cvox.SelectionUtil.scrollToSelection=function(a){if(0!=a.rangeCount){cvox.SelectionUtil.scrollElementsToView(a.focusNode);var b=cvox.SelectionUtil.findSelPosition(a);a=b[0];var b=b[1],c=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop,d=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,e=window.innerWidth||document.documentElement.innerWidth||document.body.clientWidth;b<e&&(b=0);c+d<a?(a-=d,window.scroll(b,a+100)):a<c&&window.scroll(b,
-a-100)}};cvox.SelectionUtil.isAllWs=function(a){return!/[^\t\n\r ]/.test(a.data)};cvox.SelectionUtil.isIgnorable=function(a){return 8==a.nodeType||3==a.nodeType&&cvox.SelectionUtil.isAllWs(a)};cvox.SelectionUtil.nodeBefore=function(a){for(;a=a.previousSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};cvox.SelectionUtil.nodeAfter=function(a){for(;a=a.nextSibling;)if(!cvox.SelectionUtil.isIgnorable(a))return a;return null};
-cvox.SelectionUtil.lastChildNode=function(a){for(a=a.lastChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.previousSibling}return null};cvox.SelectionUtil.firstChildNode=function(a){for(a=a.firstChild;a;){if(!cvox.SelectionUtil.isIgnorable(a))return a;a=a.nextSibling}return null};cvox.SelectionUtil.dataOf=function(a){a=a.data;a=a.replace(/[\t\n\r ]+/g," ");" "==a.charAt(0)&&(a=a.substring(1,a.length));" "==a.charAt(a.length-1)&&(a=a.substring(0,a.length-1));return a};
-cvox.SelectionUtil.hasContentWithTag=function(a,b){if(!a||!a.anchorNode||!a.focusNode)return!1;if(a.anchorNode.tagName&&a.anchorNode.tagName==b||a.focusNode.tagName&&a.focusNode.tagName==b||a.anchorNode.parentNode.tagName&&a.anchorNode.parentNode.tagName==b||a.focusNode.parentNode.tagName&&a.focusNode.parentNode.tagName==b)return!0;var c=a.getRangeAt(0).cloneContents(),d=document.createElement("span");d.appendChild(c);return 0<d.getElementsByTagName(b).length};
-cvox.SelectionUtil.selectText=function(a,b,c){var d=document.createRange();d.setStart(a,b);d.setEnd(a,c);a=window.getSelection();a.removeAllRanges();a.addRange(d)};cvox.SelectionUtil.selectAllTextInNode=function(a){var b=document.createRange();b.setStart(a,0);b.setEndAfter(a);a=window.getSelection();a.removeAllRanges();a.addRange(b)};
-cvox.SelectionUtil.collapseToStart=function(a){var b=window.getSelection(),c=b.anchorNode,d=b.anchorOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};cvox.SelectionUtil.collapseToEnd=function(a){var b=window.getSelection(),c=b.focusNode,d=b.focusOffset;null==c&&(c=a,d=0);a=document.createRange();a.setStart(c,d);a.setEnd(c,d);b.removeAllRanges();b.addRange(a)};
-cvox.SelectionUtil.getText=function(){var a=window.getSelection();if(cvox.SelectionUtil.hasContentWithTag(a,"IMG")){var b="",a=a.getRangeAt(0).cloneContents(),c=document.createElement("span");c.appendChild(a);for(var a=cvox.XpathUtil.getLeafNodes(c),c=0,d;d=a[c];c++)b=b+" "+cvox.DomUtil.getName(d);return b}return this.getSelectionText_()};cvox.SelectionUtil.getSelectionText_=function(){return""+window.getSelection()};
-cvox.SelectionUtil.getRangeText=function(a){return a?a.cloneContents().textContent.replace(/\s+/g," "):""};cvox.TraverseUtil=function(){};cvox.TraverseUtil.getNodeText=function(a){return a.constructor==Text?a.data:""};cvox.TraverseUtil.treatAsLeafNode=function(a){return 0==a.childNodes.length||"SELECT"==a.nodeName||"listbox"==a.getAttribute("role")||"OBJECT"==a.nodeName};cvox.TraverseUtil.isWhitespace=function(a){return" "==a||"\n"==a||"\r"==a||"\t"==a};
-cvox.TraverseUtil.setSelection=function(a,b){var c=window.getSelection();c.removeAllRanges();var d=document.createRange();d.setStart(a.node,a.index);d.setEnd(b.node,b.index);c.addRange(d);return c};cvox.TraverseUtil.isHidden=function(a){if(a instanceof HTMLElement&&"true"==a.getAttribute("aria-hidden"))return!0;switch(a.tagName){case "SCRIPT":case "NOSCRIPT":return!0}return!1};
-cvox.TraverseUtil.forwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index;e<a.node.childNodes.length;e++){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.index=0,a.text=cvox.TraverseUtil.getNodeText(a.node),a.node instanceof HTMLElement&&b.push(a.node);else{if(a.index<a.text.length)return a.text[a.index++];for(;null!=
-a.node;){d=null;for(f=a.node.nextSibling;null!=f;f=f.nextSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=0;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof HTMLElement&&c.push(a.node),a.node=a.node.parentNode,
-a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.backwardsChar=function(a,b,c){for(;;){var d=null;if(!cvox.TraverseUtil.treatAsLeafNode(a.node))for(var e=a.index-1;0<=e;e--){var f=a.node.childNodes[e];if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}}if(d)a.node=d,a.text=cvox.TraverseUtil.getNodeText(a.node),a.index=a.text.length?a.text.length:a.node.childNodes.length,a.node instanceof HTMLElement&&b.push(a.node);else{if(0<a.text.length&&0<a.index)return a.text[--a.index];
-for(;;){d=null;for(f=a.node.previousSibling;null!=f;f=f.previousSibling)if(cvox.TraverseUtil.isHidden(f))f instanceof HTMLElement&&b.push(f);else if(cvox.DomUtil.isVisible(f,{checkAncestors:!1})){d=f;break}if(d){a.node instanceof HTMLElement&&c.push(a.node);a.node=d;a.text=cvox.TraverseUtil.getNodeText(d);a.index=a.text.length?a.text.length:a.node.childNodes.length;a.node instanceof HTMLElement&&b.push(a.node);break}if(a.node.parentNode&&a.node.parentNode.constructor!=HTMLBodyElement)a.node instanceof
-HTMLElement&&c.push(a.node),a.node=a.node.parentNode,a.text=null,a.index=0;else return null}}}};
-cvox.TraverseUtil.getNextChar=function(a,b,c,d,e){a.copyFrom(b);var f=cvox.TraverseUtil.forwardsChar(b,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(b.node);)if(f=cvox.TraverseUtil.forwardsChar(b,c,d),null==f)return null;if(e||!g)return a.copyFrom(b),a.index--,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return b.index--,a.copyFrom(b),a.index--," ";b.index--;return" "};
-cvox.TraverseUtil.getPreviousChar=function(a,b,c,d,e){b.copyFrom(a);var f=cvox.TraverseUtil.backwardsChar(a,c,d);if(null==f)return null;for(var g=cvox.TraverseUtil.isWhitespace(f);cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(a.node);)if(f=cvox.TraverseUtil.backwardsChar(a,c,d),null==f)return null;if(e||!g)return b.copyFrom(a),b.index++,f;for(d=0;d<c.length;d++)if(cvox.TraverseUtil.isHidden(c[d]))return a.index++,b.copyFrom(a),b.index++," ";a.index++;return" "};
-cvox.TraverseUtil.getNextWord=function(a,b,c,d){var e=b.clone(),f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.forwardsChar(e,c,d),null==f)return null;a.copyFrom(e);a.index--;b.copyFrom(e);a=f;c=[];d=[];f=cvox.TraverseUtil.forwardsChar(e,c,d);if(null==f)return a;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d&&(a+=f,b.copyFrom(e),f=cvox.TraverseUtil.forwardsChar(e,c,d),null!=
-f););return a};
-cvox.TraverseUtil.getPreviousWord=function(a,b,c,d){var e=a.clone(),f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return null;for(;cvox.TraverseUtil.isWhitespace(f)||cvox.TraverseUtil.isHidden(e.node);)if(f=cvox.TraverseUtil.backwardsChar(e,c,d),null==f)return null;b.copyFrom(e);b.index++;a.copyFrom(e);b=f;c=[];d=[];f=cvox.TraverseUtil.backwardsChar(e,c,d);if(null==f)return b;for(;!cvox.TraverseUtil.isWhitespace(f)&&0==c.length&&0==d.length&&(b=f+b,a.copyFrom(e),f=cvox.TraverseUtil.backwardsChar(e,c,
-d),null!=f););return b};cvox.TraverseUtil.includesBreakTagOrSkippedNode=function(a,b,c){for(var d=0;d<a.length;d++){if(cvox.TraverseUtil.isHidden(a[d]))return!0;var e=window.getComputedStyle(a[d],null);if(e&&"inline"!=e.display||c[a[d].tagName])return!0}for(d=0;d<b.length;d++)if((e=window.getComputedStyle(b[d],null))&&"inline"!=e.display||c[b[d].tagName])return!0;return!1};
-cvox.TraverseUtil.getNextSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){return"."==a.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};cvox.TraverseUtil.getPreviousSentence=function(a,b,c,d,e){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){return"."==b.substr(-1)?!0:cvox.TraverseUtil.includesBreakTagOrSkippedNode(c,d,e)})};
-cvox.TraverseUtil.getNextLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=b.clone();return cvox.TraverseUtil.getNextString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.bottom!=g.bottom&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(b.node)))return b.copyFrom(h),!0;g=c;h.copyFrom(b);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getPreviousLine=function(a,b,c,d,e){var f=document.createRange(),g=null,h=a.clone();return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(c,d,m,p){f.setStart(a.node,a.index);f.setEnd(b.node,b.index);c=f.getBoundingClientRect();g||(g=c);if(c.top!=g.top&&!cvox.DomPredicates.linkPredicate(cvox.DomUtil.getAncestors(a.node)))return a.copyFrom(h),!0;g=c;h.copyFrom(a);return cvox.TraverseUtil.includesBreakTagOrSkippedNode(m,p,e)})};
-cvox.TraverseUtil.getNextParagraph=function(a,b,c,d){return cvox.TraverseUtil.getNextString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getPreviousParagraph=function(a,b,c,d){return cvox.TraverseUtil.getPreviousString(a,b,c,d,function(a,b,c,d){for(a=0;a<c.length;a++)if(cvox.TraverseUtil.isHidden(c[a])||(b=window.getComputedStyle(c[a],null))&&"inline"!=b.display)return!0;for(a=0;a<d.length;a++)if((b=window.getComputedStyle(d[a],null))&&"inline"!=b.display)return!0;return!1})};
-cvox.TraverseUtil.getNextString=function(a,b,c,d,e){c=b.clone();d=b.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getNextWord(c,d,f,g);if(null==k)return null;for(a.copyFrom(c);!(h&&e(h,k,f,g)||(h&&(h+=" "),h+=k,b.copyFrom(d),f=[],g=[],k=cvox.TraverseUtil.getNextWord(c,d,f,g),null==k)););return h};
-cvox.TraverseUtil.getPreviousString=function(a,b,c,d,e){c=a.clone();d=a.clone();var f=[],g=[],h="",k=cvox.TraverseUtil.getPreviousWord(c,d,f,g);if(null==k)return null;for(b.copyFrom(d);!(h&&e(h,k,f,g)||(h&&(h=" "+h),h=k+h,a.copyFrom(c),f=[],g=[],k=cvox.TraverseUtil.getPreviousWord(c,d,f,g),null==k)););return h};cvox.CursorSelection=function(a,b,c){this.start=a.clone();this.end=b.clone();void 0==c&&(c=!1);if((this.isReversed_=c)&&this.start.node.compareDocumentPosition(this.end.node)==cvox.CursorSelection.BEFORE||!this.isReversed_&&this.end.node.compareDocumentPosition(this.start.node)==cvox.CursorSelection.BEFORE)a=this.start,this.start=this.end,this.end=a};cvox.CursorSelection.BEFORE=4;
-cvox.CursorSelection.prototype.setReversed=function(a){if(a==this.isReversed_)return this;var b=this.start;this.start=this.end;this.end=b;this.isReversed_=a;return this};cvox.CursorSelection.prototype.isReversed=function(){return this.isReversed_};cvox.CursorSelection.prototype.absStart=function(){return this.isReversed_?this.end:this.start};cvox.CursorSelection.prototype.absEnd=function(){return this.isReversed_?this.start:this.end};
-cvox.CursorSelection.prototype.clone=function(){return new cvox.CursorSelection(this.start,this.end,this.isReversed_)};cvox.CursorSelection.prototype.select=function(){var a=window.getSelection();a.removeAllRanges();this.normalize();a.addRange(this.getRange())};cvox.CursorSelection.fromNode=function(a){if(!a)return null;var b=cvox.TraverseUtil.getNodeText(a);return new cvox.CursorSelection(new cvox.Cursor(a,0,b),new cvox.Cursor(a,0,b))};cvox.CursorSelection.fromBody=function(){return cvox.CursorSelection.fromNode(document.body)};
-cvox.CursorSelection.prototype.getText=function(){return this.start.equals(this.end)?cvox.TraverseUtil.getNodeText(this.start.node):cvox.SelectionUtil.getRangeText(this.getRange())};cvox.CursorSelection.prototype.getRange=function(){var a=document.createRange();this.isReversed_?(a.setStart(this.end.node,this.end.index),a.setEnd(this.start.node,this.start.index)):(a.setStart(this.start.node,this.start.index),a.setEnd(this.end.node,this.end.index));return a};
-cvox.CursorSelection.prototype.equals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)};cvox.CursorSelection.prototype.absEquals=function(a){return this.start.equals(a.start)&&this.end.equals(a.end)||this.end.equals(a.start)&&this.start.equals(a.end)};cvox.CursorSelection.prototype.directedBefore=function(a){var b=this.start.node.compareDocumentPosition(a.start.node)==cvox.CursorSelection.BEFORE;return this.start.node==a.start.node||(this.isReversed()?!b:b)};
-cvox.CursorSelection.prototype.normalize=function(){if(0==this.absEnd().index&&this.absEnd().node){var a=this.absEnd().node,b=document.createRange();b.selectNodeContents(a);this.absEnd().index=b.endOffset}return this};cvox.CursorSelection.prototype.collapse=function(){if(this.start.equals(this.end))return this;this.end.copyFrom(this.start);if(0==this.start.text.length)return this;this.isReversed()?0<this.end.index&&this.end.index--:this.end.index<this.end.text.length&&this.end.index++;return this};cvox.PlatformUtil={};cvox.PlatformFilter={NONE:0,WINDOWS:1,MAC:2,LINUX:4,WML:7,CHROMEOS:8,ANDROID:16};cvox.PlatformUtil.matchesPlatform=function(a){var b=navigator.userAgent;return void 0==a?!0:-1!=b.indexOf("Android")?0!=(a&cvox.PlatformFilter.ANDROID):-1!=b.indexOf("Win")?0!=(a&cvox.PlatformFilter.WINDOWS):-1!=b.indexOf("Mac")?0!=(a&cvox.PlatformFilter.MAC):-1!=b.indexOf("Linux")?0!=(a&cvox.PlatformFilter.LINUX):-1!=b.indexOf("CrOS")?0!=(a&cvox.PlatformFilter.CHROMEOS):!1};cvox.Spannable=function(a,b){this.string_=a||"";this.spans_=[];if(goog.isDef(b)){var c=this.string_.length;this.spans_.push({value:b,start:0,end:c})}};cvox.Spannable.prototype.toString=function(){return this.string_};cvox.Spannable.prototype.getLength=function(){return this.string_.length};cvox.Spannable.prototype.setSpan=function(a,b,c){this.removeSpan(a);if(0<=b&&b<=c&&c<=this.string_.length)this.spans_.push({value:a,start:b,end:c});else throw new RangeError("span out of range");};
-cvox.Spannable.prototype.removeSpan=function(a){for(var b=this.spans_.length-1;0<=b;b--)this.spans_[b].value===a&&this.spans_.splice(b,1)};cvox.Spannable.prototype.append=function(a){if(a instanceof cvox.Spannable){var b=a,c=this.getLength();this.string_+=b.string_;a.spans_.forEach(goog.bind(function(a){this.setSpan(a.value,a.start+c,a.end+c)},this))}else"string"===typeof a&&(this.string_+=a)};
-cvox.Spannable.prototype.getSpan=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.start<=a&&a<c.end)return c.value}};cvox.Spannable.prototype.getSpanInstanceOf=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value instanceof a)return c.value}};cvox.Spannable.prototype.getSpans=function(a){for(var b=[],c=0;c<this.spans_.length;c++){var d=this.spans_[c];d.start<=a&&a<d.end&&b.push(d.value)}return b};
-cvox.Spannable.prototype.getSpanStart=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.start}return null};cvox.Spannable.prototype.getSpanEnd=function(a){for(var b=0;b<this.spans_.length;b++){var c=this.spans_[b];if(c.value===a)return c.end}return null};
-cvox.Spannable.prototype.substring=function(a,b){var c=goog.isDef(b)?b:this.string_.length;if(0>a||c>this.string_.length||a>c)throw new RangeError("substring indices out of range");for(var d=new cvox.Spannable(this.string_.substring(a,c)),e=0;e<this.spans_.length;e++){var f=this.spans_[e];if(f.start<=c&&f.end>=a){var g=Math.max(0,f.start-a),h=Math.min(c-a,f.end-a);d.spans_.push({value:f.value,start:g,end:h})}}return d};
-cvox.Spannable.prototype.trim=function(){if(/^\s*$/.test(this.string_))return this.substring(0,0);var a=this.string_.match(/^\s*/)[0].length,b=this.string_.match(/\s*$/).index;return this.substring(a,b)};cvox.NavBraille=function(a){this.text=a.text instanceof cvox.Spannable?a.text:new cvox.Spannable(a.text);this.startIndex=a.startIndex?a.startIndex:0;this.endIndex=a.endIndex?a.endIndex:0};cvox.NavBraille.fromText=function(a){return new cvox.NavBraille({text:a})};cvox.NavBraille.prototype.isEmpty=function(){return 0==this.text.getLength()};cvox.NavBraille.prototype.toString=function(){return'NavBraille(text="'+this.text.toString()+'" startIndex="'+this.startIndex+'" endIndex="'+this.endIndex+'")'};
-cvox.NavBraille.prototype.toJson=function(){return{text:this.text.toString(),startIndex:this.startIndex,endIndex:this.endIndex}};cvox.NavBraille.prototype.write=function(){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.CHROMEOS|cvox.PlatformFilter.ANDROID)&&cvox.ChromeVox.braille.write(this)};cvox.BrailleKeyCommand={PAN_LEFT:"pan_left",PAN_RIGHT:"pan_right",LINE_UP:"line_up",LINE_DOWN:"line_down",TOP:"top",BOTTOM:"bottom",ROUTING:"routing",SECONDARY_ROUTING:"secondary_routing",DOTS:"dots",STANDARD_KEY:"standard_key"};cvox.BrailleKeyEvent={};cvox.BrailleInterface=function(){};cvox.BrailleInterface.prototype.write=function(){};cvox.AbstractBraille=function(){};cvox.AbstractHost=function(){};cvox.AbstractHost.State={ACTIVE:0,INACTIVE:1,KILLED:2};cvox.AbstractHost.prototype.init=function(){};cvox.AbstractHost.prototype.reinit=function(){};cvox.AbstractHost.prototype.onPageLoad=function(){};cvox.AbstractHost.prototype.getApiSrc=function(){return""};cvox.AbstractHost.prototype.getFileSrc=function(){return""};cvox.AbstractHost.prototype.hasTtsCallback=function(){return!0};cvox.AbstractHost.prototype.ttsLoaded=function(){return!0};
-cvox.AbstractHost.prototype.mustRedispatchClickEvent=function(){return!1};cvox.AbstractHost.prototype.activateOrDeactivateChromeVox=function(a){this.onStateChanged_(a?cvox.AbstractHost.State.ACTIVE:cvox.AbstractHost.State.INACTIVE)};cvox.AbstractHost.prototype.killChromeVox=function(){this.onStateChanged_(cvox.AbstractHost.State.KILLED)};
-cvox.AbstractHost.prototype.onStateChanged_=function(a){var b=a==cvox.AbstractHost.State.ACTIVE;if(b!=cvox.ChromeVox.isActive)switch(cvox.ChromeVoxEventWatcher.cleanup(window),a){case cvox.AbstractHost.State.ACTIVE:cvox.ChromeVox.isActive=!0;cvox.ChromeVox.navigationManager.showOrHideIndicator(!0);cvox.ChromeVoxEventWatcher.init(window);document.activeElement?(a=document.hasFocus()&&!document.webkitHidden,cvox.ApiImplementation.syncToNode(document.activeElement,a)):cvox.ChromeVox.navigationManager.updateIndicator();
-break;case cvox.AbstractHost.State.INACTIVE:cvox.ChromeVox.isActive=!1;cvox.ChromeVox.navigationManager.showOrHideIndicator(!1);cvox.ChromeVoxEventWatcher.init(window);break;case cvox.AbstractHost.State.KILLED:cvox.ChromeVox.isActive=!1,cvox.ChromeVox.navigationManager.showOrHideIndicator(!1)}};cvox.MathJaxInterface=function(){};cvox.MathJaxInterface.prototype.isMathjaxActive=function(){};cvox.MathJaxInterface.prototype.getAllJax=function(){};cvox.MathJaxInterface.prototype.registerSignal=function(){};cvox.MathJaxInterface.prototype.injectScripts=function(){};cvox.MathJaxInterface.prototype.configMediaWiki=function(){};cvox.MathJaxInterface.prototype.getTex=function(){};cvox.MathJaxInterface.prototype.getAsciiMath=function(){};cvox.AbstractMathJax=function(){};cvox.AbstractMathJax.prototype.getAllTexs=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("tex")),c=0,d;d=b[c];c++)this.getTex(a,d)};cvox.AbstractMathJax.prototype.getAllAsciiMaths=function(a){for(var b=document.querySelectorAll(cvox.DomUtil.altMathQuerySelector("asciimath")),c=0,d;d=b[c];c++)this.getAsciiMath(a,d)};
-cvox.AbstractMathJax.prototype.convertMarkupToDom=function(a,b,c){if(b){var d=new DOMParser;b=b.replace(/>\s+</g,"><");a(d.parseFromString(b,"text/xml").firstChild,c)}};cvox.AbstractMsgs=function(){};cvox.AbstractMsgs.prototype.getMsg=function(){};cvox.AbstractMsgs.prototype.getNumber=function(){};cvox.HostFactory=function(){};cvox.HostFactory.getHost=function(){return new cvox.HostFactory.hostConstructor};cvox.HostFactory.getTts=function(){return new cvox.HostFactory.ttsConstructor};cvox.HostFactory.getBraille=function(){return new cvox.HostFactory.brailleConstructor};cvox.HostFactory.getMsgs=function(){return new cvox.HostFactory.msgsConstructor};cvox.HostFactory.getEarcons=function(){return new cvox.HostFactory.earconsConstructor};cvox.HostFactory.getMathJax=function(){return new cvox.HostFactory.mathJaxConstructor};cvox.SpokenMessage=function(){this.raw=this.id=this.count=null};cvox.SpokenMessages={};cvox.SpokenMessages.messages=[];cvox.SpokenMessages.speakFlush=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_FLUSH)};cvox.SpokenMessages.speakQueued=function(){cvox.SpokenMessages.speak(cvox.AbstractTts.QUEUE_MODE_QUEUE)};
-cvox.SpokenMessages.speak=function(a){for(var b=0;b<cvox.SpokenMessages.messages.length;++b){var c=cvox.SpokenMessages.messages[b];if(!c||!c.id&&!c.raw)throw"Invalid message received.";var d="";if(null!=c.count)if(0>=c.count)try{d+=cvox.ChromeVox.msgs.getMsg(c.id[0]+"_optional_default")}catch(e){continue}else d=1==c.count?d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_singular"):d+cvox.ChromeVox.msgs.getMsg(c.id[0]+"_plural",[c.count]);else d=c.raw?d+c.raw:d+cvox.ChromeVox.msgs.getMsg.apply(cvox.ChromeVox.msgs,
-c.id);cvox.ChromeVox.tts.speak(d,a,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=cvox.AbstractTts.QUEUE_MODE_QUEUE}cvox.SpokenMessages.messages=[]};cvox.SpokenMessages.currentMessage=function(){if(0==cvox.SpokenMessages.messages.length)throw"Invalid usage of SpokenMessages; start the chain using $m()";return cvox.SpokenMessages.messages[cvox.SpokenMessages.messages.length-1]};cvox.SpokenMessages.withCount=function(a){cvox.SpokenMessages.currentMessage().count=a;return cvox.SpokenMessages};
-cvox.SpokenMessages.andIndexTotal=function(a,b){var c=new cvox.SpokenMessage;c.raw=cvox.ChromeVox.msgs.getMsg("index_total",[a,b]);cvox.SpokenMessages.messages.push(c);return cvox.SpokenMessages};cvox.SpokenMessages.andEnd=function(){return cvox.SpokenMessages.andMessage("end")};cvox.SpokenMessages.andMessage=function(a){var b=new cvox.SpokenMessage;b.id="string"==typeof a?[a]:a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};
-cvox.SpokenMessages.andRawMessage=function(a){var b=new cvox.SpokenMessage;b.raw=a;cvox.SpokenMessages.messages.push(b);return cvox.SpokenMessages};cvox.SpokenMessages.andPause=function(){return cvox.SpokenMessages.andMessage("pause")};cvox.$m=cvox.SpokenMessages.andMessage;cvox.CompositeTts=function(){this.ttsEngines_=[]};cvox.CompositeTts.prototype.add=function(a){this.ttsEngines_.push(a);return this};cvox.CompositeTts.prototype.speak=function(a,b,c){this.ttsEngines_.forEach(function(d){d.speak(a,b,c)})};cvox.CompositeTts.prototype.isSpeaking=function(){return this.ttsEngines_.some(function(a){return a.isSpeaking()})};cvox.CompositeTts.prototype.stop=function(){this.ttsEngines_.forEach(function(a){a.stop()})};
-cvox.CompositeTts.prototype.increaseOrDecreaseProperty=function(a,b){this.ttsEngines_.forEach(function(c){c.increaseOrDecreaseProperty(a,b)})};cvox.CompositeTts.prototype.getDefaultProperty=function(a){for(var b=0,c;c=this.ttsEngines_[b];b++)if(c=c.getDefaultProperty(a))return c};cvox.BuildInfo={};cvox.BuildInfo.build="1384906195.369502";cvox.ChromeVoxJSON||(cvox.ChromeVoxJSON={});
-window.JSON&&"[object JSON]"==window.JSON.toString()?cvox.ChromeVoxJSON=window.JSON:function(){function a(a){return 10>a?"0"+a:a}function b(a){e.lastIndex=0;return e.test(a)?'"'+a.replace(e,function(a){var b=h[a];return"string"===typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function c(a,d){var e,h,n,s,u=f,t,r=d[a];r&&"object"===typeof r&&"function"===typeof r.toJSON&&(r=r.toJSON(a));"function"===typeof k&&(r=k.call(d,a,r));switch(typeof r){case "string":return b(r);
-case "number":return isFinite(r)?String(r):"null";case "boolean":case "null":return String(r);case "object":if(!r)return"null";f+=g;t=[];if("[object Array]"===Object.prototype.toString.apply(r)){s=r.length;for(e=0;e<s;e+=1)t[e]=c(e,r)||"null";n=0===t.length?"[]":f?"[\n"+f+t.join(",\n"+f)+"\n"+u+"]":"["+t.join(",")+"]";f=u;return n}if(k&&"object"===typeof k)for(s=k.length,e=0;e<s;e+=1)h=k[e],"string"===typeof h&&(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);else for(h in r)Object.hasOwnProperty.call(r,h)&&
-(n=c(h,r))&&t.push(b(h)+(f?": ":":")+n);n=0===t.length?"{}":f?"{\n"+f+t.join(",\n"+f)+"\n"+u+"}":"{"+t.join(",")+"}";f=u;return n}}"function"!==typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+a(this.getUTCMonth()+1)+"-"+a(this.getUTCDate())+"T"+a(this.getUTCHours())+":"+a(this.getUTCMinutes())+":"+a(this.getUTCSeconds())+"Z":"null"},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(){return this.valueOf()});
-var d=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,e=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,f,g,h={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},k;"function"!==typeof cvox.ChromeVoxJSON.stringify&&(cvox.ChromeVoxJSON.stringify=function(a,b,d){var e;g=f="";if("number"===typeof d)for(e=0;e<d;e+=1)g+=" ";else"string"===typeof d&&
-(g=d);if((k=b)&&"function"!==typeof b&&("object"!==typeof b||"number"!==typeof b.length))throw Error("JSON.stringify");return c("",{"":a})});"function"!==typeof cvox.ChromeVoxJSON.parse&&(cvox.ChromeVoxJSON.parse=function(a,b){function c(a,d){var e,f,g=a[d];if(g&&"object"===typeof g)for(e in g)Object.hasOwnProperty.call(g,e)&&(f=c(g,e),void 0!==f?g[e]=f:delete g[e]);return b.call(a,d,g)}var e;a=String(a);d.lastIndex=0;d.test(a)&&(a=a.replace(d,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)}));
-if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return e=eval("("+a+")"),"function"===typeof b?c({"":e},""):e;throw new SyntaxError("JSON.parse");})}();"undefined"!=typeof goog&&goog.provide&&(cvox.ApiUtil={});window.cvox||(window.cvox={});cvox.ApiUtils=function(){};cvox.ApiUtils.nextCvoxId_=1;
-cvox.ApiUtils.makeNodeReference=function(a){if(a.id&&document.getElementById(a.id)==a)return{id:a.id};if(a instanceof HTMLElement){var b=cvox.ApiUtils.nextCvoxId_;a.setAttribute("cvoxid",b);cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+1)%100;return{cvoxid:b}}if(a.parentElement){for(var c=a.parentElement,d=-1,b=0;b<c.childNodes.length;b++)if(c.childNodes[b]==a){d=b;break}if(0<=d)return b=cvox.ApiUtils.nextCvoxId_,c.setAttribute("cvoxid",b),cvox.ApiUtils.nextCvoxId_=(cvox.ApiUtils.nextCvoxId_+
-1)%100,{cvoxid:b,childIndex:d}}throw"Cannot reference node: "+a;};cvox.ApiUtils.getNodeFromRef=function(a){if(a.id)return document.getElementById(a.id);if(a.cvoxid){var b='*[cvoxid="'+a.cvoxid+'"]';(b=document.querySelector(b))&&b.removeAttribute&&b.removeAttribute("cvoxid");return null!=a.childIndex?b.childNodes[a.childIndex]:b}throw"Bad node reference: "+cvox.ChromeVoxJSON.stringify(a);};cvox.ScriptInstaller={};
-cvox.ScriptInstaller.installScript=function(a,b,c,d){if(document.querySelector("script["+b+"]")||!a)return!1;for(var e=0,f;f=a[e];e++){var g=new XMLHttpRequest,h=f+"?"+(new Date).getTime();g.onreadystatechange=function(){if(4==g.readyState){var a=g.responseText,a=a+("\n//# sourceURL="+f+"\n"),c=document.createElement("script");c.type="text/javascript";c.setAttribute(b,"1");c.textContent=a;d&&c.setAttribute("chromevoxScriptBase",d);cvox.DomUtil.addNodeToHead(c)}};try{g.open("GET",h,!1),g.send(null)}catch(k){return window.console.log("Warning: ChromeVox external script loading for "+
-document.location+" stopped after failing to install "+f),!1}}c&&c();return!0};cvox.ApiImplementation=function(){};cvox.ApiImplementation.init=function(a){window.addEventListener("message",cvox.ApiImplementation.portSetup,!0);var b=[];b.push(cvox.ChromeVox.host.getFileSrc("chromevox/injected/api_util.js"));b.push(cvox.ChromeVox.host.getApiSrc());b.push(cvox.ApiImplementation.siteSpecificScriptLoader);a=cvox.ScriptInstaller.installScript(b,"cvoxapi",a,cvox.ApiImplementation.siteSpecificScriptBase);a||(window.location.href="javascript:cvox.Api.internalEnable();")};
-cvox.ApiImplementation.portSetup=function(a){return"cvox.PortSetup"==a.data?(cvox.ApiImplementation.port=a.ports[0],cvox.ApiImplementation.port.onmessage=function(a){cvox.ApiImplementation.dispatchApiMessage(cvox.ChromeVoxJSON.parse(a.data))},a.stopPropagation(),!1):!0};
-cvox.ApiImplementation.dispatchApiMessage=function(a){var b;switch(a.cmd){case "speak":b=cvox.ApiImplementation.speak;break;case "speakNodeRef":b=cvox.ApiImplementation.speakNodeRef;break;case "stop":b=cvox.ApiImplementation.stop;break;case "playEarcon":b=cvox.ApiImplementation.playEarcon;break;case "syncToNodeRef":b=cvox.ApiImplementation.syncToNodeRef;break;case "clickNodeRef":b=cvox.ApiImplementation.clickNodeRef;break;case "getBuild":b=cvox.ApiImplementation.getBuild;break;case "getVersion":b=
-cvox.ApiImplementation.getVersion;break;case "getCurrentNode":b=cvox.ApiImplementation.getCurrentNode;break;case "getCvoxModKeys":b=cvox.ApiImplementation.getCvoxModKeys;break;case "isKeyShortcut":b=cvox.ApiImplementation.isKeyShortcut;break;case "setKeyEcho":b=cvox.ApiImplementation.setKeyEcho;break;case "Math.defineRule":b=cvox.ApiImplementation.Math.defineRule}if(!b)throw"Unknown API call: "+a.cmd;b.apply(cvox.ApiImplementation,a.args)};
-function setupEndCallback_(a,b){var c=function(){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:b}))};a&&(a.endCallback=c)}cvox.ApiImplementation.speak=function(a,b,c,d){cvox.ChromeVox.isActive&&(d||(d={}),setupEndCallback_(d,a),cvox.ChromeVox.tts.speak(b,c,d))};cvox.ApiImplementation.speakNode=function(a,b,c){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(a),b,c)};
-cvox.ApiImplementation.speakNodeRef=function(a,b,c,d){b=cvox.ApiUtils.getNodeFromRef(b);d||(d={});setupEndCallback_(d,a);cvox.ApiImplementation.speakNode(b,c,d)};cvox.ApiImplementation.stop=function(){cvox.ChromeVox.isActive&&cvox.ChromeVox.tts.stop()};cvox.ApiImplementation.playEarcon=function(a){cvox.ChromeVox.isActive&&cvox.ChromeVox.earcons.playEarconByName(a)};cvox.ApiImplementation.syncToNodeRef=function(a,b){var c=cvox.ApiUtils.getNodeFromRef(a);cvox.ApiImplementation.syncToNode(c,b)};
-cvox.ApiImplementation.syncToNode=function(a,b,c){cvox.ChromeVox.isActive&&(void 0==c&&(c=cvox.AbstractTts.QUEUE_MODE_FLUSH),cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a,!0),cvox.ChromeVox.navigationManager.updateIndicator(),void 0==b&&(b=!1),cvox.AriaUtil.isHiddenRecursive(a)&&(b=!1),b&&cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ApiImplementation.getDesc_(a),c,null),cvox.ChromeVox.navigationManager.getBraille().write(),cvox.ChromeVox.navigationManager.updatePosition(a))};
-cvox.ApiImplementation.getCurrentNode=function(a){var b=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,currentNode:cvox.ApiUtils.makeNodeReference(b)}))};
-cvox.ApiImplementation.getDesc_=function(a){if(!a.hasAttribute("cvoxnodedesc"))return cvox.ChromeVox.navigationManager.getDescription();a=cvox.ChromeVoxJSON.parse(a.getAttribute("cvoxnodedesc"));for(var b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b};cvox.ApiImplementation.clickNodeRef=function(a,b){cvox.DomUtil.clickElem(cvox.ApiUtils.getNodeFromRef(a),b,!1)};
-cvox.ApiImplementation.getBuild=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,build:cvox.BuildInfo.build}))};cvox.ApiImplementation.getVersion=function(a){var b=cvox.ChromeVox.version;null==b?window.setTimeout(function(){cvox.ApiImplementation.getVersion(a)},1E3):cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,version:b}))};
-cvox.ApiImplementation.getCvoxModKeys=function(a){cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,keyCodes:cvox.KeyUtil.cvoxModKeyCodes()}))};cvox.ApiImplementation.isKeyShortcut=function(a,b){var c=cvox.KeyUtil.keyEventToKeySequence(b);cvox.ApiImplementation.port.postMessage(cvox.ChromeVoxJSON.stringify({id:a,isHandled:cvox.ChromeVoxKbHandler.handlerKeyMap.hasKey(c)}))};
-cvox.ApiImplementation.setKeyEcho=function(a){var b=cvox.ChromeVox.keyEcho;b[document.location.href]=a;JSON.stringify(b)};cvox.ApiImplementation.Math=function(){};cvox.ApiImplementation.Math.defineRule=function(a,b,c,d,e){var f=cvox.MathmlStore.getInstance(),g=Array.prototype.slice.call(arguments,4),g=[a,b,c,d].concat(g);f.defineRule.apply(f,g)};cvox.ConsoleTts=function(){this.enabled_=!1};goog.addSingletonGetter(cvox.ConsoleTts);cvox.ConsoleTts.prototype.speak=function(a,b,c){if(this.enabled_&&window.console){var d="Speak",d=b==cvox.AbstractTts.QUEUE_MODE_FLUSH?d+" (I)":d+" (Q)",d=d+(' "'+a+'"');window.console.log(d);c&&void 0!=c.startCallback&&window.console.log(" using startCallback");c&&void 0!=c.endCallback&&window.console.log(" using endCallback")}return this};cvox.ConsoleTts.prototype.isSpeaking=function(){return!1};
-cvox.ConsoleTts.prototype.stop=function(){this.enabled_&&window.console.log("Stop")};cvox.ConsoleTts.prototype.increaseOrDecreaseProperty=function(){};cvox.ConsoleTts.prototype.setEnabled=function(a){this.enabled_=a};cvox.ConsoleTts.prototype.getDefaultProperty=function(){};cvox.ChromeVoxHTMLDateWidget=function(a,b){var c=this;this.pos_=0;var d=2;if("month"==a.type||"week"==a.type)d=1;this.maxPos_=d;this.dateElem_=a;this.dateTts_=b;this.pDay_=this.pWeek_=this.pMonth_=this.pYear_=-1;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};0==this.dateElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e);
-e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.dateElem_.dispatchEvent(e)}this.dateElem_.addEventListener("keydown",this.keyListener_,!1);this.dateElem_.addEventListener("keyup",this.keyListener_,!1);this.dateElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLDateWidget.prototype.shutdown=function(){this.dateElem_.removeEventListener("blur",this.blurListener_,!1);this.dateElem_.removeEventListener("keydown",this.keyListener_,!1);this.dateElem_.removeEventListener("keyup",this.keyListener_,!1)};
-cvox.ChromeVoxHTMLDateWidget.prototype.forceInitTime_=function(){var a=new Date,b="",b=a.getFullYear()+"",c=a.getMonth()+1+"";2>c.length&&(c="0"+c);var d=a.getDate()+"";switch(this.dateElem_.type){case "month":b=b+"-"+c;break;case "week":a.setHours(0,0,0);a.setDate(a.getDate()+4-(a.getDay()||7));c=new Date(a.getFullYear(),0,1);a=Math.ceil(((a-c)/864E5+1)/7)+"";2>a.length&&(a="0"+a);a="W"+a;b=b+"-"+a;break;default:b=b+"-"+c+"-"+d}this.dateElem_.setAttribute("value",b)};
-cvox.ChromeVoxHTMLDateWidget.prototype.handlePosChange_=function(){this.pos_=Math.max(this.pos_,0);this.pos_=Math.min(this.pos_,this.maxPos_);switch(this.pos_){case 0:"week"==this.dateElem_.type?this.pWeek_=-1:this.pMonth_=-1;break;case 1:"date"==this.dateElem_.type?this.pDay_=-1:this.pYear_=-1;break;case 2:this.pYear_=-1}};
-cvox.ChromeVoxHTMLDateWidget.prototype.update_=function(a){var b=this.dateElem_.value.split("-");if(1>b.length)this.forceInitTime_();else{var c=-1,d=-1,e=-1,f=-1,c=parseInt(b[0],10);"week"==this.dateElem_.type?e=parseInt(b[1].replace("W",""),10):"date"==this.dateElem_.type?(d=parseInt(b[1],10),f=parseInt(b[2],10)):d=parseInt(b[1],10);b="";a&&(b=cvox.DomUtil.getName(this.dateElem_,!0,!0)+"\n");e!=this.pWeek_&&(b=b+cvox.ChromeVox.msgs.getMsg("datewidget_week")+e+"\n",this.pWeek_=e);if(d!=this.pMonth_){a=
-"";switch(d){case 1:a=cvox.ChromeVox.msgs.getMsg("datewidget_january");break;case 2:a=cvox.ChromeVox.msgs.getMsg("datewidget_february");break;case 3:a=cvox.ChromeVox.msgs.getMsg("datewidget_march");break;case 4:a=cvox.ChromeVox.msgs.getMsg("datewidget_april");break;case 5:a=cvox.ChromeVox.msgs.getMsg("datewidget_may");break;case 6:a=cvox.ChromeVox.msgs.getMsg("datewidget_june");break;case 7:a=cvox.ChromeVox.msgs.getMsg("datewidget_july");break;case 8:a=cvox.ChromeVox.msgs.getMsg("datewidget_august");
-break;case 9:a=cvox.ChromeVox.msgs.getMsg("datewidget_september");break;case 10:a=cvox.ChromeVox.msgs.getMsg("datewidget_october");break;case 11:a=cvox.ChromeVox.msgs.getMsg("datewidget_november");break;case 12:a=cvox.ChromeVox.msgs.getMsg("datewidget_december")}b=b+a+"\n";this.pMonth_=d}f!=this.pDay_&&(b=b+f+"\n",this.pDay_=f);c!=this.pYear_&&(b=b+c+"\n",this.pYear_=c);0<b.length&&this.dateTts_.speak(b,0,null)}};
-cvox.ChromeVoxHTMLDateWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.BrailleTextHandler=function(a){this.braille_=a};cvox.BrailleTextHandler.prototype.changed=function(a,b,c,d){var e;d?(e=cvox.NavBraille.fromText(a),e.startIndex=b,e.endIndex=c):cvox.ChromeVox.navigationManager&&(e=cvox.ChromeVox.navigationManager.getBraille());e&&this.braille_.write(e)};cvox.ContentEditableExtractor=function(){this.text_="";this.end_=this.start_=0;this.lines_={};this.characterToLineMap_=[]};
-cvox.ContentEditableExtractor.prototype.update=function(a){for(var b={0:{startIndex:0,endIndex:0}},c=new cvox.Cursor(a,0,""),d=c.clone(),e=document.createRange(),f,g=0,h=null,k="",l=0,m=-1,p=-1,q=window.getSelection(),n=new cvox.Cursor(q.baseNode,q.baseOffset,""),q=new cvox.Cursor(q.extentNode,q.extentOffset,""),s=!1,u=!1;;){f=[];var t=[],r=cvox.TraverseUtil.forwardsChar(d,f,t),v=!1;r||(v=!0);for(f=0;f<t.length&&!v;f++)t[f]==a&&(v=!0);if(v)break;e.setStart(c.node,c.index);e.setEnd(d.node,d.index);
-if((f=e.getBoundingClientRect())&&0!=f.width&&0!=f.height){null!==h&&f.bottom!=h&&0<l&&k.substr(-1).match(/\S/)&&r.match(/\S/)&&(k+="\n",l++);if(c.node!=d.node&&0<d.index&&(e.setStart(d.node,d.index-1),f=e.getBoundingClientRect(),!f||0==f.width||0==f.height))continue;!s&&-1==m&&d.node==n.node&&d.index>=n.index&&(d.index>n.index?m=l:s=!0);!u&&-1==p&&d.node==q.node&&d.index>=q.index&&(d.index>q.index?p=l:u=!0);null===h?h=f.bottom:f.bottom!=h&&(b[g].endIndex=l,g++,b[g]={startIndex:l,endIndex:l},h=f.bottom);
-k+=r;l++;c=d.clone();s&&(m=l,s=!1);u&&(p=l,u=!1)}}b[g].endIndex=l;a=[];for(f=0;f<=g;f++)for(c=b[f].startIndex;c<=b[f].endIndex;c++)a[c]=f;this.text_=k;this.characterToLineMap_=a;this.lines_=b;this.start_=0<=m?m:k.length;this.end_=0<=p?p:k.length};cvox.ContentEditableExtractor.prototype.getText=function(){return this.text_};cvox.ContentEditableExtractor.prototype.getStartIndex=function(){return this.start_};cvox.ContentEditableExtractor.prototype.getEndIndex=function(){return this.end_};
-cvox.ContentEditableExtractor.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.ContentEditableExtractor.prototype.getLineStart=function(a){return this.lines_[a].startIndex};cvox.ContentEditableExtractor.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.EditableTextAreaShadow=function(){this.shadowElement_=document.createElement("div");this.lines_={};this.characterToLineMap_=[]};
-cvox.EditableTextAreaShadow.prototype.update=function(a){for(document.body.appendChild(this.shadowElement_);this.shadowElement_.childNodes.length;)this.shadowElement_.removeChild(this.shadowElement_.childNodes[0]);this.shadowElement_.style.cssText=window.getComputedStyle(a,null).cssText;this.shadowElement_.style.position="absolute";this.shadowElement_.style.top=-9999;this.shadowElement_.style.left=-9999;this.shadowElement_.setAttribute("aria-hidden","true");var b=a.value,c=document.createTextNode(b+
-".");this.shadowElement_.appendChild(c);a={0:{startIndex:0,endIndex:0}};for(var d=document.createRange(),e=0,f=0,g=0,h=null,k=!1,l;e<=b.length;){d.setStart(c,e);if(e+8>b.length||0<=b.substr(e,8).indexOf("\n"))k=!0;k?(e++,d.setEnd(c,e),l=d.getBoundingClientRect()):(d.setEnd(c,e+8),l=d.getBoundingClientRect(),l.bottom==h?e+=8:(l&&null!==h&&(k=!0),e++,d.setEnd(c,e),l=d.getBoundingClientRect()));0<e&&"\n"==b[e-1]?(a[g].endIndex=e-1,g++,a[g]={startIndex:e,endIndex:e},h=null,k=!1,f=e):l&&null===h?h=l.bottom:
-l&&l.bottom!=h&&(a[g].endIndex=f,g++,a[g]={startIndex:f,endIndex:f},h=l?l.bottom:null,k=!1);l&&(f=e)}a[g].endIndex=b.length;b=[];for(c=0;c<=g;c++)for(d=a[c].startIndex;d<=a[c].endIndex;d++)b[d]=c;this.characterToLineMap_=b;this.lines_=a;document.body.removeChild(this.shadowElement_)};cvox.EditableTextAreaShadow.prototype.getLineIndex=function(a){return this.characterToLineMap_[a]};cvox.EditableTextAreaShadow.prototype.getLineStart=function(a){return this.lines_[a].startIndex};
-cvox.EditableTextAreaShadow.prototype.getLineEnd=function(a){return this.lines_[a].endIndex};cvox.TextChangeEvent=function(a,b,c,d){this.value=a;this.start=b;this.end=c;this.triggeredByUser=d;this.start>this.end&&(a=this.end,this.end=this.start,this.start=a)};cvox.TypingEcho={CHARACTER:0,WORD:1,CHARACTER_AND_WORD:2,NONE:3,COUNT:4};cvox.TypingEcho.cycle=function(a){return(a+1)%cvox.TypingEcho.COUNT};cvox.TypingEcho.shouldSpeakChar=function(a){return a==cvox.TypingEcho.CHARACTER_AND_WORD||a==cvox.TypingEcho.CHARACTER};cvox.TextHandlerInterface=function(){};
-cvox.TextHandlerInterface.prototype.changed=function(){};cvox.ChromeVoxEditableTextBase=function(a,b,c,d,e){this.value=a;this.start=b;this.end=c;this.isPassword=d;this.tts=e;this.multiline=!1;this.brailleHandler_=cvox.ChromeVox.braille?new cvox.BrailleTextHandler(cvox.ChromeVox.braille):void 0};cvox.ChromeVoxEditableTextBase.useIBeamCursor=cvox.ChromeVox.isMac;cvox.ChromeVoxEditableTextBase.eventTypingEcho=!1;cvox.ChromeVoxEditableTextBase.prototype.maxShortPhraseLen=60;
-cvox.ChromeVoxEditableTextBase.prototype.isPassword=!1;cvox.ChromeVoxEditableTextBase.prototype.lastChangeDescribed=!1;cvox.ChromeVoxEditableTextBase.prototype.getValue=function(){var a="";if(this.multiline){if(a+="multiline editable text. ",this.start==this.end)var b=this.getLine(this.getLineIndex(this.start)),a=b?a+b:a+"blank"}else a=this.node?a+cvox.DomUtil.getValue(this.node):a+this.value,a=a<=this.maxShortPhraseLen?a+", editable text":a.substring(0,this.maxShortPhraseLen)+", editable text";return a};
-cvox.ChromeVoxEditableTextBase.prototype.getLineIndex=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineStart=function(){return 0};cvox.ChromeVoxEditableTextBase.prototype.getLineEnd=function(){return this.value.length};cvox.ChromeVoxEditableTextBase.prototype.getLine=function(a){var b=this.getLineStart(a);a=this.getLineEnd(a);b=this.value.substr(b,a-b);return b.replace(/^\s+|\s+$/g,"")};cvox.ChromeVoxEditableTextBase.prototype.isWordBreakChar=function(a){return!!a.match(/^\W$/)};
-cvox.ChromeVoxEditableTextBase.prototype.isLastChar=function(a){return void 0==this.getLineIndex(a.start+1)};cvox.ChromeVoxEditableTextBase.prototype.speak=function(a,b,c){if(!this.node||document.activeElement==this.node){var d=cvox.AbstractTts.QUEUE_MODE_QUEUE;!0===b&&(d=cvox.AbstractTts.QUEUE_MODE_FLUSH);this.tts.speak(a,d,c||{})}};
-cvox.ChromeVoxEditableTextBase.prototype.changed=function(a){if(a.value!=this.value||a.start!=this.start||a.end!=this.end||this.isLastChar(a)){if(a.value==this.value?this.describeSelectionChanged(a):this.describeTextChanged(a),this.lastChangeDescribed=!0,this.value=a.value,this.start=a.start,this.end=a.end,this.brailleHandler_){var b=this.getLine(this.getLineIndex(a.start)),c=this.getLineStart(this.getLineIndex(a.start)),d=a.start-c;a=a.end-c;this.brailleHandler_.changed(b,d,a,this.multiline)}}else this.lastChangeDescribed=
-!1};
-cvox.ChromeVoxEditableTextBase.prototype.describeSelectionChanged=function(a){if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser);else if(a.start==a.end)if(this.start!=this.end)this.speak(cvox.ChromeVox.msgs.getMsg("Unselected"),a.triggeredByUser);else if(this.getLineIndex(this.start)!=this.getLineIndex(a.start)){var b=this.getLine(this.getLineIndex(a.start));""==b&&(b=cvox.ChromeVox.msgs.getMsg("text_box_blank"));this.speak(b,
-a.triggeredByUser)}else this.start==a.start+1||this.start==a.start-1?cvox.ChromeVoxEditableTextBase.useIBeamCursor?this.speak(this.value.substr(Math.min(this.start,a.start),1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):a.start==this.value.length?this.speak(cvox.ChromeVox.msgs.getMsg("end"),a.triggeredByUser):this.speak(this.value.substr(a.start,1),a.triggeredByUser,{phoneticCharacters:a.triggeredByUser}):this.speak(this.value.substr(Math.min(this.start,a.start),Math.abs(this.start-
-a.start)),a.triggeredByUser);else this.start+1==a.start&&this.end==this.value.length&&a.end==this.value.length?(this.speak(this.value.substr(this.start,1),a.triggeredByUser),this.speak(this.value.substr(a.start))):this.start==this.end?(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected"))):this.start==a.start&&this.end<a.end?(this.speak(this.value.substr(this.end,a.end-this.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):
-this.start==a.start&&this.end>a.end?(this.speak(this.value.substr(a.end,this.end-a.end),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):this.end==a.end&&this.start>a.start?(this.speak(this.value.substr(a.start,this.start-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("added_to_selection"))):this.end==a.end&&this.start<a.start?(this.speak(this.value.substr(this.start,a.start-this.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("removed_from_selection"))):
-(this.speak(this.value.substr(a.start,a.end-a.start),a.triggeredByUser),this.speak(cvox.ChromeVox.msgs.getMsg("selected")))};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChanged=function(a){var b={};a.value.length<this.value.length&&(b=cvox.AbstractTts.PERSONALITY_DELETED);if(this.isPassword)this.speak((new goog.i18n.MessageFormat(cvox.ChromeVox.msgs.getMsg("dot"))).format({COUNT:1}),a.triggeredByUser,b);else{var c=this.value,d=c.length,e=a.value.length,f="",g=a.value,h=a.end;a.start<h&&h==e&&(f=g.substr(a.start),g=g.substr(0,a.start),h=a.start);var k=this.start,l=d-this.end;if(e>=k+l+(h-a.start)&&g.substr(0,k)==
-c.substr(0,k)&&g.substr(e-l)==c.substr(this.end))this instanceof cvox.ChromeVoxEditableContentEditable&&!(e<d||this.isWordBreakChar(a.value[e-1]||""))||this.describeTextChangedHelper(a,k,l,f,b);else if(k=a.start,l=e-h,this.start==this.end&&a.start==h&&g.substr(0,k)==c.substr(0,k)&&g.substr(e-l)==c.substr(d-l))this.describeTextChangedHelper(a,k,l,f,b);else{g+=f;if(g.length==c.length+1||g.length+1==c.length){if(g.length>c.length){if(0==g.indexOf(c)){this.speak(g[g.length-1],a.triggeredByUser,b);return}if(1==
-g.indexOf(c)){this.speak(g[0],a.triggeredByUser,b);return}}if(g.length<c.length){if(0==c.indexOf(g)){this.speak(c[c.length-1],a.triggeredByUser,b);return}if(1==c.indexOf(g)){this.speak(c[0],a.triggeredByUser,b);return}}}if(this.multiline)a.value.length<this.value.length&&this.speak(cvox.ChromeVox.msgs.getMsg("text_deleted"),a.triggeredByUser,b);else if(e<=this.maxShortPhraseLen)this.describeTextChangedHelper(a,0,0,"",b);else{for(k=0;k<d&&k<e&&c[k]==g[k];)k++;for(;0<k&&!this.isWordBreakChar(c[k-1]);)k--;
-for(l=0;l<d-k&&l<e-k&&c[d-l-1]==g[e-l-1];)l++;for(;0<l&&!this.isWordBreakChar(c[d-l]);)l--;this.describeTextChangedHelper(a,k,l,"",b)}}}};
-cvox.ChromeVoxEditableTextBase.prototype.describeTextChangedHelper=function(a,b,c,d,e){var f=this.value.length,g=a.value.length,f=f-b-c,h=this.value.substr(b,f),k=g-b-c;c=a.value.substr(b,k);var l="",g=a.triggeredByUser;if(1<k)l=c;else if(1==k)if((cvox.ChromeVox.typingEcho==cvox.TypingEcho.WORD||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)&&this.isWordBreakChar(c)&&0<b&&!this.isWordBreakChar(a.value.substr(b-1,1))){for(f=b;0<f&&!this.isWordBreakChar(a.value[f-1]);)f--;f<b?l=a.value.substr(f,
-b+1-f):(l=c,g=!1)}else{if(cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER||cvox.ChromeVox.typingEcho==cvox.TypingEcho.CHARACTER_AND_WORD)l=cvox.ChromeVoxEditableTextBase.eventTypingEcho?"":c}else 1<f&&!d?l=h+", deleted":1==f&&(l=h);d&&l?l+=", "+d:d&&(l=d);l&&this.speak(l,g,e)};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextCharacter=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousCharacter=function(){return!1};
-cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousWord=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousLine=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToNextParagraph=function(){return!1};cvox.ChromeVoxEditableTextBase.prototype.moveCursorToPreviousParagraph=function(){return!1};
-cvox.ChromeVoxEditableElement=function(a,b,c,d,e,f){cvox.ChromeVoxEditableTextBase.call(this,b,c,d,e,f);this.node=a;this.justSpokeDescription_=!1};goog.inherits(cvox.ChromeVoxEditableElement,cvox.ChromeVoxEditableTextBase);cvox.ChromeVoxEditableElement.prototype.changed=function(a){this.justSpokeDescription_&&this.value==a.value&&(this.value=a.value,this.start=a.start,this.end=a.end,this.justSpokeDescription_=!1);cvox.ChromeVoxEditableElement.superClass_.changed.call(this,a)};
-cvox.ChromeVoxEditableElement.prototype.getValue=function(){this.justSpokeDescription_=!0;return cvox.ChromeVoxEditableElement.superClass_.getValue.call(this)};cvox.ChromeVoxEditableElement.prototype.moveCursorToNextCharacter=function(){var a=this.node;a.selectionEnd++;a.selectionStart=a.selectionEnd;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousCharacter=function(){var a=this.node;a.selectionStart--;a.selectionEnd=a.selectionStart;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextWord=function(){var a=this.node,b=a.value.length,c=/\W+/gm,d=a.value.substring(a.selectionEnd),e=c.exec(d);null!==e&&0==e.index&&(e=c.exec(d));b=null===e?b:e.index+a.selectionEnd;a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousWord=function(){for(var a=this.node,b=/\W+/gm,c=a.value.substring(0,a.selectionStart),d=0;null!==b.exec(c);)b.lastIndex<a.selectionStart&&(d=b.lastIndex);a.selectionStart=a.selectionEnd=d;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToNextParagraph=function(){var a=this.node,b=a.value.length,c=a.selectionEnd>=b?b:a.value.indexOf("\n",a.selectionEnd);0>c&&(c=b);a.selectionStart=a.selectionEnd=c+1;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableElement.prototype.moveCursorToPreviousParagraph=function(){var a=this.node,b=0>=a.selectionStart?0:a.value.lastIndexOf("\n",a.selectionStart-2)+1;0>b&&(b=0);a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableHTMLInput=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,"password"===a.type,b)};goog.inherits(cvox.ChromeVoxEditableHTMLInput,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableHTMLInput.prototype.update=function(a){var b=this.node.value;a=new cvox.TextChangeEvent(b,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,a.value,a.selectionStart,a.selectionEnd,!1,b);this.multiline=!0;this.shadowIsCurrent_=!1};goog.inherits(cvox.ChromeVoxEditableTextArea,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableTextArea.prototype.update=function(a){this.node.value!=this.value&&(this.shadowIsCurrent_=!1);a=new cvox.TextChangeEvent(this.node.value,this.node.selectionStart,this.node.selectionEnd,a);this.changed(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineIndex=function(a){return this.getShadow().getLineIndex(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineStart=function(a){return this.getShadow().getLineStart(a)};cvox.ChromeVoxEditableTextArea.prototype.getLineEnd=function(a){return this.getShadow().getLineEnd(a)};
-cvox.ChromeVoxEditableTextArea.prototype.getShadow=function(){var a=cvox.ChromeVoxEditableTextArea.shadow_;a||(a=cvox.ChromeVoxEditableTextArea.shadow_=new cvox.EditableTextAreaShadow);this.shadowIsCurrent_||(a.update(this.node),this.shadowIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToNextLine=function(){var a=this.node,b=a.value.length;if(a.selectionEnd>=b)return!1;var c=this.getShadow(),d=c.getLineIndex(a.selectionEnd),e=c.getLineStart(d),e=a.selectionEnd-e,f=0==b?0:c.getLineIndex(b-1),b=d>=f?b:Math.min(c.getLineStart(d+1)+e,c.getLineEnd(d+1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableTextArea.prototype.moveCursorToPreviousLine=function(){var a=this.node;if(0>=a.selectionStart)return!1;var b=this.getShadow(),c=b.getLineIndex(a.selectionStart),d=b.getLineStart(c),d=a.selectionStart-d,b=0>=c?0:Math.min(b.getLineStart(c-1)+d,b.getLineEnd(c-1));a.selectionStart=a.selectionEnd=b;cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable=function(a,b){cvox.ChromeVoxEditableElement.call(this,a,"",0,0,!1,b);this.extractorIsCurrent_=!1;var c=this.getExtractor();this.value=c.getText();this.start=c.getStartIndex();this.end=c.getEndIndex();this.multiline=!0};goog.inherits(cvox.ChromeVoxEditableContentEditable,cvox.ChromeVoxEditableElement);
-cvox.ChromeVoxEditableContentEditable.prototype.update=function(a){this.extractorIsCurrent_=!1;a=new cvox.TextChangeEvent(this.getExtractor().getText(),this.getExtractor().getStartIndex(),this.getExtractor().getEndIndex(),a);this.changed(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineIndex=function(a){return this.getExtractor().getLineIndex(a)};cvox.ChromeVoxEditableContentEditable.prototype.getLineStart=function(a){return this.getExtractor().getLineStart(a)};
-cvox.ChromeVoxEditableContentEditable.prototype.getLineEnd=function(a){return this.getExtractor().getLineEnd(a)};cvox.ChromeVoxEditableContentEditable.prototype.getExtractor=function(){var a=cvox.ChromeVoxEditableContentEditable.extractor_;a||(a=cvox.ChromeVoxEditableContentEditable.extractor_=new cvox.ContentEditableExtractor);this.extractorIsCurrent_||(a.update(this.node),this.extractorIsCurrent_=!0);return a};
-cvox.ChromeVoxEditableContentEditable.prototype.describeSelectionChanged=function(a){a.triggeredByUser&&(this.start==this.end&&a.start==a.end&&1!=Math.abs(this.start-a.start)&&this.isLastChar(a)?this.speak(cvox.ChromeVox.msgs.getMsg("text_box_blank"),!0):cvox.ChromeVoxEditableContentEditable.superClass_.describeSelectionChanged.call(this,a))};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextCharacter=function(){window.getSelection().modify("move","forward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousCharacter=function(){window.getSelection().modify("move","backward","character");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};
-cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToNextParagraph=function(){window.getSelection().modify("move","forward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEditableContentEditable.prototype.moveCursorToPreviousParagraph=function(){window.getSelection().modify("move","backward","paragraph");cvox.ChromeVoxEventWatcher.handleTextChanged(!0);return!0};cvox.ChromeVoxEventSuspender=function(){};cvox.ChromeVoxEventSuspender.suspendLevel_=0;cvox.ChromeVoxEventSuspender.enterSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_+=1};cvox.ChromeVoxEventSuspender.exitSuspendEvents=function(){cvox.ChromeVoxEventSuspender.suspendLevel_-=1};cvox.ChromeVoxEventSuspender.areEventsSuspended=function(){return 0<cvox.ChromeVoxEventSuspender.suspendLevel_};
-cvox.ChromeVoxEventSuspender.withSuspendedEvents=function(a){return function(){cvox.ChromeVoxEventSuspender.enterSuspendEvents();var b=a.apply(this,arguments);cvox.ChromeVoxEventSuspender.exitSuspendEvents();return b}};cvox.ChromeVoxEventSuspender.makeSuspendableHandler=function(a,b){return function(){return cvox.ChromeVoxEventSuspender.areEventsSuspended()?b:a()}};cvox.Focuser={};
-cvox.Focuser.setFocus=function(a,b){var c=window.getSelection(),d;0<c.rangeCount&&(d=c.getRangeAt(0));document.activeElement&&!cvox.DomUtil.isDescendantOfNode(a,document.activeElement)&&document.activeElement.blur();a&&a.constructor==HTMLVideoElement&&(cvox.DomUtil.isFocusable(a)||a.setAttribute("tabIndex",0));if(b&&!cvox.DomUtil.isFocusable(a)){var e=cvox.DomUtil.findFocusableDescendant(a);e&&(a=e)}else for(;a&&!cvox.DomUtil.isFocusable(a);)a=a.parentNode;cvox.DomUtil.isFocusable(a)?"IFRAME"!=a.tagName&&
-(cvox.ChromeVoxEventSuspender.areEventsSuspended()?(cvox.Focuser.shouldEnterSuspendEvents_(a)&&cvox.ChromeVoxEventSuspender.enterSuspendEvents(),window.setTimeout(function(){a.focus();cvox.ChromeVoxEventSuspender.exitSuspendEvents()},0)):window.setTimeout(function(){a.focus()},0)):document.activeElement&&"BODY"!=document.activeElement.tagName&&document.activeElement.blur();cvox.DomUtil.isInputTypeText(a)?a.select():d&&(c.removeAllRanges(),c.addRange(d))};
-cvox.Focuser.shouldEnterSuspendEvents_=function(a){if(a.constructor&&a.constructor==HTMLVideoElement)return!1;if(a.hasAttribute)switch(a.getAttribute("type")){case "time":case "date":case "week":case "month":return!1}return!0};cvox.ChromeVoxHTMLMediaWidget=function(a){var b=this;this.mediaElem_=a;this.keyListener_=function(a){b.eventHandler_(a)};this.blurListener_=function(){b.shutdown()};this.mediaElem_.addEventListener("keydown",this.keyListener_,!1);this.mediaElem_.addEventListener("keyup",this.keyListener_,!1);this.mediaElem_.addEventListener("blur",this.blurListener_,!1)};
-cvox.ChromeVoxHTMLMediaWidget.prototype.shutdown=function(){this.mediaElem_.removeEventListener("blur",this.blurListener_,!1);this.mediaElem_.removeEventListener("keydown",this.keyListener_,!1);this.mediaElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLMediaWidget.prototype.jumpToTime_=function(a){0>a&&(a=0);a>this.mediaElem_.duration&&(a=this.mediaElem_.duration);this.mediaElem_.currentTime=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.setVolume_=function(a){0>a&&(a=0);1<a&&(a=1);this.mediaElem_.volume=a};
-cvox.ChromeVoxHTMLMediaWidget.prototype.eventHandler_=function(a){"keydown"==a.type&&(13==a.keyCode||32==a.keyCode?this.mediaElem_.paused?this.mediaElem_.play():this.mediaElem_.pause():39==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime+this.mediaElem_.duration/10):37==a.keyCode?this.jumpToTime_(this.mediaElem_.currentTime-this.mediaElem_.duration/10):38==a.keyCode?this.setVolume_(this.mediaElem_.volume+0.1):40==a.keyCode&&this.setVolume_(this.mediaElem_.volume-0.1))};cvox.ChromeVoxHTMLTimeWidget=function(a,b){var c=this;this.timeElem_=a;this.timeTts_=b;this.pMinutes_=this.pHours_=-1;this.pMilliseconds_=this.pSeconds_=0;this.pAmpm_="";this.pos_=0;this.maxPos_=2;this.keyListener_=function(a){c.eventHandler_(a)};this.blurListener_=function(){c.shutdown()};if(this.timeElem_.hasAttribute("step")){var d=this.timeElem_.getAttribute("step");0<d&&(this.maxPos_=1<=d?3:4)}0==this.timeElem_.value.length&&this.forceInitTime_();for(d=0;d<this.maxPos_;d++){var e=document.createEvent("KeyboardEvent");
-e.initKeyboardEvent("keydown",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e);e=document.createEvent("KeyboardEvent");e.initKeyboardEvent("keyup",!0,!0,window,"Left",0,!1,!1,!1,!1);this.timeElem_.dispatchEvent(e)}this.timeElem_.addEventListener("keydown",this.keyListener_,!1);this.timeElem_.addEventListener("keyup",this.keyListener_,!1);this.timeElem_.addEventListener("blur",this.blurListener_,!1);this.update_(!0)};
-cvox.ChromeVoxHTMLTimeWidget.prototype.shutdown=function(){this.timeElem_.removeEventListener("blur",this.blurListener_,!1);this.timeElem_.removeEventListener("keydown",this.keyListener_,!1);this.timeElem_.removeEventListener("keyup",this.keyListener_,!1)};cvox.ChromeVoxHTMLTimeWidget.prototype.forceInitTime_=function(){this.timeElem_.setAttribute("value","12:00")};
-cvox.ChromeVoxHTMLTimeWidget.prototype.handlePosChange_=function(){0>this.pos_&&(this.pos_=0);this.pos_>this.maxPos_&&(this.pos_=this.maxPos_);if(this.pos_==this.maxPos_)this.pAmpm_="";else switch(this.pos_){case 0:this.pHours_=-1;break;case 1:this.pMinutes_=-1;break;case 2:this.pSeconds_=-1;break;case 3:this.pMilliseconds_=-1}};
-cvox.ChromeVoxHTMLTimeWidget.prototype.update_=function(a){var b=this.timeElem_.value.split(":");if(1>b.length)this.forceInitTime_();else{var c=b[0],d=-1,e=0,f=0,g=cvox.ChromeVox.msgs.getMsg("timewidget_am");1<b.length&&(d=b[1]);2<b.length&&(b=b[2].split("."),e=b[0],1<b.length&&(f=b[1]));12<c&&(c-=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));12==c&&(g=cvox.ChromeVox.msgs.getMsg("timewidget_pm"));0==c&&(c=12,g=cvox.ChromeVox.msgs.getMsg("timewidget_am"));b="";a&&(b=cvox.DomUtil.getName(this.timeElem_,
-!0,!0)+"\n");c!=this.pHours_&&(b=b+c+" "+cvox.ChromeVox.msgs.getMsg("timewidget_hours")+"\n",this.pHours_=c);d!=this.pMinutes_&&(b=b+d+" "+cvox.ChromeVox.msgs.getMsg("timewidget_minutes")+"\n",this.pMinutes_=d);e!=this.pSeconds_&&(b=b+e+" "+cvox.ChromeVox.msgs.getMsg("timewidget_seconds")+"\n",this.pSeconds_=e);f!=this.pMilliseconds_&&(b=b+f+" "+cvox.ChromeVox.msgs.getMsg("timewidget_milliseconds")+"\n",this.pMilliseconds_=f);g!=this.pAmpm_&&(b+=g,this.pAmpm_=g);0<b.length&&this.timeTts_.speak(b,
-0,null)}};cvox.ChromeVoxHTMLTimeWidget.prototype.eventHandler_=function(a){var b=!1;if("keydown"==a.type){if(9==a.keyCode&&!a.shiftKey||39==a.keyCode)this.pos_++,this.handlePosChange_(),b=!0;if(9==a.keyCode&&a.shiftKey||37==a.keyCode)this.pos_--,this.handlePosChange_(),b=!0}this.update_(b)};cvox.ActiveIndicator=function(){this.lastMoveTime_=0;this.zoom_=1;this.updateIndicatorTimeoutId_=this.lastClientRects_=this.lastSyncTarget_=this.container_=null;this.blurred_=!1;window.addEventListener("focus",goog.bind(function(){this.blurred_=!1;this.container_&&this.container_.classList.remove("cvox_indicator_window_not_focused")},this),!1);window.addEventListener("blur",goog.bind(function(){this.blurred_=!0;this.container_&&this.container_.classList.add("cvox_indicator_window_not_focused")},this),
-!1)};cvox.ActiveIndicator.STYLE=".cvox_indicator_container { position: absolute !important; left: 0 !important; top: 0 !important; z-index: 2147483647 !important; pointer-events: none !important;}.cvox_indicator_window_not_focused { visibility: hidden !important;}.cvox_indicator_pulsing { -webkit-animation: cvox_indicator_pulsing_animation 0s 2 alternate !important; -webkit-animation-timing-function: ease-in-out !important;}.cvox_indicator_region { opacity: 0 !important; -webkit-transition: opacity 1s !important;}.cvox_indicator_visible { opacity: 1 !important;}.cvox_indicator_container .cvox_indicator_region * { position:absolute !important; box-shadow: 0 0 4px 4px #f7983a !important; border-radius: 6px !important; -webkit-transition: none !important;}.cvox_indicator_animate_normal .cvox_indicator_region * { -webkit-transition: all 0.3s !important;}.cvox_indicator_animate_quick .cvox_indicator_region * { -webkit-transition: all 0.1s !important;}.cvox_indicator_top { border-radius: inherit inherit 0 0 !important;}.cvox_indicator_middle_nw { border-radius: inherit 0 0 0 !important;}.cvox_indicator_middle_ne { border-radius: 0 inherit 0 0 !important;}.cvox_indicator_middle_se { border-radius: 0 0 inherit 0 !important;}.cvox_indicator_middle_sw { border-radius: 0 0 0 inherit !important;}.cvox_indicator_bottom { border-radius: 0 0 inherit inherit !important;}@-webkit-keyframes cvox_indicator_pulsing_animation { 0% {opacity: 1.0} 50% {opacity: 0.5} 100% {opacity: 1.0}}";
-cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS=100;cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS=300;cvox.ActiveIndicator.MARGIN=8;cvox.ActiveIndicator.prototype.removeFromDom=function(){this.container_&&this.container_.parentElement&&this.container_.parentElement.removeChild(this.container_)};cvox.ActiveIndicator.prototype.syncToNode=function(a){a&&(a==document.body?this.removeFromDom():this.syncToNodes([a]))};
-cvox.ActiveIndicator.prototype.syncToNodes=function(a){var b=this.clientRectsFromNodes_(a);this.moveIndicator_(b,cvox.ActiveIndicator.MARGIN);this.lastSyncTarget_=a;this.lastClientRects_=b;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToRange=function(a){var b=cvox.ActiveIndicator.MARGIN;a.startContainer==a.endContainer&&a.startOffset+1==a.endOffset&&(b=1);var c=a.getClientRects();this.moveIndicator_(c,b);this.lastSyncTarget_=a;this.lastClientRects_=c;null!=this.updateIndicatorTimeoutId_&&(window.clearTimeout(this.updateIndicatorTimeoutId_),this.updateIndicatorTimeoutId_=null)};
-cvox.ActiveIndicator.prototype.syncToCursorSelection=function(a){if(a.start.node==a.end.node&&a.start.index==a.end.index)this.syncToNode(a.start.node);else{var b=document.createRange();b.setStart(a.start.node,a.start.index);b.setEnd(a.end.node,a.end.index);this.syncToRange(b)}};cvox.ActiveIndicator.prototype.updateIndicatorIfChanged=function(){this.updateIndicatorTimeoutId_||(this.updateIndicatorTimeoutId_=window.setTimeout(goog.bind(function(){this.handleUpdateIndicatorIfChanged_()},this),100))};
-cvox.ActiveIndicator.prototype.handleUpdateIndicatorIfChanged_=function(){this.updateIndicatorTimeoutId_=null;if(this.lastSyncTarget_){var a;if((a=this.lastSyncTarget_ instanceof Array?this.clientRectsFromNodes_(this.lastSyncTarget_):this.lastSyncTarget_.getClientRects())&&0!=a.length){var b=!1;if(a.length!=this.lastClientRects_.length)b=!0;else for(var c=0;c<this.lastClientRects_.length;++c){var d=this.lastClientRects_[c],e=a[c];if(d.top!=e.top||d.right!=e.right||d.bottom!=e.bottom||d.left!=d.left){b=
-!0;break}}b&&(this.moveIndicator_(a,cvox.ActiveIndicator.MARGIN),this.lastClientRects_=a)}else this.syncToNode(document.body)}};cvox.ActiveIndicator.prototype.clientRectsFromNodes_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(d.constructor==Text){var e=document.createRange();e.selectNode(d);e=e.getClientRects()}else{for(;!d.getClientRects;)d=d.parentElement;e=d.getClientRects()}for(d=0;d<e.length;++d)b.push(e[d])}return b};
-cvox.ActiveIndicator.prototype.moveIndicator_=function(a,b){if(document.body.isContentEditable)this.removeFromDom();else{var c=a.length;if(0!=c){var d,e;"static"!=window.getComputedStyle(document.body,null).position?(d=-document.body.getBoundingClientRect().left,e=-document.body.getBoundingClientRect().top):"static"!=window.getComputedStyle(document.documentElement,null).position?(d=-document.documentElement.getBoundingClientRect().left,e=-document.documentElement.getBoundingClientRect().top):(d=
-window.pageXOffset,e=window.pageYOffset);for(var f=[],g=0;g<c;g++)f.push(this.inset_(a[g],d,e,-d,-e));if(!this.container_||!this.container_.parentElement){g=document.getElementsByClassName("cvox_indicator_container");for(c=0;d=g[c];c++)d.parentNode&&d.parentNode.removeChild(d);this.container_=this.createDiv_(document.body,"cvox_indicator_container",document.body.firstChild)}g=document.createElement("style");g.id="cvox_indicator_style";g.innerHTML=cvox.ActiveIndicator.STYLE;cvox.DomUtil.addNodeToHead(g,
-g.id);g=(new Date).getTime();c=g-this.lastMoveTime_;this.container_.className="cvox_indicator_container";document.hasFocus()&&!this.blurred_||this.container_.classList.add("cvox_indicator_window_not_focused");c>cvox.ActiveIndicator.NORMAL_ANIM_DELAY_MS?this.container_.classList.add("cvox_indicator_animate_normal"):c>cvox.ActiveIndicator.QUICK_ANIM_DELAY_MS&&this.container_.classList.add("cvox_indicator_animate_quick");this.lastMoveTime_=g;this.computeZoomLevel_();for(window.setTimeout(goog.bind(function(){this.container_.classList.add("cvox_indicator_pulsing")},
-this),0);1<this.container_.childElementCount;)this.container_.removeChild(this.container_.lastElementChild);d=[[f[0]]];e=[f[0]];for(g=1;g<f.length;g++){for(var h=!1,c=0;c<d.length&&!h;c++)this.intersects_(f[g],e[c])&&(d[c].push(f[g]),e[c]=this.union_(e[c],f[g]),h=!0);h||(d.push([f[g]]),e.push(f[g]))}do for(f=!1,g=0;g<d.length-1&&!f;g++)for(c=g+1;c<d.length&&!f;c++)this.intersects_(e[g],e[c])&&(d[g]=d[g].concat(d[c]),e[g]=this.union_(e[g],e[c]),d.splice(c,1),e.splice(c,1),f=!0);while(f);for(g=0;g<
-d.length;g++)d[g].sort(function(a,b){return a.top!=b.top?a.top-b.top:a.left-b.left});for(g=0;g<d.length;g++)f=null,0==g&&1==this.container_.childElementCount&&6==this.container_.children[0].childElementCount&&(f=this.container_.children[0]),this.updateIndicatorRegion_(d[g],f,b)}}};
-cvox.ActiveIndicator.prototype.updateIndicatorRegion_=function(a,b,c){if(b)var d=b.children[0],e=b.children[1],f=b.children[2],g=b.children[3],h=b.children[4],k=b.children[5];else b=this.createDiv_(this.container_,"cvox_indicator_region"),window.setTimeout(function(){b.classList.add("cvox_indicator_visible")},0),d=this.createDiv_(b,"cvox_indicator_top"),e=this.createDiv_(b,"cvox_indicator_middle_nw"),f=this.createDiv_(b,"cvox_indicator_middle_ne"),g=this.createDiv_(b,"cvox_indicator_middle_sw"),h=
-this.createDiv_(b,"cvox_indicator_middle_se"),k=this.createDiv_(b,"cvox_indicator_bottom");for(var l=a[0],m=Math.floor((l.top+l.bottom)/2),p=1,q=a.length;p<q&&a[p].top<m;)l=this.union_(l,a[p]),m=Math.floor((l.top+l.bottom)/2),p++;if(p==q)l=this.inset_(l,-c,-c,-c,-c),a=Math.floor((3*l.top+1*l.bottom)/4),c=Math.floor((2*l.top+2*l.bottom)/4),m=Math.floor((1*l.top+3*l.bottom)/4),this.setElementCoords_(d,l.left,l.top,l.right,a,!0,!0,!0,!1),this.setElementCoords_(e,l.left,a,l.left,c,!0,!0,!1,!1),this.setElementCoords_(g,
-l.left,c,l.left,m,!0,!1,!1,!0),this.setElementCoords_(f,l.right,a,l.right,c,!1,!0,!0,!1),this.setElementCoords_(h,l.right,c,l.right,m,!1,!1,!0,!0),this.setElementCoords_(k,l.left,m,l.right,l.bottom,!0,!1,!0,!0);else{for(var m=a[q-1],n=Math.floor((m.top+m.bottom)/2),q=q-2;0<=q&&a[q].bottom>n;)m=this.union_(m,a[q]),n=Math.floor((m.top+m.bottom)/2),q--;l=this.inset_(l,-c,-c,-c,c);m=this.inset_(m,-c,c,-c,-c);if(p>q)n=this.union_(l,m),n.top=l.bottom,n.bottom=m.top,n.height=Math.floor((n.top+n.bottom)/
-2);else{n=a[p];for(p+=1;p<=q;)n=this.union_(n,a[p]),p++;n=this.inset_(n,-c,-c,-c,-c);n.left=Math.min(n.left,l.left,m.left);n.right=Math.max(n.right,l.right,m.right);n.width=n.right-n.left}l.right>n.right-40&&(l.right=n.right,l.width=l.right-l.left);l.left<n.left+40&&(l.left=n.left,l.width=l.right-l.left);m.right>n.right-40&&(m.right=n.right,m.width=m.right-m.left);m.left<n.left+40&&(m.left=n.left,m.width=m.right-m.left);a=Math.floor((n.top+n.bottom)/2);this.setElementRect_(d,l,!0,!0,!0,!1);this.setElementRect_(k,
-m,!0,!1,!0,!0);this.setElementCoords_(e,n.left,l.bottom,l.left,a,!0,!0,!1,!1);this.setElementCoords_(f,l.right,l.bottom,n.right,a,!1,!0,!0,!1);this.setElementCoords_(g,n.left,a,m.left,m.top,!0,!1,!1,!0);this.setElementCoords_(h,m.right,a,n.right,m.top,!1,!1,!0,!0)}};cvox.ActiveIndicator.prototype.intersects_=function(a,b){var c=2*cvox.ActiveIndicator.MARGIN;return b.left<=a.right+c&&b.right>=a.left-c&&b.top<=a.bottom+c&&b.bottom>=a.top-c};
-cvox.ActiveIndicator.prototype.union_=function(a,b){var c={left:Math.min(a.left,b.left),top:Math.min(a.top,b.top),right:Math.max(a.right,b.right),bottom:Math.max(a.bottom,b.bottom)};c.width=c.right-c.left;c.height=c.bottom-c.top;return c};cvox.ActiveIndicator.prototype.inset_=function(a,b,c,d,e){a={left:a.left+b,top:a.top+c,right:a.right-d,bottom:a.bottom-e};a.width=a.right-a.left;a.height=a.bottom-a.top;return a};
-cvox.ActiveIndicator.prototype.createDiv_=function(a,b,c){var d=document.createElement("div");d.className=b;c?a.insertBefore(d,c):a.appendChild(d);return d};cvox.ActiveIndicator.prototype.fixZoom_=function(a){return(Math.round(a*this.zoom_)+0.1)/this.zoom_};cvox.ActiveIndicator.prototype.fixZoomSum_=function(a,b){var c=Math.round(a*this.zoom_),d=Math.round((a+b)*this.zoom_),c=d-c;return(c+0.1)/this.zoom_};
-cvox.ActiveIndicator.prototype.setElementCoords_=function(a,b,c,d,e,f,g,h,k){var l=d-b,m=e-c;d-=b;e-=c;var p=f?-20:0,q=g?-20:0,n=h?20:0,s=k?20:0;0==d&&(h?(b-=5,d+=5):f&&(d+=10),s=q=10,c-=10,e+=20);k||(e+=5);g||(c-=5,e+=5,q+=5,s+=5);n=0==n&&0==l?1:this.fixZoomSum_(b,n+l);s=this.fixZoomSum_(c,s+m);a.style.left=this.fixZoom_(b)+"px";a.style.top=this.fixZoom_(c)+"px";a.style.width=this.fixZoomSum_(b,d)+"px";a.style.height=this.fixZoomSum_(c,e)+"px";a.style.clip="rect("+[q,n,s,p].join("px ")+"px)"};
-cvox.ActiveIndicator.prototype.setElementRect_=function(a,b,c,d,e,f){this.setElementCoords_(a,b.left,b.top,b.right,b.bottom,c,d,e,f)};
-cvox.ActiveIndicator.prototype.computeZoomLevel_=function(){if(window.innerHeight!==this.innerHeight_||window.innerWidth!==this.innerWidth_){this.innerHeight_=window.innerHeight;this.innerWidth_=window.innerWidth;var a=document.createElement("div");a.innerHTML="X";a.setAttribute("style","font: 5000px/1em sans-serif !important; -webkit-text-size-adjust:none !important; visibility:hidden !important; left: -10000px !important; top: -10000px !important; position:absolute !important;");document.body.appendChild(a);
-var b=5E3/a.clientHeight,b=Math.round(500*b)/500;0.1<b&&10>b&&(this.zoom_=b);a.parentNode.removeChild(a)}};cvox.NodeBreadcrumb=function(){this.cvTagCounter_=0};goog.addSingletonGetter(cvox.NodeBreadcrumb);cvox.NodeBreadcrumb.TOUCHED_TAG="chromevoxtag";cvox.NodeBreadcrumb.NEEDED_TAG_="chromevoxneeded";
-cvox.NodeBreadcrumb.prototype.tagCurrentNode=function(){for(var a,b=cvox.ChromeVox.navigationManager.getCurrentNode();b&&!b.hasAttribute;)b=b.parentNode;b?b.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a=b.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):(a=this.cvTagCounter_,b.setAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG,a),this.cvTagCounter_++):a=-1;return a};
-cvox.NodeBreadcrumb.prototype.smartStart_=function(a){for(var b=0;b<a.children.length;++b){var c=a.children[b];this.smartStart_(c);c.getAttribute&&!goog.isNull(c.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))&&this.setNeeded_(c)}};cvox.NodeBreadcrumb.prototype.setNeeded_=function(a){a&&a.getAttribute&&goog.isNull(a.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&(a.setAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_,!0),"body"!==a.nodeName&&this.setNeeded_(a.parentElement))};
-cvox.NodeBreadcrumb.prototype.smartClone_=function(a){var b={};b[cvox.NodeBreadcrumb.TOUCHED_TAG]=!0;b[cvox.NodeBreadcrumb.NEEDED_TAG_]=!0;if(a.getAttribute&&a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG))return cvox.DomUtil.deepClone(a,b);for(var b=cvox.DomUtil.shallowChildlessClone(a,b),c=0;c<a.childNodes.length;++c){var d=a.childNodes[c];d.getAttribute&&!goog.isNull(d.getAttribute(cvox.NodeBreadcrumb.NEEDED_TAG_))&&b.appendChild(this.smartClone_(d))}return b};
-cvox.NodeBreadcrumb.prototype.dumpWalkedDom=function(){this.smartStart_(document.body);return this.smartClone_(document.body)};cvox.NodeBreadcrumb.getCurrentNodeTag=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a&&!a.hasAttribute;)a=a.parentNode;return a&&a.hasAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG)?a.getAttribute(cvox.NodeBreadcrumb.TOUCHED_TAG):-1};cvox.HistoryEvent=function(a){this.spoken_=[];a?this.userCommand_=a.cmd:this.startTime_=(new Date).getTime()};cvox.HistoryEvent.prototype.withUserCommand=function(a){if(this.userCommand_)return window.console.error("Two user commands on "+a,this),this;this.userCommand_=a;return this};cvox.HistoryEvent.prototype.speak=function(a){this.spoken_.push(a);return this};
-cvox.HistoryEvent.prototype.done=function(){this.endTime_=(new Date).getTime();cvox.NodeBreadcrumb.getInstance().tagCurrentNode();window.console.log("User command done.",this);return this};cvox.HistoryEvent.prototype.outputObject=function(){return{start:this.startTime_,end:this.endTime_,cmd:this.userCommand_,spoken:this.spoken_}};
-cvox.HistoryEvent.prototype.outputHTML=function(){var a=document.createElement("div");a.className="cvoxHistoryEvent";var b=this.endTime_-this.startTime_;a.innerHTML=this.userCommand_+" ("+b+"ms)";for(b=0;b<this.spoken_.length;b++){var c=document.createElement("div");c.className="cvoxHistoryEventSpoken";c.innerHTML=this.spoken_[b].substr(0,20);20<this.spoken_[b].length&&(c.innerHTML+="...");a.appendChild(c)}return a};
-cvox.HistoryEvent.prototype.outputJs=function(){var a="this.waitForCalm(this.userCommand, '"+this.userCommand_+"')";return a=0<this.spoken_.length?a+("\n .waitForCalm(this.assertSpoken, '"+cvox.DomUtil.collapseWhitespace(this.spoken_.join(" "))+"');\n"):a+";\n"};cvox.History=function(){this.recording_=!1;this.events_=[];this.styleDiv_=this.listDiv_=this.mainDiv_=this.currentEvent_=null;this.nodeBreadcrumb_=cvox.NodeBreadcrumb.getInstance()};goog.addSingletonGetter(cvox.History);
-cvox.History.prototype.addListDiv_=function(){this.mainDiv_=document.createElement("div");this.mainDiv_.style.position="fixed";this.mainDiv_.style.bottom="0";this.mainDiv_.style.right="0";this.mainDiv_.style.zIndex="999";this.listDiv_=document.createElement("div");this.listDiv_.id="cvoxEventList";this.mainDiv_.appendChild(this.listDiv_);var a=document.createElement("div"),b=document.createElement("button");b.onclick=cvox.History.sendToFeedback;b.innerHTML="Create bug";a.appendChild(b);this.mainDiv_.appendChild(a);
-a=document.createElement("div");b=document.createElement("button");b.onclick=cvox.History.dumpJs;b.innerHTML="Dump test case";a.appendChild(b);this.mainDiv_.appendChild(a);document.body.appendChild(this.mainDiv_);this.styleDiv_=document.createElement("style");this.styleDiv_.innerHTML=".cvoxHistoryEventSpoken { color: gray; font-size: 75% }";document.body.appendChild(this.styleDiv_)};
-cvox.History.prototype.removeListDiv_=function(){document.body.removeChild(this.mainDiv_);document.body.removeChild(this.styleDiv_);this.styleDiv_=this.listDiv_=this.mainDiv_=null};
-cvox.History.prototype.addBigTextBox_=function(){function a(a,b){var c=document.createElement("button");c.onclick=b;c.innerHTML=a;d.appendChild(c)}var b=document.createElement("div");b.style.position="fixed";b.style.top="0";b.style.left="0";b.style.zIndex="999";var c=document.createElement("textarea");c.style.width="500px";c.style.height="500px";c.innerHTML=this.dumpJsOutput_();b.appendChild(c);var d=document.createElement("div");b.appendChild(d);a("Close dialog",function(){document.body.removeChild(b)});
-a("Remove fluff",goog.bind(function(){c.innerHTML=this.dumpJsOutput_(["stopSpeech","toggleKeyPrefix"])},this));document.body.appendChild(b)};cvox.History.prototype.startRecording=function(){this.recording_=!0;this.addListDiv_()};cvox.History.prototype.stopRecording=function(){this.recording_=!1;this.removeListDiv_();this.events_=[];this.currentEvent_=null};
-cvox.History.prototype.enterUserCommand=function(a){this.recording_&&(this.currentEvent_&&window.console.error("User command "+a+" overlaps current event",this.currentEvent_),this.currentEvent_=(new cvox.HistoryEvent).withUserCommand(a),this.events_.push(this.currentEvent_))};cvox.History.prototype.exitUserCommand=function(){this.recording_&&this.currentEvent_&&(this.currentEvent_.done(),this.listDiv_.appendChild(this.currentEvent_.outputHTML()),this.currentEvent_=null)};
-cvox.History.prototype.speak=function(a){if(!this.recording_)return this;if(!this.currentEvent_)return window.console.error("Speak called outside of a user command."),this;this.currentEvent_.speak(a);return this};cvox.History.prototype.isSpeaking=function(){return!1};cvox.History.prototype.stop=function(){};cvox.History.prototype.increaseOrDecreaseProperty=function(){};cvox.History.prototype.getDefaultProperty=function(){};
-cvox.History.dumpJs=function(){var a=cvox.History.getInstance();a.addBigTextBox_();window.console.log(a.dumpJsOutput_())};cvox.History.prototype.dumpJsOutput_=function(a){var b={};a&&a.forEach(function(a){b[a]=1});return["/*DOC: += ",this.nodeBreadcrumb_.dumpWalkedDom().innerHTML,"*/\n"].concat(this.events_.filter(function(a){return!(a.userCommand_ in b)}).map(function(a){return a.outputJs()})).join("")};
-cvox.History.sendToFeedback=function(){var a=cvox.History.getInstance(),a=a.events_.map(function(a){return a.outputObject()}),b=document.createElement("script");b.type="text/javascript";b.src="https://www.gstatic.com/feedback/api.js";var c=document.createElement("script");c.type="text/javascript";c.innerHTML="userfeedback.api.startFeedback({ productId: '76092' }, { cvoxHistory: "+cvox.ChromeVoxJSON.stringify(cvox.ChromeVoxJSON.stringify(a))+" });";b.onload=function(){document.body.appendChild(c)};
-document.body.appendChild(b)};cvox.KeySequence=function(a,b,c,d){this.doubleTap=!!d;this.cvoxModifier=void 0==b?this.isCVoxModifierActive(a):b;this.stickyMode=!!a.stickyMode;this.prefixKey=!!a.keyPrefix;this.skipStripping=!!c;if(this.stickyMode&&this.prefixKey)throw"Prefix key and sticky mode cannot both be enabled: "+a;a=this.resolveChromeOSSpecialKeys_(a);this.keys={ctrlKey:[],searchKeyHeld:[],altKey:[],altGraphKey:[],shiftKey:[],metaKey:[],keyCode:[]};this.extractKey_(a)};
-cvox.KeySequence.KEY_PRESS_CODE={39:222,44:188,45:189,46:190,47:191,59:186,91:219,92:220,93:221};cvox.KeySequence.doubleTapCache=[];cvox.KeySequence.prototype.addKeyEvent=function(a){if(1<this.keys.keyCode.length)return!1;this.extractKey_(a);return!0};cvox.KeySequence.prototype.equals=function(a){if(!this.checkKeyEquality_(a)||this.doubleTap!=a.doubleTap)return!1;if(this.cvoxModifier===a.cvoxModifier)return!0;a=this.cvoxModifier?a:this;return a.stickyMode||a.prefixKey};
-cvox.KeySequence.prototype.extractKey_=function(a){for(var b in this.keys)if("keyCode"==b){var c;"keypress"==a.type&&97<=a[b]&&122>=a[b]?c=a[b]-32:"keypress"==a.type&&(c=cvox.KeySequence.KEY_PRESS_CODE[a[b]]);this.keys[b].push(c||a[b])}else this.isKeyModifierActive(a,b)?this.keys[b].push(!0):this.keys[b].push(!1);this.cvoxModifier&&this.rationalizeKeys_()};
-cvox.KeySequence.prototype.rationalizeKeys_=function(){if(!this.skipStripping){var a=cvox.ChromeVox.modKeyStr.split(/\+/g),b=this.keys.keyCode.length-1;-1!=a.indexOf("Ctrl")&&(this.keys.ctrlKey[b]=!1);-1!=a.indexOf("Alt")&&(this.keys.altKey[b]=!1);-1!=a.indexOf("Shift")&&(this.keys.shiftKey[b]=!1);var c=this.getMetaKeyName_();if(-1!=a.indexOf(c))if("Search"==c)this.keys.searchKeyHeld[b]=!1;else if("Cmd"==c||"Win"==c)this.keys.metaKey[b]=!1}};
-cvox.KeySequence.prototype.getMetaKeyName_=function(){return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win"};cvox.KeySequence.prototype.checkKeyEquality_=function(a){for(var b in this.keys)for(var c=this.keys[b].length;c--;)if(this.keys[b][c]!==a.keys[b][c])return!1;return!0};cvox.KeySequence.prototype.length=function(){return this.keys.keyCode.length};cvox.KeySequence.prototype.isModifierKey=function(a){return 16==a||17==a||18==a||91==a||93==a};
-cvox.KeySequence.prototype.isCVoxModifierActive=function(a){var b=cvox.ChromeVox.modKeyStr.split(/\+/g);this.isKeyModifierActive(a,"ctrlKey")&&(b=b.filter(function(a){return"Ctrl"!=a}));this.isKeyModifierActive(a,"altKey")&&(b=b.filter(function(a){return"Alt"!=a}));this.isKeyModifierActive(a,"shiftKey")&&(b=b.filter(function(a){return"Shift"!=a}));if(this.isKeyModifierActive(a,"metaKey")||this.isKeyModifierActive(a,"searchKeyHeld"))var c=this.getMetaKeyName_(),b=b.filter(function(a){return a!=c});
-return 0==b.length};cvox.KeySequence.prototype.isKeyModifierActive=function(a,b){switch(b){case "ctrlKey":return a.ctrlKey||17==a.keyCode;case "altKey":return a.altKey||18==a.keyCode;case "shiftKey":return a.shiftKey||16==a.keyCode;case "metaKey":return a.metaKey||!cvox.ChromeVox.isChromeOS&&91==a.keyCode;case "searchKeyHeld":return cvox.ChromeVox.isChromeOS&&91==a.keyCode||a.searchKeyHeld}return!1};
-cvox.KeySequence.deserialize=function(a){var b={};b.stickyMode=void 0==a.stickyMode?!1:a.stickyMode;b.prefixKey=void 0==a.prefixKey?!1:a.prefixKey;var c=1<a.keys.keyCode.length,d={},e;for(e in a.keys)b[e]=a.keys[e][0],c&&(d[e]=a.keys[e][1]);e=new cvox.KeySequence(b,a.cvoxModifier,!0,a.doubleTap);c&&(cvox.ChromeVox.sequenceSwitchKeyCodes.push(new cvox.KeySequence(b,a.cvoxModifier)),e.addKeyEvent(d));a.doubleTap&&cvox.KeySequence.doubleTapCache.push(e);return e};
-cvox.KeySequence.fromStr=function(a){var b={},c={},d;d=-1==a.indexOf(">")?!1:!0;var e=!1;b.stickyMode=!1;b.prefixKey=!1;a=a.split("+");for(var f=0;f<a.length;f++)for(var g=a[f].split(">"),h=0;h<g.length;h++){if("#"==g[h].charAt(0)){var k=parseInt(g[h].substr(1),10);0<h?c.keyCode=k:b.keyCode=k}k=g[h];1==g[h].length?0<h?c.keyCode=g[h].charCodeAt(0):b.keyCode=g[h].charCodeAt(0):(0<h?cvox.KeySequence.setModifiersOnEvent_(k,c):cvox.KeySequence.setModifiersOnEvent_(k,b),"Cvox"==k&&(e=!0))}b=new cvox.KeySequence(b,
-e);d&&b.addKeyEvent(c);return b};cvox.KeySequence.setModifiersOnEvent_=function(a,b){"Ctrl"==a?(b.ctrlKey=!0,b.keyCode=17):"Alt"==a?(b.altKey=!0,b.keyCode=18):"Shift"==a?(b.shiftKey=!0,b.keyCode=16):"Search"==a?(b.searchKeyHeld=!0,b.keyCode=91):"Cmd"==a?(b.metaKey=!0,b.keyCode=91):"Win"==a?(b.metaKey=!0,b.keyCode=91):"Insert"==a&&(b.keyCode=45)};
-cvox.KeySequence.prototype.resolveChromeOSSpecialKeys_=function(a){if(!this.cvoxModifier||this.stickyMode||this.prefixKey||!cvox.ChromeVox.isChromeOS)return a;var b={},c;for(c in a)b[c]=a[c];switch(b.keyCode){case 33:b.keyCode=38;break;case 34:b.keyCode=40;break;case 35:b.keyCode=39;break;case 36:b.keyCode=37;break;case 45:b.keyCode=190;break;case 46:b.keyCode=8;break;case 112:b.keyCode=49;break;case 113:b.keyCode=50;break;case 114:b.keyCode=51;break;case 115:b.keyCode=52;break;case 116:b.keyCode=
-53;break;case 117:b.keyCode=54;break;case 118:b.keyCode=55;break;case 119:b.keyCode=56;break;case 120:b.keyCode=57;break;case 121:b.keyCode=48;break;case 122:b.keyCode=189;break;case 123:b.keyCode=187}return b};cvox.KeyUtil=function(){};cvox.KeyUtil.modeKeyPressTime=0;cvox.KeyUtil.sequencing=!1;cvox.KeyUtil.prevKeySequence=null;cvox.KeyUtil.stickyKeySequence=null;cvox.KeyUtil.maxSeqLength=2;
-cvox.KeyUtil.keyEventToKeySequence=function(a){var b=cvox.KeyUtil;b.prevKeySequence&&b.maxSeqLength==b.prevKeySequence.length()&&(b.sequencing=!1,b.prevKeySequence=null);var c=b.sequencing||a.keyPrefix||a.stickyMode,d=new cvox.KeySequence(a),e=d.cvoxModifier;if(c||e){if(!b.sequencing&&b.isSequenceSwitchKeyCode(d))return b.sequencing=!0,b.prevKeySequence=d;if(b.sequencing){if(b.prevKeySequence.addKeyEvent(a))return d=b.prevKeySequence,b.prevKeySequence=null,b.sequencing=!1,d;throw"Think sequencing is enabled, yet util.prevKeySequence alreadyhas two key codes"+
-b.prevKeySequence;}}else b.sequencing=!1;c=(new Date).getTime();if(cvox.KeyUtil.isDoubleTapKey(d)&&b.prevKeySequence&&d.equals(b.prevKeySequence)&&(e=b.modeKeyPressTime,0<e&&300>c-e))return d=b.prevKeySequence,d.doubleTap=!0,b.prevKeySequence=null,b.sequencing=!1,cvox.ChromeVox.isChromeOS&&a.keyCode==cvox.KeyUtil.getStickyKeyCode()&&(cvox.ChromeVox.searchKeyHeld=!1),d;b.prevKeySequence=d;b.modeKeyPressTime=c;return d};
-cvox.KeyUtil.keyCodeToString=function(a){return 17==a?"Ctrl":18==a?"Alt":16==a?"Shift":91==a||93==a?cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win":45==a?"Insert":65<=a&&90>=a?String.fromCharCode(a):48<=a&&57>=a?String.fromCharCode(a):"#"+a};cvox.KeyUtil.modStringToKeyCode=function(a){switch(a){case "Ctrl":return 17;case "Alt":return 18;case "Shift":return 16;case "Cmd":case "Win":return 91}return-1};
-cvox.KeyUtil.cvoxModKeyCodes=function(){var a=cvox.ChromeVox.modKeyStr.split(/\+/g);return a=a.map(function(a){return cvox.KeyUtil.modStringToKeyCode(a)})};cvox.KeyUtil.isSequenceSwitchKeyCode=function(a){for(var b=0;b<cvox.ChromeVox.sequenceSwitchKeyCodes.length;b++){var c=cvox.ChromeVox.sequenceSwitchKeyCodes[b];if(c.equals(a))return!0}return!1};
-cvox.KeyUtil.getReadableNameForKeyCode=function(a){if(0==a)return"Power button";if(17==a)return"Control";if(18==a)return"Alt";if(16==a)return"Shift";if(9==a)return"Tab";if(91==a||93==a)return cvox.ChromeVox.isChromeOS?"Search":cvox.ChromeVox.isMac?"Cmd":"Win";if(8==a)return"Backspace";if(32==a)return"Space";if(35==a)return"end";if(36==a)return"home";if(37==a)return"Left arrow";if(38==a)return"Up arrow";if(39==a)return"Right arrow";if(40==a)return"Down arrow";if(45==a)return"Insert";if(13==a)return"Enter";
-if(27==a)return"Escape";if(112==a)return cvox.ChromeVox.isChromeOS?"Back":"F1";if(113==a)return cvox.ChromeVox.isChromeOS?"Forward":"F2";if(114==a)return cvox.ChromeVox.isChromeOS?"Refresh":"F3";if(115==a)return cvox.ChromeVox.isChromeOS?"Toggle full screen":"F4";if(116==a)return"F5";if(117==a)return"F6";if(118==a)return"F7";if(119==a)return"F8";if(120==a)return"F9";if(121==a)return"F10";if(122==a)return"F11";if(123==a)return"F12";if(186==a)return"Semicolon";if(187==a)return"Equal sign";if(188==a)return"Comma";
-if(189==a)return"Dash";if(190==a)return"Period";if(191==a)return"Forward slash";if(192==a)return"Grave accent";if(219==a)return"Open bracket";if(220==a)return"Back slash";if(221==a)return"Close bracket";if(222==a)return"Single quote";if(115==a)return"Toggle full screen";if(48<=a&&90>=a)return String.fromCharCode(a)};cvox.KeyUtil.getStickyKeyCode=function(){var a=45;if(cvox.ChromeVox.isChromeOS||cvox.ChromeVox.isMac)a=91;return a};
-cvox.KeyUtil.getStickyKeySequence=function(){if(null==cvox.KeyUtil.stickyKeySequence){var a=cvox.KeyUtil.getStickyKeyCode(),a={keyCode:a,stickyMode:!0},b=new cvox.KeySequence(a);b.addKeyEvent(a);cvox.KeyUtil.stickyKeySequence=b}return cvox.KeyUtil.stickyKeySequence};cvox.KeyUtil.getReadableNameForStr=function(){return null};
-cvox.KeyUtil.keySequenceToString=function(a,b,c){for(var d="",e=a.length(),f=0;f<e;f++){""==d||c?""!=d&&(d+="+"):d+=">";var g="",h;for(h in a.keys)if(a.keys[h][f]){var k="";switch(h){case "ctrlKey":k="Ctrl";break;case "searchKeyHeld":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "altKey":k="Alt";break;case "altGraphKey":k="AltGraph";break;case "shiftKey":k="Shift";break;case "metaKey":k=cvox.KeyUtil.getReadableNameForKeyCode(91);break;case "keyCode":var l=a.keys[h][f];a.isModifierKey(l)||
-c||(g=b?g+cvox.KeyUtil.getReadableNameForKeyCode(l):g+cvox.KeyUtil.keyCodeToString(l))}-1==d.indexOf(k)&&(g+=k+"+")}d+=g;"+"==d[d.length-1]&&(d=d.slice(0,-1))}a.cvoxModifier||a.prefixKey?d=""!=d?"Cvox+"+d:"Cvox":a.stickyMode&&(">"==d[d.length-1]&&(d=d.slice(0,-1)),d=d+"+"+d);return d};cvox.KeyUtil.isDoubleTapKey=function(a){var b=!1,c=a.doubleTap;a.doubleTap=!0;for(var d=0,e;e=cvox.KeySequence.doubleTapCache[d];d++)if(e.equals(a)){b=!0;break}a.doubleTap=c;return b};cvox.KeyMap=function(a){this.bindings_=a;this.commandToKey_={};this.buildCommandToKey_()};cvox.KeyMap.KEYMAP_PATH="chromevox/background/keymaps/";cvox.KeyMap.AVAILABLE_MAP_INFO={keymap_classic:{file:"classic_keymap.json"},keymap_flat:{file:"flat_keymap.json"},keymap_experimental:{file:"experimental.json"}};cvox.KeyMap.DEFAULT_KEYMAP=0;cvox.KeyMap.prototype.length=function(){return this.bindings_.length};cvox.KeyMap.prototype.keys=function(){return this.bindings_.map(function(a){return a.sequence})};
-cvox.KeyMap.prototype.bindings=function(){return this.bindings_};cvox.KeyMap.prototype.toJSON=function(){return JSON.stringify({bindings:this.bindings_})};cvox.KeyMap.prototype.hasKey=function(a){for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return!0}return!1};cvox.KeyMap.prototype.commandForKey=function(a){if(null!=a)for(var b=0;b<this.bindings_.length;b++){var c=this.bindings_[b];if(c.sequence.equals(a))return c.command}return null};
-cvox.KeyMap.fromDefaults=function(){return cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO.keymap_classic.file)};cvox.KeyMap.fromJSON=function(a){try{var b=JSON.parse(a).bindings,b=b.filter(function(a){return void 0===a.sequence.platformFilter||cvox.PlatformUtil.matchesPlatform(a.sequence.platformFilter)})}catch(c){return null}if("object"!=typeof b)return null;for(a=0;a<b.length;a++){if(void 0==b[a].command||void 0==b[a].sequence)return null;b[a].sequence=cvox.KeySequence.deserialize(b[a].sequence)}return new cvox.KeyMap(b)};
-cvox.KeyMap.fromLocalStorage=function(){return localStorage.keyBindings?cvox.KeyMap.fromJSON(localStorage.keyBindings):null};cvox.KeyMap.fromPath=function(a){return cvox.KeyMap.fromJSON(cvox.KeyMap.readJSON_(a))};cvox.KeyMap.fromCurrentKeyMap=function(){var a=localStorage.currentKeyMap;return a&&cvox.KeyMap.AVAILABLE_MAP_INFO[a]?cvox.KeyMap.fromPath(cvox.KeyMap.KEYMAP_PATH+cvox.KeyMap.AVAILABLE_MAP_INFO[a].file):cvox.KeyMap.fromDefaults()};
-cvox.KeyMap.readJSON_=function(a){var b=chrome.extension.getURL(a);if(!b)throw"Invalid path: "+a;a=new XMLHttpRequest;a.open("GET",b,!1);a.send();return a.responseText};cvox.KeyMap.prototype.buildCommandToKey_=function(){for(var a=0;a<this.bindings_.length;a++){var b=this.bindings_[a];void 0==this.commandToKey_[b.command]&&(this.commandToKey_[b.command]=b.sequence)}};cvox.CommandStore={};cvox.CommandStore.categories=function(){var a={},b;for(b in cvox.CommandStore.CMD_WHITELIST){var c=cvox.CommandStore.CMD_WHITELIST[b];c.category&&(a[c.category]=!0)}b=[];for(var d in a)b.push(d);return b};cvox.CommandStore.messageForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).msgId};cvox.CommandStore.categoryForCommand=function(a){return(cvox.CommandStore.CMD_WHITELIST[a]||{}).category};
-cvox.CommandStore.commandsForCategory=function(a){var b=[],c;for(c in cvox.CommandStore.CMD_WHITELIST){var d=cvox.CommandStore.CMD_WHITELIST[c];a==d.category&&b.push(c)}return b};
-cvox.CommandStore.CMD_WHITELIST={toggleStickyMode:{announce:!1,msgId:"toggle_sticky_mode",disallowOOBE:!0,category:"modifier_keys"},toggleKeyPrefix:{announce:!1,skipInput:!0,msgId:"prefix_key",disallowOOBE:!0,category:"modifier_keys"},stopSpeech:{announce:!1,disallowContinuation:!0,doDefault:!0,msgId:"stop_speech_key",category:"controlling_speech"},toggleChromeVox:{announce:!1,platformFilter:cvox.PlatformFilter.WML,msgId:"toggle_chromevox_active",category:"controlling_speech"},decreaseTtsRate:{announce:!1,
-msgId:"decrease_tts_rate",category:"controlling_speech"},increaseTtsRate:{announce:!1,msgId:"increase_tts_rate",category:"controlling_speech"},decreaseTtsPitch:{announce:!1,msgId:"decrease_tts_pitch",category:"controlling_speech"},increaseTtsPitch:{announce:!1,msgId:"increase_tts_pitch",category:"controlling_speech"},decreaseTtsVolume:{announce:!1,msgId:"decrease_tts_volume",category:"controlling_speech"},increaseTtsVolume:{announce:!1,msgId:"increase_tts_volume",category:"controlling_speech"},cyclePunctuationEcho:{announce:!1,
-msgId:"cycle_punctuation_echo",category:"controlling_speech"},cycleTypingEcho:{announce:!1,msgId:"cycle_typing_echo",category:"controlling_speech"},toggleEarcons:{announce:!0,msgId:"toggle_earcons",category:"controlling_speech"},handleTab:{allowEvents:!0,msgId:"handle_tab_next",disallowContinuation:!0,category:"navigation"},handleTabPrev:{allowEvents:!0,msgId:"handle_tab_prev",disallowContinuation:!0,category:"navigation"},forward:{forward:!0,announce:!0,msgId:"forward",category:"navigation"},backward:{backward:!0,
-announce:!0,msgId:"backward",category:"navigation"},right:{forward:!0,announce:!0,msgId:"right",category:"navigation"},left:{backward:!0,announce:!0,msgId:"left",category:"navigation"},previousGranularity:{announce:!0,msgId:"previous_granularity",category:"navigation"},nextGranularity:{announce:!0,msgId:"next_granularity",category:"navigation"},previousCharacter:{backward:!0,announce:!0,msgId:"previous_character",skipInput:!0,category:"navigation"},nextCharacter:{forward:!0,announce:!0,msgId:"next_character",
-skipInput:!0,category:"navigation"},previousWord:{backward:!0,announce:!0,msgId:"previous_word",skipInput:!0,category:"navigation"},nextWord:{forward:!0,announce:!0,msgId:"next_word",skipInput:!0,category:"navigation"},previousLine:{backward:!0,announce:!0,msgId:"previous_line",category:"navigation"},nextLine:{forward:!0,announce:!0,msgId:"next_line",category:"navigation"},previousSentence:{backward:!0,announce:!0,msgId:"previous_sentence",skipInput:!0,category:"navigation"},nextSentence:{forward:!0,
-announce:!0,msgId:"next_sentence",skipInput:!0,category:"navigation"},previousObject:{backward:!0,announce:!0,msgId:"previous_object",skipInput:!0,category:"navigation"},nextObject:{forward:!0,announce:!0,msgId:"next_object",skipInput:!0,category:"navigation"},previousGroup:{backward:!0,announce:!0,msgId:"previous_group",skipInput:!0,category:"navigation"},nextGroup:{forward:!0,announce:!0,msgId:"next_group",skipInput:!0,category:"navigation"},jumpToTop:{forward:!0,announce:!0,msgId:"jump_to_top",
-category:"navigation"},jumpToBottom:{backward:!0,announce:!0,msgId:"jump_to_bottom",category:"navigation"},moveToStartOfLine:{forward:!0,announce:!0},moveToEndOfLine:{backward:!0,announce:!0},readFromHere:{forward:!0,announce:!1,msgId:"read_from_here",category:"navigation"},performDefaultAction:{disallowContinuation:!0,msgId:"perform_default_action",doDefault:!0,skipInput:!0,category:"navigation"},forceClickOnCurrentItem:{announce:!0,disallowContinuation:!0,allowEvents:!0,msgId:"force_click_on_current_item",
-category:"navigation"},forceDoubleClickOnCurrentItem:{announce:!0,allowEvents:!0,disallowContinuation:!0},readLinkURL:{announce:!1,msgId:"read_link_url",category:"information"},readCurrentTitle:{announce:!1,msgId:"read_current_title",category:"information"},readCurrentURL:{announce:!1,msgId:"read_current_url",category:"information"},fullyDescribe:{announce:!1,msgId:"fully_describe",category:"information"},speakTimeAndDate:{announce:!1,msgId:"speak_time_and_date",category:"information"},toggleSelection:{announce:!0,
-msgId:"toggle_selection",category:"information"},toggleSearchWidget:{announce:!1,disallowContinuation:!0,msgId:"toggle_search_widget",category:"information"},toggleKeyboardHelp:{announce:!1,disallowContinuation:!0,msgId:"show_power_key",category:"help_commands"},help:{announce:!1,msgId:"help",disallowOOBE:!0,disallowContinuation:!0,category:"help_commands"},contextMenu:{announce:!1,disallowContinuation:!0},showOptionsPage:{announce:!1,disallowContinuation:!0,msgId:"show_options_page",disallowOOBE:!0,
-category:"help_commands"},showKbExplorerPage:{announce:!1,disallowContinuation:!0,msgId:"show_kb_explorer_page",disallowOOBE:!0,category:"help_commands"},showFormsList:{announce:!1,disallowContinuation:!0,nodeList:"formField",msgId:"show_forms_list",category:"overview"},showHeadingsList:{announce:!1,nodeList:"heading",disallowContinuation:!0,msgId:"show_headings_list",category:"overview"},showLandmarksList:{announce:!1,nodeList:"landmark",disallowContinuation:!0,msgId:"show_landmarks_list",category:"overview"},
-showLinksList:{announce:!1,nodeList:"link",disallowContinuation:!0,msgId:"show_links_list",category:"overview"},showTablesList:{announce:!1,nodeList:"table",disallowContinuation:!0,msgId:"show_tables_list",category:"overview"},startHistoryRecording:{announce:!1},stopHistoryRecording:{announce:!1},enableConsoleTts:{announce:!1},autorunner:{announce:!1},nextArticle:{forward:!0,findNext:"article"},nextButton:{forward:!0,findNext:"button",msgId:"next_button",category:"jump_commands"},nextCheckbox:{forward:!0,
-findNext:"checkbox",msgId:"next_checkbox",category:"jump_commands"},nextComboBox:{forward:!0,findNext:"combobox",msgId:"next_combo_box",category:"jump_commands"},nextControl:{forward:!0,findNext:"control"},nextEditText:{forward:!0,findNext:"editText",msgId:"next_edit_text",category:"jump_commands"},nextFormField:{forward:!0,findNext:"formField",msgId:"next_form_field",category:"jump_commands"},nextGraphic:{forward:!0,findNext:"graphic",msgId:"next_graphic",category:"jump_commands"},nextHeading:{forward:!0,
-findNext:"heading",msgId:"next_heading",category:"jump_commands"},nextHeading1:{forward:!0,findNext:"heading1",msgId:"next_heading1",category:"jump_commands"},nextHeading2:{forward:!0,findNext:"heading2",msgId:"next_heading2",category:"jump_commands"},nextHeading3:{forward:!0,findNext:"heading3",msgId:"next_heading3",category:"jump_commands"},nextHeading4:{forward:!0,findNext:"heading4",msgId:"next_heading4",category:"jump_commands"},nextHeading5:{forward:!0,findNext:"heading5",msgId:"next_heading5",
-category:"jump_commands"},nextHeading6:{forward:!0,findNext:"heading6",msgId:"next_heading6",category:"jump_commands"},nextLandmark:{forward:!0,findNext:"landmark",msgId:"next_landmark",category:"jump_commands"},nextLink:{forward:!0,findNext:"link",msgId:"next_link",category:"jump_commands"},nextList:{forward:!0,findNext:"list",msgId:"next_list",category:"jump_commands"},nextListItem:{forward:!0,findNext:"listItem",msgId:"next_list_item",category:"jump_commands"},nextMath:{forward:!0,findNext:"math",
-msgId:"next_math",category:"jump_commands"},nextMedia:{forward:!0,findNext:"media",msgId:"next_media",category:"jump_commands"},nextRadio:{forward:!0,findNext:"radio",msgId:"next_radio",category:"jump_commands"},nextSection:{forward:!0,findNext:"section"},nextSlider:{forward:!0,findNext:"slider"},nextTable:{forward:!0,findNext:"table",msgId:"next_table",category:"jump_commands"},nextVisitedLink:{forward:!0,findNext:"visitedLink",msgId:"next_visited_link",category:"jump_commands"},previousArticle:{backward:!0,
-findNext:"article"},previousButton:{backward:!0,findNext:"button",msgId:"previous_button",category:"jump_commands"},previousCheckbox:{backward:!0,findNext:"checkbox",msgId:"previous_checkbox",category:"jump_commands"},previousComboBox:{backward:!0,findNext:"combobox",msgId:"previous_combo_box",category:"jump_commands"},previousControl:{backward:!0,findNext:"control"},previousEditText:{backward:!0,findNext:"editText",msgId:"previous_edit_text",category:"jump_commands"},previousFormField:{backward:!0,
-findNext:"formField",msgId:"previous_form_field",category:"jump_commands"},previousGraphic:{backward:!0,findNext:"graphic",msgId:"previous_graphic",category:"jump_commands"},previousHeading:{backward:!0,findNext:"heading",msgId:"previous_heading",category:"jump_commands"},previousHeading1:{backward:!0,findNext:"heading1",msgId:"previous_heading1",category:"jump_commands"},previousHeading2:{backward:!0,findNext:"heading2",msgId:"previous_heading2",category:"jump_commands"},previousHeading3:{backward:!0,
-findNext:"heading3",msgId:"previous_heading3",category:"jump_commands"},previousHeading4:{backward:!0,findNext:"heading4",msgId:"previous_heading4",category:"jump_commands"},previousHeading5:{backward:!0,findNext:"heading5",msgId:"previous_heading5",category:"jump_commands"},previousHeading6:{backward:!0,findNext:"heading6",msgId:"previous_heading6",category:"jump_commands"},previousLandmark:{backward:!0,findNext:"landmark",msgId:"previous_landmark",category:"jump_commands"},previousLink:{backward:!0,
-findNext:"link",msgId:"previous_link",category:"jump_commands"},previousList:{backward:!0,findNext:"list",msgId:"previous_list",category:"jump_commands"},previousListItem:{backward:!0,findNext:"listItem",msgId:"previous_list_item",category:"jump_commands"},previousMath:{backward:!0,findNext:"math",msgId:"previous_math",category:"jump_commands"},previousMedia:{backward:!0,findNext:"media",msgId:"previous_media",category:"jump_commands"},previousRadio:{backward:!0,findNext:"radio",msgId:"previous_radio",
-category:"jump_commands"},previousSection:{backward:!0,findNext:"section"},previousSlider:{backward:!0,findNext:"slider"},previousTable:{backward:!0,findNext:"table",msgId:"previous_table",category:"jump_commands"},previousVisitedLink:{backward:!0,findNext:"visitedLink",msgId:"previous_visited_link",category:"jump_commands"},announceHeaders:{announce:!1,msgId:"announce_headers",category:"tables"},speakTableLocation:{announce:!1,msgId:"speak_table_location",category:"tables"},goToFirstCell:{announce:!0,
-msgId:"skip_to_beginning",category:"tables"},goToLastCell:{announce:!0,msgId:"skip_to_end",category:"tables"},goToRowFirstCell:{announce:!0,msgId:"skip_to_row_beginning",category:"tables"},goToRowLastCell:{announce:!0,msgId:"skip_to_row_end",category:"tables"},goToColFirstCell:{announce:!0,msgId:"skip_to_col_beginning",category:"tables"},goToColLastCell:{announce:!0,msgId:"skip_to_col_end",category:"tables"},previousRow:{backward:!0,announce:!0,skipInput:!0},previousCol:{backward:!0,announce:!0,skipInput:!0},
-nextRow:{forward:!0,announce:!0,skipInput:!0},nextCol:{forward:!0,announce:!0,skipInput:!0},enterShifter:{announce:!0,msgId:"enter_content",category:"navigation"},exitShifter:{announce:!0,msgId:"exit_content",category:"navigation"},exitShifterContent:{announce:!0},openLongDesc:{announce:!1,msgId:"open_long_desc",category:"information"},pauseAllMedia:{announce:!1,msgId:"pause_all_media",category:"information"},toggleSemantics:{announce:!1,msgId:"toggle_semantics",category:"information"},routing:{announce:!0,
-msgId:"braille_routing",category:"braille"},pan_left:{backward:!0,announce:!0,msgId:"braille_pan_left",category:"braille"},pan_right:{forward:!0,announce:!0,msgId:"braille_pan_right",category:"braille"},line_up:{backward:!0,announce:!0,msgId:"braille_line_up",category:"braille"},line_down:{forward:!0,announce:!0,msgId:"braille_line_down",category:"braille"},top:{forward:!0,announce:!0,msgId:"braille_top",category:"braille"},bottom:{backward:!0,announce:!0,msgId:"braille_bottom",category:"braille"},
-debug:{announce:!1},nop:{announce:!1}};
-cvox.CommandStore.NODE_INFO_MAP={checkbox:{predicate:"checkboxPredicate",forwardError:"no_next_checkbox",backwardError:"no_previous_checkbox",typeMsg:"aria_role_checkbox"},radio:{predicate:"radioPredicate",forwardError:"no_next_radio_button",backwardError:"no_previous_radio_button",typeMsg:"aria_role_radio"},slider:{predicate:"sliderPredicate",forwardError:"no_next_slider",backwardError:"no_previous_slider",typeMsg:"aria_role_slider"},graphic:{predicate:"graphicPredicate",forwardError:"no_next_graphic",
-backwardError:"no_previous_graphic",typeMsg:"UNUSED"},article:{predicate:"articlePredicate",forwardError:"no_next_ARTICLE",backwardError:"no_previous_ARTICLE",typeMsg:"TAG_ARTICLE"},button:{predicate:"buttonPredicate",forwardError:"no_next_button",backwardError:"no_previous_button",typeMsg:"aria_role_button"},combobox:{predicate:"comboBoxPredicate",forwardError:"no_next_combo_box",backwardError:"no_previous_combo_box",typeMsg:"aria_role_combobox"},editText:{predicate:"editTextPredicate",forwardError:"no_next_edit_text",
-backwardError:"no_previous_edit_text",typeMsg:"input_type_text"},heading:{predicate:"headingPredicate",forwardError:"no_next_heading",backwardError:"no_previous_heading",typeMsg:"aria_role_heading"},heading1:{predicate:"heading1Predicate",forwardError:"no_next_heading_1",backwardError:"no_previous_heading_1"},heading2:{predicate:"heading2Predicate",forwardError:"no_next_heading_2",backwardError:"no_previous_heading_2"},heading3:{predicate:"heading3Predicate",forwardError:"no_next_heading_3",backwardError:"no_previous_heading_3"},
-heading4:{predicate:"heading4Predicate",forwardError:"no_next_heading_4",backwardError:"no_previous_heading_4"},heading5:{predicate:"heading5Predicate",forwardError:"no_next_heading_5",backwardError:"no_previous_heading_5"},heading6:{predicate:"heading6Predicate",forwardError:"no_next_heading_6",backwardError:"no_previous_heading_6"},link:{predicate:"linkPredicate",forwardError:"no_next_link",backwardError:"no_previous_link",typeMsg:"aria_role_link"},table:{predicate:"tablePredicate",forwardError:"no_next_table",
-backwardError:"no_previous_table",typeMsg:"table_strategy"},visitedLink:{predicate:"visitedLinkPredicate",forwardError:"no_next_visited_link",backwardError:"no_previous_visited_link",typeMsg:"tag_link"},list:{predicate:"listPredicate",forwardError:"no_next_list",backwardError:"no_previous_list",typeMsg:"aria_role_list"},listItem:{predicate:"listItemPredicate",forwardError:"no_next_list_item",backwardError:"no_previous_list_item",typeMsg:"aria_role_listitem"},formField:{predicate:"formFieldPredicate",
-forwardError:"no_next_form_field",backwardError:"no_previous_form_field",typeMsg:"aria_role_form"},landmark:{predicate:"landmarkPredicate",forwardError:"no_next_landmark",backwardError:"no_previous_landmark",typeMsg:"role_landmark"},math:{predicate:"mathPredicate",forwardError:"no_next_math",backwardError:"no_previous_math",typeMsg:"math_expr"},media:{predicate:"mediaPredicate",forwardError:"no_next_media_widget",backwardError:"no_previous_media_widget"},section:{predicate:"sectionPredicate",forwardError:"no_next_section",
-backwardError:"no_previous_section"},control:{predicate:"controlPredicate",forwardError:"no_next_control",backwardError:"no_previous_control"}};cvox.Widget=function(){this.active=!1;this.initialNode=null;cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||(cvox.Widget.ref_=this)};cvox.Widget.prototype.isActive=function(){return this.active};
-cvox.Widget.prototype.show=function(){this.isActive()&&this.hide(!0);this.onKeyDown=goog.bind(this.onKeyDown,this);this.onKeyPress=goog.bind(this.onKeyPress,this);window.addEventListener("keydown",this.onKeyDown,!0);window.addEventListener("keypress",this.onKeyPress,!0);this.initialNode=cvox.ChromeVox.navigationManager.getCurrentNode();this.isStickyOn=cvox.ChromeVox.isStickyOn;this.getNameMsg()&&this.getHelpMsg()&&cvox.$m(this.getNameMsg()).andPause().andMessage(this.getHelpMsg()).speakFlush();cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_OPEN);
-this.active=!0};cvox.Widget.prototype.hide=function(a){window.removeEventListener("keypress",this.onKeyPress,!0);window.removeEventListener("keydown",this.onKeyDown,!0);cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.OBJECT_CLOSE);a||(this.initialNode=1==this.initialNode.nodeType?this.initialNode:this.initialNode.parentNode,cvox.ApiImplementation.syncToNode(this.initialNode,!0,cvox.AbstractTts.QUEUE_MODE_QUEUE));this.active=!1};
-cvox.Widget.prototype.toggle=function(){this.isActive()?this.hide():this.show()};cvox.Widget.prototype.onKeyDown=function(a){if(27==a.keyCode)return this.hide(),a.preventDefault(),!0;if(9==a.keyCode)return this.hide(),!0;17==a.keyCode&&cvox.ChromeVox.tts.stop();a.stopPropagation();return!0};cvox.Widget.prototype.onKeyPress=function(){return!1};cvox.Widget.isActive=function(){return cvox.Widget.ref_&&cvox.Widget.ref_.isActive()||!1};cvox.NavDescription=function(a){this.context=a.context?a.context:"";this.text=a.text?a.text:"";this.userValue=a.userValue?a.userValue:"";this.annotation=a.annotation?a.annotation:"";this.earcons=a.earcons?a.earcons:[];this.personality=a.personality};cvox.NavDescription.prototype.isEmpty=function(){return 0==this.context.length&&0==this.earcons.length&&0==this.text.length&&0==this.userValue.length&&0==this.annotation.length};
-cvox.NavDescription.prototype.toString=function(){return'NavDescription(context="'+this.context+'" text="'+this.text+'" userValue="'+this.userValue+'" annotation="'+this.annotation+'")'};cvox.NavDescription.prototype.pushEarcon=function(a){this.earcons.push(a)};
-cvox.NavDescription.prototype.speak=function(a,b,c){function d(){var a={},b=cvox.AbstractTts.PERSONALITY_ANNOTATION,c;for(c in b)a[c]=b[c];return a}var e=[];this.context&&(e.push([this.context,a,d()]),a=1);e.push([this.text,a,this.personality?this.personality:{}]);a=1;this.userValue&&e.push([this.userValue,a,{}]);this.annotation&&e.push([this.annotation,a,d()]);a=e.length;for(var f=0;f<a;f++)0==f&&b&&(e[f][2].startCallback=b),f==a-1&&c&&(e[f][2].endCallback=c),cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts,
-e[f])};cvox.NavDescription.prototype.equals=function(a){return this.context==a.context&&this.text==a.text&&this.userValue==a.userValue&&this.annotation==a.annotation};cvox.NavMathDescription=function(a){cvox.NavDescription.call(this,a);var b=this.personality?this.personality:{},c={};c.domain=a.domain?a.domain:"";c.style=a.style?a.style:"";b.math=c;this.personality=b};goog.inherits(cvox.NavMathDescription,cvox.NavDescription);cvox.SemanticUtil=function(){};cvox.SemanticUtil.objectsToKeys=function(a){a=Array.prototype.slice.call(arguments,0);var b=[];return b.concat.apply(b,a.map(Object.keys))};cvox.SemanticUtil.objectsToValues=function(a){a=Array.prototype.slice.call(arguments,0);var b=[],c=function(a){for(var c in a)b.push(a[c])};a.forEach(c);return b};
-cvox.SemanticUtil.unicodeToNumber=function(a){if(!a||2<a.length)return null;if(2==a.length){var b=a.charCodeAt(0);a=a.charCodeAt(1);return 55296<=b&&56319>=b&&!isNaN(a)?1024*(b-55296)+(a-56320)+65536:null}return a.charCodeAt(0)};cvox.SemanticUtil.numberToUnicode=function(a){if(65536<=a){var b=(a-65536)/1024+55296;a=(a-65536)%1024+56320;return String.fromCharCode(b,a)}return String.fromCharCode(a)};cvox.SemanticUtil.tagName=function(a){return a.tagName.toUpperCase()};cvox.SemanticUtil.IGNORETAGS="MERROR MPHANTOM MSPACE MACTION MALIGNGROUP MALIGNMARK MACTION".split(" ");
-cvox.SemanticUtil.EMPTYTAGS=["MATH","MROW","MPADDED","MSTYLE"];cvox.SemanticUtil.purgeNodes=function(a){for(var b=[],c=0,d;d=a[c];c++){var e=cvox.SemanticUtil.tagName(d);-1==cvox.SemanticUtil.IGNORETAGS.indexOf(e)&&(-1!=cvox.SemanticUtil.EMPTYTAGS.indexOf(e)&&0==d.childNodes.length||b.push(d))}return b};cvox.SemanticAttr=function(){this.generalPunctuations="!\"#%&'*,:;?@\\\u00a1\u00a7\u00b6\u00b7\u00bf\u2017\u2020\u2021\u2022\u2023\u2024\u2025\u2027\u2030\u2031\u2038\u203b\u203c\u203d\u203e\u2041\u2042\u2043\u2047\u2048\u2049\u204b\u204c\u204d\u204e\u204f\u2050\u2051\u2053\u2055\u2056\u2058\u2059\u205a\u205b\u205c\u205d\u205e\ufe10\ufe13\ufe14\ufe15\ufe16\ufe30\ufe45\ufe46\ufe49\ufe4a\ufe4b\ufe4c\ufe50\ufe54\ufe55\ufe56\ufe57\ufe5f\ufe60\ufe61\ufe68\ufe6a\ufe6b\uff01\uff02\uff03\uff05\uff06\uff07\uff0a\uff0c\uff0f\uff1a\uff1b\uff1f\uff20\uff3c".split("");
-this.invisibleComma_=cvox.SemanticUtil.numberToUnicode(8291);this.generalPunctuations.push(this.invisibleComma_);this.ellipses="\u2026\u22ee\u22ef\u22f0\u22f1\ufe19".split("");this.fullStops=[".","\ufe52","\uff0e"];this.dashes="\u2012\u2013\u2014\u2015\u301c\ufe31\ufe32\ufe58".split("");this.primes="\u2032\u2033\u2034\u2035\u2036\u2037\u2057".split("");this.openClosePairs={"(":")","[":"]","{":"}","\u2045":"\u2046","\u2329":"\u232a","\u2768":"\u2769","\u276a":"\u276b","\u276c":"\u276d","\u276e":"\u276f",
-"\u2770":"\u2771","\u2772":"\u2773","\u2774":"\u2775","\u27c5":"\u27c6","\u27e6":"\u27e7","\u27e8":"\u27e9","\u27ea":"\u27eb","\u27ec":"\u27ed","\u27ee":"\u27ef","\u2983":"\u2984","\u2985":"\u2986","\u2987":"\u2988","\u2989":"\u298a","\u298b":"\u298c","\u298d":"\u298e","\u298f":"\u2990","\u2991":"\u2992","\u2993":"\u2994","\u2995":"\u2996","\u2997":"\u2998","\u29d8":"\u29d9","\u29da":"\u29db","\u29fc":"\u29fd","\u2e22":"\u2e23","\u2e24":"\u2e25","\u2e26":"\u2e27","\u2e28":"\u2e29","\u3008":"\u3009",
-"\u300a":"\u300b","\u300c":"\u300d","\u300e":"\u300f","\u3010":"\u3011","\u3014":"\u3015","\u3016":"\u3017","\u3018":"\u3019","\u301a":"\u301b","\u301d":"\u301e","\ufd3e":"\ufd3f","\ufe17":"\ufe18","\ufe59":"\ufe5a","\ufe5b":"\ufe5c","\ufe5d":"\ufe5e","\uff08":"\uff09","\uff3b":"\uff3d","\uff5b":"\uff5d","\uff5f":"\uff60","\uff62":"\uff63","\u2308":"\u2309","\u230a":"\u230b","\u230c":"\u230d","\u230e":"\u230f","\u231c":"\u231d","\u231e":"\u231f","\u239b":"\u239e","\u239c":"\u239f","\u239d":"\u23a0",
-"\u23a1":"\u23a4","\u23a2":"\u23a5","\u23a3":"\u23a6","\u23a7":"\u23ab","\u23a8":"\u23ac","\u23a9":"\u23ad","\u23b0":"\u23b1","\u23b8":"\u23b9"};this.topBottomPairs={"\u23b4":"\u23b5","\u23dc":"\u23dd","\u23de":"\u23df","\u23e0":"\u23e1","\ufe35":"\ufe36","\ufe37":"\ufe38","\ufe39":"\ufe3a","\ufe3b":"\ufe3c","\ufe3d":"\ufe3e","\ufe3f":"\ufe40","\ufe41":"\ufe42","\ufe43":"\ufe44","\ufe47":"\ufe48"};this.leftFences=cvox.SemanticUtil.objectsToKeys(this.openClosePairs);this.rightFences=cvox.SemanticUtil.objectsToValues(this.openClosePairs);
-this.rightFences.push("\u301f");this.topFences=cvox.SemanticUtil.objectsToKeys(this.topBottomPairs);this.bottomFences=cvox.SemanticUtil.objectsToValues(this.topBottomPairs);this.neutralFences="|\u00a6\u2016\u2758\u2980\u2af4\uffe4\uff5c".split("");this.capitalLatin="ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");this.smallLatin="abcdefghijklmnopqrstuvwxyz\u0131\u0237".split("");this.capitalLatinFullWidth="\uff21\uff22\uff23\uff24\uff25\uff26\uff27\uff28\uff29\uff2a\uff2b\uff2c\uff2d\uff2e\uff2f\uff30\uff31\uff32\uff33\uff34\uff35\uff36\uff37\uff38\uff39\uff3a".split("");
-this.smallLatinFullWidth="\uff41\uff42\uff43\uff44\uff45\uff46\uff47\uff48\uff49\uff4a\uff4b\uff4c\uff4d\uff4e\uff4f\uff50\uff51\uff52\uff53\uff54\uff55\uff56\uff57\uff58\uff59\uff5a".split("");this.capitalLatinBold="\ud835\udc00 \ud835\udc01 \ud835\udc02 \ud835\udc03 \ud835\udc04 \ud835\udc05 \ud835\udc06 \ud835\udc07 \ud835\udc08 \ud835\udc09 \ud835\udc0a \ud835\udc0b \ud835\udc0c \ud835\udc0d \ud835\udc0e \ud835\udc0f \ud835\udc10 \ud835\udc11 \ud835\udc12 \ud835\udc13 \ud835\udc14 \ud835\udc15 \ud835\udc16 \ud835\udc17 \ud835\udc18 \ud835\udc19".split(" ");
-this.smallLatinBold="\ud835\udc1a \ud835\udc1b \ud835\udc1c \ud835\udc1d \ud835\udc1e \ud835\udc1f \ud835\udc20 \ud835\udc21 \ud835\udc22 \ud835\udc23 \ud835\udc24 \ud835\udc25 \ud835\udc26 \ud835\udc27 \ud835\udc28 \ud835\udc29 \ud835\udc2a \ud835\udc2b \ud835\udc2c \ud835\udc2d \ud835\udc2e \ud835\udc2f \ud835\udc30 \ud835\udc31 \ud835\udc32 \ud835\udc33".split(" ");this.capitalLatinItalic="\ud835\udc34 \ud835\udc35 \ud835\udc36 \ud835\udc37 \ud835\udc38 \ud835\udc39 \ud835\udc3a \ud835\udc3b \ud835\udc3c \ud835\udc3d \ud835\udc3e \ud835\udc3f \ud835\udc40 \ud835\udc41 \ud835\udc42 \ud835\udc43 \ud835\udc44 \ud835\udc45 \ud835\udc46 \ud835\udc47 \ud835\udc48 \ud835\udc49 \ud835\udc4a \ud835\udc4b \ud835\udc4c \ud835\udc4d".split(" ");
-this.smallLatinItalic="\ud835\udc4e \ud835\udc4f \ud835\udc50 \ud835\udc51 \ud835\udc52 \ud835\udc53 \ud835\udc54 \u210e \ud835\udc56 \ud835\udc57 \ud835\udc58 \ud835\udc59 \ud835\udc5a \ud835\udc5b \ud835\udc5c \ud835\udc5d \ud835\udc5e \ud835\udc5f \ud835\udc60 \ud835\udc61 \ud835\udc62 \ud835\udc63 \ud835\udc64 \ud835\udc65 \ud835\udc66 \ud835\udc67 \ud835\udea4 \ud835\udea5".split(" ");this.capitalLatinScript="\ud835\udc9c \u212c \ud835\udc9e \ud835\udc9f \u2130 \u2131 \ud835\udca2 \u210b \u2110 \ud835\udca5 \ud835\udca6 \u2112 \u2133 \ud835\udca9 \ud835\udcaa \ud835\udcab \ud835\udcac \u211b \ud835\udcae \ud835\udcaf \ud835\udcb0 \ud835\udcb1 \ud835\udcb2 \ud835\udcb3 \ud835\udcb4 \ud835\udcb5 \u2118".split(" ");
-this.smallLatinScript="\ud835\udcb6 \ud835\udcb7 \ud835\udcb8 \ud835\udcb9 \u212f \ud835\udcbb \u210a \ud835\udcbd \ud835\udcbe \ud835\udcbf \ud835\udcc0 \ud835\udcc1 \ud835\udcc2 \ud835\udcc3 \u2134 \ud835\udcc5 \ud835\udcc6 \ud835\udcc7 \ud835\udcc8 \ud835\udcc9 \ud835\udcca \ud835\udccb \ud835\udccc \ud835\udccd \ud835\udcce \ud835\udccf \u2113".split(" ");this.capitalLatinBoldScript="\ud835\udcd0 \ud835\udcd1 \ud835\udcd2 \ud835\udcd3 \ud835\udcd4 \ud835\udcd5 \ud835\udcd6 \ud835\udcd7 \ud835\udcd8 \ud835\udcd9 \ud835\udcda \ud835\udcdb \ud835\udcdc \ud835\udcdd \ud835\udcde \ud835\udcdf \ud835\udce0 \ud835\udce1 \ud835\udce2 \ud835\udce3 \ud835\udce4 \ud835\udce5 \ud835\udce6 \ud835\udce7 \ud835\udce8 \ud835\udce9".split(" ");
-this.smallLatinBoldScript="\ud835\udcea \ud835\udceb \ud835\udcec \ud835\udced \ud835\udcee \ud835\udcef \ud835\udcf0 \ud835\udcf1 \ud835\udcf2 \ud835\udcf3 \ud835\udcf4 \ud835\udcf5 \ud835\udcf6 \ud835\udcf7 \ud835\udcf8 \ud835\udcf9 \ud835\udcfa \ud835\udcfb \ud835\udcfc \ud835\udcfd \ud835\udcfe \ud835\udcff \ud835\udd00 \ud835\udd01 \ud835\udd02 \ud835\udd03".split(" ");this.capitalLatinFraktur="\ud835\udd04 \ud835\udd05 \u212d \ud835\udd07 \ud835\udd08 \ud835\udd09 \ud835\udd0a \u210c \u2111 \ud835\udd0d \ud835\udd0e \ud835\udd0f \ud835\udd10 \ud835\udd11 \ud835\udd12 \ud835\udd13 \ud835\udd14 \u211c \ud835\udd16 \ud835\udd17 \ud835\udd18 \ud835\udd19 \ud835\udd1a \ud835\udd1b \ud835\udd1c \u2128".split(" ");
-this.smallLatinFraktur="\ud835\udd1e \ud835\udd1f \ud835\udd20 \ud835\udd21 \ud835\udd22 \ud835\udd23 \ud835\udd24 \ud835\udd25 \ud835\udd26 \ud835\udd27 \ud835\udd28 \ud835\udd29 \ud835\udd2a \ud835\udd2b \ud835\udd2c \ud835\udd2d \ud835\udd2e \ud835\udd2f \ud835\udd30 \ud835\udd31 \ud835\udd32 \ud835\udd33 \ud835\udd34 \ud835\udd35 \ud835\udd36 \ud835\udd37".split(" ");this.capitalLatinDoubleStruck="\ud835\udd38 \ud835\udd39 \u2102 \ud835\udd3b \ud835\udd3c \ud835\udd3d \ud835\udd3e \u210d \ud835\udd40 \ud835\udd41 \ud835\udd42 \ud835\udd43 \ud835\udd44 \u2115 \ud835\udd46 \u2119 \u211a \u211d \ud835\udd4a \ud835\udd4b \ud835\udd4c \ud835\udd4d \ud835\udd4e \ud835\udd4f \ud835\udd50 \u2124".split(" ");
-this.smallLatinDoubleStruck="\ud835\udd52 \ud835\udd53 \ud835\udd54 \ud835\udd55 \ud835\udd56 \ud835\udd57 \ud835\udd58 \ud835\udd59 \ud835\udd5a \ud835\udd5b \ud835\udd5c \ud835\udd5d \ud835\udd5e \ud835\udd5f \ud835\udd60 \ud835\udd61 \ud835\udd62 \ud835\udd63 \ud835\udd64 \ud835\udd65 \ud835\udd66 \ud835\udd67 \ud835\udd68 \ud835\udd69 \ud835\udd6a \ud835\udd6b".split(" ");this.capitalLatinBoldFraktur="\ud835\udd6c \ud835\udd6d \ud835\udd6e \ud835\udd6f \ud835\udd70 \ud835\udd71 \ud835\udd72 \ud835\udd73 \ud835\udd74 \ud835\udd75 \ud835\udd76 \ud835\udd77 \ud835\udd78 \ud835\udd79 \ud835\udd7a \ud835\udd7b \ud835\udd7c \ud835\udd7d \ud835\udd7e \ud835\udd7f \ud835\udd80 \ud835\udd81 \ud835\udd82 \ud835\udd83 \ud835\udd84 \ud835\udd85".split(" ");
-this.smallLatinBoldFraktur="\ud835\udd86 \ud835\udd87 \ud835\udd88 \ud835\udd89 \ud835\udd8a \ud835\udd8b \ud835\udd8c \ud835\udd8d \ud835\udd8e \ud835\udd8f \ud835\udd90 \ud835\udd91 \ud835\udd92 \ud835\udd93 \ud835\udd94 \ud835\udd95 \ud835\udd96 \ud835\udd97 \ud835\udd98 \ud835\udd99 \ud835\udd9a \ud835\udd9b \ud835\udd9c \ud835\udd9d \ud835\udd9e \ud835\udd9f".split(" ");this.capitalLatinSansSerif="\ud835\udda0 \ud835\udda1 \ud835\udda2 \ud835\udda3 \ud835\udda4 \ud835\udda5 \ud835\udda6 \ud835\udda7 \ud835\udda8 \ud835\udda9 \ud835\uddaa \ud835\uddab \ud835\uddac \ud835\uddad \ud835\uddae \ud835\uddaf \ud835\uddb0 \ud835\uddb1 \ud835\uddb2 \ud835\uddb3 \ud835\uddb4 \ud835\uddb5 \ud835\uddb6 \ud835\uddb7 \ud835\uddb8 \ud835\uddb9".split(" ");
-this.smallLatinSansSerif="\ud835\uddba \ud835\uddbb \ud835\uddbc \ud835\uddbd \ud835\uddbe \ud835\uddbf \ud835\uddc0 \ud835\uddc1 \ud835\uddc2 \ud835\uddc3 \ud835\uddc4 \ud835\uddc5 \ud835\uddc6 \ud835\uddc7 \ud835\uddc8 \ud835\uddc9 \ud835\uddca \ud835\uddcb \ud835\uddcc \ud835\uddcd \ud835\uddce \ud835\uddcf \ud835\uddd0 \ud835\uddd1 \ud835\uddd2 \ud835\uddd3".split(" ");this.capitalLatinSansSerifBold="\ud835\uddd4 \ud835\uddd5 \ud835\uddd6 \ud835\uddd7 \ud835\uddd8 \ud835\uddd9 \ud835\uddda \ud835\udddb \ud835\udddc \ud835\udddd \ud835\uddde \ud835\udddf \ud835\udde0 \ud835\udde1 \ud835\udde2 \ud835\udde3 \ud835\udde4 \ud835\udde5 \ud835\udde6 \ud835\udde7 \ud835\udde8 \ud835\udde9 \ud835\uddea \ud835\uddeb \ud835\uddec \ud835\udded".split(" ");
-this.smallLatinSansSerifBold="\ud835\uddee \ud835\uddef \ud835\uddf0 \ud835\uddf1 \ud835\uddf2 \ud835\uddf3 \ud835\uddf4 \ud835\uddf5 \ud835\uddf6 \ud835\uddf7 \ud835\uddf8 \ud835\uddf9 \ud835\uddfa \ud835\uddfb \ud835\uddfc \ud835\uddfd \ud835\uddfe \ud835\uddff \ud835\ude00 \ud835\ude01 \ud835\ude02 \ud835\ude03 \ud835\ude04 \ud835\ude05 \ud835\ude06 \ud835\ude07".split(" ");this.capitalLatinSansSerifItalic="\ud835\ude08 \ud835\ude09 \ud835\ude0a \ud835\ude0b \ud835\ude0c \ud835\ude0d \ud835\ude0e \ud835\ude0f \ud835\ude10 \ud835\ude11 \ud835\ude12 \ud835\ude13 \ud835\ude14 \ud835\ude15 \ud835\ude16 \ud835\ude17 \ud835\ude18 \ud835\ude19 \ud835\ude1a \ud835\ude1b \ud835\ude1c \ud835\ude1d \ud835\ude1e \ud835\ude1f \ud835\ude20 \ud835\ude21".split(" ");
-this.smallLatinSansSerifItalic="\ud835\ude22 \ud835\ude23 \ud835\ude24 \ud835\ude25 \ud835\ude26 \ud835\ude27 \ud835\ude28 \ud835\ude29 \ud835\ude2a \ud835\ude2b \ud835\ude2c \ud835\ude2d \ud835\ude2e \ud835\ude2f \ud835\ude30 \ud835\ude31 \ud835\ude32 \ud835\ude33 \ud835\ude34 \ud835\ude35 \ud835\ude36 \ud835\ude37 \ud835\ude38 \ud835\ude39 \ud835\ude3a \ud835\ude3b".split(" ");this.capitalLatinMonospace="\ud835\ude70 \ud835\ude71 \ud835\ude72 \ud835\ude73 \ud835\ude74 \ud835\ude75 \ud835\ude76 \ud835\ude77 \ud835\ude78 \ud835\ude79 \ud835\ude7a \ud835\ude7b \ud835\ude7c \ud835\ude7d \ud835\ude7e \ud835\ude7f \ud835\ude80 \ud835\ude81 \ud835\ude82 \ud835\ude83 \ud835\ude84 \ud835\ude85 \ud835\ude86 \ud835\ude87 \ud835\ude88 \ud835\ude89".split(" ");
-this.smallLatinMonospace="\ud835\ude8a \ud835\ude8b \ud835\ude8c \ud835\ude8d \ud835\ude8e \ud835\ude8f \ud835\ude90 \ud835\ude91 \ud835\ude92 \ud835\ude93 \ud835\ude94 \ud835\ude95 \ud835\ude96 \ud835\ude97 \ud835\ude98 \ud835\ude99 \ud835\ude9a \ud835\ude9b \ud835\ude9c \ud835\ude9d \ud835\ude9e \ud835\ude9f \ud835\udea0 \ud835\udea1 \ud835\udea2 \ud835\udea3".split(" ");this.latinDoubleStruckItalic=["\u2145","\u2146","\u2147","\u2148","\u2149"];this.capitalGreek="\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039a\u039b\u039c\u039d\u039e\u039f\u03a0\u03a1\u03a3\u03a4\u03a5\u03a6\u03a7\u03a8\u03a9".split("");
-this.smallGreek="\u03b1\u03b2\u03b3\u03b4\u03b5\u03b6\u03b7\u03b8\u03b9\u03ba\u03bb\u03bc\u03bd\u03be\u03bf\u03c0\u03c1\u03c2\u03c3\u03c4\u03c5\u03c6\u03c7\u03c8\u03c9".split("");this.capitalGreekBold="\ud835\udea8 \ud835\udea9 \ud835\udeaa \ud835\udeab \ud835\udeac \ud835\udead \ud835\udeae \ud835\udeaf \ud835\udeb0 \ud835\udeb1 \ud835\udeb2 \ud835\udeb3 \ud835\udeb4 \ud835\udeb5 \ud835\udeb6 \ud835\udeb7 \ud835\udeb8 \ud835\udeba \ud835\udebb \ud835\udebc \ud835\udebd \ud835\udebe \ud835\udebf \ud835\udec0".split(" ");
-this.smallGreekBold="\ud835\udec2 \ud835\udec3 \ud835\udec4 \ud835\udec5 \ud835\udec6 \ud835\udec7 \ud835\udec8 \ud835\udec9 \ud835\udeca \ud835\udecb \ud835\udecc \ud835\udecd \ud835\udece \ud835\udecf \ud835\uded0 \ud835\uded1 \ud835\uded2 \ud835\uded3 \ud835\uded4 \ud835\uded5 \ud835\uded6 \ud835\uded7 \ud835\uded8 \ud835\uded9 \ud835\udeda".split(" ");this.capitalGreekItalic="\ud835\udee2 \ud835\udee3 \ud835\udee4 \ud835\udee5 \ud835\udee6 \ud835\udee7 \ud835\udee8 \ud835\udee9 \ud835\udeea \ud835\udeeb \ud835\udeec \ud835\udeed \ud835\udeee \ud835\udeef \ud835\udef0 \ud835\udef1 \ud835\udef2 \ud835\udef4 \ud835\udef5 \ud835\udef6 \ud835\udef7 \ud835\udef8 \ud835\udef9 \ud835\udefa".split(" ");
-this.smallGreekItalic="\ud835\udefc \ud835\udefd \ud835\udefe \ud835\udeff \ud835\udf00 \ud835\udf01 \ud835\udf02 \ud835\udf03 \ud835\udf04 \ud835\udf05 \ud835\udf06 \ud835\udf07 \ud835\udf08 \ud835\udf09 \ud835\udf0a \ud835\udf0b \ud835\udf0c \ud835\udf0d \ud835\udf0e \ud835\udf0f \ud835\udf10 \ud835\udf11 \ud835\udf12 \ud835\udf13 \ud835\udf14".split(" ");this.capitalGreekSansSerifBold="\ud835\udf56 \ud835\udf57 \ud835\udf58 \ud835\udf59 \ud835\udf5a \ud835\udf5b \ud835\udf5c \ud835\udf5d \ud835\udf5e \ud835\udf5f \ud835\udf60 \ud835\udf61 \ud835\udf62 \ud835\udf63 \ud835\udf64 \ud835\udf65 \ud835\udf66 \ud835\udf68 \ud835\udf69 \ud835\udf6a \ud835\udf6b \ud835\udf6c \ud835\udf6d \ud835\udf6e".split(" ");
-this.smallGreekSansSerifBold="\ud835\udf70 \ud835\udf71 \ud835\udf72 \ud835\udf73 \ud835\udf74 \ud835\udf75 \ud835\udf76 \ud835\udf77 \ud835\udf78 \ud835\udf79 \ud835\udf7a \ud835\udf7b \ud835\udf7c \ud835\udf7d \ud835\udf7e \ud835\udf7f \ud835\udf80 \ud835\udf81 \ud835\udf82 \ud835\udf83 \ud835\udf84 \ud835\udf85 \ud835\udf86 \ud835\udf87 \ud835\udf88".split(" ");this.greekDoubleStruck=["\u213c","\u213d","\u213e","\u213f"];this.hebrewLetters=["\u2135","\u2136","\u2137","\u2138"];this.additions="+\u00b1\u2213\u2214\u2227\u2228\u2229\u222a\u228c\u2293\u2294\u229d\u229e\u22a4\u22a5\u22ba\u22bb\u22bc\u22c4\u22ce\u22cf\u22d2\u22d3\u25b3\u25b7\u25bd\u25c1\u2a5e\u2295".split("");
-this.invisiblePlus_=cvox.SemanticUtil.numberToUnicode(8292);this.additions.push(this.invisiblePlus_);this.multiplications="\u2020\u2021\u2210\u2217\u2218\u2219\u2240\u229a\u229b\u22a0\u22a1\u22c5\u22c6\u22c7\u22c9\u22ca\u22cb\u22cc\u25cb".split("");this.invisibleTimes_=cvox.SemanticUtil.numberToUnicode(8290);this.multiplications.push(this.invisibleTimes_);this.subtractions="-\u2052\u207b\u208b\u2212\u2216\u2238\u2242\u2296\u229f\u2796\u2a29\u2a2a\u2a2b\u2a2c\u2a3a\u2a41\u2a6c\ufe63\uff0d\u2010\u2011".split("");
-this.divisions="/\u00f7\u2044\u2215\u2298\u27cc\u29bc\u2a38".split("");this.functionApplication_=cvox.SemanticUtil.numberToUnicode(8289);this.equalities="=~\u207c\u208c\u223c\u223d\u2243\u2245\u2248\u224a\u224b\u224c\u224d\u224e\u2251\u2252\u2253\u2254\u2255\u2256\u2257\u2258\u2259\u225a\u225b\u225c\u225d\u225e\u225f\u2261\u2263\u29e4\u2a66\u2a6e\u2a6f\u2a70\u2a71\u2a72\u2a73\u2a74\u2a75\u2a76\u2a77\u2a78\u22d5\u2a6d\u2a6a\u2a6b\u2a6c\ufe66\uff1d".split("");this.inequalities="<>\u2241\u2242\u2244\u2246\u2247\u2249\u224f\u2250\u2260\u2262\u2264\u2265\u2266\u2267\u2268\u2269\u226a\u226b\u226c\u226d\u226e\u226f\u2270\u2271\u2272\u2273\u2274\u2275\u2276\u2277\u2278\u2279\u227a\u227b\u227c\u227d\u227e\u227f\u2280\u2281\u22d6\u22d7\u22d8\u22d9\u22da\u22db\u22dc\u22dd\u22de\u22df\u22e0\u22e1\u22e2\u22e3\u22e4\u22e5\u22e6\u22e7\u22e8\u22e9\u2a79\u2a7a\u2a7b\u2a7c\u2a7d\u2a7e\u2a7f\u2a80\u2a81\u2a82\u2a83\u2a84\u2a85\u2a86\u2a87\u2a88\u2a89\u2a8a\u2a8b\u2a8c\u2a8d\u2a8e\u2a8f\u2a90\u2a91\u2a92\u2a93\u2a94\u2a95\u2a96\u2a97\u2a98\u2a99\u2a9a\u2a9b\u2a9c\u2a9d\u2a9e\u2a9f\u2aa0\u2aa1\u2aa2\u2aa3\u2aa4\u2aa5\u2aa6\u2aa7\u2aa8\u2aa9\u2aaa\u2aab\u2aac\u2aad\u2aae\u2aaf\u2ab0\u2ab1\u2ab2\u2ab3\u2ab4\u2ab5\u2ab6\u2ab7\u2ab8\u2ab9\u2aba\u2abb\u2abc\u2af7\u2af8\u2af9\u2afa\u29c0\u29c1\ufe64\ufe65\uff1c\uff1e".split("");
-this.relations=[];this.arrows="\u2190\u2191\u2192\u2193\u2194\u2195\u2196\u2197\u2198\u2199\u219a\u219b\u219c\u219d\u219e\u219f\u21a0\u21a1\u21a2\u21a3\u21a4\u21a5\u21a6\u21a7\u21a8\u21a9\u21aa\u21ab\u21ac\u21ad\u21ae\u21af\u21b0\u21b1\u21b2\u21b3\u21b4\u21b5\u21b6\u21b7\u21b8\u21b9\u21ba\u21bb\u21c4\u21c5\u21c6\u21c7\u21c8\u21c9\u21ca\u21cd\u21ce\u21cf\u21d0\u21d1\u21d2\u21d3\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u21da\u21db\u21dc\u21dd\u21de\u21df\u21e0\u21e1\u21e2\u21e3\u21e4\u21e5\u21e6\u21e7\u21e8\u21e9\u21ea\u21eb\u21ec\u21ed\u21ee\u21ef\u21f0\u21f1\u21f2\u21f3\u21f4\u21f5\u21f6\u21f7\u21f8\u21f9\u21fa\u21fb\u21fc\u21fd\u21fe\u21ff\u2301\u2303\u2304\u2324\u238b\u2794\u2798\u2799\u279a\u279b\u279c\u279d\u279e\u279f\u27a0\u27a1\u27a2\u27a3\u27a4\u27a5\u27a6\u27a7\u27a8\u27a9\u27aa\u27ab\u27ac\u27ad\u27ae\u27af\u27b1\u27b2\u27b3\u27b4\u27b5\u27b6\u27b7\u27b8\u27b9\u27ba\u27bb\u27bc\u27bd\u27be\u27f0\u27f1\u27f2\u27f3\u27f4\u27f5\u27f6\u27f7\u27f8\u27f9\u27fa\u27fb\u27fc\u27fd\u27fe\u27ff\u2900\u2901\u2902\u2903\u2904\u2905\u2906\u2907\u2908\u2909\u290a\u290b\u290c\u290d\u290e\u290f\u2910\u2911\u2912\u2913\u2914\u2915\u2916\u2917\u2918\u2919\u291a\u291b\u291c\u291d\u291e\u291f\u2920\u2921\u2922\u2923\u2924\u2925\u2926\u2927\u2928\u2929\u292a\u292d\u292e\u292f\u2930\u2931\u2932\u2933\u2934\u2935\u2936\u2937\u2938\u2939\u293a\u293b\u293c\u293d\u293e\u293f\u2940\u2941\u2942\u2943\u2944\u2945\u2946\u2947\u2948\u2949\u2970\u2971\u2972\u2973\u2974\u2975\u2976\u2977\u2978\u2979\u297a\u297b\u29b3\u29b4\u29bd\u29ea\u29ec\u29ed\u2a17\u2b00\u2b01\u2b02\u2b03\u2b04\u2b05\u2b06\u2b07\u2b08\u2b09\u2b0a\u2b0b\u2b0c\u2b0d\u2b0e\u2b0f\u2b10\u2b11\u2b30\u2b31\u2b32\u2b33\u2b34\u2b35\u2b36\u2b37\u2b38\u2b39\u2b3a\u2b3b\u2b3c\u2b3d\u2b3e\u2b3f\u2b40\u2b41\u2b42\u2b43\u2b44\u2b45\u2b46\u2b47\u2b48\u2b49\u2b4a\u2b4b\u2b4c\uffe9\uffea\uffeb\uffec\u21bc\u21bd\u21be\u21bf\u21c0\u21c1\u21c2\u21c3\u21cb\u21cc\u294a\u294b\u294c\u294d\u294e\u294f\u2950\u2951\u2952\u2953\u2954\u2955\u2956\u2957\u2958\u2959\u295a\u295b\u295c\u295d\u295e\u295f\u2960\u2961\u2962\u2963\u2964\u2965\u2966\u2967\u2968\u2969\u296a\u296b\u296c\u296d\u296e\u296f\u297c\u297d\u297e\u297f".split("");
-this.sumOps="\u2140\u220f\u2210\u2211\u22c0\u22c1\u22c2\u22c3\u2a00\u2a01\u2a02\u2a03\u2a04\u2a05\u2a06\u2a07\u2a08\u2a09\u2a0a\u2a0b\u2afc\u2aff".split("");this.intOps="\u222b\u222c\u222d\u222e\u222f\u2230\u2231\u2232\u2233\u2a0c\u2a0d\u2a0e\u2a0f\u2a10\u2a11\u2a12\u2a13\u2a14\u2a15\u2a16\u2a17\u2a18\u2a19\u2a1a\u2a1b\u2a1c".split("");this.prefixOps=["\u2200","\u2203"];this.digitsNormal="0123456789".split("");this.digitsFullWidth="\uff10\uff11\uff12\uff13\uff14\uff15\uff16\uff17\uff18\uff19".split("");
-this.digitsBold="\ud835\udfce \ud835\udfcf \ud835\udfd0 \ud835\udfd1 \ud835\udfd2 \ud835\udfd3 \ud835\udfd4 \ud835\udfd5 \ud835\udfd6 \ud835\udfd7".split(" ");this.digitsDoubleStruck="\ud835\udfd8 \ud835\udfd9 \ud835\udfda \ud835\udfdb \ud835\udfdc \ud835\udfdd \ud835\udfde \ud835\udfdf \ud835\udfe0 \ud835\udfe1".split(" ");this.digitsSansSerif="\ud835\udfe2 \ud835\udfe3 \ud835\udfe4 \ud835\udfe5 \ud835\udfe6 \ud835\udfe7 \ud835\udfe8 \ud835\udfe9 \ud835\udfea \ud835\udfeb".split(" ");this.digitsSansSerifBold=
-"\ud835\udfec \ud835\udfed \ud835\udfee \ud835\udfef \ud835\udff0 \ud835\udff1 \ud835\udff2 \ud835\udff3 \ud835\udff4 \ud835\udff5".split(" ");this.digitsMonospace="\ud835\udff6 \ud835\udff7 \ud835\udff8 \ud835\udff9 \ud835\udffa \ud835\udffb \ud835\udffc \ud835\udffd \ud835\udffe \ud835\udfff".split(" ");this.digitsSuperscript="\u00b2\u00b3\u00b9\u2070\u2074\u2075\u2076\u2077\u2078\u2079".split("");this.digitsSubscript="\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089".split("");this.fractions=
-"\u00bc\u00bd\u00be\u2150\u2151\u2152\u2153\u2154\u2155\u2156\u2157\u2158\u2159\u215a\u215b\u215c\u215d\u215e\u215f\u2189".split("");this.enclosedNumbers="\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b\u246c\u246d\u246e\u246f\u2470\u2471\u2472\u2473\u24ea\u24eb\u24ec\u24ed\u24ee\u24ef\u24f0\u24f1\u24f2\u24f3\u24f4\u24f5\u24f6\u24f7\u24f8\u24f9\u24fa\u24fb\u24fc\u24fd\u24fe\u24ff\u2776\u2777\u2778\u2779\u277a\u277b\u277c\u277d\u277e\u277f\u2780\u2781\u2782\u2783\u2784\u2785\u2786\u2787\u2788\u2789\u278a\u278b\u278c\u278d\u278e\u278f\u2790\u2791\u2792\u2793\u3248\u3249\u324a\u324b\u324c\u324d\u324e\u324f\u3251\u3252\u3253\u3254\u3255\u3256\u3257\u3258\u3259\u325a\u325b\u325c\u325d\u325e\u325f\u32b1\u32b2\u32b3\u32b4\u32b5\u32b6\u32b7\u32b8\u32b9\u32ba\u32bb\u32bc\u32bd\u32be\u32bf".split("");
-this.fencedNumbers="\u2474\u2475\u2476\u2477\u2478\u2479\u247a\u247b\u247c\u247d\u247e\u247f\u2480\u2481\u2482\u2483\u2484\u2485\u2486\u2487".split("");this.punctuatedNumbers="\u2488 \u2489 \u248a \u248b \u248c \u248d \u248e \u248f \u2490 \u2491 \u2492 \u2493 \u2494 \u2495 \u2496 \u2497 \u2498 \u2499 \u249a \u249b \ud83c\udd00 \ud83c\udd01 \ud83c\udd02 \ud83c\udd03 \ud83c\udd04 \ud83c\udd05 \ud83c\udd06 \ud83c\udd07 \ud83c\udd08 \ud83c\udd09 \ud83c\udd0a".split(" ");this.numbers=this.fractions.concat(this.digitsSuperscript,
-this.digitsSubscript,this.enclosedNumbers,this.fencedNumbers,this.punctuatedNumbers);this.trigonometricFunctions="cos cot csc sec sin tan arccos arccot arccsc arcsec arcsin arctan".split(" ");this.hyperbolicFunctions="cosh coth csch sech sinh tanh arcosh arcoth arcsch arsech arsinh artanh arccosh arccoth arccsch arcsech arcsinh arctanh".split(" ");this.algebraicFunctions="deg det dim hom ker Tr tr".split(" ");this.elementaryFunctions="log ln lg exp expt gcd gcd arg im re Pr".split(" ");this.prefixFunctions=
-this.trigonometricFunctions.concat(this.hyperbolicFunctions,this.algebraicFunctions,this.elementaryFunctions);this.limitFunctions="inf lim liminf limsup max min sup injlim projlim".split(" ");this.infixFunctions=["mod","rem"];this.symbolSetToSemantic_=[{set:this.generalPunctuations,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.ellipses,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.ELLIPSIS},{set:this.fullStops,type:cvox.SemanticAttr.Type.PUNCTUATION,
-role:cvox.SemanticAttr.Role.FULLSTOP},{set:this.dashes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.DASH},{set:this.primes,type:cvox.SemanticAttr.Type.PUNCTUATION,role:cvox.SemanticAttr.Role.PRIME},{set:this.leftFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.OPEN},{set:this.rightFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.CLOSE},{set:this.topFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.TOP},{set:this.bottomFences,
-type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.BOTTOM},{set:this.neutralFences,type:cvox.SemanticAttr.Type.FENCE,role:cvox.SemanticAttr.Role.NEUTRAL},{set:this.smallLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatin,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalLatinFullWidth,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalLatinBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLD},
-{set:this.smallLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalLatinItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SCRIPT},{set:this.capitalLatinScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.SCRIPT},{set:this.smallLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.capitalLatinBoldScript,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDSCRIPT},{set:this.smallLatinFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.capitalLatinFraktur,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.FRAKTUR},{set:this.smallLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.capitalLatinDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.smallLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,
-font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.capitalLatinBoldFraktur,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.BOLDFRAKTUR},{set:this.smallLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.capitalLatinSansSerif,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.smallLatinSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalLatinSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.smallLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.capitalLatinSansSerifItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,
-role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.SANSSERIFITALIC},{set:this.smallLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.capitalLatinMonospace,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.latinDoubleStruckItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.LATINLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCKITALIC},
-{set:this.smallGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.capitalGreek,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.smallGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.BOLD},{set:this.capitalGreekBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,
-font:cvox.SemanticAttr.Font.BOLD},{set:this.smallGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.capitalGreekItalic,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.ITALIC},{set:this.smallGreekSansSerifBold,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.capitalGreekSansSerifBold,
-type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.greekDoubleStruck,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.GREEKLETTER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.hebrewLetters,type:cvox.SemanticAttr.Type.IDENTIFIER,role:cvox.SemanticAttr.Role.OTHERLETTER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsNormal,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsFullWidth,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.NORMAL},{set:this.digitsBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.BOLD},{set:this.digitsDoubleStruck,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.DOUBLESTRUCK},{set:this.digitsSansSerif,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,
-font:cvox.SemanticAttr.Font.SANSSERIF},{set:this.digitsSansSerifBold,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.SANSSERIFBOLD},{set:this.digitsMonospace,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER,font:cvox.SemanticAttr.Font.MONOSPACE},{set:this.numbers,type:cvox.SemanticAttr.Type.NUMBER,role:cvox.SemanticAttr.Role.INTEGER},{set:this.additions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.ADDITION},
-{set:this.multiplications,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION},{set:this.subtractions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.SUBTRACTION},{set:this.divisions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.DIVISION},{set:this.prefixOps,type:cvox.SemanticAttr.Type.PREFIXOP,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.equalities,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.EQUALITY},{set:this.inequalities,
-type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.INEQUALITY},{set:this.relations,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.UNKNOWN},{set:this.arrows,type:cvox.SemanticAttr.Type.RELATION,role:cvox.SemanticAttr.Role.ARROW},{set:this.sumOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.SUM},{set:this.intOps,type:cvox.SemanticAttr.Type.LARGEOP,role:cvox.SemanticAttr.Role.INTEGRAL},{set:this.limitFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.LIMFUNC},
-{set:this.prefixFunctions,type:cvox.SemanticAttr.Type.FUNCTION,role:cvox.SemanticAttr.Role.PREFIXFUNC},{set:this.infixFunctions,type:cvox.SemanticAttr.Type.OPERATOR,role:cvox.SemanticAttr.Role.MULTIPLICATION}]};goog.addSingletonGetter(cvox.SemanticAttr);
-cvox.SemanticAttr.Type={PUNCTUATION:"punctuation",FENCE:"fence",NUMBER:"number",IDENTIFIER:"identifier",TEXT:"text",OPERATOR:"operator",RELATION:"relation",LARGEOP:"largeop",FUNCTION:"function",ACCENT:"accent",FENCED:"fenced",FRACTION:"fraction",PUNCTUATED:"punctuated",RELSEQ:"relseq",MULTIREL:"multirel",INFIXOP:"infixop",PREFIXOP:"prefixop",POSTFIXOP:"postfixop",APPL:"appl",INTEGRAL:"integral",BIGOP:"bigop",SQRT:"sqrt",ROOT:"root",LIMUPPER:"limupper",LIMLOWER:"limlower",LIMBOTH:"limboth",SUBSCRIPT:"subscript",
-SUPERSCRIPT:"superscript",UNDERSCORE:"underscore",OVERSCORE:"overscore",TABLE:"table",MULTILINE:"multiline",MATRIX:"matrix",VECTOR:"vector",CASES:"cases",ROW:"row",LINE:"line",CELL:"cell",UNKNOWN:"unknown",EMPTY:"empty"};
-cvox.SemanticAttr.Role={ELLIPSIS:"ellipsis",FULLSTOP:"fullstop",DASH:"dash",PRIME:"prime",VBAR:"vbar",OPENFENCE:"openfence",CLOSEFENCE:"closefence",APPLICATION:"application",OPEN:"open",CLOSE:"close",TOP:"top",BOTTOM:"bottom",NEUTRAL:"neutral",LATINLETTER:"latinletter",GREEKLETTER:"greekletter",OTHERLETTER:"otherletter",INTEGER:"integer",FLOAT:"float",OTHERNUMBER:"othernumber",MULTIACCENT:"multiaccent",OVERACCENT:"overaccent",UNDERACCENT:"underaccent",LEFTRIGHT:"leftright",ABOVEBELOW:"abovebelow",
-SEQUENCE:"sequence",ENDPUNCT:"endpunct",STARTPUNCT:"startpunct",NEGATIVE:"negative",NEGATION:"negation",MULTIOP:"multiop",LIMFUNC:"limit function",INFIXFUNC:"infix function",PREFIXFUNC:"prefix function",POSTFIXFUNC:"postfix function",SUM:"sum",INTEGRAL:"integral",ADDITION:"addition",MULTIPLICATION:"multiplication",DIVISION:"division",SUBTRACTION:"subtraction",IMPLICIT:"implicit",EQUALITY:"equality",INEQUALITY:"inequality",ELEMENT:"element",BINREL:"binrel",ARROW:"arrow",MULTILINE:"multiline",MATRIX:"matrix",
-VECTOR:"vector",CASES:"cases",TABLE:"table",UNKNOWN:"unknown"};cvox.SemanticAttr.Font={BOLD:"bold",BOLDFRAKTUR:"bold-fraktur",BOLDITALIC:"bold-italic",BOLDSCRIPT:"bold-script",DOUBLESTRUCK:"double-struck",DOUBLESTRUCKITALIC:"double-struck-italic",FRAKTUR:"fraktur",ITALIC:"italic",MONOSPACE:"monospace",NORMAL:"normal",SCRIPT:"script",SANSSERIF:"sans-serif",SANSSERIFITALIC:"sans-serif-italic",SANSSERIFBOLD:"sans-serif-bold",SANSSERIFBOLDITALIC:"sans-serif-bold-italic",UNKNOWN:"unknown"};
-cvox.SemanticAttr.lookupMeaning=function(a){return cvox.SemanticAttr.getInstance().lookupMeaning_(a)};cvox.SemanticAttr.invisibleTimes=function(){return cvox.SemanticAttr.getInstance().invisibleTimes_};cvox.SemanticAttr.invisibleComma=function(){return cvox.SemanticAttr.getInstance().invisibleComma_};cvox.SemanticAttr.functionApplication=function(){return cvox.SemanticAttr.getInstance().functionApplication_};
-cvox.SemanticAttr.isMatchingFenceRole=function(a,b){return a==cvox.SemanticAttr.Role.OPEN&&b==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL&&b==cvox.SemanticAttr.Role.NEUTRAL||a==cvox.SemanticAttr.Role.TOP&&b==cvox.SemanticAttr.Role.BOTTOM};cvox.SemanticAttr.isMatchingFence=function(a,b){return cvox.SemanticAttr.getInstance().isMatchingFence_(a,b)};cvox.SemanticAttr.isOpeningFence=function(a){return a==cvox.SemanticAttr.Role.OPEN||a==cvox.SemanticAttr.Role.NEUTRAL};
-cvox.SemanticAttr.isClosingFence=function(a){return a==cvox.SemanticAttr.Role.CLOSE||a==cvox.SemanticAttr.Role.NEUTRAL};cvox.SemanticAttr.isCharacterD=function(a){var b="d \u2146 \uff44 \ud835\udc1d \ud835\udc51 \ud835\udcb9 \ud835\udced \ud835\udd21 \ud835\udd55 \ud835\udd89 \ud835\uddbd \ud835\uddf1 \ud835\ude25 \ud835\ude8d".split(" ");return-1!=b.indexOf(a)};
-cvox.SemanticAttr.prototype.isMatchingFence_=function(a,b){return-1!=this.neutralFences.indexOf(a)?a==b:this.openClosePairs[a]==b||this.topBottomPairs[a]==b};
-cvox.SemanticAttr.prototype.lookupMeaning_=function(a){for(var b=0,c;c=this.symbolSetToSemantic_[b];b++)if(-1!=c.set.indexOf(a))return{role:c.role||cvox.SemanticAttr.Role.UNKNOWN,type:c.type||cvox.SemanticAttr.Type.UNKNOWN,font:c.font||cvox.SemanticAttr.Font.UNKNOWN};return{role:cvox.SemanticAttr.Role.UNKNOWN,type:cvox.SemanticAttr.Type.UNKNOWN,font:cvox.SemanticAttr.Font.UNKNOWN}};cvox.SemanticTree=function(a){this.idCounter_=0;this.mathml=a;this.root=this.parseMathml_(a)};cvox.SemanticTree.Node=function(a){this.id=a;this.mathml=[];this.parent=null;this.type=cvox.SemanticAttr.Type.UNKNOWN;this.role=cvox.SemanticAttr.Role.UNKNOWN;this.font=cvox.SemanticAttr.Font.UNKNOWN;this.childNodes=[];this.textContent="";this.contentNodes=[]};
-cvox.SemanticTree.Node.prototype.querySelectorAll=function(a){for(var b=[],c=0,d;d=this.childNodes[c];c++)b=b.concat(d.querySelectorAll(a));a(this)&&b.unshift(this);return b};cvox.SemanticTree.prototype.xml=function(a){var b=new DOMParser,b=b.parseFromString("<stree></stree>","text/xml");a=this.root.xml(b,a);b.childNodes[0].appendChild(a);return b.childNodes[0]};
-cvox.SemanticTree.Node.prototype.xml=function(a,b){var c=function(c,d){for(var g=d.map(function(c){return c.xml(a,b)}),h=a.createElement(c),k=0,l;l=g[k];k++)h.appendChild(l);return h},d=a.createElement(this.type);b||this.xmlAttributes_(d);d.textContent=this.textContent;0<this.contentNodes.length&&d.appendChild(c("content",this.contentNodes));0<this.childNodes.length&&d.appendChild(c("children",this.childNodes));return d};cvox.SemanticTree.prototype.toString=function(a){var b=new XMLSerializer;return b.serializeToString(this.xml(a))};
-cvox.SemanticTree.prototype.formatXml=function(a){a=this.toString(a);return cvox.SemanticTree.formatXml(a)};cvox.SemanticTree.formatXml=function(a){var b=/(>)(<)(\/*)/g;a=a.replace(b,"$1\r\n$2$3");b=/(>)(.+)(<c)/g;a=a.replace(b,"$1\r\n$2\r\n$3");var c="",d="";a.split("\r\n").forEach(function(a){a.match(/.+<\/\w[^>]*>$/)?c+=d+a+"\r\n":a.match(/^<\/\w/)?d&&(d=d.slice(2),c+=d+a+"\r\n"):a.match(/^<\w[^>]*[^\/]>.*$/)?(c+=d+a+"\r\n",d+=" "):c+=d+a+"\r\n"});return c};
-cvox.SemanticTree.Node.prototype.toString=function(a){var b=new XMLSerializer,c=new DOMParser,c=c.parseFromString("","text/xml");return b.serializeToString(this.xml(c,a))};cvox.SemanticTree.Node.prototype.xmlAttributes_=function(a){a.setAttribute("role",this.role);this.font!=cvox.SemanticAttr.Font.UNKNOWN&&a.setAttribute("font",this.font);a.setAttribute("id",this.id)};cvox.SemanticTree.prototype.createNode_=function(){return new cvox.SemanticTree.Node(this.idCounter_++)};
-cvox.SemanticTree.Node.prototype.updateContent_=function(a){a=a.trim();if(this.textContent!=a){var b=cvox.SemanticAttr.lookupMeaning(a);this.textContent=a;this.role=b.role;this.type=b.type;this.font=b.font}};cvox.SemanticTree.Node.prototype.addMathmlNodes_=function(a){for(var b=0,c;c=a[b];b++)-1==this.mathml.indexOf(c)&&this.mathml.push(c)};cvox.SemanticTree.Node.prototype.appendChild_=function(a){this.childNodes.push(a);this.addMathmlNodes_(a.mathml);a.parent=this};
-cvox.SemanticTree.Node.prototype.appendContentNode_=function(a){a&&(this.contentNodes.push(a),this.addMathmlNodes_(a.mathml),a.parent=this)};
-cvox.SemanticTree.prototype.parseMathml_=function(a){var b=cvox.DomUtil.toArray(a.children);switch(cvox.SemanticUtil.tagName(a)){case "MATH":case "MROW":case "MPADDED":case "MSTYLE":return b=cvox.SemanticUtil.purgeNodes(b),1==b.length?this.parseMathml_(b[0]):this.processRow_(this.parseMathmlChildren_(b));case "MFRAC":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.FRACTION,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]),a.role=cvox.SemanticAttr.Role.DIVISION,a;case "MSUB":case "MSUP":case "MSUBSUP":case "MOVER":case "MUNDER":case "MUNDEROVER":return this.makeLimitNode_(cvox.SemanticUtil.tagName(a),
-this.parseMathmlChildren_(b));case "MROOT":return this.makeBranchNode_(cvox.SemanticAttr.Type.ROOT,[this.parseMathml_(b[0]),this.parseMathml_(b[1])],[]);case "MSQRT":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),this.makeBranchNode_(cvox.SemanticAttr.Type.SQRT,[this.processRow_(b)],[]);case "MTABLE":return a=this.makeBranchNode_(cvox.SemanticAttr.Type.TABLE,this.parseMathmlChildren_(b),[]),cvox.SemanticTree.tableIsMultiline_(a)&&this.tableToMultiline_(a),a;case "MTR":return a=
-this.makeBranchNode_(cvox.SemanticAttr.Type.ROW,this.parseMathmlChildren_(b),[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTD":return b=this.parseMathmlChildren_(cvox.SemanticUtil.purgeNodes(b)),a=this.makeBranchNode_(cvox.SemanticAttr.Type.CELL,[this.processRow_(b)],[]),a.role=cvox.SemanticAttr.Role.TABLE,a;case "MTEXT":return a=this.makeLeafNode_(a),a.type=cvox.SemanticAttr.Type.TEXT,a;case "MI":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.IDENTIFIER),
-a;case "MN":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.NUMBER),a;case "MO":return a=this.makeLeafNode_(a),a.type==cvox.SemanticAttr.Type.UNKNOWN&&(a.type=cvox.SemanticAttr.Type.OPERATOR),a;default:return this.makeUnprocessed_(a)}};cvox.SemanticTree.prototype.parseMathmlChildren_=function(a){for(var b=[],c=0,d;d=a[c];c++)b.push(this.parseMathml_(d));return b};
-cvox.SemanticTree.prototype.makeUnprocessed_=function(a){var b=this.createNode_();b.mathml=[a];return b};cvox.SemanticTree.prototype.makeEmptyNode_=function(){var a=this.createNode_();a.type=cvox.SemanticAttr.Type.EMPTY;return a};cvox.SemanticTree.prototype.makeLeafNode_=function(a){var b=this.createNode_();b.mathml=[a];b.updateContent_(a.textContent);b.font=a.getAttribute("mathvariant")||b.font;return b};
-cvox.SemanticTree.prototype.makeBranchNode_=function(a,b,c,d){var e=this.createNode_();d&&e.updateContent_(d);e.type=a;e.childNodes=b;e.contentNodes=c;b.concat(c).forEach(function(a){a.parent=e;e.addMathmlNodes_(a.mathml)});return e};cvox.SemanticTree.prototype.makeImplicitNode_=function(a){if(1==a.length)return a[0];var b=this.createNode_();b.updateContent_(cvox.SemanticAttr.invisibleTimes());a=this.makeInfixNode_(a,b);a.role=cvox.SemanticAttr.Role.IMPLICIT;return a};
-cvox.SemanticTree.prototype.makeInfixNode_=function(a,b){return this.makeBranchNode_(cvox.SemanticAttr.Type.INFIXOP,a,[b],b.textContent)};cvox.SemanticTree.prototype.makeConcatNode_=function(a,b,c){if(0==b.length)return a;var d=b.map(function(a){return a.textContent}).join(" ");a=this.makeBranchNode_(c,[a],b,d);0<b.length&&(a.role=cvox.SemanticAttr.Role.MULTIOP);return a};
-cvox.SemanticTree.prototype.makePrefixNode_=function(a,b){for(var c=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.attrPred_("role","SUBTRACTION")),d=this.makeConcatNode_(a,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);0<c.rel.length;)d=this.makeConcatNode_(d,[c.rel.pop()],cvox.SemanticAttr.Type.PREFIXOP),d.role=cvox.SemanticAttr.Role.NEGATIVE,d=this.makeConcatNode_(d,c.comp.pop(),cvox.SemanticAttr.Type.PREFIXOP);return d};
-cvox.SemanticTree.prototype.makePostfixNode_=function(a,b){return this.makeConcatNode_(a,b,cvox.SemanticAttr.Type.POSTFIXOP)};cvox.SemanticTree.prototype.processRow_=function(a){if(0==a.length)return this.makeEmptyNode_();a=this.getFencesInRow_(a);a=this.processTablesInRow_(a);a=this.getPunctuationInRow_(a);a=this.getFunctionsInRow_(a);return this.processRelationsInRow_(a)};
-cvox.SemanticTree.prototype.processRelationsInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","RELATION")),c=b.rel[0];if(!c)return this.processOperationsInRow_(a);if(1==a.length)return a[0];a=b.comp.map(goog.bind(this.processOperationsInRow_,this));return b.rel.every(function(a){return a.textContent==c.textContent})?this.makeBranchNode_(cvox.SemanticAttr.Type.RELSEQ,a,b.rel,c.textContent):this.makeBranchNode_(cvox.SemanticAttr.Type.MULTIREL,a,b.rel)};
-cvox.SemanticTree.prototype.processOperationsInRow_=function(a){if(0==a.length)return this.makeEmptyNode_();if(1==a.length)return a[0];for(var b=[];0<a.length&&a[0].type==cvox.SemanticAttr.Type.OPERATOR;)b.push(a.shift());if(0==a.length)return this.makePrefixNode_(b.pop(),b);if(1==a.length)return this.makePrefixNode_(a[0],b);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));b=this.makePrefixNode_(this.makeImplicitNode_(a.head),b);return a.div?this.makeOperationsTree_(a.tail,
-b,a.div):b};
-cvox.SemanticTree.prototype.makeOperationsTree_=function(a,b,c,d){d=d||[];if(0==a.length)return d.unshift(c),b.type==cvox.SemanticAttr.Type.INFIXOP?(d=this.makePostfixNode_(b.childNodes.pop(),d),b.appendChild_(d),b):this.makePostfixNode_(b,d);a=cvox.SemanticTree.sliceNodes_(a,cvox.SemanticTree.attrPred_("type","OPERATOR"));if(0==a.head.length)return d.push(a.div),this.makeOperationsTree_(a.tail,b,c,d);d=this.makePrefixNode_(this.makeImplicitNode_(a.head),d);b=this.appendOperand_(b,c,d);return a.div?
-this.makeOperationsTree_(a.tail,b,a.div,[]):b};cvox.SemanticTree.prototype.appendOperand_=function(a,b,c){return a.type!=cvox.SemanticAttr.Type.INFIXOP?this.makeInfixNode_([a,c],b):this.appendExistingOperator_(a,b,c)?a:b.role==cvox.SemanticAttr.Role.MULTIPLICATION?this.appendMultiplicativeOp_(a,b,c):this.appendAdditiveOp_(a,b,c)};
-cvox.SemanticTree.prototype.appendMultiplicativeOp_=function(a,b,c){for(var d=a,e=a.childNodes[a.childNodes.length-1];e&&e.type==cvox.SemanticAttr.Type.INFIXOP;)d=e,e=d.childNodes[a.childNodes.length-1];b=this.makeInfixNode_([d.childNodes.pop(),c],b);d.appendChild_(b);return a};cvox.SemanticTree.prototype.appendAdditiveOp_=function(a,b,c){return this.makeInfixNode_([a,c],b)};
-cvox.SemanticTree.prototype.appendExistingOperator_=function(a,b,c){if(!a||a.type!=cvox.SemanticAttr.Type.INFIXOP)return!1;if(a.textContent==b.textContent)return a.appendContentNode_(b),a.appendChild_(c),!0;this.appendExistingOperator_(a.childNodes[a.childNodes.length-1],b,c)};cvox.SemanticTree.prototype.getFencesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.attrPred_("type","FENCE"));var b=a.comp.shift();return this.processFences_(a.rel,a.comp,[],[b])};
-cvox.SemanticTree.prototype.processFences_=function(a,b,c,d){if(0==a.length&&0==c.length)return d[0];var e=cvox.SemanticTree.attrPred_("role","OPEN");if(0==a.length){for(a=d.shift();0<c.length;){if(e(c[0]))b=c.shift(),cvox.SemanticTree.fenceToPunct_(b),a.push(b);else{c=cvox.SemanticTree.sliceNodes_(c,e);var f=c.head.length-1,g=this.processNeutralFences_(c.head,d.slice(0,f));d=d.slice(f);a.push.apply(a,g);c.div&&c.tail.unshift(c.div);c=c.tail}a.push.apply(a,d.shift())}return a}f=c[c.length-1];g=a[0].role;
-if(g==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&(!f||a[0].textContent!=f.textContent))return c.push(a.shift()),d.push(b.shift()),this.processFences_(a,b,c,d);if(f&&(g==cvox.SemanticAttr.Role.CLOSE&&f.role==cvox.SemanticAttr.Role.OPEN||g==cvox.SemanticAttr.Role.NEUTRAL&&a[0].textContent==f.textContent))return e=this.makeHorizontalFencedNode_(c.pop(),a.shift(),d.pop()),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c,d);if(f&&g==cvox.SemanticAttr.Role.CLOSE&&f.role==
-cvox.SemanticAttr.Role.NEUTRAL&&c.some(e))return c=cvox.SemanticTree.sliceNodes_(c,e,!0),e=d.pop(),f=d.length-c.tail.length+1,g=this.processNeutralFences_(c.tail,d.slice(f)),d=d.slice(0,f),e=this.makeHorizontalFencedNode_(c.div,a.shift(),d.pop().concat(g,e)),d.push(d.pop().concat([e],b.shift())),this.processFences_(a,b,c.head,d);e=a.shift();cvox.SemanticTree.fenceToPunct_(e);d.push(d.pop().concat([e],b.shift()));return this.processFences_(a,b,c,d)};
-cvox.SemanticTree.prototype.processNeutralFences_=function(a,b){if(0==a.length)return a;if(1==a.length)return cvox.SemanticTree.fenceToPunct_(a[0]),a;var c=a.shift(),d=cvox.SemanticTree.sliceNodes_(a,function(a){return a.textContent==c.textContent});if(!d.div){cvox.SemanticTree.fenceToPunct_(c);var e=b.shift();e.unshift(c);return e.concat(this.processNeutralFences_(a,b))}var f=this.combineFencedContent_(c,d.div,d.head,b);return 0<d.tail.length?(e=f.shift(),d=this.processNeutralFences_(d.tail,f),e.concat(d)):
-f[0]};cvox.SemanticTree.prototype.combineFencedContent_=function(a,b,c,d){if(0==c.length)return a=this.makeHorizontalFencedNode_(a,b,d.shift()),d.unshift(a),d;var e=d.shift(),f=c.length-1,g=d.slice(0,f);d=d.slice(f);f=d.shift();c=this.processNeutralFences_(c,g);e.push.apply(e,c);e.push.apply(e,f);a=this.makeHorizontalFencedNode_(a,b,e);0<d.length?d[0].unshift(a):d=[[a]];return d};
-cvox.SemanticTree.fenceToPunct_=function(a){a.type=cvox.SemanticAttr.Type.PUNCTUATION;switch(a.role){case cvox.SemanticAttr.Role.NEUTRAL:a.role=cvox.SemanticAttr.Role.VBAR;break;case cvox.SemanticAttr.Role.OPEN:a.role=cvox.SemanticAttr.Role.OPENFENCE;break;case cvox.SemanticAttr.Role.CLOSE:a.role=cvox.SemanticAttr.Role.CLOSEFENCE}};
-cvox.SemanticTree.prototype.makeHorizontalFencedNode_=function(a,b,c){c=this.processRow_(c);b=this.makeBranchNode_(cvox.SemanticAttr.Type.FENCED,[c],[a,b]);b.role=a.role==cvox.SemanticAttr.Role.OPEN?cvox.SemanticAttr.Role.LEFTRIGHT:a.role;return b};
-cvox.SemanticTree.prototype.getPunctuationInRow_=function(a){var b=cvox.SemanticTree.partitionNodes_(a,function(a){return cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)&&!cvox.SemanticTree.attrPred_("role","ELLIPSIS")(a)});if(0==b.rel.length)return a;a=[];var c=b.comp.shift();0<c.length&&a.push(this.processRow_(c));for(var d=0;0<b.comp.length;)a.push(b.rel[d++]),c=b.comp.shift(),0<c.length&&a.push(this.processRow_(c));return[this.makePunctuatedNode_(a,b.rel)]};
-cvox.SemanticTree.prototype.makePunctuatedNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.PUNCTUATED,a,b);c.role=1==b.length&&a[0].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.STARTPUNCT:1==b.length&&a[a.length-1].type==cvox.SemanticAttr.Type.PUNCTUATION?cvox.SemanticAttr.Role.ENDPUNCT:cvox.SemanticAttr.Role.SEQUENCE;return c};
-cvox.SemanticTree.prototype.makeLimitNode_=function(a,b){var c=b[0],d=cvox.SemanticTree.attrPred_("type","FUNCTION")(c),d=cvox.SemanticTree.attrPred_("type","LARGEOP")(c)||cvox.SemanticTree.attrPred_("type","LIMBOTH")(c)||cvox.SemanticTree.attrPred_("type","LIMLOWER")(c)||cvox.SemanticTree.attrPred_("type","LIMUPPER")(c)||d&&cvox.SemanticTree.attrPred_("role","LIMFUNC")(c),e=cvox.SemanticAttr.Type.UNKNOWN;if(d)switch(a){case "MSUB":case "MUNDER":e=cvox.SemanticAttr.Type.LIMLOWER;break;case "MSUP":case "MOVER":e=
-cvox.SemanticAttr.Type.LIMUPPER;break;case "MSUBSUP":case "MUNDEROVER":e=cvox.SemanticAttr.Type.LIMBOTH}else switch(a){case "MSUB":e=cvox.SemanticAttr.Type.SUBSCRIPT;break;case "MSUP":e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MSUBSUP":d=this.makeBranchNode_(cvox.SemanticAttr.Type.SUBSCRIPT,[c,b[1]],[]);d.role=c.role;b=[d,b[2]];e=cvox.SemanticAttr.Type.SUPERSCRIPT;break;case "MOVER":e=cvox.SemanticAttr.Type.OVERSCORE;break;case "MUNDER":e=cvox.SemanticAttr.Type.UNDERSCORE;break;default:d=this.makeBranchNode_(cvox.SemanticAttr.Type.UNDERSCORE,
-[c,b[1]],[]),d.role=c.role,b=[d,b[2]],e=cvox.SemanticAttr.Type.OVERSCORE}d=this.makeBranchNode_(e,b,[]);d.role=c.role;return d};cvox.SemanticTree.prototype.getFunctionsInRow_=function(a,b){b=b||[];if(0==a.length)return b;var c=a.shift(),d=cvox.SemanticTree.classifyFunction_(c,a);if(!d)return b.push(c),this.getFunctionsInRow_(a,b);var e=this.getFunctionsInRow_(a,[]),c=this.getFunctionArgs_(c,e,d);return b.concat(c)};
-cvox.SemanticTree.classifyFunction_=function(a,b){if(a.type==cvox.SemanticAttr.Type.APPL||a.type==cvox.SemanticAttr.Type.BIGOP||a.type==cvox.SemanticAttr.Type.INTEGRAL)return"";if(b[0]&&b[0].textContent==cvox.SemanticAttr.functionApplication())return b.shift(),cvox.SemanticTree.propagatePrefixFunc_(a),"prefix";switch(a.role){case cvox.SemanticAttr.Role.INTEGRAL:return"integral";case cvox.SemanticAttr.Role.SUM:return"bigop";case cvox.SemanticAttr.Role.PREFIXFUNC:case cvox.SemanticAttr.Role.LIMFUNC:return"prefix";
-default:if(a.type==cvox.SemanticAttr.Type.IDENTIFIER)return"simple"}return""};cvox.SemanticTree.propagatePrefixFunc_=function(a){a&&(a.role=cvox.SemanticAttr.Role.PREFIXFUNC,cvox.SemanticTree.propagatePrefixFunc_(a.childNodes[0]))};
-cvox.SemanticTree.prototype.getFunctionArgs_=function(a,b,c){switch(c){case "integral":return b=this.getIntegralArgs_(b),c=this.processRow_(b.integrand),a=this.makeIntegralNode_(a,c,b.intvar),b.rest.unshift(a),b.rest;case "prefix":if(b[0]&&b[0].type==cvox.SemanticAttr.Type.FENCED)return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;case "bigop":b=cvox.SemanticTree.sliceNodes_(b,cvox.SemanticTree.prefixFunctionBoundary_);var d=this.processRow_(b.head);a="prefix"==c?this.makeFunctionNode_(a,
-d):this.makeBigOpNode_(a,d);b.div&&b.tail.unshift(b.div);b.tail.unshift(a);return b.tail;case "simple":if(0==b.length)return[a];c=b[0];if(c.type==cvox.SemanticAttr.Type.FENCED&&c.role!=cvox.SemanticAttr.Role.NEUTRAL&&this.simpleFunctionHeuristic_(c))return a=this.makeFunctionNode_(a,b.shift()),b.unshift(a),b;b.unshift(a);return b}};
-cvox.SemanticTree.prototype.getIntegralArgs_=function(a,b){b=b||[];if(0==a.length)return{integrand:b,intvar:null,rest:a};var c=a[0];if(cvox.SemanticTree.generalFunctionBoundary_(c))return{integrand:b,intvar:null,rest:a};if(cvox.SemanticTree.integralDxBoundarySingle_(c))return{integrand:b,intvar:c,rest:a.slice(1)};if(a[1]&&cvox.SemanticTree.integralDxBoundary_(c,a[1])){var d=this.createNode_();d.updateContent_(cvox.SemanticAttr.invisibleComma());c=this.makePunctuatedNode_([c,d,a[1]],[d]);c.role=cvox.SemanticAttr.Role.INTEGRAL;
-return{integrand:b,intvar:c,rest:a.slice(2)}}b.push(a.shift());return this.getIntegralArgs_(a,b)};cvox.SemanticTree.prototype.makeFunctionNode_=function(a,b){var c=this.createNode_();c.updateContent_(cvox.SemanticAttr.functionApplication());c.type=cvox.SemanticAttr.Type.PUNCTUATION;c.role=cvox.SemanticAttr.Role.APPLICATION;c=this.makeBranchNode_(cvox.SemanticAttr.Type.APPL,[a,b],[c]);c.role=a.role;return c};
-cvox.SemanticTree.prototype.makeBigOpNode_=function(a,b){var c=this.makeBranchNode_(cvox.SemanticAttr.Type.BIGOP,[a,b],[]);c.role=a.role;return c};cvox.SemanticTree.prototype.makeIntegralNode_=function(a,b,c){b=b||this.makeEmptyNode_();c=c||this.makeEmptyNode_();b=this.makeBranchNode_(cvox.SemanticAttr.Type.INTEGRAL,[a,b,c],[]);b.role=a.role;return b};
-cvox.SemanticTree.prototype.simpleFunctionHeuristic_=function(a){a=a.childNodes;if(0==a.length)return!0;if(1<a.length)return!1;a=a[0];return a.type!=cvox.SemanticAttr.Type.INFIXOP||a.role==cvox.SemanticAttr.Role.IMPLICIT&&!a.childNodes.some(cvox.SemanticTree.attrPred_("type","INFIXOP"))?!0:!1};cvox.SemanticTree.prefixFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","OPERATOR")(a)||cvox.SemanticTree.generalFunctionBoundary_(a)};
-cvox.SemanticTree.integralDxBoundary_=function(a,b){return!!b&&cvox.SemanticTree.attrPred_("type","IDENTIFIER")(b)&&cvox.SemanticAttr.isCharacterD(a.textContent)};cvox.SemanticTree.integralDxBoundarySingle_=function(a){if(cvox.SemanticTree.attrPred_("type","IDENTIFIER")(a)){var b=a.textContent[0];return b&&a.textContent[1]&&cvox.SemanticAttr.isCharacterD(b)}return!1};
-cvox.SemanticTree.generalFunctionBoundary_=function(a){return cvox.SemanticTree.attrPred_("type","RELATION")(a)||cvox.SemanticTree.attrPred_("type","PUNCTUATION")(a)};
-cvox.SemanticTree.prototype.processTablesInRow_=function(a){a=cvox.SemanticTree.partitionNodes_(a,cvox.SemanticTree.tableIsMatrixOrVector_);for(var b=[],c=0,d;d=a.rel[c];c++)b=b.concat(a.comp.shift()),b.push(this.tableToMatrixOrVector_(d));b=b.concat(a.comp.shift());a=cvox.SemanticTree.partitionNodes_(b,cvox.SemanticTree.isTableOrMultiline_);b=[];for(c=0;d=a.rel[c];c++){var e=a.comp.shift();cvox.SemanticTree.tableIsCases_(d,e)&&this.tableToCases_(d,e.pop());b=b.concat(e);b.push(d)}return b.concat(a.comp.shift())};
-cvox.SemanticTree.isTableOrMultiline_=function(a){return!!a&&(cvox.SemanticTree.attrPred_("type","TABLE")(a)||cvox.SemanticTree.attrPred_("type","MULTILINE")(a))};cvox.SemanticTree.tableIsMatrixOrVector_=function(a){return!!a&&cvox.SemanticTree.attrPred_("type","FENCED")(a)&&cvox.SemanticTree.attrPred_("role","LEFTRIGHT")(a)&&1==a.childNodes.length&&cvox.SemanticTree.isTableOrMultiline_(a.childNodes[0])};
-cvox.SemanticTree.prototype.tableToMatrixOrVector_=function(a){var b=a.childNodes[0],c=cvox.SemanticTree.attrPred_("type","MULTILINE")(b)?"VECTOR":"MATRIX";b.type=cvox.SemanticAttr.Type[c];a.contentNodes.forEach(goog.bind(b.appendContentNode_,b));a=0;for(var d;d=b.childNodes[a];a++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role[c]);return b};cvox.SemanticTree.tableIsCases_=function(a,b){return 0<b.length&&cvox.SemanticTree.attrPred_("role","OPENFENCE")(b[b.length-1])};
-cvox.SemanticTree.prototype.tableToCases_=function(a,b){for(var c=0,d;d=a.childNodes[c];c++)cvox.SemanticTree.assignRoleToRow_(d,cvox.SemanticAttr.Role.CASES);a.type=cvox.SemanticAttr.Type.CASES;a.appendContentNode_(b);return a};cvox.SemanticTree.tableIsMultiline_=function(a){return a.childNodes.every(function(a){a=a.childNodes.length;return 1>=a})};
-cvox.SemanticTree.prototype.tableToMultiline_=function(a){a.type=cvox.SemanticAttr.Type.MULTILINE;for(var b=0,c;c=a.childNodes[b];b++)cvox.SemanticTree.rowToLine_(c,cvox.SemanticAttr.Role.MULTILINE)};cvox.SemanticTree.rowToLine_=function(a,b){b=b||cvox.SemanticAttr.Role.UNKNOWN;cvox.SemanticTree.attrPred_("type","ROW")(a)&&1==a.childNodes.length&&cvox.SemanticTree.attrPred_("type","CELL")(a.childNodes[0])&&(a.type=cvox.SemanticAttr.Type.LINE,a.role=b,a.childNodes=a.childNodes[0].childNodes)};
-cvox.SemanticTree.assignRoleToRow_=function(a,b){if(cvox.SemanticTree.attrPred_("type","LINE")(a))a.role=b;else if(cvox.SemanticTree.attrPred_("type","ROW")(a)){a.role=b;var c=cvox.SemanticTree.attrPred_("type","CELL");a.childNodes.forEach(function(a){c(a)&&(a.role=b)})}};
-cvox.SemanticTree.sliceNodes_=function(a,b,c){c&&a.reverse();for(var d=[],e=0,f;f=a[e];e++){if(b(f))return c?{head:a.slice(e+1).reverse(),div:f,tail:d.reverse()}:{head:d,div:f,tail:a.slice(e+1)};d.push(f)}return c?{head:[],div:null,tail:d.reverse()}:{head:d,div:null,tail:[]}};cvox.SemanticTree.partitionNodes_=function(a,b){var c=a,d=[],e=[];do{var f=cvox.SemanticTree.sliceNodes_(c,b);e.push(f.head);d.push(f.div);c=f.tail}while(f.div);d.pop();return{rel:d,comp:e}};
-cvox.SemanticTree.attrPred_=function(a,b){return function(c){var d;o:{switch(a){case "type":d=cvox.SemanticAttr.Type[b];break o;case "role":d=cvox.SemanticAttr.Role[b];break o;case "font":d=cvox.SemanticAttr.Font[b];break o}d=void 0}return c[a]==d}};cvox.TraverseMath=function(){this.activeNode=this.activeMath=null;this.allTexs_={};this.allMathjaxs_={};this.activeMathmlHost=null;this.domain="default";this.style="short";cvox.ChromeVox.mathJax&&(this.initializeMathjaxs(),this.initializeAltMaths())};goog.addSingletonGetter(cvox.TraverseMath);cvox.TraverseMath.setSemantic_=!1;cvox.TraverseMath.toggleSemantic=function(){return cvox.TraverseMath.setSemantic_=!cvox.TraverseMath.setSemantic_};
-cvox.TraverseMath.prototype.initialize=function(a){if(cvox.DomUtil.isMathImg(a)){if(!a.hasAttribute("cvoxid"))return;a=a.getAttribute("cvoxid");a=this.allTexs_[a]}cvox.DomUtil.isMathJax(a)&&(this.activeMathmlHost=this.allMathjaxs_[a.getAttribute("id")]);this.activeMath=this.activeMathmlHost||a;(this.activeNode=this.activeMathmlHost||a)&&cvox.TraverseMath.setSemantic_&&this.activeNode.nodeType==Node.ELEMENT_NODE&&(this.activeNode=(new cvox.SemanticTree(this.activeNode)).xml())};
-cvox.TraverseMath.prototype.addMathjax=function(a,b){var c=cvox.DomUtil.getMathSpanId(b);c?this.allMathjaxs_[c]=a:this.redoMathjaxs(a,b)};cvox.TraverseMath.prototype.redoMathjaxs=function(a,b){var c=goog.bind(function(){this.addMathjax(a,b)},this);setTimeout(c,500)};
-cvox.TraverseMath.prototype.initializeMathjaxs=function(){var a=goog.bind(function(a,c){this.addMathjax(a,c)},this);cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.getAllJax(a),cvox.ChromeVox.mathJax.registerSignal(a,"New Math"))})};
-cvox.TraverseMath.prototype.initializeAltMaths=function(){if(document.querySelector(cvox.DomUtil.altMathQuerySelector("tex")+", "+cvox.DomUtil.altMathQuerySelector("asciimath"))){var a=goog.bind(function(a,c){this.allTexs_[c]=a},this);cvox.ChromeVox.mathJax.injectScripts();cvox.ChromeVox.mathJax.isMathjaxActive(function(b){b&&(cvox.ChromeVox.mathJax.configMediaWiki(),cvox.ChromeVox.mathJax.getAllTexs(a),cvox.ChromeVox.mathJax.getAllAsciiMaths(a))})}};
-cvox.TraverseMath.prototype.nextSibling=function(a){if(!this.activeNode||!this.activeMath)return null;var b=this.activeNode,b=a?b.previousSibling:b.nextSibling;return b?this.activeNode=b:null};cvox.TraverseMath.prototype.nextParentChild=function(a){if(!this.activeNode||!this.activeMath||this.activeNode==this.activeMath&&a)return null;var b=this.activeNode,b=a?b.parentNode:b.firstChild;return b?this.activeNode=b:null};
-cvox.TraverseMath.prototype.getAttachedActiveNode=function(){var a=this.activeNode;if(!a||a.nodeType!=Node.ELEMENT_NODE)return null;a=a.getAttribute("spanID");return document.getElementById(a)};cvox.MathUtil={};cvox.MathUtil.isMathmlNodeOfClass_=function(a,b){return-1!=b.indexOf(a.tagName.toUpperCase())};cvox.MathUtil.isMathjaxNodeOfClass_=function(a,b){if("SPAN"==a.tagName){var c=a.className.split(" ");return c.some(function(a){return-1!=b.indexOf(a.toUpperCase())})}return!1};cvox.MathUtil.isMathNodeOfClass_=function(a,b){return a.nodeType==Node.ELEMENT_NODE&&(cvox.MathUtil.isMathmlNodeOfClass_(a,b)||cvox.MathUtil.isMathjaxNodeOfClass_(a,b))};cvox.MathUtil.TOKEN_LIST="MI MN MO MTEXT MSPACE MS".split(" ");
-cvox.MathUtil.isToken=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TOKEN_LIST)};cvox.MathUtil.LAYOUT_LIST="MROW MFRAC MSQRT MROOT MSTYLE MERROR MPADDED MPHANTOM MFENCED MENCLOSE".split(" ");cvox.MathUtil.isLayout=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.LAYOUT_LIST)};cvox.MathUtil.SCRIPT_LIST="MSUB MSUP MSUBSUP MUNDER MOVER MUNDEROVER MMULTISCRIPTS MPRESCRIPTS".split(" ");
-cvox.MathUtil.isScript=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.SCRIPT_LIST)};cvox.MathUtil.TABLES_LIST="MTABLE MLABELEDTR MTR MTD MALIGNGROUP MALIGNMARK".split(" ");cvox.MathUtil.isTables=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.TABLES_LIST)};cvox.MathUtil.ELEMENTARY_LIST="MSTACK MLONGDIV MSGROUP MSROW MSCARRIES MSCARRY MSLINE".split(" ");cvox.MathUtil.isElementary=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.ELEMENTARY_LIST)};
-cvox.MathUtil.MATHML_TAG_LIST=[cvox.MathUtil.TOKEN_LIST,cvox.MathUtil.LAYOUT_LIST,cvox.MathUtil.SCRIPT_LIST,cvox.MathUtil.TABLES_LIST,cvox.MathUtil.ELEMENTARY_LIST].reduce(function(a,b){return a.concat(b)});cvox.MathUtil.isMathmlTag=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.MATHML_TAG_LIST)};cvox.MathUtil.WHITESPACE_LIST=["MSROW","MROW","MSPACE","MPHANTOM","MPADDED"];cvox.MathUtil.isWhitespace=function(a){return cvox.MathUtil.isMathNodeOfClass_(a,cvox.MathUtil.WHITESPACE_LIST)};
-cvox.MathUtil.isNotWhitespace=function(a){return cvox.MathUtil.isMathmlTag(a)&&!cvox.MathUtil.isWhitespace(a)};cvox.MathUtil.union=function(a,b){return a.concat(b.filter(function(b){return 0>a.indexOf(b)}))};cvox.SpeechRule=function(a,b,c,d){this.name=a;this.dynamicCstr=b;this.precondition=c;this.action=d};cvox.SpeechRule.prototype.toString=function(){var a=[],b;for(b in this.dynamicCstr)a.push(this.dynamicCstr[b]);return this.name+" | "+a.join(".")+" | "+this.precondition.toString()+" ==> "+this.action.toString()};cvox.SpeechRule.Type={NODE:"NODE",MULTI:"MULTI",TEXT:"TEXT",PERSONALITY:"PERSONALITY"};
-cvox.SpeechRule.Type.fromString=function(a){switch(a){case "[n]":return cvox.SpeechRule.Type.NODE;case "[m]":return cvox.SpeechRule.Type.MULTI;case "[t]":return cvox.SpeechRule.Type.TEXT;case "[p]":return cvox.SpeechRule.Type.PERSONALITY;default:throw"Parse error: "+a;}};
-cvox.SpeechRule.Type.toString=function(a){switch(a){case cvox.SpeechRule.Type.NODE:return"[n]";case cvox.SpeechRule.Type.MULTI:return"[m]";case cvox.SpeechRule.Type.TEXT:return"[t]";case cvox.SpeechRule.Type.PERSONALITY:return"[p]";default:throw"Unknown type error: "+a;}};cvox.SpeechRule.Component=function(a){this.type=a.type;this.content=a.content};
-cvox.SpeechRule.Component.fromString=function(a){var b={};b.type=cvox.SpeechRule.Type.fromString(a.substring(0,3));a=a.slice(3).trimLeft();if(!a)throw new cvox.SpeechRule.OutputError("Missing content.");switch(b.type){case cvox.SpeechRule.Type.TEXT:if('"'==a[0]){var c=cvox.SpeechRule.splitString_(a,"\\(")[0].trim();if('"'!=c.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid string syntax.");b.content=c;a=a.slice(c.length).trim();-1==a.indexOf("(")&&(a="");break}case cvox.SpeechRule.Type.NODE:case cvox.SpeechRule.Type.MULTI:c=
-a.indexOf(" (");if(-1==c){b.content=a.trim();a="";break}b.content=a.substring(0,c).trim();a=a.slice(c).trimLeft()}b=new cvox.SpeechRule.Component(b);a&&b.addAttributes(a);return b};cvox.SpeechRule.Component.prototype.toString=function(){var a="",a=a+cvox.SpeechRule.Type.toString(this.type),a=a+(this.content?" "+this.content:""),b=this.getAttributes();0<b.length&&(a+=" ("+b.join(", ")+")");return a};
-cvox.SpeechRule.Component.prototype.addAttribute=function(a){var b=a.indexOf(":");-1==b?this[a.trim()]="true":this[a.substring(0,b).trim()]=a.slice(b+1).trim()};cvox.SpeechRule.Component.prototype.addAttributes=function(a){if("("!=a[0]||")"!=a.slice(-1))throw new cvox.SpeechRule.OutputError("Invalid attribute expression: "+a);a=cvox.SpeechRule.splitString_(a.slice(1,-1),",");for(var b=0;b<a.length;b++)this.addAttribute(a[b])};
-cvox.SpeechRule.Component.prototype.getAttributes=function(){var a=[],b;for(b in this)"content"!=b&&"type"!=b&&"function"!=typeof this[b]&&a.push(b+":"+this[b]);return a};cvox.SpeechRule.Action=function(a){this.components=a};cvox.SpeechRule.Action.fromString=function(a){a=cvox.SpeechRule.splitString_(a,";").filter(function(a){return a.match(/\S/)}).map(function(a){return a.trim()});for(var b=[],c=0;c<a.length;c++){var d=cvox.SpeechRule.Component.fromString(a[c]);d&&b.push(d)}return new cvox.SpeechRule.Action(b)};
-cvox.SpeechRule.Action.prototype.toString=function(){var a=this.components.map(function(a){return a.toString()});return a.join("; ")};cvox.SpeechRule.Precondition=function(a,b){this.query=a;this.constraints=b||[]};cvox.SpeechRule.Precondition.prototype.toString=function(){var a=this.constraints.join(", ");return this.query+", "+a};
-cvox.SpeechRule.splitString_=function(a,b){for(var c=[],d="";""!=a;){var e=a.search(b);if(-1==e){if(0!=(a.match(/"/g)||[]).length%2)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);c.push(d+a);a=d=""}else if(0==(a.substring(0,e).match(/"/g)||[]).length%2)c.push(d+a.substring(0,e)),d="",a=a.substring(e+1);else{var f=a.substring(e).search('"');if(-1==f)throw new cvox.SpeechRule.OutputError("Invalid string in expression: "+a);d+=a.substring(0,e+f+1);a=a.substring(e+f+1)}}d&&
-c.push(d);return c};cvox.SpeechRule.DynamicCstrAttrib={STYLE:"style"};cvox.SpeechRule.OutputError=function(a){this.name="RuleError";this.message=a||""};goog.inherits(cvox.SpeechRule.OutputError,Error);cvox.SpeechRuleFunctions=function(){};cvox.SpeechRuleFunctions.Store_=function(a,b){this.prefix_=a;this.store_=b};cvox.SpeechRuleFunctions.Store_.prototype.add=function(a,b){this.checkCustomFunctionSyntax_(a)&&(this.store_[a]=b)};cvox.SpeechRuleFunctions.Store_.prototype.lookup=function(a){return this.store_[a]};cvox.SpeechRuleFunctions.CustomQueries=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CQF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomQueries,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.CustomStrings=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CSF",a)};goog.inherits(cvox.SpeechRuleFunctions.CustomStrings,cvox.SpeechRuleFunctions.Store_);cvox.SpeechRuleFunctions.ContextFunctions=function(){var a={};cvox.SpeechRuleFunctions.Store_.call(this,"CTXF",a)};goog.inherits(cvox.SpeechRuleFunctions.ContextFunctions,cvox.SpeechRuleFunctions.Store_);
-cvox.SpeechRuleFunctions.Store_.prototype.checkCustomFunctionSyntax_=function(a){var b=RegExp("^"+this.prefix_);return a.match(b)?!0:(console.log("FunctionError: Invalid function name. Expected prefix"+this.prefix_),!1)};cvox.BaseRuleStore=function(){this.customQueries=new cvox.SpeechRuleFunctions.CustomQueries;this.customStrings=new cvox.SpeechRuleFunctions.CustomStrings;this.contextFunctions=new cvox.SpeechRuleFunctions.ContextFunctions;this.speechRules_=[];this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[]};
-cvox.BaseRuleStore.prototype.lookupRule=function(a,b){if(!a||a.nodeType!=Node.ELEMENT_NODE&&a.nodeType!=Node.TEXT_NODE)return null;var c=this.speechRules_.filter(goog.bind(function(c){return this.testDynamicConstraints(b,c)&&this.testPrecondition_(a,c)},this));return 0<c.length?this.pickMostConstraint_(b,c):null};
-cvox.BaseRuleStore.prototype.defineRule=function(a,b,c,d,e){try{var f=cvox.SpeechRule.Action.fromString(c),g=Array.prototype.slice.call(arguments,4),h=new cvox.SpeechRule.Precondition(d,g),g={};g[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;var k=new cvox.SpeechRule(a,g,h,f)}catch(l){if("RuleError"==l.name)return console.log("Rule Error ",d,"("+b+"):",l.message),null;throw l;}this.addRule(k);return k};cvox.BaseRuleStore.prototype.addRule=function(a){this.speechRules_.unshift(a)};
-cvox.BaseRuleStore.prototype.deleteRule=function(a){a=this.speechRules_.indexOf(a);-1!=a&&this.speechRules_.splice(a,1)};cvox.BaseRuleStore.prototype.findRule=function(a){for(var b=0,c;c=this.speechRules_[b];b++)if(a(c))return c;return null};cvox.BaseRuleStore.prototype.findAllRules=function(a){return this.speechRules_.filter(a)};cvox.BaseRuleStore.prototype.evaluateDefault=function(a){return[new cvox.NavDescription({text:a.textContent})]};
-cvox.BaseRuleStore.prototype.removeDuplicates=function(a){for(var b=this.speechRules_.length-1,c;c=this.speechRules_[b];b--)c!=a&&cvox.BaseRuleStore.compareDynamicConstraints_(c.dynamicCstr,a.dynamicCstr)&&cvox.BaseRuleStore.comparePreconditions_(c,a)&&this.speechRules_.splice(b,1)};cvox.BaseRuleStore.prototype.applyCustomQuery=function(a,b){var c=this.customQueries.lookup(b);return c?c(a):null};
-cvox.BaseRuleStore.prototype.applySelector=function(a,b){var c=this.applyCustomQuery(a,b);return c||cvox.XpathUtil.evalXPath(b,a)};cvox.BaseRuleStore.prototype.applyQuery=function(a,b){var c=this.applySelector(a,b);return 0<c.length?c[0]:null};cvox.BaseRuleStore.prototype.applyConstraint=function(a,b){var c=this.applyQuery(a,b);return!!c||cvox.XpathUtil.evaluateBoolean(b,a)};
-cvox.BaseRuleStore.prototype.testDynamicConstraints=function(a,b){var c=Object.keys(a);return c.every(function(c){return a[c]==b.dynamicCstr[c]||"default"==b.dynamicCstr[c]})};cvox.BaseRuleStore.prototype.getDynamicConstraintValues=function(){for(var a={},b=0,c;c=this.speechRules_[b];b++)for(var d in c.dynamicCstr){var e=[c.dynamicCstr[d]];a[d]=a[d]?cvox.MathUtil.union(a[d],e):e}return a};
-cvox.BaseRuleStore.prototype.countMatchingDynamicConstraintValues_=function(a,b){for(var c=0,d=0,e;e=this.dynamicCstrAttribs[d];d++)if(a[e]==b.dynamicCstr[e])c++;else break;return c};cvox.BaseRuleStore.prototype.pickMostConstraint_=function(a,b){b.sort(goog.bind(function(b,d){var e=this.countMatchingDynamicConstraintValues_(a,b),f=this.countMatchingDynamicConstraintValues_(a,d);return e>f?-1:f>e?1:d.precondition.constraints.length-b.precondition.constraints.length},this));return b[0]};
-cvox.BaseRuleStore.prototype.testPrecondition_=function(a,b){var c=b.precondition;return this.applyQuery(a,c.query)===a&&c.constraints.every(goog.bind(function(b){return this.applyConstraint(a,b)},this))};cvox.BaseRuleStore.compareDynamicConstraints_=function(a,b){if(Object.keys(a).length!=Object.keys(b).length)return!1;for(var c in a)if(!b[c]||a[c]!==b[c])return!1;return!0};
-cvox.BaseRuleStore.compareStaticConstraints_=function(a,b){if(a.length!=b.length)return!1;for(var c=0,d;d=a[c];c++)if(-1==b.indexOf(d))return!1;return!0};cvox.BaseRuleStore.comparePreconditions_=function(a,b){var c=a.precondition,d=b.precondition;return c.query!=d.query?!1:cvox.BaseRuleStore.compareStaticConstraints_(c.constraints,d.constraints)};cvox.MathStore=function(){cvox.BaseRuleStore.call(this);this.dynamicCstrAttribs=[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN,cvox.SpeechRule.DynamicCstrAttrib.STYLE];this.defaultTtsProps=[cvox.AbstractTts.PITCH,cvox.AbstractTts.RATE]};goog.inherits(cvox.MathStore,cvox.BaseRuleStore);cvox.SpeechRule.DynamicCstrAttrib.DOMAIN="domain";
-cvox.MathStore.prototype.defineRule=function(a,b,c,d,e){var f=this.parseDynamicConstraint(b),g=Array.prototype.slice.call(arguments,4),g=cvox.MathStore.superClass_.defineRule.apply(this,[a,f[cvox.SpeechRule.DynamicCstrAttrib.STYLE],c,d].concat(g));g.dynamicCstr=f;this.removeDuplicates(g);return g};
-cvox.MathStore.prototype.parseDynamicConstraint=function(a){var b=a.split(".");if(!b[0]||!b[1])throw new cvox.SpeechRule.OutputError("Invalid domain assignment:"+a);return cvox.MathStore.createDynamicConstraint(b[0],b[1])};cvox.MathStore.createDynamicConstraint=function(a,b){var c={};c[cvox.SpeechRule.DynamicCstrAttrib.DOMAIN]=a;c[cvox.SpeechRule.DynamicCstrAttrib.STYLE]=b;return c};
-cvox.MathStore.prototype.defineRuleAlias=function(a,b,c){var d=this.findRule(function(b){return b.name==a});if(!d)throw new cvox.SpeechRule.OutputError("Rule with named "+a+" does not exist.");this.addAlias_(d,b,Array.prototype.slice.call(arguments,2))};cvox.MathStore.prototype.addAlias_=function(a,b,c){b=new cvox.SpeechRule.Precondition(b,c);b=new cvox.SpeechRule(a.name,a.dynamicCstr,b,a.action);b.name=a.name;this.addRule(b)};cvox.MathStore.prototype.evaluateDefault=function(a){return this.evaluateString_(a.textContent)};
-cvox.MathStore.prototype.evaluateString_=function(a){var b=[];if(a.match(/^\s+$/))return b;a=cvox.MathStore.removeEmpty_(a.replace(/\s/g," ").split(" "));for(var c=0,d;d=a[c];c++)if(1==d.length)b.push(this.evaluate_(d));else if(d.match(/^[a-zA-Z]+$/))b.push(this.evaluate_(d));else for(;d;){var e=d.match(/^\d+/),f=d.match(/^[a-zA-Z]+/);e?(b.push(this.evaluate_(e[0])),d=d.substring(e[0].length)):f?(b.push(this.evaluate_(f[0])),d=d.substring(f[0].length)):(e=d[0],e=e.charCodeAt(0),55296<=e&&56319>=e&&
-1<d.length&&!isNaN(d.charCodeAt(1))?(b.push(this.evaluate_(d.slice(0,2))),d=d.substring(2)):(b.push(this.evaluate_(d[0])),d=d.substring(1)))}return b};cvox.MathStore.prototype.evaluate_=function(a){return cvox.ChromeVox.host.mathMap?cvox.ChromeVox.host.mathMap.evaluate(a,cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style):new cvox.NavMathDescription({text:a,domain:cvox.TraverseMath.getInstance().domain,style:cvox.TraverseMath.getInstance().style})};
-cvox.MathStore.removeEmpty_=function(a){return a.filter(function(a){return a})};cvox.MathmlStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathmlStore,cvox.MathStore);goog.addSingletonGetter(cvox.MathmlStore);cvox.MathmlStore.prototype.defineDefaultMathmlRule=function(a,b){this.defineRule(a,"default.default",b,"self::mathml:"+a)};cvox.SpeechRuleEngine=function(){this.activeStore_=null;this.dynamicCstr={};this.dynamicCstr[cvox.SpeechRule.DynamicCstrAttrib.STYLE]="short"};goog.addSingletonGetter(cvox.SpeechRuleEngine);cvox.SpeechRuleEngine.prototype.parameterize=function(a){try{a.initialize()}catch(b){if("StoreError"==b.name)console.log("Store Error:",b.message);else throw b;}this.activeStore_=a};cvox.SpeechRuleEngine.prototype.setDynamicConstraint=function(a){a&&(this.dynamicCstr=a)};
-cvox.SpeechRuleEngine.prototype.constructString=function(a,b){if(!b)return"";if('"'==b.charAt(0))return b.slice(1,-1);var c=this.activeStore_.customStrings.lookup(b);return c?c(a):cvox.XpathUtil.evaluateString(b,a)};cvox.SpeechRuleEngine.prototype.evaluateNode=function(a){return a?this.evaluateTree_(a):[]};
-cvox.SpeechRuleEngine.prototype.evaluateTree_=function(a){var b=this.activeStore_.lookupRule(a,this.dynamicCstr);if(!b)return this.activeStore_.evaluateDefault(a);for(var b=b.action.components,c=[],d=0,e;e=b[d];d++){var f=[],g=e.content||"";switch(e.type){case cvox.SpeechRule.Type.NODE:(g=this.activeStore_.applyQuery(a,g))&&(f=this.evaluateTree_(g));break;case cvox.SpeechRule.Type.MULTI:g=this.activeStore_.applySelector(a,g);0<g.length&&(f=this.evaluateNodeList_(g,e.sepFunc,this.constructString(a,
-e.separator),e.ctxtFunc,this.constructString(a,e.context)));break;case cvox.SpeechRule.Type.TEXT:(g=this.constructString(a,g))&&(f=[new cvox.NavDescription({text:g})]);break;default:f=[new cvox.NavDescription({text:g})]}f[0]&&e.context&&e.type!=cvox.SpeechRule.Type.MULTI&&(f[0].context=this.constructString(a,e.context)+(f[0].context||""));c=c.concat(this.addPersonality_(f,e))}return c};
-cvox.SpeechRuleEngine.prototype.evaluateNodeList_=function(a,b,c,d,e){if(a==[])return[];var f=c||"",g=e||"";c=(c=this.activeStore_.contextFunctions.lookup(d))?c(a,g):function(){return g};b=(b=this.activeStore_.contextFunctions.lookup(b))?b(a,f):function(){return f};d=[];e=0;for(var h;h=a[e];e++)h=this.evaluateTree_(h),0<h.length&&(h[0].context=c()+(h[0].context||""),d=d.concat(h),e<a.length-1&&(h=b())&&d.push(new cvox.NavDescription({text:h})));return d};
-cvox.SpeechRuleEngine.propMap={pitch:cvox.AbstractTts.RELATIVE_PITCH,rate:cvox.AbstractTts.RELATIVE_RATE,volume:cvox.AbstractTts.RELATIVE_VOLUME,pause:cvox.AbstractTts.PAUSE};cvox.SpeechRuleEngine.prototype.addPersonality_=function(a,b){var c={},d;for(d in cvox.SpeechRuleEngine.propMap){var e=parseFloat(b[d]);isNaN(e)||(c[cvox.SpeechRuleEngine.propMap[d]]=e)}a.forEach(goog.bind(function(a){this.addRelativePersonality_(a,c);this.resetPersonality_(a)},this));return a};
-cvox.SpeechRuleEngine.prototype.addRelativePersonality_=function(a,b){if(!a.personality)return a.personality=b,a;var c=a.personality,d;for(d in b)c[d]=c[d]&&"number"==typeof c[d]?c[d]+b[d]:b[d];return a};cvox.SpeechRuleEngine.prototype.resetPersonality_=function(a){if(this.activeStore_.defaultTtsProps)for(var b=0,c;c=this.activeStore_.defaultTtsProps[b];b++)a.personality[c]=cvox.ChromeVox.tts.getDefaultProperty(c)};cvox.SpeechRuleEngine.debugMode=!1;
-cvox.SpeechRuleEngine.outputDebug=function(a){if(cvox.SpeechRuleEngine.debugMode){var b=Array.prototype.slice.call(arguments,0);console.log.apply(console,["Speech Rule Engine Debugger:"].concat(b))}};cvox.SpeechRuleEngine.prototype.toString=function(){var a=this.activeStore_.findAllRules(function(){return!0});return a.map(function(a){return a.toString()}).join("\n")};
-cvox.SpeechRuleEngine.debugSpeechRule=function(a,b){var c=cvox.SpeechRuleEngine.getInstance().activeStore_;if(c){var d=a.precondition;cvox.SpeechRuleEngine.outputDebug(d.query,c.applyQuery(b,d.query));d.constraints.forEach(function(a){cvox.SpeechRuleEngine.outputDebug(a,c.applyConstraint(b,a))})}};
-cvox.SpeechRuleEngine.debugNamedSpeechRule=function(a,b){for(var c=cvox.SpeechRuleEngine.getInstance().activeStore_,c=c.findAllRules(function(b){return b.name==a}),d=0,e;e=c[d];d++)cvox.SpeechRuleEngine.outputDebug("Rule",a,"number",d),cvox.SpeechRuleEngine.debugSpeechRule(e,b)};cvox.AbstractWalker=function(){};cvox.AbstractWalker.prototype.begin=function(a){a=a||{reversed:!1};return this.sync(cvox.CursorSelection.fromBody().setReversed(a.reversed))};cvox.AbstractWalker.prototype.hasAction=function(a){return"function"==typeof this[a]};cvox.AbstractWalker.prototype.performAction=function(a,b){return this.hasAction(a)?this[a](b):null};cvox.AbstractNodeWalker=function(){this.wasBegin_=!1};goog.inherits(cvox.AbstractNodeWalker,cvox.AbstractWalker);cvox.AbstractNodeWalker.prototype.next=function(a){var b=a.isReversed();a=a.end.node||document.body;do if(a=cvox.DomUtil.directedNextLeafLikeNode(a,b,goog.bind(this.stopNodeDescent,this)),!a)return null;while(a&&!cvox.DomUtil.hasContent(a));return cvox.CursorSelection.fromNode(a).setReversed(b)};
-cvox.AbstractNodeWalker.prototype.sync=function(a){a=this.privateSync_(a);this.wasBegin_=!1;return a};
-cvox.AbstractNodeWalker.prototype.privateSync_=function(a){var b=a.isReversed();if(a.equals(cvox.CursorSelection.fromBody())){if(this.wasBegin_)return cvox.CursorSelection.fromBody().setReversed(b);this.wasBegin_=!0}for(a=a.start.node;a!=document.body&&a.parentNode&&this.stopNodeDescent(a.parentNode);)a=a.parentNode;for(;!this.stopNodeDescent(a);)a=cvox.DomUtil.directedFirstChild(a,b);var c=cvox.CursorSelection.fromNode(a);cvox.DomUtil.hasContent(a)||(c=this.next(cvox.CursorSelection.fromNode(a).setReversed(b)));
-return c?c.setReversed(b):this.begin({reversed:b})};cvox.BareObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.BareObjectWalker,cvox.AbstractNodeWalker);cvox.BareObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AuralStyleConverter={};cvox.AuralStyleUtil={};
-cvox.AuralProperty={VOLUME:"VOLUME",SPEAK:"SPEAK",PAUSE_BEFORE:"PAUSE_BEFORE",PAUSE_AFTER:"PAUSE_AFTER",PAUSE:"PAUSE",CUE_BEFORE:"CUE_BEFORE",CUE_AFTER:"CUE_AFTER",CUE:"CUE",PLAY_DURING:"PLAY_DURING",AZIMUTH:"AZIMUTH",ELEVATION:"ELEVATION",SPEECH_RATE:"SPEECH_RATE",VOICE_FAMILY:"VOICE_FAMILY",PITCH:"PITCH",PITCH_RANGE:"PITCH_RANGE",STRESS:"STRESS",RICHNESS:"RICHNESS",SPEAK_PUNCTUATION:"SPEAK_PUNCTUATION",SPEAK_NUMERIAL:"SPEAK_NUMERIAL",SPEAK_HEADER:"SPEAK_HEADER",NONE:"NONE"};
-cvox.AuralStyleConverter.identity=function(a){return a};cvox.AuralStyleConverter.propertyTable={VOLUME:"volume",SPEAK:"no-op",PAUSE_BEFORE:"no-op",PAUSE_AFTER:"no-op",PAUSE:"no-op",CUE_BEFORE:"no-op",CUE_AFTER:"no-op",CUE:"no-op",PLAY_DURING:"no-op",AZIMUTH:"no-op",ELEVATION:"no-op",SPEECH_RATE:"relativeRate",VOICE_FAMILY:"no-op",PITCH:"relativePitch",PITCH_RANGE:"no-op",STRESS:"no-op",RICHNESS:"no-op",SPEAK_PUNCTUATION:"no-op",SPEAK_NUMERIAL:"no-op",SPEAK_HEADER:"no-op",NONE:"no-op"};
-cvox.AuralStyleConverter.valueTable={VOLUME:cvox.AuralStyleConverter.identity,SPEAK:cvox.AuralStyleConverter.identity,PAUSE_BEFORE:cvox.AuralStyleConverter.identity,PAUSE_AFTER:cvox.AuralStyleConverter.identity,PAUSE:cvox.AuralStyleConverter.identity,CUE_BEFORE:cvox.AuralStyleConverter.identity,CUE_AFTER:cvox.AuralStyleConverter.identity,CUE:cvox.AuralStyleConverter.identity,PLAY_DURING:cvox.AuralStyleConverter.identity,AZIMUTH:cvox.AuralStyleConverter.identity,ELEVATION:cvox.AuralStyleConverter.identity,
-SPEECH_RATE:cvox.AuralStyleConverter.identity,VOICE_FAMILY:cvox.AuralStyleConverter.identity,PITCH:cvox.AuralStyleConverter.identity,PITCH_RANGE:cvox.AuralStyleConverter.identity,STRESS:cvox.AuralStyleConverter.identity,RICHNESS:cvox.AuralStyleConverter.identity,SPEAK_PUNCTUATION:cvox.AuralStyleConverter.identity,SPEAK_NUMERIAL:cvox.AuralStyleConverter.identity,SPEAK_HEADER:cvox.AuralStyleConverter.identity,NONE:cvox.AuralStyleConverter.identity};
-cvox.AuralStyleConverter.convertRule=function(a,b){return{property:cvox.AuralStyleConverter.propertyTable[a],value:cvox.AuralStyleConverter.valueTable[a](b)}};cvox.AuralStyleConverter.convertStyle=function(a){var b={},c;for(c in a){var d=cvox.AuralStyleConverter.convertRule(c,a[c]);b[d.property]=d.value}return b};cvox.AuralStyleUtil.getStyleForNode=function(a){return(a=cvox.AuralStyleUtil.defaultStyles[a.tagName])?cvox.AuralStyleConverter.convertStyle(a):null};
-cvox.AuralStyleUtil.defaultStyles={ARTICLE:{PITCH:-0.1},ASIDE:{PITCH:-0.1},FOOTER:{PITCH:-0.1},H1:{PITCH:-0.3},H2:{PITCH:-0.25},H3:{PITCH:-0.2},H4:{PITCH:-0.15},H5:{PITCH:-0.1},H6:{PITCH:-0.05},HEADER:{PITCH:-0.1},HGROUP:{PITCH:-0.1},MARK:{PITCH:-0.1},NAV:{PITCH:-0.1},SECTION:{PITCH:-0.1},TIME:{PITCH:-0.1}};cvox.EarconUtil={};
-cvox.EarconUtil.getEarcon=function(a){var b=cvox.AriaUtil.getEarcon(a);if(null!=b)return b;switch(a.tagName){case "BUTTON":return cvox.AbstractEarcons.BUTTON;case "A":if(a.hasAttribute("href"))return cvox.AbstractEarcons.LINK;break;case "IMG":if(cvox.DomUtil.hasLongDesc(a))return cvox.AbstractEarcons.LONG_DESC;break;case "LI":return cvox.AbstractEarcons.LIST_ITEM;case "SELECT":return cvox.AbstractEarcons.LISTBOX;case "TEXTAREA":return cvox.AbstractEarcons.EDITABLE_TEXT;case "INPUT":switch(a.type){case "button":case "submit":case "reset":return cvox.AbstractEarcons.BUTTON;case "checkbox":case "radio":return a.checked?
-cvox.AbstractEarcons.CHECK_ON:cvox.AbstractEarcons.CHECK_OFF;default:if(cvox.DomUtil.isInputTypeText(a))return cvox.AbstractEarcons.EDITABLE_TEXT}}return null};cvox.DescriptionUtil={};cvox.DescriptionUtil.COLLECTION_NODE_TYPE={H1:!0,H2:!0,H3:!0,H4:!0,H5:!0,H6:!0};
-cvox.DescriptionUtil.getControlDescription=function(a,b){var c=[a];if(b&&0<b.length)c=b;else{var d=cvox.DomUtil.getSurroundingControl(a);d&&(c=[d,a])}c=cvox.DescriptionUtil.getDescriptionFromAncestors(c,!0,cvox.VERBOSITY_VERBOSE);if(d){var e=cvox.DomUtil.getName(d);0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(d),0<e.length&&(c.context=e+" "+c.context))}else e=cvox.DomUtil.getName(a),0==e.length&&(e=cvox.DomUtil.getControlLabelHeuristics(a),0<e.length&&(c.text=cvox.DomUtil.collapseWhitespace(e))),
-d=cvox.DomUtil.getValue(a),0<d.length&&(c.userValue=cvox.DomUtil.collapseWhitespace(d));return c};
-cvox.DescriptionUtil.getDescriptionFromAncestors=function(a,b,c){"undefined"===typeof b&&(b=!0);var d=a.length,e="",f="",g="",h="",k=[],l=null;0<d&&(f=cvox.DomUtil.getName(a[d-1],b),g=cvox.DomUtil.getValue(a[d-1]));for(b=d-1;0<=b;b--){var m=a[b],p=m.getAttribute?m.getAttribute("role"):null;if("dialog"!=p&&"alertdialog"!=p){p=cvox.DomUtil.getRole(m,c);l||(l=cvox.AuralStyleUtil.getStyleForNode(m));if(b<d-1&&m.hasAttribute("role")){var q=cvox.DomUtil.getName(m,!1);q&&(p=q+" "+p)}0<p.length&&(0<e.length||
-0<h.length&&1<m.childElementCount?e=p+" "+cvox.DomUtil.getState(m,!1)+" "+e:h=0<h.length?h+(" "+p+" "+cvox.DomUtil.getState(m,!0)):p+" "+cvox.DomUtil.getState(m,!0));m=cvox.EarconUtil.getEarcon(m);null!=m&&-1==k.indexOf(m)&&k.push(m)}}return new cvox.NavDescription({context:cvox.DomUtil.collapseWhitespace(e),text:cvox.DomUtil.collapseWhitespace(f),userValue:cvox.DomUtil.collapseWhitespace(g),annotation:cvox.DomUtil.collapseWhitespace(h),earcons:k,personality:l})};
-cvox.DescriptionUtil.getDescriptionFromNavigation=function(a,b,c,d){if(!a||!b)return[];if(cvox.DomUtil.isMath(b)&&!cvox.AriaUtil.isMath(b))return cvox.DescriptionUtil.getMathDescription(b);if(cvox.DescriptionUtil.COLLECTION_NODE_TYPE[b.tagName])return cvox.DescriptionUtil.getCollectionDescription(cvox.CursorSelection.fromNode(a),cvox.CursorSelection.fromNode(b));var e=cvox.DomUtil.getUniqueAncestors(a,b,!0),e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,c,d);a=cvox.DomUtil.getUniqueAncestors(b,
-a);cvox.DescriptionUtil.shouldDescribeExit_(a)&&(c=cvox.DescriptionUtil.getDescriptionFromAncestors(a,c,d),c.context&&!e.context&&(e.context=cvox.ChromeVox.msgs.getMsg("exited_container",[c.context])));return[e]};cvox.DescriptionUtil.getCollectionDescription=function(a,b){var c=cvox.DescriptionUtil.getRawDescriptions_(a,b);cvox.DescriptionUtil.insertCollectionDescription_(c);return c};cvox.DescriptionUtil.subWalker_=new cvox.BareObjectWalker;
-cvox.DescriptionUtil.getRawDescriptions_=function(a,b){var c=[];b=b.clone().setReversed(!1);var d=cvox.DescriptionUtil.subWalker_.sync(b).start.node,e=a.end.node,f=cvox.CursorSelection.fromNode(d);if(!f)return[];for(;cvox.DomUtil.isDescendantOfNode(d,b.start.node);){e=cvox.DomUtil.getUniqueAncestors(e,d);cvox.DomUtil.isMath(d)&&!cvox.AriaUtil.isMath(d)?c=c.concat(cvox.DescriptionUtil.getMathDescription(d)):(e=cvox.DescriptionUtil.getDescriptionFromAncestors(e,!0,cvox.ChromeVox.verbosity),c.push(e));
-f=cvox.DescriptionUtil.subWalker_.next(f);if(!f)break;e=d;d=f.start.node}return c};
-cvox.DescriptionUtil.getFullDescriptionsFromChildren=function(a,b){var c=[];if(!b)return c;var d;if(cvox.DomUtil.isLeafNode(b))return a?d=cvox.DomUtil.getUniqueAncestors(a,b):(d=[],d.push(b)),d=cvox.DescriptionUtil.getDescriptionFromAncestors(d,!0,cvox.ChromeVox.verbosity),c.push(d),c;d=b;var e=cvox.CursorSelection.fromNode(b);if(!e)return c;b=cvox.DescriptionUtil.subWalker_.sync(e).start.node;e=cvox.CursorSelection.fromNode(b);if(!e)return c;for(;cvox.DomUtil.isDescendantOfNode(b,d);){c=c.concat(cvox.DescriptionUtil.getFullDescriptionsFromChildren(a,
-b));e=cvox.DescriptionUtil.subWalker_.next(e);if(!e)break;a=b;b=e.start.node}return c};
-cvox.DescriptionUtil.insertCollectionDescription_=function(a){var b=cvox.DescriptionUtil.getAnnotations_(a);if(3<=a.length&&0==a[0].context.length&&1==b.length&&0<b[0].length&&cvox.DescriptionUtil.isAnnotationCollection_(b[0])){var b=b[0],c=a[0].context;a[0].context="";for(var d=0;d<a.length;d++)a[d].annotation="";a.splice(0,0,new cvox.NavDescription({context:c,text:"",annotation:cvox.ChromeVox.msgs.getMsg("collection",[b,cvox.ChromeVox.msgs.getNumber(a.length)])}))}};
-cvox.DescriptionUtil.getAnnotations_=function(a){for(var b=[],c=0;c<a.length;++c){var d=a[c];if(-1==b.indexOf(d.annotation)){var e=cvox.ChromeVox.msgs.getMsg("tag_link");-1!=d.annotation.toLowerCase().indexOf(e.toLowerCase())?-1==b.indexOf(e)&&b.push(e):b.push(d.annotation)}}return b};cvox.DescriptionUtil.isAnnotationCollection_=function(a){return a==cvox.ChromeVox.msgs.getMsg("tag_link")};cvox.DescriptionUtil.shouldDescribeExit_=function(a){return a.some(function(a){switch(a.tagName){case "TABLE":case "MATH":return!0}return cvox.AriaUtil.isLandmark(a)})};
-cvox.DescriptionUtil.getMathDescription=function(a){var b=cvox.SpeechRuleEngine.getInstance(),c=cvox.TraverseMath.getInstance();b.parameterize(cvox.MathmlStore.getInstance());c.initialize(a);a=b.evaluateNode(c.activeNode);if(a==[])return[new cvox.NavDescription({text:"empty math"})];cvox.ChromeVox.verbosity==cvox.VERBOSITY_VERBOSE&&(a[a.length-1].annotation="math");a[0].pushEarcon(cvox.AbstractEarcons.SPECIAL_CONTENT);return a};cvox.FindUtil={};cvox.FindUtil.objectWalker_=new cvox.BareObjectWalker;cvox.FindUtil.findNext=function(a,b,c){var d=a.isReversed();a=(new cvox.CursorSelection(a.absStart(),a.absStart())).setReversed(d);var e;if(e=b(cvox.DomUtil.getAncestors(a.start.node)))if(a=cvox.CursorSelection.fromNode(e).setReversed(d),c)return a;for(;a;){a=cvox.FindUtil.objectWalker_.next(a);c=null;if(!a||(c=b(cvox.DomUtil.getAncestors(a.start.node))))return c?cvox.CursorSelection.fromNode(c):null;if("IFRAME"==a.start.node.tagName)return a}return null};cvox.Interframe=function(){};cvox.Interframe.IF_MSG_PREFIX="cvox.INTERFRAME:";cvox.Interframe.SET_ID="cvox.INTERFRAME_SET_ID";cvox.Interframe.listeners=[];cvox.Interframe.allowAccessToIframeContentWindow=!0;
-cvox.Interframe.init=function(){cvox.Interframe.messageListener=function(a){if("string"===typeof a.data&&0==a.data.indexOf(cvox.Interframe.IF_MSG_PREFIX)){a=a.data.substr(cvox.Interframe.IF_MSG_PREFIX.length);a=cvox.ChromeVoxJSON.parse(a);a.command==cvox.Interframe.SET_ID&&(cvox.Interframe.id=a.id);for(var b=0,c;c=cvox.Interframe.listeners[b];b++)c(a)}return!1};window.addEventListener("message",cvox.Interframe.messageListener,!0)};
-cvox.Interframe.shutdown=function(){window.removeEventListener("message",cvox.Interframe.messageListener,!0)};cvox.Interframe.addListener=function(a){cvox.Interframe.listeners.push(a)};cvox.Interframe.sendMessageToWindow=function(a,b){var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null);b.postMessage(c,"*")};
-cvox.Interframe.sendMessageToIFrame=function(a,b){if(cvox.Interframe.allowAccessToIframeContentWindow&&b.contentWindow)cvox.Interframe.sendMessageToWindow(a,b.contentWindow);else{var c=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),d=document.createElement("script");d.type="text/javascript";if(b.hasAttribute("id")&&document.getElementById(b.id)==b)d.innerHTML="document.getElementById(decodeURI('"+encodeURI(b.id)+"')).contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');";
-else{var e="cvox_iframe"+a.id;""===b.className?b.className=e:-1==b.className.indexOf(e)&&(b.className+=" "+e);d.innerHTML="document.getElementsByClassName(decodeURI('"+encodeURI(e)+"'))[0].contentWindow.postMessage(decodeURI('"+encodeURI(c)+"'), '*');"}document.head.appendChild(d);window.setTimeout(function(){document.head.removeChild(d)},1E3)}};
-cvox.Interframe.sendMessageToParentWindow=function(a){cvox.Interframe.isIframe()&&(a.sourceId=cvox.Interframe.id,window.parent?cvox.Interframe.sendMessageToWindow(a,window.parent):(a=cvox.Interframe.IF_MSG_PREFIX+cvox.ChromeVoxJSON.stringify(a,null,null),window.location.href="javascript:window.parent.postMessage('"+encodeURI(a)+"', '*');"))};cvox.Interframe.sendIdToIFrame=function(a,b){var c={command:cvox.Interframe.SET_ID,id:a};cvox.Interframe.sendMessageToIFrame(c,b)};
-cvox.Interframe.isIframe=function(){return window!=window.parent};cvox.Interframe.init();cvox.PageSelection=function(a){this.sel_=a.clone();this.sel_.select();this.wasBegin_=!0};
-cvox.PageSelection.prototype.getDescription=function(a,b,c){var d=[];this.sel_.isReversed()!=c.isReversed()?(d=a.getDescription(c,b),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE)):(d=a.getDescription(b,c),d[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_selected"),d[0].pushEarcon(cvox.AbstractEarcons.SELECTION),!this.wasBegin_&&this.sel_.absEquals(c.clone().normalize())&&(a=a.getDescription(c,b),a[0].annotation=cvox.ChromeVox.msgs.getMsg("describe_unselected"),
-a[0].pushEarcon(cvox.AbstractEarcons.SELECTION_REVERSE),a[0].pushEarcon(cvox.AbstractEarcons.WRAP),d=a.concat(d)));return d};cvox.PageSelection.prototype.getFullDescription=function(){return[new cvox.NavDescription({text:window.getSelection().toString(),context:cvox.ChromeVox.msgs.getMsg("selection_is")})]};
-cvox.PageSelection.prototype.extend=function(a){this.sel_.directedBefore(a)?this.sel_.end=this.sel_.isReversed()==a.isReversed()?a.end.clone():a.start.clone():this.sel_=a.clone();this.sel_.select();this.wasBegin_=!1;return!this.sel_.absEquals(a)};cvox.BrailleUtil={};cvox.BrailleUtil.ITEM_SEPARATOR=" ";cvox.BrailleUtil.CONTAINER="tag_h1_brl tag_h2_brl tag_h3_brl tag_h4_brl tag_h5_brl tag_h6_brl".split(" ");
-cvox.BrailleUtil.TEMPLATE={base:"c n v r s",aria_role_button:"[n]",aria_role_textbox:"n: v r",input_type_button:"[n]",input_type_checkbox:"n (s)",input_type_email:"n: v r",input_type_number:"n: v r",input_type_password:"n: v r",input_type_search:"n: v r",input_type_submit:"[n]",input_type_text:"n: v r",input_type_tel:"n: v r",input_type_url:"n: v r",tag_button:"[n]",tag_textarea:"n: v r"};cvox.BrailleUtil.ValueSpan=function(a){this.offset=a};cvox.BrailleUtil.ValueSelectionSpan=function(){};
-cvox.BrailleUtil.getName=function(a){return a?cvox.DomUtil.getName(a).trim():""};cvox.BrailleUtil.getRoleMsg=function(a){if(!a)return"";(a=cvox.DomUtil.getRoleMsg(a,cvox.VERBOSITY_VERBOSE))&&(a=cvox.DomUtil.collapseWhitespace(a));a&&0<a.length&&cvox.ChromeVox.msgs.getMsg(a+"_brl")&&(a+="_brl");return a};cvox.BrailleUtil.getRole=function(a){return a?(a=cvox.BrailleUtil.getRoleMsg(a))?cvox.ChromeVox.msgs.getMsg(a):"":""};
-cvox.BrailleUtil.getState=function(a){return a?cvox.NodeStateUtil.expand(cvox.DomUtil.getStateMsgs(a,!0).map(function(a){cvox.ChromeVox.msgs.getMsg(a[0]+"_brl")&&(a[0]+="_brl");return a})):""};cvox.BrailleUtil.getContainer=function(a,b){if(!a||!b)return"";for(var c=cvox.DomUtil.getUniqueAncestors(a,b),d=0,e;e=c[d];d++)if((e=cvox.BrailleUtil.getRoleMsg(e))&&-1!=cvox.BrailleUtil.CONTAINER.indexOf(e))return cvox.ChromeVox.msgs.getMsg(e);return""};
-cvox.BrailleUtil.getValue=function(a){if(!a)return new cvox.Spannable;var b=new cvox.BrailleUtil.ValueSpan(0);if(cvox.DomUtil.isInputTypeText(a)){var c=a.value;"password"===a.type&&(c=c.replace(/./g,"*"));b=new cvox.Spannable(c,b);a===document.activeElement&&b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,a.selectionStart,a.selectionEnd);return b}if(a instanceof HTMLTextAreaElement){var d=new cvox.EditableTextAreaShadow;d.update(a);var e=d.getLineIndex(a.selectionEnd),c=d.getLineStart(e),d=d.getLineEnd(e),
-d=a.value.substring(c,d);b.offset=c;b=new cvox.Spannable(d,b);a===document.activeElement&&(d=Math.max(a.selectionStart-c,0),a=Math.min(a.selectionEnd-c,b.getLength()),b.setSpan(new cvox.BrailleUtil.ValueSelectionSpan,d,a));return b}return new cvox.Spannable(cvox.DomUtil.getValue(a),b)};
-cvox.BrailleUtil.getTemplated=function(a,b,c){c=c?c:{};for(var d=c.roleMsg||(b?cvox.DomUtil.getRoleMsg(b,cvox.VERBOSITY_VERBOSE):""),d=cvox.BrailleUtil.TEMPLATE[d]||cvox.BrailleUtil.TEMPLATE.base,e=new cvox.Spannable,f=function(d){switch(d){case "n":return c.name||cvox.BrailleUtil.getName(b);case "r":return c.role||cvox.BrailleUtil.getRole(b);case "s":return c.state||cvox.BrailleUtil.getState(b);case "c":return c.container||cvox.BrailleUtil.getContainer(a,b);case "v":return c.value?new cvox.Spannable(c.value,
-new cvox.BrailleUtil.ValueSpan(0)):cvox.BrailleUtil.getValue(b);default:return d}},g=0;g<d.length;g++){var h=f(d[g]);e.append(h);h.toString()||" "!=d[g+1]||g++}return e.trim()};cvox.MathmlStoreUtil={};cvox.MathmlStoreUtil.matchMathjaxToMathml=function(a){var b=cvox.TraverseMath.getInstance().activeMathmlHost;return b.querySelector("#"+a.id)};cvox.MathmlStoreUtil.retrieveMathjaxExtender=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};cvox.MathmlStoreUtil.retrieveMathjaxLeaf=function(a){return(a=cvox.MathmlStoreUtil.matchMathjaxToMathml(a))?[a]:[]};
-cvox.MathmlStoreUtil.checkMathjaxTag=function(a,b){var c=cvox.MathmlStoreUtil.matchMathjaxToMathml(a);return c&&c.tagName.toUpperCase()==b?[c]:[]};cvox.MathmlStoreUtil.checkMathjaxMunder=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MUNDER")};cvox.MathmlStoreUtil.checkMathjaxMover=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MOVER")};cvox.MathmlStoreUtil.checkMathjaxMsub=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUB")};
-cvox.MathmlStoreUtil.checkMathjaxMsup=function(a){return cvox.MathmlStoreUtil.checkMathjaxTag(a,"MSUP")};cvox.MathmlStoreUtil.nextSeparatorFunction=function(a){if(a){if(a.match(/^\s+$/))return null;var b=a.replace(/\s/g,"").split("").filter(function(a){return a})}else b=[","];return function(){return 1<b.length?b.shift():b[0]}};cvox.MathmlStoreUtil.mfencedSeparators=function(a,b){var c=cvox.MathmlStoreUtil.nextSeparatorFunction(b);return function(){return c?c():""}};
-cvox.MathmlStoreUtil.contentIterator=function(a,b){var c=0<a.length?cvox.XpathUtil.evalXPath("../../content/*",a[0]):[];return function(){var a=c.shift();return b+(a?a.textContent:"")}};cvox.StoreUtil={};cvox.StoreUtil.nodeCounter=function(a,b){var c=a.length,d=0,e=b;b||(e="");return function(){d<c&&(d+=1);return e+" "+d}};cvox.MathmlStoreRules=function(){cvox.MathmlStoreRules.initCustomFunctions_();cvox.MathmlStoreRules.initDefaultRules_();cvox.MathmlStoreRules.initMathjaxRules_();cvox.MathmlStoreRules.initAliases_();cvox.MathmlStoreRules.initSpecializationRules_();cvox.MathmlStoreRules.initSemanticRules_()};goog.addSingletonGetter(cvox.MathmlStoreRules);cvox.MathmlStoreRules.mathStore=cvox.MathmlStore.getInstance();cvox.MathmlStoreRules.mathStore.initialize=cvox.MathmlStoreRules.getInstance;
-cvox.MathmlStoreRules.defineDefaultMathmlRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineDefaultMathmlRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRule_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRule,cvox.MathmlStoreRules.mathStore);cvox.MathmlStoreRules.defineRuleAlias_=goog.bind(cvox.MathmlStoreRules.mathStore.defineRuleAlias,cvox.MathmlStoreRules.mathStore);
-cvox.MathmlStoreRules.addContextFunction_=goog.bind(cvox.MathmlStoreRules.mathStore.contextFunctions.add,cvox.MathmlStoreRules.mathStore.contextFunctions);cvox.MathmlStoreRules.addCustomQuery_=goog.bind(cvox.MathmlStoreRules.mathStore.customQueries.add,cvox.MathmlStoreRules.mathStore.customQueries);
-cvox.MathmlStoreRules.initCustomFunctions_=function(){(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFnodeCounter",cvox.StoreUtil.nodeCounter);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFmfSeparators",cvox.MathmlStoreUtil.mfencedSeparators);(0,cvox.MathmlStoreRules.addContextFunction_)("CTXFcontentIterator",cvox.MathmlStoreUtil.contentIterator);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFextender",cvox.MathmlStoreUtil.retrieveMathjaxExtender);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmunder",
-cvox.MathmlStoreUtil.checkMathjaxMunder);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmover",cvox.MathmlStoreUtil.checkMathjaxMover);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsub",cvox.MathmlStoreUtil.checkMathjaxMsub);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFmathmlmsup",cvox.MathmlStoreUtil.checkMathjaxMsup);(0,cvox.MathmlStoreRules.addCustomQuery_)("CQFlookupleaf",cvox.MathmlStoreUtil.retrieveMathjaxLeaf)};
-cvox.MathmlStoreRules.initDefaultRules_=function(){(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("math","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mspace","[p] (pause:250)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mstyle","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mpadded","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("merror","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mphantom","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mtext",
-"[t] text(); [p] (pause:200)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mi","[n] text()");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mo","[n] text() (rate:-0.1)");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mn","[n] text()");(0,cvox.MathmlStoreRules.defineRule_)("mtext-variant","default.default",'[t] "begin"; [t] @mathvariant (pause:150);[t] text() (pause:150); [t] "end"; [t] @mathvariant (pause:200)',"self::mathml:mtext","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mi-variant",
-"default.default","[t] @mathvariant; [n] text()","self::mathml:mi","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mi-variant","self::mathml:mn","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineRule_)("mo-variant","default.default","[t] @mathvariant; [n] text() (rate:-0.1)","self::mathml:mo","@mathvariant",'@mathvariant!="normal"');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("ms",'[t] "string" (pitch:0.5, rate:0.5); [t] text()');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msup",
-'[n] ./*[1]; [t] "super";[n] ./*[2] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msubsup",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "super"; [n] ./*[3] (pitch:0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msub",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:300)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mover",'[n] ./*[2] (pitch:0.35); [p] (pause:200); [t] "over"; [n] ./*[1]; [p] (pause:400)');
-(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munder",'[n] ./*[2] (pitch:-0.35); [t] "under"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("munderover",'[n] ./*[2] (pitch:-0.35); [t] "under and"; [n] ./*[3] (pitch:0.35); [t] "over"; [n] ./*[1]; [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mrow","[m] ./*");(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("msqrt",'[t] "Square root of"; [m] ./* (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mroot",
-'[t] "root of order"; [n] ./*[2]; [t] "of";[n] ./*[1] (rate:0.2); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineDefaultMathmlRule_)("mfrac",' [p] (pause:400); [n] ./*[1] (pitch:0.3); [t] "divided by"; [n] ./*[2] (pitch:-0.3); [p] (pause:400)');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-single","default.default",'[t] @open (context:"opening"); [m] ./* (separator:@separators);[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-empty",
-"default.default",'[t] @open (context:"opening"); [m] ./*;[t] @close (context:"closing")',"self::mathml:mfenced","string-length(string(@separators))=1",'string(@separators)=" "');(0,cvox.MathmlStoreRules.defineRule_)("mfenced-comma","default.default",'[t] @open (context:"opening"); [m] ./* (separator:"comma");[t] @close (context:"closing")',"self::mathml:mfenced");(0,cvox.MathmlStoreRules.defineRule_)("mfenced-multi","default.default",'[t] @open (context:"opening"); [m] ./* (sepFunc:CTXFmfSeparators,separator:@separators); [t] @close (context:"closing")',
-"self::mathml:mfenced","string-length(string(@separators))>1");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.default",'[t] "matrix"; [m] ./* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)',"self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.default","[m] ./*","self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mtable",
-"default.superbrief",'[t] count(child::mathml:mtr); [t] "by";[t] count(child::mathml:mtr[1]/mathml:mtd); [t] "matrix";',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtable","default.short",'[t] "matrix"; [m] ./*',"self::mathml:mtable");(0,cvox.MathmlStoreRules.defineRule_)("mtr","default.short","[m] ./*","self::mathml:mtr");(0,cvox.MathmlStoreRules.defineRule_)("mtd","default.short",'[t] "Element"; [t] count(./preceding-sibling::mathml:mtd)+1;[t] count(./parent::mathml:mtr/preceding-sibling::mathml:mtr)+1;[p] (pause:500); [m] ./*',
-"self::mathml:mtd");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-3",
-"default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[5]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-3-4","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "right sub"; [n] ./*[2] (pitch:-0.35); [p] (pause:200);[t] "right super"; [n] ./*[3] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[6]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-2-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-1","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left super"; [n] ./*[6] (pitch:0.35); [p] (pause:300);',
-"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[5]");(0,cvox.MathmlStoreRules.defineRule_)("mmultiscripts-1-2","default.default",'[n] ./*[1]; [p] (pause:200);[t] "left sub"; [n] ./*[5] (pitch:-0.35); [p] (pause:200);',"self::mathml:mmultiscripts","./mathml:none=./*[2]","./mathml:none=./*[3]","./mathml:mprescripts=./*[4]","./mathml:none=./*[6]")};
-cvox.MathmlStoreRules.initMathjaxRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("mj-math","default.default","[n] ./*[1]/*[1]/*[1]",'self::span[@class="math"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-leaf","default.default","[n] CQFlookupleaf",'self::span[@class="mi"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mo"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mn"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtext"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-mo-ext","default.default","[n] CQFextender",'self::span[@class="mo"]',"./*[1]/*[1]/text()","./*[1]/*[2]/text()");(0,cvox.MathmlStoreRules.defineRule_)("mj-texatom","default.default","[n] ./*[1]",'self::span[@class="texatom"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msubsup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35);[p] (pause:200); [t] "super"; [n] ./*[1]/*[2]/*[1] (pitch:0.35);[p] (pause:300)','self::span[@class="msubsup"]');
-(0,cvox.MathmlStoreRules.defineRule_)("mj-msub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub";[n] ./*[1]/*[2]/*[1] (pitch:-0.35); [p] (pause:300)','self::span[@class="msub"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msup","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "super";[n] ./*[1]/*[2]/*[1] (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munderover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under and";[n] ./*[1]/*[3]/*[1] (pitch:-0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)',
-'self::span[@class="munderover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-munder","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "under";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="munder"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mover","default.default",'[n] ./*[1]/*[2]/*[1] (pitch:0.35); [t] "over";[n] ./*[1]/*[1]/*[1]; [p] (pause:400)','self::span[@class="mover"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfrac","default.default",'[p] (pause:250); [n] ./*[1]/*[1]/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] ./*[1]/*[2]/*[1] (pitch:-0.3);[p] (pause:400)',
-'self::span[@class="mfrac"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-msqrt","default.default",'[t] "Square root of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="msqrt"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mroot","default.default",'[t] "root of order"; [n] ./*[1]/*[4]/*[1]; [t] "of";[n] ./*[1]/*[1]/*[1] (rate:0.2); [p] (pause:400)','self::span[@class="mroot"]');(0,cvox.MathmlStoreRules.defineRule_)("mj-mfenced","default.default",'[t] "opening"; [n] ./*[1]; [m] ./*[position()>1 and position()<last()]; [t] "closing"; [n] ./*[last()]',
-'self::span[@class="mfenced"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mtable"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-leaf",'self::span[@class="mmultiscripts"]')};
-cvox.MathmlStoreRules.initAliases_=function(){(0,cvox.MathmlStoreRules.defineRuleAlias_)("mspace",'self::span[@class="mspace"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mstyle",'self::span[@class="mstyle"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mpadded",'self::span[@class="mpadded"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("merror",'self::span[@class="merror"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mphantom",'self::span[@class="mphantom"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("ms",
-'self::span[@class="ms"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mrow",'self::span[@class="mrow"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msub",'self::span[@class="msubsup"]',"CQFmathmlmsub");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-msup",'self::span[@class="msubsup"]',"CQFmathmlmsup");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-munder",'self::span[@class="munderover"]',"CQFmathmlmunder");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-mover",'self::span[@class="munderover"]',
-"CQFmathmlmover")};
-cvox.MathmlStoreRules.initSpecializationRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] ./*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("cube","default.default",'[n] ./*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)',"self::mathml:msup","./*[2][text()=3]");
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube","self::mathml:msup","./mathml:mrow=./*[2]","count(./*[2]/*)=1","./*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("square-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("square-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("cube-sub","default.default",'[n] ./*[1]; [t] "sub"; [n] ./*[2] (pitch:-0.35);[p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)',"self::mathml:msubsup","./*[3][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("cube-sub","self::mathml:msubsup","./mathml:mrow=./*[3]","count(./*[3]/*)=1","./*[3]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',
-"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "cube" (pitch:0.35); [p] (pause:300)','self::span[@class="msup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",
-'self::span[@class="msubsup"]',"CQFmathmlmsup","./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube",'self::span[@class="msubsup"]',"CQFmathmlmsup",'./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRule_)("mj-square-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "square" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',
-"./*[1]/*[2]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-square-sub",'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=2]");(0,cvox.MathmlStoreRules.defineRule_)("mj-cube-sub","default.default",'[n] ./*[1]/*[1]/*[1]; [t] "sub"; [n] ./*[1]/*[3]/*[1] (pitch:-0.35); [p] (pause:300); [t] "cube" (pitch:0.35); [p] (pause:400)','self::span[@class="msubsup"]',"./*[1]/*[2]/*[1][text()=3]");(0,cvox.MathmlStoreRules.defineRuleAlias_)("mj-cube-sub",
-'self::span[@class="msubsup"]','./*[1]/*[2]/*[1]=./*[1]/*[2]/span[@class="mrow"]',"count(./*[1]/*[2]/*[1]/*)=1","./*[1]/*[2]/*[1]/*[1][text()=3]")};
-cvox.MathmlStoreRules.initSemanticRules_=function(){(0,cvox.MathmlStoreRules.defineRule_)("stree","default.default","[n] ./*[1]","self::stree");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default",'[t] "multirelation"; [m] children/* (sepFunc:CTXFcontentIterator)',"self::multirel");(0,cvox.MathmlStoreRules.defineRule_)("variable-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',
-"count(./children/*)>2",'./children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.default",'[t] "equation sequence"; [m] ./children/* (context:"part",ctxtFunc:CTXFnodeCounter,separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("multi-equality","default.short",'[t] "equation sequence"; [m] ./children/* (separator:./text())','self::relseq[@role="equality"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("equality",
-"default.default",'[t] "equation"; [t] "left hand side"; [n] children/*[1];[p] (pause:200); [n] text() (pause:200);[t] "right hand side"; [n] children/*[2]','self::relseq[@role="equality"]',"count(./children/*)=2");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality","default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/identifier or ./children/number");(0,cvox.MathmlStoreRules.defineRule_)("simple-equality2",
-"default.default","[n] children/*[1]; [p] (pause:200); [n] text() (pause:200);[n] children/*[2]",'self::relseq[@role="equality"]',"count(./children/*)=2","./children/function or ./children/appl");(0,cvox.MathmlStoreRules.defineRule_)("multrel","default.default","[m] children/* (separator:./text())","self::relseq");(0,cvox.MathmlStoreRules.defineRule_)("binary-operation","default.default","[m] children/* (separator:text());","self::infixop");(0,cvox.MathmlStoreRules.defineRule_)("variable-addition",
-"default.default",'[t] "sum with variable number of summands";[p] (pause:400); [m] children/* (separator:./text())','self::infixop[@role="addition"]',"count(children/*)>2",'children/punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("multi-addition","default.default",'[t] "sum with,"; [t] count(./children/*); [t] ", summands";[p] (pause:400); [m] ./children/* (separator:./text())','self::infixop[@role="addition"]',"count(./children/*)>2");(0,cvox.MathmlStoreRules.defineRule_)("prefix",
-"default.default",'[t] "prefix"; [n] text(); [t] "of" (pause 150);[n] children/*[1]',"self::prefixop");(0,cvox.MathmlStoreRules.defineRule_)("negative","default.default",'[t] "negative"; [n] children/*[1]',"self::prefixop",'self::prefixop[@role="negative"]');(0,cvox.MathmlStoreRules.defineRule_)("postfix","default.default",'[n] children/*[1]; [t] "postfix"; [n] text() (pause 300)',"self::postfixop");(0,cvox.MathmlStoreRules.defineRule_)("identifier","default.default","[n] text()","self::identifier");
-(0,cvox.MathmlStoreRules.defineRule_)("number","default.default","[n] text()","self::number");(0,cvox.MathmlStoreRules.defineRule_)("fraction","default.default",'[p] (pause:250); [n] children/*[1] (pitch:0.3); [p] (pause:250); [t] "divided by"; [n] children/*[2] (pitch:-0.3); [p] (pause:400)',"self::fraction");(0,cvox.MathmlStoreRules.defineRule_)("superscript","default.default",'[n] children/*[1]; [t] "super"; [n] children/*[2] (pitch:0.35);[p] (pause:300)',"self::superscript");(0,cvox.MathmlStoreRules.defineRule_)("subscript",
-"default.default",'[n] children/*[1]; [t] "sub"; [n] children/*[2] (pitch:-0.35);[p] (pause:300)',"self::subscript");(0,cvox.MathmlStoreRules.defineRule_)("ellipsis","default.default",'[p] (pause:200); [t] "dot dot dot"; [p] (pause:300)',"self::punct",'self::punct[@role="ellipsis"]');(0,cvox.MathmlStoreRules.defineRule_)("fence-single","default.default","[n] text()","self::punct",'self::punct[@role="openfence"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="closefence"]');
-(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="vbar"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("fence-single","self::punct",'self::punct[@role="application"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-punct","default.default","[p] (pause:200);","self::punct");(0,cvox.MathmlStoreRules.defineRule_)("omit-empty","default.default","","self::empty");(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close","default.default",'[p] (pause:100); [t] "open"; [n] children/*[1]; [p] (pause:200);[t] "close"',
-'self::fenced[@role="leftright"]');(0,cvox.MathmlStoreRules.defineRule_)("fences-open-close-in-appl","default.default","[p] (pause:100); [n] children/*[1]; [p] (pause:200);",'self::fenced[@role="leftright"]',"./parent::children/parent::appl");(0,cvox.MathmlStoreRules.defineRule_)("fences-neutral","default.default",'[p] (pause:100); [t] "absolute value of"; [n] children/*[1];[p] (pause:350);',"self::fenced",'self::fenced[@role="neutral"]');(0,cvox.MathmlStoreRules.defineRule_)("omit-fences","default.default",
-"[p] (pause:500); [n] children/*[1]; [p] (pause:200);","self::fenced");(0,cvox.MathmlStoreRules.defineRule_)("matrix","default.default",'[t] "matrix"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:100)',"self::matrix");(0,cvox.MathmlStoreRules.defineRule_)("matrix-row","default.default",'[m] children/* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row[@role="matrix"]');(0,cvox.MathmlStoreRules.defineRule_)("matrix-cell","default.default","[n] children/*[1]",'self::cell[@role="matrix"]');
-(0,cvox.MathmlStoreRules.defineRule_)("vector","default.default",'[t] "vector"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"element",pause:100)',"self::vector");(0,cvox.MathmlStoreRules.defineRule_)("cases","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100)',"self::cases");(0,cvox.MathmlStoreRules.defineRule_)("cases-row","default.default","[m] children/*",'self::row[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("cases-cell",
-"default.default","[n] children/*[1]",'self::cell[@role="cases"]');(0,cvox.MathmlStoreRules.defineRule_)("row","default.default",'[m] ./* (ctxtFunc:CTXFnodeCounter,context:"column",pause:100)','self::row"');(0,cvox.MathmlStoreRules.defineRule_)("cases-end","default.default",'[t] "case statement"; [m] children/* (ctxtFunc:CTXFnodeCounter,context:"case",pause:100);[t] "end cases"',"self::cases","following-sibling::*");(0,cvox.MathmlStoreRules.defineRule_)("multiline","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"line",pause:100)',
-"self::multiline");(0,cvox.MathmlStoreRules.defineRule_)("line","default.default","[m] children/*","self::line");(0,cvox.MathmlStoreRules.defineRule_)("table","default.default",'[t] "multiline equation";[m] children/* (ctxtFunc:CTXFnodeCounter,context:"row",pause:200)',"self::table");(0,cvox.MathmlStoreRules.defineRule_)("table-row","default.default","[m] children/* (pause:100)",'self::row[@role="table"]');(0,cvox.MathmlStoreRules.defineRuleAlias_)("cases-cell",'self::cell[@role="table"]');(0,cvox.MathmlStoreRules.defineRule_)("end-punct",
-"default.default","[m] children/*; [p] (pause:300)","self::punctuated",'@role="endpunct"');(0,cvox.MathmlStoreRules.defineRule_)("start-punct","default.default","[n] content/*[1]; [p] (pause:200); [m] children/*","self::punctuated",'@role="startpunct"');(0,cvox.MathmlStoreRules.defineRule_)("integral-punct","default.default","[n] children/*[1] (rate:0.2); [n] children/*[3] (rate:0.2)","self::punctuated",'@role="integral"');(0,cvox.MathmlStoreRules.defineRule_)("punctuated","default.default","[m] children/* (pause:100)",
-"self::punctuated");(0,cvox.MathmlStoreRules.defineRule_)("function","default.default","[n] text()","self::function");(0,cvox.MathmlStoreRules.defineRule_)("appl","default.default","[n] children/*[1]; [n] content/*[1]; [n] children/*[2]","self::appl");(0,cvox.MathmlStoreRules.defineRule_)("limboth","default.default",'[n] children/*[1]; [t] "from"; [n] children/*[2]; [t] "to";[n] children/*[3]',"self::limboth");(0,cvox.MathmlStoreRules.defineRule_)("sum-only","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::limboth",'self::limboth[@role="sum"]');(0,cvox.MathmlStoreRules.defineRule_)("limlower","default.default",'[n] children/*[1]; [t] "over"; [n] children/*[2];',"self::limlower");(0,cvox.MathmlStoreRules.defineRule_)("limupper","default.default",'[n] children/*[1]; [t] "under"; [n] children/*[2];',"self::limupper");(0,cvox.MathmlStoreRules.defineRule_)("largeop","default.default","[n] text()","self::largeop");(0,cvox.MathmlStoreRules.defineRule_)("bigop","default.default",'[n] children/*[1]; [p] (pause 100); [t] "over"; [n] children/*[2];[p] (pause 250);',
-"self::bigop");(0,cvox.MathmlStoreRules.defineRule_)("integral","default.default","[n] children/*[1]; [p] (pause 100); [n] children/*[2]; [p] (pause 200);[n] children/*[3] (rate:0.35);","self::integral");(0,cvox.MathmlStoreRules.defineRule_)("sqrt","default.default",'[t] "Square root of"; [n] children/*[1] (rate:0.2); [p] (pause:400)',"self::sqrt");(0,cvox.MathmlStoreRules.defineRule_)("square","default.default",'[n] children/*[1]; [t] "square" (pitch:0.35); [p] (pause:300)',"self::superscript","children/*[2][text()=2]");
-(0,cvox.MathmlStoreRules.defineRule_)("text-no-mult","default.default","[n] children/*[1]; [p] (pause:200); [n] children/*[2]","self::infixop","children/text")};cvox.AbstractShifter=function(){this.isSubnavigating_=!1};cvox.AbstractShifter.prototype.begin=function(a,b){return this.currentWalker_.begin(b)};cvox.AbstractShifter.prototype.makeLessGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.makeMoreGranular=function(){this.ensureNotSubnavigating()};cvox.AbstractShifter.prototype.ensureSubnavigating=function(){!1==this.isSubnavigating_&&(this.makeMoreGranular(),this.isSubnavigating_=!0)};
-cvox.AbstractShifter.prototype.ensureNotSubnavigating=function(){!0==this.isSubnavigating_&&(this.isSubnavigating_=!1,this.makeLessGranular())};cvox.AbstractShifter.prototype.isSubnavigating=function(){return this.isSubnavigating_};cvox.AbstractShifter.prototype.hasAction=function(a){return this.currentWalker_.hasAction(a)};cvox.AbstractShifter.prototype.performAction=function(a,b){return this.currentWalker_.performAction(a,b)};cvox.MathShifter=function(a){cvox.AbstractShifter.call(this);this.level_=0;this.bumped_=this.direction_=!1;cvox.TraverseMath.getInstance().initialize(a.start.node)};goog.inherits(cvox.MathShifter,cvox.AbstractShifter);cvox.MathShifter.prototype.next=function(a){var b=a.isReversed();this.bumped_=!cvox.TraverseMath.getInstance().nextSibling(b);return(b=cvox.TraverseMath.getInstance().getAttachedActiveNode())?cvox.CursorSelection.fromNode(b):a};
-cvox.MathShifter.prototype.sync=function(a){var b=cvox.TraverseMath.getInstance().getAttachedActiveNode();return b?cvox.CursorSelection.fromNode(b):a};cvox.MathShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("math_shifter")};cvox.MathShifter.prototype.getDescription=function(){var a=cvox.SpeechRuleEngine.getInstance().evaluateNode(cvox.TraverseMath.getInstance().activeNode);this.bumped_&&0<a.length&&a[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE);return a};
-cvox.MathShifter.prototype.getBraille=function(a,b){return new cvox.NavBraille({text:cvox.BrailleUtil.getTemplated(a.start.node,b.start.node)})};cvox.MathShifter.prototype.getGranularityMsg=function(){return this.direction_?"up to level "+this.level_:"down to level "+this.level_};cvox.MathShifter.prototype.makeLessGranular=function(){this.level_=0<this.level_?this.level_-1:0;this.direction_=!0;this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!0)};
-cvox.MathShifter.prototype.makeMoreGranular=function(){this.direction_=!1;(this.bumped_=!cvox.TraverseMath.getInstance().nextParentChild(!1))||this.level_++};
-cvox.MathShifter.create=function(a){if(cvox.DomPredicates.mathPredicate(cvox.DomUtil.getAncestors(a.start.node))){var b=cvox.DomUtil.getContainingMath(a.end.node);cvox.TraverseMath.getInstance().initialize(b);cvox.SpeechRuleEngine.getInstance().parameterize(cvox.MathmlStore.getInstance());b=cvox.MathStore.createDynamicConstraint(cvox.TraverseMath.getInstance().domain,cvox.TraverseMath.getInstance().style);cvox.SpeechRuleEngine.getInstance().setDynamicConstraint(b);return new cvox.MathShifter(a)}return null};cvox.TableUtil={};cvox.TableUtil.checkIfHeader=function(a){return"TH"==a.tagName||a.hasAttribute("scope")||a.hasAttribute("role")&&("rowheader"==a.getAttribute("role")||"columnheader"==a.getAttribute("role"))};
-cvox.TableUtil.determineColGroups=function(a){var b=[];if(0==a.length)return b;for(var c=0;c<a.length;c++){var d=a[c],e=cvox.TableUtil.getColNodes(d);if(0<e.length)for(d=0;d<e.length;d++){var f=e[d];if(f.hasAttribute("span"))for(var f=parseInt(f.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}else if(d.hasAttribute("span"))for(f=parseInt(d.getAttribute("span"),10),g=0;g<f;g++)b.push(c);else b.push(c)}return b};cvox.TableUtil.pushIfNotContained=function(a,b){-1==a.indexOf(b)&&a.push(b)};
-cvox.TableUtil.getChildRows=function(a){return cvox.XpathUtil.evalXPath('child::tbody/tr | child::thead/tr | child::*[attribute::role="row"]',a)};cvox.TableUtil.getChildCells=function(a){return cvox.XpathUtil.evalXPath('child::td | child::th | child::*[attribute::role="gridcell"] |child::*[attribute::role="rowheader"] |child::*[attribute::role="columnheader"]',a)};cvox.TableUtil.getCellWithID=function(a,b){return cvox.XpathUtil.evalXPath("id('"+b+"')",a)};
-cvox.TableUtil.getColGroups=function(a){return cvox.XpathUtil.evalXPath("child::colgroup",a)};cvox.TableUtil.getColNodes=function(a){return cvox.XpathUtil.evalXPath("child::col",a)};function ShadowTableNode(){}ShadowTableNode.prototype.rowHeaderCells=[];ShadowTableNode.prototype.colHeaderCells=[];cvox.TraverseTable=function(a){this.activeTable_=null;this.shadowTable_=[];this.candidateHeaders_=[];this.idToShadowNode_=[];this.initialize(a)};cvox.TraverseTable.prototype.colCount=null;cvox.TraverseTable.prototype.rowCount=null;cvox.TraverseTable.prototype.tableRowHeaders=null;cvox.TraverseTable.prototype.tableColHeaders=null;
-cvox.TraverseTable.prototype.initialize=function(a){a&&a!=this.activeTable_&&(this.activeTable_=a,this.currentCellCursor=null,this.tableRowHeaders=[],this.tableColHeaders=[],this.buildShadowTable_(),this.colCount=this.shadowColCount_(),this.rowCount=this.countRows_(),this.findHeaderCells_(),this.activeTable_.addEventListener("DOMSubtreeModified",goog.bind(function(){this.buildShadowTable_();this.colCount=this.shadowColCount_();this.rowCount=this.countRows_();this.tableRowHeaders=[];this.tableColHeaders=
-[];this.findHeaderCells_();0==this.colCount&&0==this.rowCount||null!=this.getCell()||this.attachCursorToNearestCell_()},this),!1))};
-cvox.TraverseTable.prototype.findNearestCursor=function(a){for(;a.firstElementChild&&"TABLE"!=a.firstElementChild.tagName&&!cvox.AriaUtil.isGrid(a.firstElementChild);)a=a.firstElementChild;for(;!cvox.DomPredicates.cellPredicate(cvox.DomUtil.getAncestors(a));)if(a=cvox.DomUtil.directedNextLeafNode(a),!cvox.DomUtil.getContainingTable(a,{allowCaptions:!0}))return null;for(var b=0;b<this.rowCount;++b)for(var c=0;c<this.colCount;++c)if(this.shadowTable_[b][c]&&cvox.DomUtil.isDescendantOfNode(a,this.shadowTable_[b][c].activeCell))return[b,
-c];return null};cvox.TraverseTable.prototype.attachCursorToNearestCell_=function(){if(this.currentCellCursor){var a=this.currentCellCursor,b=this.shadowTable_[a[0]];if(b)this.currentCellCursor=[a[0],b.length-1];else if(b=this.shadowTable_.length,0==b)this.currentCellCursor=null;else{var c=this.shadowTable_[b-1][a[1]];c?this.currentCellCursor=[b-1,a[1]]:this.goToLastCell()}}else this.goToLastCell()};
-cvox.TraverseTable.prototype.buildShadowTable_=function(){this.shadowTable_=[];for(var a=cvox.TableUtil.getChildRows(this.activeTable_),b=null,c=null,d=cvox.TableUtil.getColGroups(this.activeTable_),d=cvox.TableUtil.determineColGroups(d),e=0;e<a.length;e++)this.shadowTable_.push([]);for(e=0;e<a.length;e++)for(var f=cvox.TableUtil.getChildCells(a[e]),g=0,h=0;g<f.length;)if(null==this.shadowTable_[e][h]){var k=f[g],l=1,m=1;k.hasAttribute("colspan")&&(l=parseInt(k.getAttribute("colspan"),10),isNaN(l)||
-0>=l)&&(l=1);k.hasAttribute("rowspan")&&(m=parseInt(k.getAttribute("rowspan"),10),isNaN(m)||0>=m)&&(m=1);for(var p=0;p<m;p++)for(var q=0;q<l;q++){var n=new ShadowTableNode;0==p&&0==q?(n.spanned=!1,n.rowSpan=!1,n.colSpan=!1):(n.spanned=!0,n.rowSpan=1<m,n.colSpan=1<l);n.i=e;n.j=h;n.activeCell=k;n.rowHeaderCells=[];n.colHeaderCells=[];n.isRowHeader=!1;n.isColHeader=!1;cvox.TableUtil.checkIfHeader(n.activeCell)?this.candidateHeaders_.push(n):n.activeCell.hasAttribute("headers")&&this.candidateHeaders_.push(n);
-null==b?(b=a[e].parentNode,c=0):a[e].parentNode!=b&&(b=a[e].parentNode,c+=1);n.rowGroup=c;n.colGroup=0<d.length?d[h]:0;n.spanned||null!=k.id&&(this.idToShadowNode_[k.id]=n);this.shadowTable_[e+p][h+q]=n}h+=l;g++}else h+=1;return this.shadowTable_};
-cvox.TraverseTable.prototype.findHeaderCells_=function(){for(var a=0;a<this.candidateHeaders_.length;a++){var b=this.candidateHeaders_[a],c=b.activeCell,d=null,e=null;if(!b.spanned){"TH"!=c.tagName||c.hasAttribute("scope")?c.hasAttribute("scope")?e=c.getAttribute("scope"):c.hasAttribute("role")&&"rowheader"==c.getAttribute("role")?e="row":c.hasAttribute("role")&&"columnheader"==c.getAttribute("role")&&(e="col"):(0<b.j?"TH"==this.shadowTable_[b.i][b.j-1].activeCell.tagName&&(d="col"):b.j<this.shadowTable_[b.i].length-
-1?"TH"==this.shadowTable_[b.i][b.j+1].activeCell.tagName&&(d="col"):d="col",null==d&&(0<b.i?"TH"==this.shadowTable_[b.i-1][b.j].activeCell.tagName&&(d="row"):b.i<this.shadowTable_.length-1?"TH"==this.shadowTable_[b.i+1][b.j].activeCell.tagName&&(d="row"):d="row"));if("row"==e||"row"==d){b.isRowHeader=!0;for(d=b.j;d<this.shadowTable_[b.i].length;d++)e=this.shadowTable_[b.i][d],e.rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("col"==e||"col"==d){b.isColHeader=!0;for(e=b.i;e<this.shadowTable_.length;e++){d=
-this.shadowTable_[e][b.j];if(null==d)break;d.colHeaderCells.push(c)}this.tableColHeaders.push(c)}else if("rowgroup"==e){b.isRowHeader=!0;for(var f=b.rowGroup,d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].rowHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length&&this.shadowTable_[e][0].rowGroup==f;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].rowHeaderCells.push(c);this.tableRowHeaders.push(c)}else if("colgroup"==e){b.isColHeader=!0;f=b.colGroup;
-for(d=b.j+1;d<this.shadowTable_[b.i].length;d++)this.shadowTable_[b.i][d].colGroup==f&&this.shadowTable_[b.i][d].colHeaderCells.push(c);for(e=b.i+1;e<this.shadowTable_.length;e++)for(d=0;d<this.shadowTable_[e].length;d++)this.shadowTable_[e][d].colGroup==f&&this.shadowTable_[e][d].colHeaderCells.push(c);this.tableColHeaders.push(c)}c.hasAttribute("headers")&&this.findAttrbHeaders_(b);c.hasAttribute("aria-describedby")&&this.findAttrbDescribedBy_(b)}}};
-cvox.TraverseTable.prototype.findAttrbHeaders_=function(a){for(var b=a.activeCell,c=b.getAttribute("headers").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];if(!cvox.TableUtil.checkIfHeader(g.activeCell)){var h=Math.abs(g.i-a.i),k=Math.abs(g.j-a.j);0==h||h<k?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,g.activeCell)):
-(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell))}}};
-cvox.TraverseTable.prototype.findAttrbDescribedBy_=function(a){for(var b=a.activeCell,c=b.getAttribute("aria-describedby").split(" "),d=0;d<c.length;d++)for(var e=cvox.TableUtil.getCellWithID(this.activeTable_,c[d]),f=0;f<e.length&&e[f].id!=b.id;f++){var g=this.idToShadowNode_[e[f].id];cvox.TableUtil.checkIfHeader(g.activeCell)||(g.activeCell.hasAttribute("role")&&"rowheader"==g.activeCell.getAttribute("role")?(cvox.TableUtil.pushIfNotContained(a.rowHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableRowHeaders,
-g.activeCell)):g.activeCell.hasAttribute("role")&&"columnheader"==g.activeCell.getAttribute("role")&&(cvox.TableUtil.pushIfNotContained(a.colHeaderCells,g.activeCell),cvox.TableUtil.pushIfNotContained(this.tableColHeaders,g.activeCell)))}};cvox.TraverseTable.prototype.getCell=function(){if(!this.currentCellCursor||!this.shadowTable_)return null;var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a&&a.activeCell};
-cvox.TraverseTable.prototype.getCellAt=function(a){return a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]&&(a=this.shadowTable_[a[0]][a[1]],null!=a)?a.activeCell:null};cvox.TraverseTable.prototype.getCellRowHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.rowHeaderCells};cvox.TraverseTable.prototype.getCellColHeaders=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.colHeaderCells};
-cvox.TraverseTable.prototype.isSpanned=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.spanned};cvox.TraverseTable.prototype.isRowHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isRowHeader};cvox.TraverseTable.prototype.isColHeader=function(){var a=this.shadowTable_[this.currentCellCursor[0]][this.currentCellCursor[1]];return a.isColHeader};
-cvox.TraverseTable.prototype.getCol=function(){for(var a=[],b=0;b<this.shadowTable_.length;b++)if(this.shadowTable_[b][this.currentCellCursor[1]]){var c=this.shadowTable_[b][this.currentCellCursor[1]];if(c.colSpan&&c.rowSpan){var d=a[a.length-1];d!=c.activeCell&&a.push(c.activeCell)}else!c.colSpan&&c.rowSpan||a.push(c.activeCell)}return a};cvox.TraverseTable.prototype.summaryText=function(){return this.activeTable_.hasAttribute("summary")?this.activeTable_.getAttribute("summary"):null};
-cvox.TraverseTable.prototype.shadowColCount_=function(){for(var a=0,b=0;b<this.shadowTable_.length;b++)this.shadowTable_[b].length>a&&(a=this.shadowTable_[b].length);return a};cvox.TraverseTable.prototype.countRows_=function(){var a=cvox.TableUtil.getChildRows(this.activeTable_);return a.length};cvox.TraverseTable.prototype.nextRow=function(){return this.currentCellCursor?this.goToRow(this.currentCellCursor[0]+1):this.goToRow(0)};
-cvox.TraverseTable.prototype.nextCol=function(){return this.currentCellCursor?this.goToCol(this.currentCellCursor[1]+1):this.goToCol(0)};cvox.TraverseTable.prototype.goToRow=function(a){return null!=this.shadowTable_[a]?(this.currentCellCursor=null==this.currentCellCursor?[a,0]:[a,this.currentCellCursor[1]],!0):!1};cvox.TraverseTable.prototype.goToCol=function(a){if(0>a||a>=this.colCount)return!1;this.currentCellCursor=null==this.currentCellCursor?[0,a]:[this.currentCellCursor[0],a];return!0};
-cvox.TraverseTable.prototype.goToCell=function(a){if(a[0]<this.rowCount&&0<=a[0]&&a[1]<this.colCount&&0<=a[1]){var b=this.shadowTable_[a[0]][a[1]];if(null!=b)return this.currentCellCursor=a,!0}return!1};cvox.TraverseTable.prototype.goToLastCell=function(){var a=this.shadowTable_.length;if(0==a)return!1;var b=this.shadowTable_[a-1],a=[a-1,b.length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};
-cvox.TraverseTable.prototype.goToRowLastCell=function(){var a=this.currentCellCursor[0],a=[a,this.shadowTable_[a].length-1],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TraverseTable.prototype.goToColLastCell=function(){var a=this.getCol(),a=[a.length-1,this.currentCellCursor[1]],b=this.shadowTable_[a[0]][a[1]];return null!=b?(this.currentCellCursor=a,!0):!1};cvox.TableWalker=function(){this.tt=new cvox.TraverseTable(null)};goog.inherits(cvox.TableWalker,cvox.AbstractWalker);cvox.TableWalker.prototype.next=function(a){return this.nextRow(a)};cvox.TableWalker.prototype.sync=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell(a)},this))};
-cvox.TableWalker.prototype.getDescription=function(a,b){var c=this.syncPosition_(b);if(!c)return[];this.tt.goToCell(c);c=cvox.DescriptionUtil.getCollectionDescription(a,b);0==c.length&&c.push(new cvox.NavDescription({annotation:cvox.ChromeVox.msgs.getMsg("empty_cell")}));return c};cvox.TableWalker.prototype.getBraille=function(a,b){new cvox.NavBraille({});var c=this.syncPosition_(b);if(c){var d=cvox.BrailleUtil.getTemplated(a.start.node,b.start.node);d.append(" "+ ++c[0]+"/"+ ++c[1])}return new cvox.NavBraille({text:d})};
-cvox.TableWalker.prototype.goToFirstCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToCell([0,0])},this))};cvox.TableWalker.prototype.goToLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToLastCell()},this))};cvox.TableWalker.prototype.goToRowFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([a[0],0])},this))};
-cvox.TableWalker.prototype.goToRowLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToRowLastCell()},this))};cvox.TableWalker.prototype.goToColFirstCell=function(a){return this.goTo_(a,goog.bind(function(a){return this.tt.goToCell([0,a[1]])},this))};cvox.TableWalker.prototype.goToColLastCell=function(a){return this.goTo_(a,goog.bind(function(){return this.tt.goToColLastCell()},this))};
-cvox.TableWalker.prototype.nextRow=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0]+(a.isReversed()?-1:1),b[1]])},this))};cvox.TableWalker.prototype.nextCol=function(a){return this.goTo_(a,goog.bind(function(b){return this.tt.goToCell([b[0],b[1]+(a.isReversed()?-1:1)])},this))};cvox.TableWalker.prototype.announceHeaders=function(a){cvox.ChromeVox.tts.speak(this.getHeaderText_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);return a};
-cvox.TableWalker.prototype.speakTableLocation=function(a){cvox.ChromeVox.navigationManager.speakDescriptionArray(this.getLocationDescription_(a),cvox.AbstractTts.QUEUE_MODE_FLUSH,null);return a};cvox.TableWalker.prototype.exitShifterContent=function(a){a=this.getTableNode_(a);if(!a)return null;a=cvox.DomUtil.directedNextLeafNode(a,!1);return cvox.CursorSelection.fromNode(a)};
-cvox.TableWalker.prototype.getHeaderText_=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))&&this.tt.goToCell(a)?this.getRowHeaderText_(a)+" "+this.getColHeaderText_(a):cvox.ChromeVox.msgs.getMsg("not_inside_table")};cvox.TableWalker.prototype.getLocationDescription_=function(a){a=this.getLocationInfo(a);return null==a?null:[new cvox.NavDescription({text:cvox.ChromeVox.msgs.getMsg("table_location",a)})]};
-cvox.TableWalker.prototype.getRowHeaderText_=function(a){var b="",c=this.tt.getCellRowHeaders();if(0==c.length)return c=this.tt.getCellAt([a[0],0]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("row_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("row_header")+b};
-cvox.TableWalker.prototype.getColHeaderText_=function(a){var b="",c=this.tt.getCellColHeaders();if(0==c.length)return c=this.tt.getCellAt([0,a[1]]),b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c)+" "+cvox.DomUtil.getName(c)),cvox.ChromeVox.msgs.getMsg("column_header")+b;for(a=0;a<c.length;++a)b+=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(c[a])+" "+cvox.DomUtil.getName(c[a]));return""==b?cvox.ChromeVox.msgs.getMsg("empty_row_header"):cvox.ChromeVox.msgs.getMsg("column_header")+
-b};cvox.TableWalker.prototype.getLocationInfo=function(a){this.tt.initialize(this.getTableNode_(a));return(a=this.tt.findNearestCursor(a.start.node))?[a[0]+1,this.tt.rowCount,a[1]+1,this.tt.colCount].map(function(a){return cvox.ChromeVox.msgs.getNumber(a)}):null};
-cvox.TableWalker.prototype.goTo_=function(a,b){this.tt.initialize(this.getTableNode_(a));var c=this.tt.findNearestCursor(a.end.node);if(!c)return null;this.tt.goToCell(c);return b(c)?cvox.CursorSelection.fromNode(this.tt.getCell()).setReversed(a.isReversed()):null};cvox.TableWalker.prototype.getTableNode_=function(a){return cvox.DomUtil.getContainingTable(a.end.node)};cvox.TableWalker.prototype.syncPosition_=function(a){var b=this.getTableNode_(a);this.tt.initialize(b);return this.tt.findNearestCursor(a.end.node)};cvox.ColumnWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.ColumnWalker,cvox.TableWalker);cvox.ColumnWalker.prototype.next=function(a){return this.nextCol(a)};cvox.ColumnWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("column_granularity")};cvox.RowWalker=function(){cvox.TableWalker.call(this)};goog.inherits(cvox.RowWalker,cvox.TableWalker);cvox.RowWalker.prototype.next=function(a){return this.nextRow(a)};cvox.RowWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("row_granularity")};cvox.TableShifter=function(){this.rowWalker_=new cvox.RowWalker;this.columnWalker_=new cvox.ColumnWalker;this.currentWalker_=this.rowWalker_;this.bumpedEdge_=!1;this.begin_=!0;cvox.AbstractShifter.call(this)};goog.inherits(cvox.TableShifter,cvox.AbstractShifter);cvox.TableShifter.prototype.next=function(a){var b=this.currentWalker_.next(a);return b?b:(this.bumpedEdge_=!0,a)};
-cvox.TableShifter.prototype.sync=function(a){return"TABLE"==a.start.node.tagName?a.isReversed()?this.currentWalker_.goToLastCell(a):this.currentWalker_.goToFirstCell(a):this.currentWalker_.sync(a)};cvox.TableShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("table_shifter")};
-cvox.TableShifter.prototype.getDescription=function(a,b){var c=this.currentWalker_.getDescription(a,b);if(0<c.length&&(this.bumpedEdge_&&(c[0].pushEarcon(cvox.AbstractEarcons.WRAP_EDGE),this.bumpedEdge_=!1),this.begin_)){var d=this.currentWalker_.tt.summaryText(),e=this.currentWalker_.getLocationInfo(b);null!=e&&c.push(new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("table_location",e),text:"",annotation:d?d+" ":""}));this.currentWalker_.tt.isSpanned()&&c.push(new cvox.NavDescription({text:"",
-annotation:cvox.ChromeVox.msgs.getMsg("spanned")}));this.begin_=!1}return c};cvox.TableShifter.prototype.getBraille=function(a,b){return this.currentWalker_.getBraille(a,b)};cvox.TableShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};cvox.TableShifter.prototype.makeLessGranular=function(){cvox.TableShifter.superClass_.makeLessGranular.call(this);this.currentWalker_=this.rowWalker_};
-cvox.TableShifter.prototype.makeMoreGranular=function(){cvox.TableShifter.superClass_.makeMoreGranular.call(this);this.currentWalker_=this.columnWalker_};cvox.TableShifter.create=function(a){a=cvox.DomUtil.getAncestors(a.start.node);return cvox.DomPredicates.tablePredicate(a)&&!cvox.DomPredicates.captionPredicate(a)?new cvox.TableShifter:null};cvox.NavigationHistory=function(){this.reset_()};cvox.NavigationHistory.MAX_HISTORY_LEN_=30;cvox.NavigationHistory.prototype.reset_=function(){var a=document.body;this.history_=[a];this.arrivedValid_=!0};cvox.NavigationHistory.prototype.update=function(a){var b=this.history_[0];a&&a!=b&&this.history_.unshift(a);this.history_.length>cvox.NavigationHistory.MAX_HISTORY_LEN_&&this.history_.pop();this.arrivedValid_=this.isValidNode_(a)};
-cvox.NavigationHistory.prototype.becomeInvalid=function(a){this.clean_();return this.arrivedValid_?!this.isValidNode_(a):(this.arrivedValid_=!0,!1)};cvox.NavigationHistory.prototype.revert=function(a){var b=document.activeElement;b!=document.body&&this.isValidNode_(b)&&this.update(b);if(a)for(;0<this.history_.length;){b=this.history_[0];if(a(b))break;this.history_.shift()}return{current:this.history_[0],previous:this.history_[1]}};
-cvox.NavigationHistory.prototype.clean_=function(){for(var a=!1,b=this.history_.length-1;0<=b;b--){var c=this.isValidNode_(this.history_[b]);c||(this.history_.splice(b,1),a=!0)}return a};cvox.NavigationHistory.prototype.isValidNode_=function(a){return cvox.DomUtil.isAttachedToDocument(a)&&cvox.DomUtil.isVisible(a)?!0:!1};cvox.TraverseContent=function(a){this.currentDomObj=null!=a?a:document.body;var b=document.createRange();try{b.selectNode(this.currentDomObj),this.startCursor_=new cvox.Cursor(b.startContainer,b.startOffset,cvox.TraverseUtil.getNodeText(b.startContainer)),this.endCursor_=new cvox.Cursor(b.endContainer,b.endOffset,cvox.TraverseUtil.getNodeText(b.endContainer))}catch(c){window.console.log("Error: Unselectable node:"),window.console.log(a)}};goog.addSingletonGetter(cvox.TraverseContent);
-cvox.TraverseContent.prototype.lastSelectionWasWhitespace=!1;cvox.TraverseContent.prototype.skipWhitespace=!1;cvox.TraverseContent.prototype.skipInvalidSelections=!0;cvox.TraverseContent.prototype.breakAtLinks=!0;cvox.TraverseContent.kCharacter="character";cvox.TraverseContent.kWord="word";cvox.TraverseContent.kSentence="sentence";cvox.TraverseContent.kLine="line";cvox.TraverseContent.kParagraph="paragraph";
-cvox.TraverseContent.kAllGrains=[cvox.TraverseContent.kParagraph,cvox.TraverseContent.kSentence,cvox.TraverseContent.kLine,cvox.TraverseContent.kWord,cvox.TraverseContent.kCharacter];cvox.TraverseContent.prototype.syncToCursorSelection=function(a){this.startCursor_=a.start.clone();this.endCursor_=a.end.clone()};cvox.TraverseContent.prototype.getCurrentCursorSelection=function(){return new cvox.CursorSelection(this.startCursor_,this.endCursor_)};
-cvox.TraverseContent.prototype.updateSelection=function(){cvox.TraverseUtil.setSelection(this.startCursor_,this.endCursor_);cvox.SelectionUtil.scrollToSelection(window.getSelection())};cvox.TraverseContent.prototype.getCurrentRange=function(){var a=document.createRange();try{a.setStart(this.startCursor_.node,this.startCursor_.index),a.setEnd(this.endCursor_.node,this.endCursor_.index)}catch(b){console.log("Invalid range ")}return a};cvox.TraverseContent.prototype.getCurrentText=function(){return cvox.SelectionUtil.getRangeText(this.getCurrentRange())};
-cvox.TraverseContent.prototype.collapseToEnd=function(){this.startCursor_=this.endCursor_.clone()};cvox.TraverseContent.prototype.collapseToStart=function(){this.endCursor_=this.startCursor_.clone()};
-cvox.TraverseContent.prototype.moveNext=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getNextWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getNextChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getNextParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getNextLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getNextSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.moveNext(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};
-cvox.TraverseContent.prototype.movePrev=function(a){var b=this.getBreakTags(),c=this.skipWhitespace,d=this.getCurrentRange();cvox.SelectionUtil.isRangeValid(d)||(c=!0);var e=[],f=[];do{a===cvox.TraverseContent.kSentence?d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b):a===cvox.TraverseContent.kWord?d=cvox.TraverseUtil.getPreviousWord(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kCharacter?d=cvox.TraverseUtil.getPreviousChar(this.startCursor_,this.endCursor_,
-e,f,c):a===cvox.TraverseContent.kParagraph?d=cvox.TraverseUtil.getPreviousParagraph(this.startCursor_,this.endCursor_,e,f):a===cvox.TraverseContent.kLine?d=cvox.TraverseUtil.getPreviousLine(this.startCursor_,this.endCursor_,e,f,b):(window.console.log('Invalid selection granularity: "'+a+'"'),a=cvox.TraverseContent.kSentence,d=cvox.TraverseUtil.getPreviousSentence(this.startCursor_,this.endCursor_,e,f,b));if(null==d)return null;var d=this.getCurrentRange(),g=!d.getBoundingClientRect()}while(this.skipInvalidSelections&&
-g);if(cvox.SelectionUtil.isRangeValid(d))this.lastSelectionWasWhitespace=!1;else if(this.lastSelectionWasWhitespace||a!=cvox.TraverseContent.kCharacter)for(;!cvox.SelectionUtil.isRangeValid(this.getCurrentRange())&&null!=this.movePrev(a););else this.lastSelectionWasWhitespace=!0;return this.getCurrentText()};cvox.TraverseContent.prototype.getBreakTags=function(){return{A:this.breakAtLinks,BR:!0,HR:!0}};
-cvox.TraverseContent.prototype.nextElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.moveNext(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};
-cvox.TraverseContent.prototype.prevElement=function(a,b){null!=b&&(this.currentDomObj=b);var c=this.movePrev(a);return null==c||cvox.DomUtil.isDescendantOfNode(this.startCursor_.node,this.currentDomObj)&&cvox.DomUtil.isDescendantOfNode(this.endCursor_.node,this.currentDomObj)?c:null};cvox.TraverseContent.prototype.reset=function(){window.getSelection().removeAllRanges()};cvox.AbstractSelectionWalker=function(){this.objWalker_=new cvox.BareObjectWalker;this.tc_=cvox.TraverseContent.getInstance();this.grain=""};goog.inherits(cvox.AbstractSelectionWalker,cvox.AbstractWalker);
-cvox.AbstractSelectionWalker.prototype.next=function(a){var b=a.isReversed();this.tc_.syncToCursorSelection(a.clone().setReversed(!1));var c=b?this.tc_.prevElement(this.grain):this.tc_.nextElement(this.grain);if(null==c)return this.objWalker_.next(a);var c=this.tc_.getCurrentCursorSelection().setReversed(b),d=this.objWalker_.next(a),d=d?d.setReversed(b):null;return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||
-cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.sync=function(a){var b=a.isReversed(),c=null;if(a.start.equals(a.end)&&"Text"!=a.start.node.constructor.name){for(c=a.start.node;c&&cvox.DomUtil.directedFirstChild(c,b)&&!cvox.TraverseUtil.treatAsLeafNode(c);){for(var d=cvox.DomUtil.directedFirstChild(c,b);d;)if(cvox.DomUtil.isVisible(d,{checkAncestors:!1,checkDescendants:!1})){c=d;break}else d=cvox.DomUtil.directedNextSibling(d,b);if(!d)break}c=cvox.CursorSelection.fromNode(c)}else c=a.clone(),b?c.start=c.end:
-c.end=c.start;c=this.next(c.setReversed(!1));d=(d=this.objWalker_.sync(a))?d.setReversed(b):null;if(!c)return d;c.setReversed(b);return!d||"Text"==c.end.node.constructor.name&&"Text"==d.end.node.constructor.name||cvox.DomUtil.isDescendantOfNode(c.end.node,a.end.node)||cvox.DomUtil.isDescendantOfNode(c.end.node,d.end.node)?c:d};
-cvox.AbstractSelectionWalker.prototype.getDescription=function(a,b){var c=cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getUniqueAncestors(a.end.node,b.start.node),!0,cvox.ChromeVox.verbosity);c.text=b.getText()||c.text;return[c]};cvox.AbstractSelectionWalker.prototype.getBraille=function(a,b){var c=b.absStart().node,d=cvox.TraverseUtil.getNodeText(c),e=new cvox.Spannable(d);e.setSpan(c,0,d.length);return new cvox.NavBraille({text:e,startIndex:b.absStart().index,endIndex:b.absEnd().index})};cvox.CharacterWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kCharacter};goog.inherits(cvox.CharacterWalker,cvox.AbstractSelectionWalker);cvox.CharacterWalker.prototype.getDescription=function(a,b){var c=cvox.CharacterWalker.superClass_.getDescription.call(this,a,b);c.forEach(function(a){a.personality||(a.personality={});a.personality.phoneticCharacters=!0});return c};cvox.CharacterWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("character_granularity")};cvox.GroupUtil={};cvox.GroupUtil.MAX_CHARCOUNT_=1500;cvox.GroupUtil.BREAKOUT_SELECTOR_='blockquote,button,code,form,frame,h1,h2,h3,h4,h5,h6,hr,iframe,input,object,ol,p,pre,select,table,tr,ul,math,span.math,[role~="alert alertdialog button checkbox combobox dialog log marquee menubar progressbar radio radiogroup scrollbar slider spinbutton status tab tabpanel textbox toolbar tooltip treeitem article document group heading img list math region row separator"]';
-cvox.GroupUtil.isLeafNode=function(a){if("LABEL"==a.tagName)return cvox.DomUtil.isLeafNode(a);if(cvox.DomUtil.isLeafNode(a))return!0;if(!cvox.DomUtil.isSemanticElt(a))for(var b=a.querySelectorAll(cvox.GroupUtil.BREAKOUT_SELECTOR_),c=0;c<b.length;++c)if(cvox.DomUtil.hasContent(b[c]))return!1;if(cvox.AriaUtil.isCompositeControl(a)&&!cvox.DomUtil.isFocusable(a))return!1;a=cvox.DomUtil.collapseWhitespace(cvox.DomUtil.getValue(a)+" "+cvox.DomUtil.getName(a));return a.length>cvox.GroupUtil.MAX_CHARCOUNT_||
-""===a.replace(/\s/g,"")?!1:!0};cvox.GroupWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.GroupWalker,cvox.AbstractNodeWalker);cvox.GroupWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getCollectionDescription(a,b)};cvox.GroupWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};cvox.GroupWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("group_strategy")};cvox.GroupWalker.prototype.stopNodeDescent=function(a){return cvox.GroupUtil.isLeafNode(a)};cvox.StructuralLineWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kLine};goog.inherits(cvox.StructuralLineWalker,cvox.AbstractSelectionWalker);cvox.StructuralLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("structural_line")};
-cvox.StructuralLineWalker.prototype.getDescription=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getDescription.call(this,a,b);c[0].text=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index)+c[0].text;return c};
-cvox.StructuralLineWalker.prototype.getBraille=function(a,b){var c=cvox.StructuralLineWalker.superClass_.getBraille.call(this,a,b),d=this.objWalker_.sync(b).absStart().node,e=a.absEnd().node,f=void 0;b.start.equals(b.end)||cvox.DomPredicates.editTextPredicate([d])||(f=cvox.DomUtil.getPrefixText(b.absStart().node,b.absStart().index),f+=b.getText());e=cvox.BrailleUtil.getTemplated(e,d,{name:f});e.setSpan(d,0,e.getLength());c.text=e;c.startIndex=0;c.endIndex=0;return c};cvox.LayoutLineWalker=function(){this.subWalker_=new cvox.StructuralLineWalker};goog.inherits(cvox.LayoutLineWalker,cvox.AbstractWalker);cvox.LayoutLineWalker.prototype.next=function(a){var b=new cvox.CursorSelection(a.end,a.end,a.isReversed()),c=this.subWalker_.sync(b);if(!c)return null;b=this.subWalker_.next(b);if(!b)return null;b.setReversed(a.isReversed());return this.extend_(b).setReversed(!1)};
-cvox.LayoutLineWalker.prototype.sync=function(a){var b=this.subWalker_.sync(a);if(!b)return null;var c=this.extend_(b),b=this.extend_(b.setReversed(!b.isReversed()));return new cvox.CursorSelection(b.end,c.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.getDescription=function(a,b){var c=[],d=a,e=b.clone().setReversed(!1),f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return[];if(e.start.node==e.end.node)return this.subWalker_.getDescription(a,b);for(;f&&!f.end.equals(e.end);)c.push.apply(c,this.subWalker_.getDescription(d,f)),d=f,f=this.subWalker_.next(f);f&&c.push.apply(c,this.subWalker_.getDescription(d,f));return c};
-cvox.LayoutLineWalker.prototype.getBraille=function(a,b){var c=new cvox.NavBraille({}),d=this.subWalker_.sync(b.clone().setReversed(!1)),e=this.sync(b).setReversed(!1);if(!e||!d)return c;var f=new cvox.CursorSelection(e.start,e.start),f=this.subWalker_.sync(f);if(!f)return c;for(;f&&!f.end.equals(e.end);)this.appendBraille_(a,d,f,c),a=f,f=this.subWalker_.next(f);f&&this.appendBraille_(a,d,f,c);return c};cvox.LayoutLineWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("layout_line")};
-cvox.LayoutLineWalker.prototype.isVisualLineBreak_=function(a,b){if(this.wantsOwnLine_(a.end.node)||this.wantsOwnLine_(b.start.node))return!0;var c=a.getRange().getBoundingClientRect(),d=b.getRange().getBoundingClientRect();0==c.width&&0==c.height&&a.end.node.nodeType==Node.ELEMENT_NODE&&(c=a.end.node.getBoundingClientRect());0==d.width&&0==d.height&&b.start.node.nodeType==Node.ELEMENT_NODE&&(d=b.start.node.getBoundingClientRect());return c.bottom!=d.bottom};
-cvox.LayoutLineWalker.prototype.wantsOwnLine_=function(a){return a instanceof HTMLTextAreaElement||a.parentNode instanceof HTMLTextAreaElement};cvox.LayoutLineWalker.prototype.extend_=function(a){var b=a,c=a;do b=c,c=this.subWalker_.next(b);while(c&&!this.isVisualLineBreak_(b,c));return new cvox.CursorSelection(a.start,b.end,a.isReversed())};
-cvox.LayoutLineWalker.prototype.appendBraille_=function(a,b,c,d){a=this.subWalker_.getBraille(a,c).text;var e=a.getSpanInstanceOf(cvox.BrailleUtil.ValueSelectionSpan);0<d.text.getLength()&&d.text.append(cvox.BrailleUtil.ITEM_SEPARATOR);for(var f=c.start.node;f.parentNode&&cvox.DomUtil.isLeafNode(f.parentNode);)f=f.parentNode;var g=d.text.getLength(),h=g+a.getLength();d.text.append(a.toString());d.text.setSpan(f,g,h);b&&c.absEquals(b)&&(e?(d.startIndex=g+a.getSpanStart(e),d.endIndex=g+a.getSpanEnd(e)):
-(d.startIndex=g,d.endIndex=g+1))};cvox.ObjectWalker=function(){cvox.AbstractNodeWalker.call(this)};goog.inherits(cvox.ObjectWalker,cvox.AbstractNodeWalker);cvox.ObjectWalker.prototype.stopNodeDescent=function(a){return cvox.DomUtil.isLeafNode(a)};cvox.AbstractNodeWalker.prototype.getDescription=function(a,b){return cvox.DescriptionUtil.getDescriptionFromNavigation(a.end.node,b.start.node,!0,cvox.ChromeVox.verbosity)};cvox.ObjectWalker.prototype.getBraille=function(){throw"getBraille is unsupported";};
-cvox.ObjectWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("object_strategy")};cvox.SentenceWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kSentence};goog.inherits(cvox.SentenceWalker,cvox.AbstractSelectionWalker);cvox.SentenceWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("sentence_granularity")};cvox.WordWalker=function(){cvox.AbstractSelectionWalker.call(this);this.grain=cvox.TraverseContent.kWord};goog.inherits(cvox.WordWalker,cvox.AbstractSelectionWalker);cvox.WordWalker.prototype.getGranularityMsg=function(){return cvox.ChromeVox.msgs.getMsg("word_granularity")};cvox.NavigationShifter=function(){this.reset_();cvox.AbstractShifter.call(this)};goog.inherits(cvox.NavigationShifter,cvox.AbstractShifter);cvox.NavigationShifter.GRANULARITIES={CHARACTER:0,WORD:1,LINE:2,SENTENCE:3,OBJECT:4,GROUP:5};cvox.NavigationShifter.prototype.storeOn=function(a){a.granularity=this.getGranularity()};cvox.NavigationShifter.prototype.readFrom=function(a){this.setGranularity(a.granularity)};
-cvox.NavigationShifter.prototype.next=function(a){a=this.currentWalker_.next(a);this.currentWalkerIndex_<=cvox.NavigationShifter.GRANULARITIES.LINE&&a&&(cvox.TraverseContent.getInstance().syncToCursorSelection(a.clone().setReversed(!1)),cvox.TraverseContent.getInstance().updateSelection());return a};cvox.NavigationShifter.prototype.sync=function(a){return this.currentWalker_.sync(a)};cvox.NavigationShifter.prototype.getName=function(){return cvox.ChromeVox.msgs.getMsg("navigation_shifter")};
-cvox.NavigationShifter.prototype.getDescription=function(a,b){return this.currentWalker_.getDescription(a,b)};cvox.NavigationShifter.prototype.getBraille=function(a,b){return this.lineWalker_.getBraille(a,b)};cvox.NavigationShifter.prototype.getGranularityMsg=function(){return this.currentWalker_.getGranularityMsg()};
-cvox.NavigationShifter.prototype.makeMoreGranular=function(){cvox.NavigationShifter.superClass_.makeMoreGranular.call(this);this.currentWalkerIndex_=Math.max(this.currentWalkerIndex_-1,0);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_--;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.makeLessGranular=function(){cvox.NavigationShifter.superClass_.makeLessGranular.call(this);this.currentWalkerIndex_=Math.min(this.currentWalkerIndex_+1,this.walkers_.length-1);cvox.NavigationShifter.allowSentence||this.currentWalkerIndex_!=cvox.NavigationShifter.GRANULARITIES.SENTENCE||this.currentWalkerIndex_++;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};
-cvox.NavigationShifter.prototype.setGranularity=function(a){this.ensureNotSubnavigating();this.currentWalkerIndex_=a;this.currentWalker_=this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.prototype.getGranularity=function(){var a=this.isSubnavigating();this.ensureNotSubnavigating();var b=this.currentWalkerIndex_;a&&this.ensureSubnavigating();return b};
-cvox.NavigationShifter.prototype.hasAction=function(a){return"toggleLineType"==a?!0:cvox.NavigationShifter.superClass_.hasAction.call(this,a)};cvox.NavigationShifter.create=function(){return new cvox.NavigationShifter};
-cvox.NavigationShifter.prototype.reset_=function(){this.groupWalker_=new cvox.GroupWalker;this.objectWalker_=new cvox.ObjectWalker;this.sentenceWalker_=new cvox.SentenceWalker;this.lineWalker_=new cvox.LayoutLineWalker;this.wordWalker_=new cvox.WordWalker;this.characterWalker_=new cvox.CharacterWalker;this.walkers_=[this.characterWalker_,this.wordWalker_,this.lineWalker_,this.sentenceWalker_,this.objectWalker_,this.groupWalker_];this.currentWalkerIndex_=this.walkers_.indexOf(this.groupWalker_);this.currentWalker_=
-this.walkers_[this.currentWalkerIndex_]};cvox.NavigationShifter.allowSentence=!1;cvox.NavigationSpeaker=function(){this.stopReading=!1;this.id_=1};
-cvox.NavigationSpeaker.prototype.speakDescriptionArray=function(a,b,c){a=this.reorderAnnotations(a);this.stopReading=!1;this.id_=(this.id_+1)%1E4;var d=this,e=function(b,g,h){var k=a[b];if(k&&!d.stopReading&&d.id_==h){var l=function(){for(var a=0;a<k.earcons.length;a++)cvox.ChromeVox.earcons.playEarcon(k.earcons[a])},m=function(){e(b+1,cvox.AbstractTts.QUEUE_MODE_QUEUE,h)},p=function(){k.personality&&k.personality[cvox.AbstractTts.PAUSE]&&"number"==typeof k.personality[cvox.AbstractTts.PAUSE]?setTimeout(m,
-k.personality[cvox.AbstractTts.PAUSE]):m();b==a.length-1&&c&&c()};k.isEmpty()?(l(),p()):(k.speak(g,l,p),cvox.ChromeVox.host.hasTtsCallback()||(l(),p()))}};e(0,b,this.id_);0==a.length&&c&&c()};cvox.NavigationSpeaker.structuredElement=function(a){switch(a){case "table":case "Math":return!0}return!1};
-cvox.NavigationSpeaker.prototype.reorderAnnotations=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c];cvox.NavigationSpeaker.structuredElement(d.annotation)&&(b.push(new cvox.NavDescription({text:"",annotation:d.annotation})),d.annotation="");b.push(d)}return b};cvox.NavigationManager=function(){this.addInterframeListener_();this.reset()};cvox.NavigationManager.prototype.storeOn=function(a){a.reversed=this.isReversed();a.keepReading=this.keepReading_;a.findNext=this.predicate_;this.shifter_.storeOn(a)};cvox.NavigationManager.prototype.readFrom=function(a){this.curSel_.setReversed(a.reversed);this.shifter_.readFrom(a);a.keepReading&&this.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH)};
-cvox.NavigationManager.prototype.reset=function(){this.navSpeaker_=new cvox.NavigationSpeaker;this.shifterTypes_=[cvox.NavigationShifter,cvox.TableShifter,cvox.MathShifter];this.shifterStack_=[];this.shifter_=new cvox.NavigationShifter;this.curSel_=document.activeElement!=document.body?cvox.CursorSelection.fromNode(document.activeElement):this.shifter_.begin(this.curSel_,{reversed:!1});this.prevSel_=this.curSel_.clone();this.ignoreIframesNoMatterWhat_=this.exitedShifter_=this.enteredShifter_=this.pageEndAnnounced_=
-this.pageEnd_=this.keepReading_=this.recovered_=this.skipped_=!1;this.pageSel_=null;this.predicate_="";this.saveSel_=null;this.activeIndicator&&this.activeIndicator.removeFromDom();this.activeIndicator=new cvox.ActiveIndicator;this.navigationHistory_=new cvox.NavigationHistory;this.focusRecovery_="chrome:"!=window.location.protocol;this.iframeIdMap={};this.nextIframeId=1;document.activeElement!=document.body&&this.sync();cvox.TraverseMath.getInstance()};
-cvox.NavigationManager.prototype.resolve=function(a){if(!this.getFocusRecovery())return!0;var b=this.getCurrentNode();if(!this.navigationHistory_.becomeInvalid(b)||this.hasNext_())return!0;b=this.navigationHistory_.revert(a);if(!b.current)return!0;a=cvox.CursorSelection.fromNode(b.current);b=cvox.CursorSelection.fromNode(b.previous);a=a||cvox.CursorSelection.fromBody();b=b||cvox.CursorSelection.fromBody();a.setReversed(this.isReversed());this.updateSel(a,b);this.recovered_=!0;return!1};
-cvox.NavigationManager.prototype.getFocusRecovery=function(){return this.focusRecovery_};cvox.NavigationManager.prototype.setFocusRecovery=function(a){this.focusRecovery_=a};cvox.NavigationManager.prototype.next_=function(a){return this.tryBoundaries_(this.shifter_.next(this.curSel_),a)?(this.pageSel_&&this.pageSel_.extend(this.curSel_),!0):!1};
-cvox.NavigationManager.prototype.hasNext_=function(){if(0<this.shifterStack_.length)return!0;var a=this.curSel_.clone(),b=!1,c=new cvox.NavigationShifter;c.setGranularity(this.shifter_.getGranularity());c.sync(a);c.next(a)&&(b=!0);return b};
-cvox.NavigationManager.prototype.findNext=function(a,b,c){this.predicate_=b||"";this.resolve();this.shifter_=this.shifterStack_[0]||this.shifter_;this.shifterStack_=[];a=cvox.FindUtil.findNext(this.curSel_,a,c);this.ignoreIframesNoMatterWhat_||this.tryIframe_(a&&a.start.node);a&&this.updateSelToArbitraryNode(a.start.node);this.predicate_="";return a};cvox.NavigationManager.prototype.sync=function(){this.resolve();var a=this.shifter_.sync(this.curSel_);a&&(this.curSel_=a)};
-cvox.NavigationManager.prototype.syncAll=function(a){this.sync();this.setFocus(a);this.updateIndicator()};cvox.NavigationManager.prototype.clearPageSel=function(a){var b=!!this.pageSel_;b&&a&&(a=cvox.ChromeVox.msgs.getMsg("clear_page_selection"),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION));this.pageSel_=null;return b};
-cvox.NavigationManager.prototype.togglePageSel=function(){this.pageSel_=this.pageSel_?null:new cvox.PageSelection(this.curSel_.setReversed(!1));return!!this.pageSel_};
-cvox.NavigationManager.prototype.getDescription=function(){if(this.getCurrentNode().hasAttribute&&this.getCurrentNode().hasAttribute("cvoxnodedesc")){for(var a=cvox.ChromeVoxJSON.parse(this.getCurrentNode().getAttribute("cvoxnodedesc")),b=[],c=0;c<a.length;++c){var d=a[c];b.push(new cvox.NavDescription({context:d.context,text:d.text,userValue:d.userValue,annotation:d.annotation}))}return b}var e=this.pageSel_?this.pageSel_.getDescription(this.shifter_,this.prevSel_,this.curSel_):this.shifter_.getDescription(this.prevSel_,
-this.curSel_),a=[];this.skipped_&&(a.push(cvox.AbstractEarcons.PARAGRAPH_BREAK),this.skipped_=!1);this.recovered_&&(a.push(cvox.AbstractEarcons.FONT_CHANGE),this.recovered_=!1);this.pageEnd_&&(a.push(cvox.AbstractEarcons.WRAP),this.pageEnd_=!1);this.enteredShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_ENTER),this.enteredShifter_=!1);this.exitedShifter_&&(a.push(cvox.AbstractEarcons.OBJECT_EXIT),this.exitedShifter_=!1);0<a.length&&0<e.length&&a.forEach(function(a){e[0].pushEarcon(a)});return e};
-cvox.NavigationManager.prototype.getBraille=function(){return cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.ANDROID|cvox.PlatformFilter.CHROMEOS)?this.shifter_.getBraille(this.prevSel_,this.curSel_):new cvox.NavBraille({})};
-cvox.NavigationManager.prototype.performAction=function(a){switch(a){case "enterShifter":case "enterShifterSilently":for(var b=this.shifterTypes_.length-1,c;c=this.shifterTypes_[b];b--)if((c=c.create(this.curSel_))&&c.getName()!=this.shifter_.getName()){this.shifterStack_.push(this.shifter_);this.shifter_=c;this.sync();this.enteredShifter_="enterShifterSilently"!=a;break}else if(c&&this.shifter_.getName()==c.getName())break;break;case "exitShifter":if(0==this.shifterStack_.length)return!1;this.shifter_=
-this.shifterStack_.pop();this.sync();this.exitedShifter_=!0;break;case "exitShifterContent":if(0==this.shifterStack_.length)return!1;this.updateSel(this.shifter_.performAction(a,this.curSel_));this.shifter_=this.shifterStack_.pop()||this.shifter_;this.sync();this.exitedShifter_=!0;break;default:return this.shifter_.hasAction(a)?this.updateSel(this.shifter_.performAction(a,this.curSel_)):!1}return!0};cvox.NavigationManager.prototype.getGranularityMsg=function(){return this.shifter_.getGranularityMsg()};
-cvox.NavigationManager.prototype.makeMoreGranular=function(a){this.shifter_.makeMoreGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.makeLessGranular=function(a){this.shifter_.makeLessGranular();this.sync();this.persistGranularity_(a)};cvox.NavigationManager.prototype.setGranularity=function(a,b,c){!b&&0<this.shifterStack_.length||(this.shifter_=this.shifterStack_.shift()||this.shifter_,this.shifter_.setGranularity(a),this.persistGranularity_(c))};
-cvox.NavigationManager.prototype.getGranularity=function(){var a=this.shifterStack_[0]||this.shifter_;return a.getGranularity()};cvox.NavigationManager.prototype.ensureSubnavigating=function(){this.shifter_.isSubnavigating()||(this.shifter_.ensureSubnavigating(),this.sync())};cvox.NavigationManager.prototype.ensureNotSubnavigating=function(){this.shifter_.isSubnavigating()&&(this.shifter_.ensureNotSubnavigating(),this.sync())};
-cvox.NavigationManager.prototype.speakDescriptionArray=function(a,b,c,d){d&&a.every(function(a){a.personality||(a.personality=d)});this.navSpeaker_.speakDescriptionArray(a,b,c)};cvox.NavigationManager.prototype.updatePosition=function(a){var b=cvox.ChromeVox.position;b[document.location.href]=cvox.DomUtil.elementToPoint(a);JSON.stringify(b)};
-cvox.NavigationManager.prototype.finishNavCommand=function(a,b,c,d){if(this.pageEnd_&&!this.pageEndAnnounced_)this.pageEndAnnounced_=!0,cvox.ChromeVox.tts.stop(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),cvox.ChromeVox.verbosity===cvox.VERBOSITY_VERBOSE&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),this.isReversed()&&(a=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom")),cvox.ChromeVox.tts.speak(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION));else{if(this.enteredShifter_||
-this.exitedShifter_)a=cvox.ChromeVox.msgs.getMsg("enter_content_say",[this.shifter_.getName()]);var e=cvox.ChromeVox.navigationManager.getDescription();(b=void 0===b?!0:b)&&this.setFocus();this.updateIndicator();b=c||cvox.AbstractTts.QUEUE_MODE_FLUSH;a&&(cvox.ChromeVox.tts.speak(a,b,cvox.AbstractTts.PERSONALITY_ANNOTATION),b=cvox.AbstractTts.QUEUE_MODE_QUEUE);this.speakDescriptionArray(e,b,d||null);this.getBraille().write();this.updatePosition(this.getCurrentNode())}};
-cvox.NavigationManager.prototype.navigate=function(a,b){this.pageEndAnnounced_=!1;if(this.pageEnd_)return this.pageEnd_=!1,this.syncToBeginning(a),!0;if(!this.resolve())return!1;this.ensureNotSubnavigating();void 0!==b&&(b!==this.getGranularity()||0<this.shifterStack_.length)&&(this.setGranularity(b,!0),this.sync());return this.next_(!a)};cvox.NavigationManager.prototype.subnavigate=function(){this.pageEndAnnounced_=!1;this.resolve()&&(this.ensureSubnavigating(),this.next_(!0))};
-cvox.NavigationManager.prototype.skip=function(){if(!this.keepReading_)return!1;cvox.ChromeVox.host.hasTtsCallback()&&(this.skipped_=!0,this.setReversed(!1),this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_FLUSH));return!0};cvox.NavigationManager.prototype.startReading=function(a){this.keepReading_=!0;cvox.ChromeVox.host.hasTtsCallback()?this.startCallbackReading_(a):this.startNonCallbackReading_(a);this.prevStickyState_=cvox.ChromeVox.isStickyOn};
-cvox.NavigationManager.prototype.stopReading=function(a){this.keepReading_=!1;this.navSpeaker_.stopReading=!0;a&&cvox.ChromeVox.tts.stop();void 0!=this.prevStickyState_&&(this.prevStickyState_=void 0)};cvox.NavigationManager.prototype.isReading=function(){return this.keepReading_};
-cvox.NavigationManager.prototype.startCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.finishNavCommand("",!0,a,goog.bind(function(){this.next_(!0)&&this.keepReading_&&this.startCallbackReading_(cvox.AbstractTts.QUEUE_MODE_QUEUE)},this))});
-cvox.NavigationManager.prototype.startNonCallbackReading_=cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(a){this.keepReading_&&(cvox.ChromeVox.tts.isSpeaking()||(this.finishNavCommand("",!0,a,null),this.next_(!0)||(this.keepReading_=!1)),window.setTimeout(goog.bind(this.startNonCallbackReading_,this),1E3))});
-cvox.NavigationManager.prototype.getFullDescription=function(){return this.pageSel_?this.pageSel_.getFullDescription():[cvox.DescriptionUtil.getDescriptionFromAncestors(cvox.DomUtil.getAncestors(this.curSel_.start.node),!0,cvox.ChromeVox.verbosity)]};cvox.NavigationManager.prototype.setFocus=function(a){this.pageSel_||a&&this.curSel_.start.node.constructor==Text||cvox.Focuser.setFocus(this.curSel_.start.node)};cvox.NavigationManager.prototype.getCurrentNode=function(){return this.curSel_.absStart().node};
-cvox.NavigationManager.prototype.addInterframeListener_=function(){var a=this;cvox.Interframe.addListener(function(b){if("enterIframe"==b.command||"exitIframe"==b.command)cvox.ChromeVox.serializer.readFrom(b),a.keepReading_||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){window.focus();if(b.findNext){var c=b.findNext,d=cvox.DomPredicates[c],c=a.findNext(d,c,!0);if(d&&(!c||"IFRAME"==c.start.node.tagName))return}else if("exitIframe"==b.command)d=b.sourceId,d=a.iframeIdMap[d],c=b.reversed,
-d&&a.updateSel(cvox.CursorSelection.fromNode(d)),a.setReversed(c),a.sync(),a.navigate();else if(a.syncToBeginning(),!cvox.DomUtil.hasContent(document.body)){a.tryIframe_(null);return}a.finishNavCommand("",!0)})()})};cvox.NavigationManager.prototype.updateIndicator=function(){this.activeIndicator.syncToCursorSelection(this.curSel_)};cvox.NavigationManager.prototype.updateIndicatorIfChanged=function(){this.activeIndicator.updateIndicatorIfChanged()};
-cvox.NavigationManager.prototype.showOrHideIndicator=function(a){a||this.activeIndicator.removeFromDom()};cvox.NavigationManager.prototype.collapseSelection=function(){this.curSel_.collapse()};cvox.NavigationManager.prototype.updateSelToArbitraryNode=function(a,b){a?(this.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0),this.updateSel(cvox.CursorSelection.fromNode(a)),b||this.sync()):this.syncToBeginning()};
-cvox.NavigationManager.prototype.updateSel=function(a,b){a&&(this.prevSel_=b||this.curSel_,this.curSel_=a);var c=this.getCurrentNode();this.navigationHistory_.update(c);return!!a};cvox.NavigationManager.prototype.setReversed=function(a){this.curSel_.setReversed(a)};cvox.NavigationManager.prototype.isReversed=function(){return this.curSel_.isReversed()};
-cvox.NavigationManager.prototype.tryBoundaries_=function(a,b){b=!!b&&!this.ignoreIframesNoMatterWhat_||!1;this.pageEnd_=!1;if(b&&this.tryIframe_(a&&a.start.node))return!0;if(a)return this.updateSel(a),!0;if(0<this.shifterStack_.length)return!0;this.syncToBeginning(!b);this.clearPageSel(!0);this.stopReading(!0);this.pageEnd_=!0;return!1};
-cvox.NavigationManager.prototype.tryIframe_=function(a){if(null==a&&cvox.Interframe.isIframe()){var b={command:"exitIframe",reversed:this.isReversed(),granularity:this.getGranularity()};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToParentWindow(b);return!0}if(null==a||"IFRAME"!=a.tagName||!a.src)return!1;var c=void 0;for(b in this.iframeIdMap)if(this.iframeIdMap[b]==a){c=b;break}void 0==c&&(c=this.nextIframeId,this.nextIframeId++,this.iframeIdMap[c]=a,cvox.Interframe.sendIdToIFrame(c,
-a));b={command:"enterIframe",id:c};cvox.ChromeVox.serializer.storeOn(b);cvox.Interframe.sendMessageToIFrame(b,a);return!0};cvox.NavigationManager.prototype.syncToBeginning=function(a){var b=this.shifter_.begin(this.curSel_,{reversed:this.curSel_.isReversed()});!a&&this.tryIframe_(b&&b.start.node)||this.updateSel(b)};cvox.NavigationManager.prototype.ignoreIframesNoMatterWhat=function(){this.ignoreIframesNoMatterWhat_=!0};cvox.NavigationManager.prototype.saveSel=function(){this.saveSel_=this.curSel_};
-cvox.NavigationManager.prototype.restoreSel=function(){this.curSel_=this.saveSel_||this.curSel_};cvox.NavigationManager.prototype.persistGranularity_=function(a){(a=void 0===a?!1:a)&&this.getGranularity()};cvox.SearchWidget=function(){this.txtNode_=this.containerNode_=null;this.PROMPT_="Search:";this.hasMatch_=this.caseSensitive_=!1;cvox.Widget.call(this)};goog.inherits(cvox.SearchWidget,cvox.Widget);goog.addSingletonGetter(cvox.SearchWidget);
-cvox.SearchWidget.prototype.show=function(){cvox.SearchWidget.superClass_.show.call(this);this.active=!0;this.hasMatch_=!1;cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);cvox.ChromeVox.navigationManager.setReversed(!1);this.focusRecovery_=cvox.ChromeVox.navigationManager.getFocusRecovery();cvox.ChromeVox.navigationManager.setFocusRecovery(!1);var a=this.createContainerNode_();this.containerNode_=a;var b=this.createOverlayNode_();a.appendChild(b);
-var c=document.createElement("span");c.innerHTML=this.PROMPT_;b.appendChild(c);this.txtNode_=this.createTextAreaNode_();b.appendChild(this.txtNode_);document.body.appendChild(a);this.txtNode_.focus();window.setTimeout(function(){a.style.opacity="1.0"},0)};
-cvox.SearchWidget.prototype.hide=function(a){if(this.isActive()){var b=this.containerNode_;b.style.opacity="0.0";window.setTimeout(function(){document.body.removeChild(b)},1E3);this.txtNode_=null;cvox.SearchWidget.containerNode=null;cvox.ChromeVox.navigationManager.setFocusRecovery(this.focusRecovery_);this.active=!1}cvox.$m("choice_widget_exited").andPause().andMessage(this.getNameMsg()).speakFlush();this.hasMatch_&&a||cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode);cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,
-cvox.ChromeVox.navigationManager))(!0);cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),cvox.AbstractTts.QUEUE_MODE_QUEUE,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT);a=this.textFromCurrentDescription_();cvox.ChromeVox.braille.write(new cvox.NavBraille({text:a,startIndex:0,endIndex:0}));cvox.SearchWidget.superClass_.hide.call(this,!0)};cvox.SearchWidget.prototype.getNameMsg=function(){return["search_widget_intro"]};
-cvox.SearchWidget.prototype.getHelpMsg=function(){return"search_widget_intro_help"};
-cvox.SearchWidget.prototype.onKeyDown=function(a){if(!this.isActive())return!1;var b=this.txtNode_.value;if(8==a.keyCode)0<b.length?(b=b.substring(0,b.length-1),this.txtNode_.value=b,this.beginSearch_(b)):(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.initialNode),cvox.ChromeVox.navigationManager.syncAll());else if(40==a.keyCode)this.next_(b,!1);else if(38==a.keyCode)this.next_(b,!0);else if(13==a.keyCode)this.hide(!0);else if(27==a.keyCode)this.hide(!1);else if(a.ctrlKey&&67==a.keyCode)this.toggleCaseSensitivity_();
-else return cvox.SearchWidget.superClass_.onKeyDown.call(this,a);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onKeyPress=function(a){if(!this.isActive())return!1;this.txtNode_.value+=String.fromCharCode(a.charCode);var b=this.txtNode_.value;this.beginSearch_(b);a.preventDefault();a.stopPropagation();return!0};cvox.SearchWidget.prototype.onNavigate=function(){};cvox.SearchWidget.prototype.getPredicate=function(){return null};
-cvox.SearchWidget.prototype.nextResult=function(a){if(!this.isActive())return null;var b=this.txtNode_.value;return this.next_(b,a)};cvox.SearchWidget.prototype.createContainerNode_=function(){var a=document.createElement("div");a.id="cvox-search";a.style.position="fixed";a.style.top="50%";a.style.left="50%";a.style["-webkit-transition"]="all 0.3s ease-in";a.style.opacity="0.0";a.style["z-index"]="2147483647";a.setAttribute("aria-hidden","true");return a};
-cvox.SearchWidget.prototype.createOverlayNode_=function(){var a=document.createElement("div");a.style.position="relative";a.style.left="-50%";a.style.top="-40px";a.style["line-height"]="1.2em";a.style["font-size"]="20px";a.style.padding="30px";a.style["min-width"]="150px";a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["border-radius"]="10px";return a};
-cvox.SearchWidget.prototype.createTextAreaNode_=function(){var a=document.createElement("textarea");a.setAttribute("aria-hidden","true");a.setAttribute("rows","1");a.style.color="#fff";a.style["background-color"]="rgba(0, 0, 0, 0.7)";a.style["vertical-align"]="middle";a.addEventListener("textInput",this.handleSearchChanged_,!1);return a};
-cvox.SearchWidget.prototype.toggleCaseSensitivity_=function(){this.caseSensitive_?(cvox.SearchWidget.caseSensitive_=!1,cvox.ChromeVox.tts.speak("Ignoring case.",0,null)):(this.caseSensitive_=!0,cvox.ChromeVox.tts.speak("Case sensitive.",0,null))};
-cvox.SearchWidget.prototype.getNextResult_=function(a){var b=cvox.ChromeVox.navigationManager.isReversed();this.caseSensitive_||(a=a.toLowerCase());cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!1);do{if(this.getPredicate()){var c=this.getPredicate()(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()));if(!c)continue}for(var c=cvox.ChromeVox.navigationManager.getDescription(),d=0;d<c.length;d++){var e=this.caseSensitive_?c[d].text:
-c[d].text.toLowerCase(),f=e.indexOf(a);-1!=f&&e.length>a.length&&(c[d].text=cvox.DomUtil.collapseWhitespace(e.substring(0,f))+", "+a+", "+e.substring(f+a.length),c[d].text=cvox.DomUtil.collapseWhitespace(c[d].text));if(-1!=f)return c}cvox.ChromeVox.navigationManager.setReversed(b)}while(cvox.ChromeVox.navigationManager.navigate(!0,cvox.NavigationShifter.GRANULARITIES.OBJECT))};cvox.SearchWidget.prototype.beginSearch_=function(a){var b=this.getNextResult_(a);this.outputSearchResult_(b,a);this.onNavigate()};
-cvox.SearchWidget.prototype.next_=function(a,b){cvox.ChromeVox.navigationManager.setReversed(!!b);var c=!1;this.getPredicate()?(c=cvox.ChromeVox.navigationManager.findNext(this.getPredicate()),cvox.ChromeVox.navigationManager.setReversed(!!b),c||(cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),c=!0)):c=cvox.ChromeVox.navigationManager.navigate(!0);c=c?this.getNextResult_(a):null;this.outputSearchResult_(c,a);this.onNavigate();return c};
-cvox.SearchWidget.prototype.outputSearchResult_=function(a,b){cvox.ChromeVox.tts.stop();a?(this.hasMatch_=!0,cvox.ChromeVoxEventSuspender.withSuspendedEvents(goog.bind(cvox.ChromeVox.navigationManager.syncAll,cvox.ChromeVox.navigationManager))(!0),cvox.ChromeVox.navigationManager.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_FLUSH,null,cvox.AbstractTts.PERSONALITY_ANNOUNCEMENT),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("search_help_item"),cvox.AbstractTts.QUEUE_MODE_QUEUE,cvox.AbstractTts.PERSONALITY_ANNOTATION),
-this.outputSearchResultToBraille_(b)):(cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),this.hasMatch_=!1)};
-cvox.SearchWidget.prototype.outputSearchResultToBraille_=function(a){if(cvox.ChromeVox.braille){var b=this.textFromCurrentDescription_(),c=this.caseSensitive_?b:b.toLowerCase();a=this.caseSensitive_?a:a.toLowerCase();c=c.indexOf(a);if(-1==c)console.log("Search string not in result when preparing for Braille.");else{var d=b.length,b=cvox.ChromeVox.msgs.getMsg("mark_as_search_result_brl",[b]),e=b.length,c=c+(e-d);cvox.ChromeVox.braille.write(new cvox.NavBraille({text:b,startIndex:c+a.length,endIndex:c+
-a.length}))}}};cvox.SearchWidget.prototype.textFromCurrentDescription_=function(){for(var a=cvox.ChromeVox.navigationManager.getDescription(),b="",c=0;c<a.length;c++)b+=a[c].text+" ";return b};cvox.SearchWidget.prototype.handleSearchChanged_=function(a){a=a.target.value+a.data;cvox.SearchWidget.prototype.beginSearch_(a)};cvox.OverlayWidget=function(a){cvox.SearchWidget.call(this);this.snippet_=a};goog.inherits(cvox.OverlayWidget,cvox.SearchWidget);
-cvox.OverlayWidget.prototype.show=function(){cvox.OverlayWidget.superClass_.show.call(this);var a=document.createElement("DIV");a.innerHTML=this.snippet_;var b=cvox.DomUtil.elementToPoint(cvox.ChromeVox.navigationManager.getCurrentNode());a.style.position="absolute";a.style.left=b.x;a.style.top=b.y;document.body.appendChild(a);cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(a);this.host_=a};cvox.OverlayWidget.prototype.hide=function(){this.host_.remove();cvox.OverlayWidget.superClass_.hide.call(this)};
-cvox.OverlayWidget.prototype.onKeyDown=function(a){cvox.OverlayWidget.superClass_.onKeyDown.call(this,a);if(13==a.keyCode||27==a.keyCode)return!0;a=cvox.ChromeVox.navigationManager.isReversed();cvox.DomUtil.isDescendantOfNode(cvox.ChromeVox.navigationManager.getCurrentNode(),this.host_)||(a?cvox.ChromeVox.navigationManager.syncToBeginning():cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(this.host_),this.onNavigate(),cvox.ChromeVox.navigationManager.speakDescriptionArray(cvox.ChromeVox.navigationManager.getDescription(),
-0,null))};cvox.KeyboardHelpWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");var a=cvox.ChromeVoxKbHandler.handlerKeyMap;a.bindings().forEach(goog.bind(function(a){var c=a.command;a=a.sequence;var d=c;try{var e=cvox.CommandStore.messageForCommand(c);if(!e)return;d=cvox.ChromeVox.msgs.getMsg(e)}catch(f){}e=document.createElement("p");e.id=c;e.setAttribute("role","menuitem");e.textContent=d+" - "+cvox.KeyUtil.keySequenceToString(a,!0);this.container_.appendChild(e)},
-this))};goog.inherits(cvox.KeyboardHelpWidget,cvox.OverlayWidget);goog.addSingletonGetter(cvox.KeyboardHelpWidget);cvox.KeyboardHelpWidget.prototype.show=function(){cvox.KeyboardHelpWidget.superClass_.show.call(this);this.host_.appendChild(this.container_)};cvox.KeyboardHelpWidget.prototype.getNameMsg=function(){return["keyboard_help_intro"]};
-cvox.KeyboardHelpWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;this.hide();cvox.ChromeVoxEventSuspender.withSuspendedEvents(cvox.ChromeVoxUserCommands.commands[b])();a.preventDefault();a.stopPropagation();return!0}return cvox.KeyboardHelpWidget.superClass_.onKeyDown.call(this,a)};goog.object={};goog.object.forEach=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};goog.object.filter=function(a,b,c){var d={},e;for(e in a)b.call(c,a[e],e,a)&&(d[e]=a[e]);return d};goog.object.map=function(a,b,c){var d={},e;for(e in a)d[e]=b.call(c,a[e],e,a);return d};goog.object.some=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return!0;return!1};goog.object.every=function(a,b,c){for(var d in a)if(!b.call(c,a[d],d,a))return!1;return!0};
-goog.object.getCount=function(a){var b=0,c;for(c in a)b++;return b};goog.object.getAnyKey=function(a){for(var b in a)return b};goog.object.getAnyValue=function(a){for(var b in a)return a[b]};goog.object.contains=function(a,b){return goog.object.containsValue(a,b)};goog.object.getValues=function(a){var b=[],c=0,d;for(d in a)b[c++]=a[d];return b};goog.object.getKeys=function(a){var b=[],c=0,d;for(d in a)b[c++]=d;return b};
-goog.object.getValueByKeys=function(a,b){for(var c=goog.isArrayLike(b),d=c?b:arguments,c=c?0:1;c<d.length&&(a=a[d[c]],goog.isDef(a));c++);return a};goog.object.containsKey=function(a,b){return b in a};goog.object.containsValue=function(a,b){for(var c in a)if(a[c]==b)return!0;return!1};goog.object.findKey=function(a,b,c){for(var d in a)if(b.call(c,a[d],d,a))return d};goog.object.findValue=function(a,b,c){return(b=goog.object.findKey(a,b,c))&&a[b]};
-goog.object.isEmpty=function(a){for(var b in a)return!1;return!0};goog.object.clear=function(a){for(var b in a)delete a[b]};goog.object.remove=function(a,b){var c;(c=b in a)&&delete a[b];return c};goog.object.add=function(a,b,c){if(b in a)throw Error('The object already contains the key "'+b+'"');goog.object.set(a,b,c)};goog.object.get=function(a,b,c){return b in a?a[b]:c};goog.object.set=function(a,b,c){a[b]=c};goog.object.setIfUndefined=function(a,b,c){return b in a?a[b]:a[b]=c};
-goog.object.clone=function(a){var b={},c;for(c in a)b[c]=a[c];return b};goog.object.unsafeClone=function(a){var b=goog.typeOf(a);if("object"==b||"array"==b){if(a.clone)return a.clone();var b="array"==b?[]:{},c;for(c in a)b[c]=goog.object.unsafeClone(a[c]);return b}return a};goog.object.transpose=function(a){var b={},c;for(c in a)b[a[c]]=c;return b};goog.object.PROTOTYPE_FIELDS_="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
-goog.object.extend=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<goog.object.PROTOTYPE_FIELDS_.length;f++)c=goog.object.PROTOTYPE_FIELDS_[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};
-goog.object.create=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.create.apply(null,arguments[0]);if(b%2)throw Error("Uneven number of arguments");for(var c={},d=0;d<b;d+=2)c[arguments[d]]=arguments[d+1];return c};goog.object.createSet=function(a){var b=arguments.length;if(1==b&&goog.isArray(arguments[0]))return goog.object.createSet.apply(null,arguments[0]);for(var c={},d=0;d<b;d++)c[arguments[d]]=!0;return c};
-goog.object.createImmutableView=function(a){var b=a;Object.isFrozen&&!Object.isFrozen(a)&&(b=Object.create(a),Object.freeze(b));return b};goog.object.isImmutableView=function(a){return!!Object.isFrozen&&Object.isFrozen(a)};cvox.UserEventDetail=function(a){this.command=this.category="";-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)&&(this.command=a.command,this.category=cvox.UserEventDetail.Category.JUMP);this.customCommand="";a.customCommand&&(this.customCommand=a.customCommand,this.category=cvox.UserEventDetail.Category.CUSTOM);this.status=cvox.UserEventDetail.Status.PENDING;switch(a.status){case cvox.UserEventDetail.Status.SUCCESS:this.status=cvox.UserEventDetail.Status.SUCCESS;break;case cvox.UserEventDetail.Status.FAILURE:this.status=
-cvox.UserEventDetail.Status.FAILURE}this.resultNode=null;a.resultNode&&cvox.DomUtil.isAttachedToDocument(a.resultNode)&&(this.resultNode=a.resultNode)};cvox.UserEventDetail.Category={JUMP:"ATJumpEvent",CUSTOM:"ATCustomEvent"};cvox.UserEventDetail.Status={PENDING:"PENDING",SUCCESS:"SUCCESS",FAILURE:"FAILURE"};cvox.UserEventDetail.JUMP_COMMANDS="nextCheckbox previousCheckbox nextRadio previousRadio nextSlider previousSlider nextGraphic previousGraphic nextButton previousButton nextComboBox previousComboBox nextEditText previousEditText nextHeading previousHeading nextHeading1 previousHeading1 nextHeading2 previousHeading2 nextHeading3 previousHeading3 nextHeading4 previousHeading4 nextHeading5 previousHeading5 nextHeading6 previousHeading6 nextLink previousLink nextMath previousMath nextTable previousTable nextList previousList nextListItem previousListItem nextFormField previousFormField nextLandmark previousLandmark nextSection previousSection nextControl previousControl".split(" ");
-cvox.UserEventDetail.prototype.createEventObject=function(){var a=document.createEvent("CustomEvent");a.initCustomEvent(this.category,!0,!0,this);return a};var extractMenuList_=function(a){for(;a!==document;){var b=a.getAttribute("contextMenuActions");if(b)return JSON.parse(b);a=a.parentNode}return null},getCurrentElement_=function(){for(var a=cvox.ChromeVox.navigationManager.getCurrentNode();a.nodeType!==Node.ELEMENT_NODE;)a=a.parentNode;return a};
-cvox.ContextMenuWidget=function(){cvox.OverlayWidget.call(this,"");this.container_=document.createElement("div");this.triggerElement_=getCurrentElement_();(this.menuList=extractMenuList_(this.triggerElement_))?this.menuList.forEach(goog.bind(function(a){if(a.desc||a.cmd){var b=a.desc;a=a.cmd;var c=document.createElement("p");c.id=a;c.textContent=b;c.setAttribute("role","menuitem");this.container_.appendChild(c)}},this)):console.log("No context menu found.")};goog.inherits(cvox.ContextMenuWidget,cvox.OverlayWidget);
-cvox.ContextMenuWidget.prototype.show=function(){this.menuList&&(cvox.ContextMenuWidget.superClass_.show.call(this),this.host_.appendChild(this.container_))};cvox.ContextMenuWidget.prototype.getNameMsg=function(){return["context_menu_intro"]};
-cvox.ContextMenuWidget.prototype.onKeyDown=function(a){if(13==a.keyCode){var b=cvox.ChromeVox.navigationManager.getCurrentNode(),b=b.parentNode.id,b=new cvox.UserEventDetail({customCommand:b}),b=b.createEventObject();this.triggerElement_.dispatchEvent(b);this.hide();a.preventDefault();a.stopPropagation();return!0}return cvox.ContextMenuWidget.superClass_.onKeyDown.call(this,a)};cvox.NodeSearchWidget=function(a,b){this.typeMsg_=a;this.predicate_=b;cvox.SearchWidget.call(this)};goog.inherits(cvox.NodeSearchWidget,cvox.SearchWidget);cvox.NodeSearchWidget.prototype.getNameMsg=function(){return["choice_widget_name",[cvox.ChromeVox.msgs.getMsg(this.typeMsg_)]]};cvox.NodeSearchWidget.prototype.getHelpMsg=function(){return"choice_widget_help"};cvox.NodeSearchWidget.prototype.getPredicate=function(){return this.predicate_};
-cvox.NodeSearchWidget.create=function(a,b){return new cvox.NodeSearchWidget(a,b)};cvox.SelectWidget=function(a){cvox.OverlayWidget.call(this,"");this.selectNode_=a};goog.inherits(cvox.SelectWidget,cvox.OverlayWidget);
-cvox.SelectWidget.prototype.show=function(){cvox.SelectWidget.superClass_.show.call(this);var a=document.createElement("div");a.setAttribute("role","menu");for(var b=0,c=null;c=this.selectNode_.options[b];b++){var d=document.createElement("p");d.innerHTML=c.innerHTML;d.id=b;d.setAttribute("role","menuitem");a.appendChild(d)}this.host_.appendChild(a);b=this.selectNode_.selectedIndex;"number"==typeof b&&cvox.ChromeVox.syncToNode(a.children[b],!0)};
-cvox.SelectWidget.prototype.hide=function(){var a=document.createEvent("Event");a.initEvent("change",!1,!1);this.selectNode_.dispatchEvent(a);cvox.SelectWidget.superClass_.hide.call(this,!0)};cvox.SelectWidget.prototype.onNavigate=function(){var a=this;cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){var b=cvox.ChromeVox.navigationManager.getCurrentNode().parentNode.id;a.selectNode_.selectedIndex=b})()};cvox.SelectWidget.prototype.getNameMsg=function(){return["aria_role_menu"]};cvox.FocusUtil=function(){};cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE={hidden:!1,text:!0,search:!0,tel:!0,url:!0,email:!0,password:!0,datetime:!1,date:!1,month:!1,week:!1,time:!1,"datetime-local":!1,number:!1,range:!1,color:!1,checkbox:!1,radio:!1,file:!1,submit:!1,image:!1,reset:!1,button:!1};
-cvox.FocusUtil.isFocusInTextInputField=function(){var a=document.activeElement;return a?a.isContentEditable||"textbox"==a.getAttribute("role")?!0:"true"==a.getAttribute("readOnly")?!1:"TEXTAREA"===a.tagName||"SELECT"===a.tagName?!0:"INPUT"===a.tagName?a.hasAttribute("type")?(a=a.getAttribute("type").toLowerCase(),cvox.FocusUtil.INPUT_TYPE_ACCEPTS_SELECTION_TABLE[a]):!0:!1:!1};cvox.SpokenListBuilder=function(){this.list_=[]};cvox.SpokenListBuilder.prototype.flush=function(a){this.list_.push([a,cvox.AbstractTts.QUEUE_MODE_FLUSH]);return this};cvox.SpokenListBuilder.prototype.build=function(){return this.list_};cvox.RunnerInterface=function(){};cvox.RunnerInterface.prototype.setFocus=function(){};cvox.AbstractTestCase=function(){};cvox.TestTts=function(){cvox.AbstractTts.call(this);this.utterances_=[]};goog.inherits(cvox.TestTts,cvox.AbstractTts);cvox.TestTts.prototype.sentinelText_="@@@STOP@@@";cvox.TestTts.prototype.speak=function(a,b,c){this.utterances_.push({text:a,queueMode:b});c&&void 0!=c.endCallback&&(a=this.utterances_.length,this.utterances_[a-1].text!=this.sentinelText_&&c.endCallback())};cvox.HostFactory.ttsConstructor=cvox.TestTts;cvox.AutoRunner=function(){new cvox.TestTts};cvox.AutoRunner.TestSummary=function(a,b,c,d){this.tag=a;this.status=c;this.scope=d};cvox.AutoRunner.PASS="pass";cvox.AutoRunner.FAIL="fail";cvox.AutoRunner.prototype.setFocus=function(a){document.getElementById(a).focus();return this};cvox.ChromeVoxUserCommands={};cvox.ChromeVoxUserCommands.init_=function(){if(!cvox.ChromeVoxUserCommands.commands){cvox.ChromeVoxUserCommands.commands={};for(var a in cvox.CommandStore.CMD_WHITELIST)cvox.ChromeVoxUserCommands.commands[a]=cvox.ChromeVoxUserCommands.createCommand_(a)}};cvox.ChromeVoxUserCommands.wasMouseClicked=!1;cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage=!0;
-cvox.ChromeVoxUserCommands.handleTabAction_=function(){cvox.ChromeVox.tts.stop();if(!cvox.ChromeVox.navigationManager.resolve(cvox.DomUtil.isFocusable))return cvox.ChromeVox.navigationManager.setFocus(),!1;var a=cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_();if(a)return!0;var b=a=null,b=window.getSelection();cvox.ChromeVoxUserCommands.wasMouseClicked?cvox.ChromeVoxUserCommands.wasMouseClicked=!1:b=null;null==b||null==b.anchorNode||null==b.focusNode?(a=cvox.ChromeVox.navigationManager.getCurrentNode(),
-b=cvox.ChromeVox.navigationManager.getCurrentNode()):(a=b.anchorNode,b=b.focusNode);if(null==a||null==b)return!0;if(cvox.DomUtil.isFocusable(a))return a.focus(),!0;if(cvox.DomUtil.isFocusable(b))return b.focus(),!0;if(cvox.DomUtil.isFocusable(a.parentNode))return a.parentNode.focus(),!0;if(cvox.DomUtil.isFocusable(b.parentNode))return b.parentNode.focus(),!0;b=cvox.ChromeVoxUserCommands.createTabDummySpan_();a.parentNode.insertBefore(b,a);b.focus();return!0};
-cvox.ChromeVoxUserCommands.isFocusedOnLinkControl_=function(){var a="A";return document.activeElement.tagName==a||cvox.DomUtil.isControl(document.activeElement)?!0:!1};cvox.ChromeVoxUserCommands.removeTabDummySpan=function(){var a=document.getElementById("ChromeVoxTabDummySpan");a&&document.activeElement!=a&&a.parentNode.removeChild(a)};cvox.ChromeVoxUserCommands.createTabDummySpan_=function(){var a=document.createElement("span");a.id="ChromeVoxTabDummySpan";a.tabIndex=-1;return a};
-cvox.ChromeVoxUserCommands.createCommand_=function(a){return goog.bind(function(b){b=cvox.ChromeVoxUserCommands.lookupCommand_(a,b);return cvox.ChromeVoxUserCommands.dispatchCommand_(b)},cvox.ChromeVoxUserCommands)};
-cvox.ChromeVoxUserCommands.dispatchCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField())return!0;if(cvox.ChromeVoxUserCommands.enableCommandDispatchingToPage&&-1!=cvox.UserEventDetail.JUMP_COMMANDS.indexOf(a.command)){a=new cvox.UserEventDetail({command:a.command});a=a.createEventObject();var b=cvox.ChromeVox.navigationManager.getCurrentNode();b||(b=document.body);b.dispatchEvent(a);return!1}return cvox.ChromeVoxUserCommands.doCommand_(a)};
-cvox.ChromeVoxUserCommands.doCommand_=function(a){if(cvox.Widget.isActive()||!cvox.PlatformUtil.matchesPlatform(a.platformFilter)||a.skipInput&&cvox.FocusUtil.isFocusInTextInputField()||a.disallowOOBE&&document.URL.match(/^chrome:\/\/oobe/i))return!0;var b=a.command;a.allowEvents||cvox.ChromeVoxEventSuspender.enterSuspendEvents();a.disallowContinuation&&cvox.ChromeVox.navigationManager.stopReading(!0);a.forward?cvox.ChromeVox.navigationManager.setReversed(!1):a.backward&&cvox.ChromeVox.navigationManager.setReversed(!0);
-a.findNext&&(b="find",a.announce=!0);var c="",d="",e=!1;switch(b){case "handleTab":case "handleTabPrev":e=cvox.ChromeVoxUserCommands.handleTabAction_();break;case "forward":case "backward":e=!cvox.ChromeVox.navigationManager.navigate();break;case "right":case "left":cvox.ChromeVox.navigationManager.subnavigate();break;case "find":if(!a.findNext)throw"Invalid find command.";var f=cvox.CommandStore.NODE_INFO_MAP[a.findNext],g=f.predicate,h=cvox.DomPredicates[g],k="",l="";a.forward?(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_top"),
-k=cvox.ChromeVox.msgs.getMsg(f.forwardError)):a.backward&&(l=cvox.ChromeVox.msgs.getMsg("wrapped_to_bottom"),k=cvox.ChromeVox.msgs.getMsg(f.backwardError));var f=null,m=a.status||cvox.UserEventDetail.Status.PENDING,p=a.resultNode||null;switch(m){case cvox.UserEventDetail.Status.SUCCESS:p&&cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(p,!0);break;case cvox.UserEventDetail.Status.FAILURE:d=k;break;default:f=cvox.ChromeVox.navigationManager.findNext(h,g),f||(cvox.ChromeVox.navigationManager.saveSel(),
-d=l,cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.WRAP),f=cvox.ChromeVox.navigationManager.findNext(h,g,!0),f||(d=k,cvox.ChromeVox.navigationManager.restoreSel()))}f&&"IFRAME"==f.start.node.tagName&&(a.announce=!1);break;case "previousGranularity":cvox.ChromeVox.navigationManager.makeLessGranular(!0);d=cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "nextGranularity":cvox.ChromeVox.navigationManager.makeMoreGranular(!0);d=
-cvox.ChromeVox.navigationManager.getGranularityMsg();break;case "previousCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "nextCharacter":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.CHARACTER);break;case "previousWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);break;case "nextWord":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.WORD);
-break;case "previousSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "nextSentence":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.SENTENCE);break;case "previousLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "nextLine":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "previousObject":cvox.ChromeVox.navigationManager.navigate(!1,
-cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "nextObject":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.OBJECT);break;case "previousGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "nextGroup":cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.GROUP);break;case "previousRow":case "previousCol":b="previousRow"==b?"nextRow":"nextCol";case "nextRow":case "nextCol":cvox.ChromeVox.navigationManager.performAction("enterShifterSilently");
-cvox.ChromeVox.navigationManager.performAction(b);break;case "moveToStartOfLine":case "moveToEndOfLine":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.LINE);cvox.ChromeVox.navigationManager.sync();cvox.ChromeVox.navigationManager.collapseSelection();break;case "readFromHere":cvox.ChromeVox.navigationManager.setGranularity(cvox.NavigationShifter.GRANULARITIES.OBJECT,!0,!0);cvox.ChromeVox.navigationManager.startReading(cvox.AbstractTts.QUEUE_MODE_FLUSH);break;case "cycleTypingEcho":break;
-case "jumpToTop":case cvox.BrailleKeyCommand.TOP:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "jumpToBottom":case cvox.BrailleKeyCommand.BOTTOM:cvox.ChromeVox.navigationManager.syncToBeginning();break;case "stopSpeech":cvox.ChromeVox.navigationManager.stopReading(!0);break;case "toggleKeyboardHelp":cvox.KeyboardHelpWidget.getInstance().toggle();break;case "help":cvox.ChromeVox.tts.stop();break;case "contextMenu":g=cvox.ChromeVox.navigationManager.getCurrentNode();"SELECT"!=g.tagName||
-g.multiple?(g=new cvox.ContextMenuWidget,g.toggle()):(new cvox.SelectWidget(g)).show();break;case "showBookmarkManager":break;case "showOptionsPage":cvox.ChromeVox.tts.stop();break;case "showKbExplorerPage":cvox.ChromeVox.tts.stop();break;case "readLinkURL":g=document.activeElement;h=window.getSelection().anchorNode;k="";"A"==g.tagName?k=cvox.DomUtil.getLinkURL(g):h&&(k=cvox.DomUtil.getLinkURL(h.parentNode));""!=k?cvox.ChromeVox.tts.speak(k):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_url_found"));
-break;case "readCurrentTitle":cvox.ChromeVox.tts.speak(document.title);break;case "readCurrentURL":cvox.ChromeVox.tts.speak(document.URL);break;case "performDefaultAction":cvox.DomPredicates.linkPredicate([document.activeElement])&&(a.announce=!0,cvox.DomUtil.isInternalLink(document.activeElement)&&(cvox.DomUtil.syncInternalLink(document.activeElement),cvox.ChromeVox.navigationManager.sync()));break;case "forceClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();
-cvox.DomUtil.clickElem(g,!1,!1);break;case "forceDoubleClickOnCurrentItem":d=cvox.ChromeVox.msgs.getMsg("element_double_clicked");g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.clickElem(g,!1,!1,!0);break;case "toggleChromeVox":break;case "fullyDescribe":g=cvox.ChromeVox.navigationManager.getFullDescription();cvox.ChromeVox.navigationManager.speakDescriptionArray(g,cvox.AbstractTts.QUEUE_MODE_FLUSH,null);break;case "speakTimeAndDate":g=new Date;cvox.ChromeVox.tts.speak(g.toLocaleTimeString()+
-", "+g.toLocaleDateString());break;case "toggleSelection":d=cvox.ChromeVox.navigationManager.togglePageSel();d=cvox.ChromeVox.msgs.getMsg(d?"begin_selection":"end_selection");break;case "startHistoryRecording":cvox.History.getInstance().startRecording();break;case "stopHistoryRecording":cvox.History.getInstance().stopRecording();break;case "enableConsoleTts":cvox.ConsoleTts.getInstance().setEnabled(!0);break;case "goToFirstCell":case "goToLastCell":case "goToRowFirstCell":case "goToRowLastCell":case "goToColFirstCell":case "goToColLastCell":case "announceHeaders":case "speakTableLocation":case "exitShifterContent":cvox.DomPredicates.tablePredicate(cvox.DomUtil.getAncestors(cvox.ChromeVox.navigationManager.getCurrentNode()))&&
-cvox.ChromeVox.navigationManager.performAction(b)||(c="not_inside_table");break;case "enterShifter":case "exitShifter":cvox.ChromeVox.navigationManager.performAction(b);break;case "decreaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!1);break;case "increaseTtsRate":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.RATE,!0);break;case "decreaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,!1);break;case "increaseTtsPitch":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.PITCH,
-!0);break;case "decreaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!1);break;case "increaseTtsVolume":cvox.ChromeVox.tts.increaseOrDecreaseProperty(cvox.AbstractTts.VOLUME,!0);break;case "cyclePunctuationEcho":break;case "toggleStickyMode":break;case "toggleKeyPrefix":cvox.ChromeVox.keyPrefixOn=!cvox.ChromeVox.keyPrefixOn;break;case "toggleSearchWidget":cvox.SearchWidget.getInstance().toggle();break;case "toggleEarcons":d=cvox.ChromeVox.earcons.toggle()?cvox.ChromeVox.msgs.getMsg("earcons_on"):
-cvox.ChromeVox.msgs.getMsg("earcons_off");break;case "showHeadingsList":case "showLinksList":case "showFormsList":case "showTablesList":case "showLandmarksList":if(!a.nodeList)break;g=cvox.CommandStore.NODE_INFO_MAP[a.nodeList];cvox.NodeSearchWidget.create(g.typeMsg,cvox.DomPredicates[g.predicate]).show();break;case "openLongDesc":g=cvox.ChromeVox.navigationManager.getCurrentNode();cvox.DomUtil.hasLongDesc(g)||cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("no_long_desc"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION);break;case "pauseAllMedia":k=document.getElementsByTagName("VIDEO");for(g=0;h=k[g];g++)h.pause();k=document.getElementsByTagName("AUDIO");for(g=0;h=k[g];g++)h.pause();break;case "toggleSemantics":cvox.TraverseMath.toggleSemantic()?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_on")):cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("semantics_off"));break;case cvox.BrailleKeyCommand.ROUTING:g=cvox.ChromeVox.navigationManager.getBraille();
-g=g.text.getSpans(a.displayPosition||0);g=g.filter(function(a){return a instanceof Node})[0];cvox.DomUtil.clickElem(g||cvox.ChromeVox.navigationManager.getCurrentNode(),!1,!0);break;case cvox.BrailleKeyCommand.PAN_LEFT:case cvox.BrailleKeyCommand.LINE_UP:case cvox.BrailleKeyCommand.PAN_RIGHT:case cvox.BrailleKeyCommand.LINE_DOWN:cvox.ChromeVox.navigationManager.navigate(!1,cvox.NavigationShifter.GRANULARITIES.LINE);break;case "debug":break;case "nop":break;default:throw"Command behavior not defined: "+
-b;}""!=c?cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(c),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION):cvox.ChromeVox.navigationManager.isReading()?a.disallowContinuation?cvox.ChromeVox.navigationManager.stopReading(!0):"readFromHere"!=b&&cvox.ChromeVox.navigationManager.skip():a.announce&&cvox.ChromeVox.navigationManager.finishNavCommand(d);a.allowEvents||cvox.ChromeVoxEventSuspender.exitSuspendEvents();return!!a.doDefault||e};
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent=function(a){a=new cvox.UserEventDetail(a.detail);a.command&&cvox.ChromeVoxUserCommands.doCommand_(cvox.ChromeVoxUserCommands.lookupCommand_(a.command,a))};cvox.ChromeVoxUserCommands.lookupCommand_=function(a,b){var c=cvox.CommandStore.CMD_WHITELIST[a];if(!c)throw"Invalid command: "+a;c=goog.object.clone(c);c.command=a;b&&goog.object.extend(c,b);return c};cvox.ChromeVoxUserCommands.init_();cvox.ChromeVoxKbHandler={};cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable=function(a){window.JSON&&(cvox.ChromeVoxKbHandler.handlerKeyMap=cvox.KeyMap.fromJSON(a))};cvox.ChromeVoxKbHandler.sortKeyToFunctionsTable_=function(a){function b(a,b){return a[0].length<b[0].length?-1:b[0].length<a[0].length?1:a[0].localeCompare(b[0])}var c=[],d;for(d in a)c.push([d,a[d]]);c.sort(b);return c};
-cvox.ChromeVoxKbHandler.basicKeyDownActionsListener=function(a){var b=cvox.KeyUtil.keyEventToKeySequence(a);a=void 0!=cvox.ChromeVoxKbHandler.handlerKeyMap?cvox.ChromeVoxKbHandler.handlerKeyMap.commandForKey(b):null;if(!a)return!cvox.KeyUtil.sequencing;if(!cvox.ChromeVox.isActive&&"toggleChromeVox"!=a)return!0;var c=!0,d=cvox.ChromeVoxUserCommands.commands[a];d?(b=cvox.History.getInstance(),b.enterUserCommand(a),c=d(),b.exitUserCommand(a)):b.cvoxModifier&&(c=!1);cvox.ChromeVox.entireDocumentIsHidden&&
-(c=!0);return c};cvox.LiveRegions=function(){};cvox.LiveRegions.pageLoadTime=null;cvox.LiveRegions.INITIAL_SILENCE_MS=2E3;cvox.LiveRegions.lastAnnouncedMap={};cvox.LiveRegions.MAX_DISCARD_DUPS_MS=2E3;cvox.LiveRegions.lastAnnouncedTime=null;cvox.LiveRegions.nodesAlreadyHandled=[];
-cvox.LiveRegions.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.pageLoadTime=a;if(c||!document.hasFocus())return!1;var d=!1;a=cvox.AriaUtil.getLiveRegions(document.body);for(c=0;c<a.length;c++)cvox.LiveRegions.handleOneChangedNode(a[c],a[c],!1,!1,function(a,c){a||b!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);var g=new cvox.NavigationSpeaker;g.speakDescriptionArray(c,b,null);d=!0});cvox.Interframe.addListener(function(a){if("speakLiveRegion"==
-a.command)for(var b=document.getElementsByTagName("iframe"),c=0,d;d=b[c];c++)if(d.src==a.src){if(!cvox.DomUtil.isVisible(d))break;d=JSON.parse(a.content);for(var k=[],l=0,m;m=d[l];l++)k.push(new cvox.NavDescription(m));(new cvox.NavigationSpeaker).speakDescriptionArray(k,a.queueMode,null)}});return d};
-cvox.LiveRegions.processMutations=function(a,b){cvox.LiveRegions.nodesAlreadyHandled=[];a.forEach(function(a){if(!a.target.hasAttribute||!a.target.hasAttribute("cvoxIgnore")){if(a.addedNodes)for(var d=0;d<a.addedNodes.length;d++)a.addedNodes[d].hasAttribute&&a.addedNodes[d].hasAttribute("cvoxIgnore")||cvox.LiveRegions.handleOneChangedNode(a.addedNodes[d],a.target,!1,!0,b);if(a.removedNodes)for(d=0;d<a.removedNodes.length;d++)a.removedNodes[d].hasAttribute&&a.removedNodes[d].hasAttribute("cvoxIgnore")||
-cvox.LiveRegions.handleOneChangedNode(a.removedNodes[d],a.target,!0,!1,b);"characterData"==a.type&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!1,b);if("class"==a.attributeName||"style"==a.attributeName||"hidden"==a.attributeName){var e=a.attributeName,d=a.target,f=!cvox.DomUtil.isVisible(d),g=document.createElement("div");g.setAttribute("cvoxIgnore","1");g.setAttribute("class",d.getAttribute("class"));g.setAttribute("style",d.getAttribute("style"));g.setAttribute("hidden",d.getAttribute("hidden"));
-g.setAttribute(e,a.oldValue);e=!0;d.parentElement?(d.parentElement.appendChild(g),e=!cvox.DomUtil.isVisible(g),d.parentElement.removeChild(g)):e=!cvox.DomUtil.isVisible(g);!0===e&&!1===f?cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!1,!0,b):!1===e&&!0===f&&cvox.LiveRegions.handleOneChangedNode(a.target,a.target,!0,!1,b)}}});cvox.LiveRegions.nodesAlreadyHandled.length=0};
-cvox.LiveRegions.handleOneChangedNode=function(a,b,c,d,e){var f=c?b:a;f instanceof Element||(f=f.parentElement);for(;f&&!cvox.AriaUtil.getAriaLive(f);)f=f.parentElement;if(!f){if(d&&a!=document.body)for(a=cvox.AriaUtil.getLiveRegions(a),d=0;d<a.length;d++)cvox.LiveRegions.handleOneChangedNode(a[d],b,c,!1,e)}else if(!(0<=cvox.LiveRegions.nodesAlreadyHandled.indexOf(a)||(cvox.LiveRegions.nodesAlreadyHandled.push(a),cvox.AriaUtil.getAriaBusy(f)))){if(c){if(!cvox.AriaUtil.getAriaRelevant(f,"removals"))return}else if(!cvox.AriaUtil.getAriaRelevant(f,
-"additions"))return;cvox.LiveRegions.announceChange(a,f,c,e)}};
-cvox.LiveRegions.announceChange=function(a,b,c,d){var e=new Date-cvox.LiveRegions.pageLoadTime;if(!("alert"!=cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS)&&cvox.DomUtil.isVisible(b)){if(a!=b)for(var f=a.parentElement;f;){(cvox.AriaUtil.getAriaAtomic(f)||cvox.AriaUtil.isLeafElement(f)||cvox.AriaUtil.isControlWidget(f))&&!cvox.AriaUtil.isCompositeControl(f)&&(a=f);if(f==b)break;f=f.parentElement}a=cvox.LiveRegions.getNavDescriptionsRecursive(a);if(0!=a.length){c&&(a=[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),
-text:""})].concat(a));if("alert"==cvox.AriaUtil.getRoleAttribute(b)&&e<cvox.LiveRegions.INITIAL_SILENCE_MS){c="";for(e=0;e<a.length;e++)c+=a[e].text,c+=a[e].userValue;if(""==cvox.DomUtil.collapseWhitespace(c))return}c=new Date;for(var g in cvox.LiveRegions.lastAnnouncedMap)c-cvox.LiveRegions.lastAnnouncedMap[g]>cvox.LiveRegions.MAX_DISCARD_DUPS_MS&&delete cvox.LiveRegions.lastAnnouncedMap[g];g=a.reduce(function(a,b){return a+"|"+b.text},"");cvox.LiveRegions.lastAnnouncedMap[g]||(cvox.LiveRegions.lastAnnouncedMap[g]=
-c,b="assertive"==cvox.AriaUtil.getAriaLive(b),cvox.Interframe.isIframe()&&!document.hasFocus()?cvox.Interframe.sendMessageToParentWindow({command:"speakLiveRegion",content:JSON.stringify(a),queueMode:b?0:1,src:window.location.href}):d(b,a))}}};
-cvox.LiveRegions.getNavDescriptionsRecursive=function(a){return cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)?(a=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity),a.isEmpty()?[]:[a]):cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a)};cvox.LiveRegionsDeprecated=function(){};cvox.LiveRegionsDeprecated.trackedRegions=[];cvox.LiveRegionsDeprecated.previousRegionValue=[];cvox.LiveRegionsDeprecated.pageLoadTime=null;cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS=2E3;
-cvox.LiveRegionsDeprecated.init=function(a,b,c){void 0==b&&(b=cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegionsDeprecated.pageLoadTime=a;a=!1;for(var d=cvox.AriaUtil.getLiveRegions(document.body),e=0;e<d.length;e++)cvox.LiveRegionsDeprecated.updateLiveRegion(d[e],b,c)&&(a=!0,b=cvox.AbstractTts.QUEUE_MODE_QUEUE);return a};
-cvox.LiveRegionsDeprecated.updateLiveRegion=function(a,b,c){if(cvox.AriaUtil.getAriaBusy(a)||!cvox.DomUtil.isVisible(a))return!1;var d=cvox.LiveRegionsDeprecated.trackedRegions.indexOf(a),e;0<=d?e=cvox.LiveRegionsDeprecated.previousRegionValue[d]:(d=cvox.LiveRegionsDeprecated.trackedRegions.length,e=[],cvox.LiveRegionsDeprecated.trackedRegions.push(a),cvox.LiveRegionsDeprecated.previousRegionValue.push([]));var f=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(a),g=new Date-cvox.LiveRegionsDeprecated.pageLoadTime;
-if("alert"!=cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS)return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1;if("alert"==cvox.AriaUtil.getRoleAttribute(a)&&g<cvox.LiveRegionsDeprecated.INITIAL_SILENCE_MS){for(var h="",g=0;g<f.length;g++)h+=f[g].text,h+=f[g].userValue;if(""==cvox.DomUtil.collapseWhitespace(h))return cvox.LiveRegionsDeprecated.previousRegionValue[d]=f,!1}for(var k={},g=0;g<e.length;g++)k[e[g].toString()]=!0;for(var l={},g=0;g<f.length;g++)l[f[g].toString()]=
-!0;h=[];if(cvox.AriaUtil.getAriaRelevant(a,"additions"))for(g=0;g<f.length;g++)k[f[g].toString()]||h.push(f[g]);k=[];if(cvox.AriaUtil.getAriaRelevant(a,"removals"))for(g=0;g<e.length;g++)l[e[g].toString()]||k.push(e[g]);e=[];e=0==h.length&&0<k.length?[new cvox.NavDescription({context:cvox.ChromeVox.msgs.getMsg("live_regions_removed"),text:""})].concat(k):h;cvox.LiveRegionsDeprecated.previousRegionValue[d]=f;if(c||0==e.length)return!1;a=cvox.AriaUtil.getAriaLive(a);"polite"==a&&(b=cvox.AbstractTts.QUEUE_MODE_QUEUE);
-for(g=0;g<e.length;g++)e[g].speak(b),b=cvox.AbstractTts.QUEUE_MODE_QUEUE;return!0};
-cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue=function(a){if(cvox.AriaUtil.getAriaAtomic(a)||cvox.DomUtil.isLeafNode(a)){var b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!0,cvox.ChromeVox.verbosity);return b.isEmpty()?[]:[b]}var c=[],b=cvox.DescriptionUtil.getDescriptionFromAncestors([a],!1,cvox.ChromeVox.verbosity);b.isEmpty()||c.push(b);for(b=0;b<a.childNodes.length;b++){var d=a.childNodes[b];cvox.DomUtil.isVisible(d,{checkAncestors:!1})&&!cvox.AriaUtil.isHidden(d)&&(d=cvox.LiveRegionsDeprecated.buildCurrentLiveRegionValue(d),
-c=c.concat(d))}return c};cvox.ChromeVoxEventWatcherUtil={};cvox.ChromeVoxEventWatcher=function(){};cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_=50;cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_=10;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_=1E3;cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_=3;cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_=5;cvox.ChromeVoxEventWatcher.shouldEchoKeys=!0;cvox.ChromeVoxEventWatcher.processing_=!1;
-cvox.ChromeVoxEventWatcher.init=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=null;cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=null;cvox.ChromeVoxEventWatcher.eventToEat=null;cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;cvox.ChromeVoxEventWatcher.lastKeypressTime=0;cvox.ChromeVoxEventWatcher.listeners_=
-[];cvox.ChromeVoxEventWatcher.mutationObserver_=null;cvox.ChromeVoxEventWatcher.focusFollowsMouse=!1;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=500;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.lastEventTime=0;cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.readyCallbacks_=[];cvox.ChromeVox.searchKeyHeld=!1;cvox.ChromeVoxEventWatcher.textMutationObserver_=null;cvox.ChromeVoxEventWatcher.addEventListeners_(a);
-cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=0;cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=0};cvox.ChromeVoxEventWatcher.storeOn=function(a){a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld};cvox.ChromeVoxEventWatcher.readFrom=function(a){cvox.ChromeVox.searchKeyHeld=a.searchKeyHeld};
-cvox.ChromeVoxEventWatcher.addEvent=function(a){if(!cvox.ChromeVox.isActive||document.webkitHidden)return!1;cvox.ChromeVoxEventWatcher.events_.push(a);cvox.ChromeVoxEventWatcher.lastEventTime=(new Date).getTime();-1==cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime&&(cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=(new Date).getTime());cvox.ChromeVoxEventWatcher.queueProcessingScheduled_||(cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!0,window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,
-cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_))};cvox.ChromeVoxEventWatcher.addReadyCallback=function(a){cvox.ChromeVoxEventWatcher.readyCallbacks_.push(a);cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()};cvox.ChromeVoxEventWatcher.hasPendingEvents_=function(){return-1!=cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime||cvox.ChromeVoxEventWatcher.queueProcessingScheduled_};cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;
-cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_=function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_||(cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!0,window.setTimeout(function(){cvox.ChromeVoxEventWatcher.readyCallbackRunning_=!1;!cvox.ChromeVoxEventWatcher.hasPendingEvents_()&&!cvox.ChromeVoxEventWatcher.queueProcessingScheduled_&&0<cvox.ChromeVoxEventWatcher.readyCallbacks_.length&&(cvox.ChromeVoxEventWatcher.readyCallbacks_.shift()(),cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_())},
-5))};
-cvox.ChromeVoxEventWatcher.addEventListeners_=function(a){cvox.ChromeVoxEventWatcher.addEventListener_(a,"keydown",cvox.ChromeVoxEventWatcher.keyDownEventWatcher,!0);if(cvox.ChromeVox.isActive&&!cvox.ChromeVox.entireDocumentIsHidden)if(cvox.ChromeVoxEventWatcher.addEventListener_(a,"keypress",cvox.ChromeVoxEventWatcher.keyPressEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"keyup",cvox.ChromeVoxEventWatcher.keyUpEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,cvox.UserEventDetail.Category.JUMP,
-cvox.ChromeVoxUserCommands.handleChromeVoxUserEvent,!1),cvox.ChromeVoxEventWatcher.addEventListener_(a,"focus",cvox.ChromeVoxEventWatcher.focusEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"blur",cvox.ChromeVoxEventWatcher.blurEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"change",cvox.ChromeVoxEventWatcher.changeEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"copy",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"cut",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"paste",cvox.ChromeVoxEventWatcher.clipboardEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"select",cvox.ChromeVoxEventWatcher.selectEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"webkitvisibilitychange",cvox.ChromeVoxEventWatcher.visibilityChangeWatcher,!0),cvox.ChromeVoxEventWatcher.events_=[],cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1,cvox.ChromeVoxEventWatcher.addEventListener_(a,
-"mouseover",cvox.ChromeVoxEventWatcher.mouseOverEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"mouseout",cvox.ChromeVoxEventWatcher.mouseOutEventWatcher,!0),cvox.ChromeVoxEventWatcher.addEventListener_(a,"click",cvox.ChromeVoxEventWatcher.mouseClickEventWatcher,!0),"undefined"!=typeof WebKitMutationObserver){cvox.ChromeVoxEventWatcher.mutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.mutationHandler);var b=null;a.documentElement?b=a.documentElement:a.document&&
-a.document.documentElement&&(b=a.document.documentElement);b&&cvox.ChromeVoxEventWatcher.mutationObserver_.observe(b,{childList:!0,attributes:!0,characterData:!0,subtree:!0,attributeOldValue:!0,characterDataOldValue:!0})}else cvox.ChromeVoxEventWatcher.addEventListener_(a,"DOMSubtreeModified",cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher,!0)};
-cvox.ChromeVoxEventWatcher.cleanup=function(a){for(var b=0;b<cvox.ChromeVoxEventWatcher.listeners_.length;b++){var c=cvox.ChromeVoxEventWatcher.listeners_[b];a.removeEventListener(c.type,c.listener,c.useCapture)}cvox.ChromeVoxEventWatcher.listeners_=[];cvox.ChromeVoxEventWatcher.currentDateHandler&&cvox.ChromeVoxEventWatcher.currentDateHandler.shutdown();cvox.ChromeVoxEventWatcher.currentTimeHandler&&cvox.ChromeVoxEventWatcher.currentTimeHandler.shutdown();cvox.ChromeVoxEventWatcher.currentMediaHandler&&
-cvox.ChromeVoxEventWatcher.currentMediaHandler.shutdown();cvox.ChromeVoxEventWatcher.mutationObserver_&&cvox.ChromeVoxEventWatcher.mutationObserver_.disconnect();cvox.ChromeVoxEventWatcher.mutationObserver_=null};cvox.ChromeVoxEventWatcher.addEventListener_=function(a,b,c,d){cvox.ChromeVoxEventWatcher.listeners_.push({type:b,listener:c,useCapture:d});a.addEventListener(b,c,d)};cvox.ChromeVoxEventWatcher.getLastFocusedNode=function(){return cvox.ChromeVoxEventWatcher.lastFocusedNode};
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_=function(a){cvox.ChromeVoxEventWatcher.lastFocusedNode=a;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=a?cvox.DomUtil.getControlValueAndStateString(a):null};
-cvox.ChromeVoxEventWatcher.mutationHandler=function(a){if(cvox.ChromeVoxEventSuspender.areEventsSuspended())return!0;cvox.ChromeVox.navigationManager.updateIndicatorIfChanged();cvox.LiveRegions.processMutations(a,function(a,c){var d=new window.Event("LiveRegion");d.navDescriptions=c;d.assertive=a;cvox.ChromeVoxEventWatcher.addEvent(d);return!0})};
-cvox.ChromeVoxEventWatcher.mouseClickEventWatcher=function(a){cvox.PlatformUtil.matchesPlatform(cvox.PlatformFilter.WML)&&!a.fromCvox&&cvox.ApiImplementation.syncToNode(a.target,!0);return cvox.ChromeVox.host.mustRedispatchClickEvent()&&!a.fromCvox?(cvox.ChromeVoxUserCommands.wasMouseClicked=!0,a.stopPropagation(),a.preventDefault(),cvox.Focuser.setFocus(cvox.ChromeVox.navigationManager.getCurrentNode()),cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.ChromeVox.navigationManager.getCurrentNode(),cvox.DomUtil.clickElem(a,!1,!0),!1):cvox.ChromeVoxUserCommands.wasMouseClicked=!0};
-cvox.ChromeVoxEventWatcher.mouseOverEventWatcher=function(a){if(!cvox.ChromeVoxEventWatcher.focusFollowsMouse||cvox.DomUtil.isDescendantOfNode(cvox.ChromeVoxEventWatcher.announcedMouseOverNode,a.target)||a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode)return!0;cvox.ChromeVoxEventWatcher.pendingMouseOverNode=a.target;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null);if(a.target.tagName&&
-"BODY"==a.target.tagName)return cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.announcedMouseOverNode=null,!0;cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=window.setTimeout(function(){cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null;if(a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode){cvox.ChromeVox.navigationManager.stopReading(!0);var b=a.target;cvox.Focuser.setFocus(b);cvox.ApiImplementation.syncToNode(b,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.ChromeVoxEventWatcher.announcedMouseOverNode=
-b}},cvox.ChromeVoxEventWatcher.mouseoverDelayMs);return!0};cvox.ChromeVoxEventWatcher.mouseOutEventWatcher=function(a){a.target==cvox.ChromeVoxEventWatcher.pendingMouseOverNode&&(cvox.ChromeVoxEventWatcher.pendingMouseOverNode=null,cvox.ChromeVoxEventWatcher.mouseOverTimeoutId&&(window.clearTimeout(cvox.ChromeVoxEventWatcher.mouseOverTimeoutId),cvox.ChromeVoxEventWatcher.mouseOverTimeoutId=null));return!0};
-cvox.ChromeVoxEventWatcher.focusEventWatcher=function(a){cvox.ChromeVoxUserCommands.removeTabDummySpan();cvox.ChromeVoxEventSuspender.areEventsSuspended()?a.target&&a.target.nodeType==Node.ELEMENT_NODE&&cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a.target):cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.focusHandler=function(a){if(a.target&&a.target.hasAttribute&&"true"==a.target.getAttribute("aria-hidden")&&"true"!=a.target.getAttribute("chromevoxignoreariahidden"))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.setUpTextHandler();else if(a.target&&a.target!=window){var b=a.target,c=cvox.DomUtil.getSurroundingControl(b);if(c&&c==cvox.ChromeVoxEventWatcher.lastFocusedNode)cvox.ChromeVoxEventWatcher.handleControlChanged(b);else{c?cvox.ChromeVoxEventWatcher.setLastFocusedNode_(c):
-cvox.ChromeVoxEventWatcher.setLastFocusedNode_(b);c=cvox.ChromeVoxEventWatcher.queueMode_();if(cvox.ChromeVoxEventWatcher.getInitialVisibility()||cvox.ChromeVoxEventWatcher.handleDialogFocus(b))c=cvox.AbstractTts.QUEUE_MODE_QUEUE;cvox.ChromeVox.navigationManager.clearPageSel(!0)&&(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ApiImplementation.syncToNode(b,!document.webkitHidden,c);if(a.target.constructor==HTMLVideoElement||a.target.constructor==HTMLAudioElement)cvox.ChromeVoxEventWatcher.setUpMediaHandler_();
-else{if(a.target.hasAttribute)switch(a=a.target.getAttribute("type"),a){case "time":cvox.ChromeVoxEventWatcher.setUpTimeHandler_();return;case "date":case "month":case "week":cvox.ChromeVoxEventWatcher.setUpDateHandler_();return}cvox.ChromeVoxEventWatcher.setUpTextHandler()}}}else cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null)};
-cvox.ChromeVoxEventWatcher.blurEventWatcher=function(a){window.setTimeout(function(){document.activeElement||(cvox.ChromeVoxEventWatcher.setLastFocusedNode_(null),cvox.ChromeVoxEventWatcher.addEvent(a))},0);return!0};
-cvox.ChromeVoxEventWatcher.keyDownEventWatcher=function(a){cvox.ChromeVox.isChromeOS&&91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!0);a.searchKeyHeld=cvox.ChromeVox.searchKeyHeld&&cvox.ChromeVox.isActive;a.stickyMode=cvox.ChromeVox.isStickyOn&&cvox.ChromeVox.isActive;a.keyPrefix=cvox.ChromeVox.keyPrefixOn&&cvox.ChromeVox.isActive;cvox.ChromeVox.keyPrefixOn=!1;cvox.ChromeVoxEventWatcher.eventToEat=null;if(!cvox.ChromeVoxKbHandler.basicKeyDownActionsListener(a)||cvox.ChromeVoxEventWatcher.handleControlAction(a))return a.preventDefault(),
-a.stopPropagation(),cvox.ChromeVoxEventWatcher.eventToEat=a,!1;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.keyUpEventWatcher=function(a){91==a.keyCode&&(cvox.ChromeVox.searchKeyHeld=!1);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.stopPropagation(),a.preventDefault(),!1):!0};
-cvox.ChromeVoxEventWatcher.keyPressEventWatcher=function(a){var b=document.location.href,c=cvox.TypingEcho.shouldSpeakChar(cvox.ChromeVox.typingEcho);"undefined"!==typeof cvox.ChromeVox.keyEcho[b]&&(c=cvox.ChromeVox.keyEcho[b]);cvox.ChromeVoxEditableTextBase.eventTypingEcho&&c&&cvox.DomPredicates.editTextPredicate([document.activeElement])&&"password"!==document.activeElement.type&&(b=(new Date).getTime(),150<b-cvox.ChromeVoxEventWatcher.lastKeypressTime&&cvox.ChromeVox.tts.stop(),cvox.ChromeVoxEventWatcher.lastKeypressTime=
-b,cvox.ChromeVox.tts.speak(String.fromCharCode(a.charCode),1,{relativeRate:2}));cvox.ChromeVoxEventWatcher.addEvent(a);return cvox.ChromeVoxEventWatcher.eventToEat&&a.keyCode==cvox.ChromeVoxEventWatcher.eventToEat.keyCode?(a.preventDefault(),a.stopPropagation(),!1):!0};cvox.ChromeVoxEventWatcher.changeEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.clipboardEventWatcher=function(a){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg(a.type).toLowerCase());var b="";switch(a.type){case "paste":b=a.clipboardData.getData("text");break;case "copy":case "cut":b=window.getSelection().toString()}cvox.ChromeVox.tts.speak(b,cvox.AbstractTts.QUEUE_MODE_QUEUE);cvox.ChromeVox.navigationManager.clearPageSel();return!0};
-cvox.ChromeVoxEventWatcher.changeHandler=function(a){cvox.ChromeVoxEventWatcher.setUpTextHandler()||document.activeElement==a.target&&cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement)};cvox.ChromeVoxEventWatcher.selectEventWatcher=function(a){cvox.ChromeVoxEventWatcher.addEvent(a);return!0};cvox.ChromeVoxEventWatcher.subtreeModifiedEventWatcher=function(a){if(!a||!a.target)return!0;cvox.ChromeVoxEventWatcher.addEvent(a);return!0};
-cvox.ChromeVoxEventWatcher.visibilityChangeWatcher=function(){cvox.ChromeVoxEventWatcher.initialVisibility=!document.webkitHidden;document.webkitHidden&&cvox.ChromeVox.navigationManager.stopReading(!0)};cvox.ChromeVoxEventWatcher.getInitialVisibility=function(){var a=cvox.ChromeVoxEventWatcher.initialVisibility;cvox.ChromeVoxEventWatcher.initialVisibility=!1;return a};
-cvox.ChromeVoxEventWatcher.speakLiveRegion_=function(a,b){var c=cvox.ChromeVoxEventWatcher.queueMode_();a||c!=cvox.AbstractTts.QUEUE_MODE_FLUSH||(c=cvox.AbstractTts.QUEUE_MODE_QUEUE);var d=new cvox.NavigationSpeaker;d.speakDescriptionArray(b,c,null)};
-cvox.ChromeVoxEventWatcher.subtreeModifiedHandler=function(a){var b=(new Date).getTime();if(cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_+cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_DURATION_>b){if(cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_++,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_>cvox.ChromeVoxEventWatcher.SUBTREE_MODIFIED_BURST_COUNT_LIMIT_)return}else cvox.ChromeVoxEventWatcher.lastSubtreeModifiedEventBurstTime_=b,cvox.ChromeVoxEventWatcher.subtreeModifiedEventsCount_=
-1;if(a&&a.target)for(a=a.target,a=cvox.AriaUtil.getLiveRegions(a),b=0;b<a.length&&b<cvox.ChromeVoxEventWatcher.MAX_LIVE_REGIONS_;b++)cvox.LiveRegionsDeprecated.updateLiveRegion(a[b],cvox.ChromeVoxEventWatcher.queueMode_(),!1)};
-cvox.ChromeVoxEventWatcher.setUpTextHandler=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);if(a!=cvox.ChromeVoxEventWatcher.currentTextControl){cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.removeEventListener("click",
-cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.textMutationObserver_&&(cvox.ChromeVoxEventWatcher.textMutationObserver_.disconnect(),cvox.ChromeVoxEventWatcher.textMutationObserver_=null));cvox.ChromeVoxEventWatcher.currentTextControl=null;cvox.ChromeVoxEventWatcher.currentTextHandler=null;if(null==a)return!1;if(a.constructor==HTMLInputElement&&cvox.DomUtil.isInputTypeText(a)&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=
-new cvox.ChromeVoxEditableHTMLInput(a,cvox.ChromeVox.tts);else if(a.constructor==HTMLTextAreaElement&&cvox.ChromeVoxEventWatcher.shouldEchoKeys)cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableTextArea(a,cvox.ChromeVox.tts);else if(a.isContentEditable||"textbox"==a.getAttribute("role"))cvox.ChromeVoxEventWatcher.currentTextControl=a,cvox.ChromeVoxEventWatcher.currentTextHandler=new cvox.ChromeVoxEditableContentEditable(a,cvox.ChromeVox.tts);
-cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("input",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),cvox.ChromeVoxEventWatcher.currentTextControl.addEventListener("click",cvox.ChromeVoxEventWatcher.changeEventWatcher,!1),window.WebKitMutationObserver&&(cvox.ChromeVoxEventWatcher.textMutationObserver_=new WebKitMutationObserver(cvox.ChromeVoxEventWatcher.onTextMutation),cvox.ChromeVoxEventWatcher.textMutationObserver_.observe(cvox.ChromeVoxEventWatcher.currentTextControl,
-{childList:!0,attributes:!0,subtree:!0,attributeOldValue:!1,characterDataOldValue:!1})),cvox.ChromeVoxEventSuspender.areEventsSuspended()||cvox.ChromeVox.navigationManager.updateSel(cvox.CursorSelection.fromNode(cvox.ChromeVoxEventWatcher.currentTextControl)));return null!=cvox.ChromeVoxEventWatcher.currentTextHandler}};cvox.ChromeVoxEventWatcher.handleTextChanged=function(a){if(cvox.ChromeVoxEventWatcher.currentTextHandler){var b=cvox.ChromeVoxEventWatcher.currentTextHandler;b.update(a);return!0}return!1};
-cvox.ChromeVoxEventWatcher.onTextMutation=function(){cvox.ChromeVoxEventWatcher.currentTextHandler&&window.setTimeout(function(){cvox.ChromeVoxEventWatcher.handleTextChanged(!1)},cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_)};
-cvox.ChromeVoxEventWatcher.handleControlChanged=function(a){var b=cvox.DomUtil.getControlValueAndStateString(a),c=cvox.DomUtil.getSurroundingControl(a),d=!1;if(a!=cvox.ChromeVoxEventWatcher.lastFocusedNode&&(null==c||c!=cvox.ChromeVoxEventWatcher.lastFocusedNode))cvox.ChromeVoxEventWatcher.setLastFocusedNode_(a);else if(b==cvox.ChromeVoxEventWatcher.lastFocusedNodeValue)return;cvox.ChromeVoxEventWatcher.lastFocusedNodeValue=b;if(cvox.DomPredicates.checkboxPredicate([a])||cvox.DomPredicates.radioPredicate([a]))d=
-!0,a.checked?cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_ON):cvox.ChromeVox.earcons.playEarcon(cvox.AbstractEarcons.CHECK_OFF);"SELECT"==a.tagName&&(d=!0);if("INPUT"==a.tagName)switch(a.type){case "color":case "datetime":case "datetime-local":case "range":d=!0}a.hasAttribute&&a.hasAttribute("role")&&(d=!0);c&&c!=a&&document.activeElement==a?(cvox.ApiImplementation.syncToNode(a,!0,cvox.AbstractTts.QUEUE_MODE_FLUSH),d=!1):cvox.AriaUtil.getActiveDescendant(a)&&(cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(cvox.AriaUtil.getActiveDescendant(a),
-!0),d=!0);d&&!cvox.ChromeVoxEventSuspender.areEventsSuspended()&&(cvox.ChromeVox.tts.speak(b,cvox.ChromeVoxEventWatcher.queueMode_(),null),cvox.NavBraille.fromText(b).write())};
-cvox.ChromeVoxEventWatcher.handleControlAction=function(a){if(!cvox.ChromeVox.isActive)return!1;var b=a.target;if("SELECT"==b.tagName&&1>=b.size&&(13==a.keyCode||32==a.keyCode))return a.preventDefault(),a.stopPropagation(),!0;if("INPUT"==b.tagName&&"range"==b.type){var c=parseFloat(b.value),d;b.step&&0<b.step?d=b.step:b.min&&b.max?(d=b.max-b.min,d=2<d&&31>d?1:(b.max-b.min)/10):d=1;if(37==a.keyCode||38==a.keyCode)c-=d;else if(39==a.keyCode||40==a.keyCode)c+=d;b.max&&c>b.max&&(c=b.max);b.min&&c<b.min&&
-(c=b.min);b.value=c}return!1};
-cvox.ChromeVoxEventWatcher.handleDialogFocus=function(a){for(;a;){if(a.hasAttribute){var b=a.getAttribute("role");if("dialog"==b||"alertdialog"==b)break}a=a.parentElement}if(a==cvox.ChromeVox.navigationManager.currentDialog)return!1;if(cvox.ChromeVox.navigationManager.currentDialog&&!a){if(!cvox.DomUtil.isDescendantOfNode(document.activeElement,cvox.ChromeVox.navigationManager.currentDialog))return cvox.ChromeVox.navigationManager.currentDialog=null,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("exiting_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,
-cvox.AbstractTts.PERSONALITY_ANNOTATION),!0}else if(a)return cvox.ChromeVox.navigationManager.currentDialog=a,cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("entering_dialog"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION),a=cvox.DescriptionUtil.getFullDescriptionsFromChildren(null,a),b=new cvox.NavigationSpeaker,b.speakDescriptionArray(a,cvox.AbstractTts.QUEUE_MODE_QUEUE,null),!0;return!1};
-cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess=function(a,b,c){a=c-a;b=c-b;return a<cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_&&b<cvox.ChromeVoxEventWatcher.MAX_WAIT_TIME_MS_};cvox.ChromeVoxEventWatcher.queueMode_=function(){return cvox.ChromeVoxEventWatcher.processing_?cvox.AbstractTts.QUEUE_MODE_QUEUE:cvox.AbstractTts.QUEUE_MODE_FLUSH};
-cvox.ChromeVoxEventWatcher.processQueue_=function(){if(0!=cvox.ChromeVoxEventWatcher.events_.length){var a=cvox.ChromeVoxEventWatcher.events_,b=-1,c=0,d,e;for(e=0;d=a[e];e++)"focus"==d.type&&(b=e,c=d.timeStamp);cvox.ChromeVoxEventWatcher.events_=[];for(e=0;d=a[e];e++){var f=a[e-1]||{};!(e>=b||"LiveRegion"==d.type||"DOMSubtreeModified"==d.type)||"focus"==f.type&&"change"==d.type||cvox.ChromeVoxEventWatcher.events_.push(d)}cvox.ChromeVoxEventWatcher.events_.sort(function(a,b){return"LiveRegion"!=b.type&&
-"LiveRegion"==a.type||"DOMSubtreeModified"!=b.type&&"DOMSubtreeModified"==a.type?1:-1});a=(new Date).getTime();if(0<=b&&cvox.ChromeVoxEventWatcherUtil.shouldWaitToProcess(c,cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime,a))window.setTimeout(cvox.ChromeVoxEventWatcher.processQueue_,cvox.ChromeVoxEventWatcher.WAIT_TIME_MS_);else{for(e=0;d=cvox.ChromeVoxEventWatcher.events_[e];e++)cvox.ChromeVoxEventWatcher.handleEvent_(d),cvox.ChromeVoxEventWatcher.processing_=!0;cvox.ChromeVoxEventWatcher.processing_=
-!1;cvox.ChromeVoxEventWatcher.events_=[];cvox.ChromeVoxEventWatcher.firstUnprocessedEventTime=-1;cvox.ChromeVoxEventWatcher.queueProcessingScheduled_=!1;cvox.ChromeVoxEventWatcher.maybeCallReadyCallbacks_()}}};
-cvox.ChromeVoxEventWatcher.handleEvent_=function(a){switch(a.type){case "keydown":cvox.ChromeVoxEventWatcher.setUpTextHandler();if(cvox.ChromeVoxEventWatcher.currentTextControl&&(cvox.ChromeVoxEventWatcher.handleTextChanged(!0),(a=cvox.ChromeVoxEventWatcher.currentTextHandler)&&a.lastChangeDescribed))break;cvox.ChromeVoxEventWatcher.handleControlChanged(document.activeElement);break;case "keypress":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "focus":cvox.ChromeVoxEventWatcher.focusHandler(a);
-break;case "blur":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "change":cvox.ChromeVoxEventWatcher.changeHandler(a);break;case "select":cvox.ChromeVoxEventWatcher.setUpTextHandler();break;case "LiveRegion":cvox.ChromeVoxEventWatcher.speakLiveRegion_(a.assertive,a.navDescriptions);break;case "DOMSubtreeModified":cvox.ChromeVoxEventWatcher.subtreeModifiedHandler(a)}};
-cvox.ChromeVoxEventWatcher.setUpTimeHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentTimeHandler=a.constructor==HTMLInputElement&&a.type&&"time"==a.type?new cvox.ChromeVoxHTMLTimeWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentTimeHandler};
-cvox.ChromeVoxEventWatcher.setUpMediaHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentMediaHandler=a.constructor==HTMLVideoElement||a.constructor==HTMLAudioElement?new cvox.ChromeVoxHTMLMediaWidget(a,cvox.ChromeVox.tts):null;return null!=cvox.ChromeVoxEventWatcher.currentMediaHandler};
-cvox.ChromeVoxEventWatcher.setUpDateHandler_=function(){var a=document.activeElement;a&&a.hasAttribute&&"true"==a.getAttribute("aria-hidden")&&"true"!=a.getAttribute("chromevoxignoreariahidden")&&(a=null);cvox.ChromeVoxEventWatcher.currentDateHandler=a.constructor!=HTMLInputElement||!a.type||"date"!=a.type&&"month"!=a.type&&"week"!=a.type?null:new cvox.ChromeVoxHTMLDateWidget(a,cvox.ChromeVox.tts);return null!=cvox.ChromeVoxEventWatcher.currentDateHandler};cvox.Serializer=function(){};cvox.Serializer.prototype.storeOn=function(a){cvox.ChromeVox.storeOn(a);cvox.ChromeVoxEventWatcher.storeOn(a)};cvox.Serializer.prototype.readFrom=function(a){cvox.ChromeVox.readFrom(a);cvox.ChromeVoxEventWatcher.readFrom(a)};cvox.InitGlobals=function(){};
-cvox.InitGlobals.initGlobals=function(){cvox.ChromeVox.host||(cvox.ChromeVox.host=cvox.HostFactory.getHost());cvox.ChromeVox.tts=(new cvox.CompositeTts).add(cvox.HostFactory.getTts()).add(cvox.History.getInstance()).add(cvox.ConsoleTts.getInstance());cvox.ChromeVox.braille||(cvox.ChromeVox.braille=cvox.HostFactory.getBraille());cvox.ChromeVox.mathJax=cvox.HostFactory.getMathJax();cvox.ChromeVox.earcons=cvox.HostFactory.getEarcons();cvox.ChromeVox.msgs=cvox.HostFactory.getMsgs();cvox.ChromeVox.isActive=
-!0;cvox.ChromeVox.navigationManager=new cvox.NavigationManager;cvox.ChromeVox.navigationManager.updateIndicator();cvox.ChromeVox.syncToNode=cvox.ApiImplementation.syncToNode;cvox.ChromeVox.speakNode=cvox.ApiImplementation.speakNode;cvox.ChromeVox.serializer=new cvox.Serializer;cvox.ChromeVox.host.init();cvox.ChromeVoxEventWatcher.init(window);cvox.ChromeVox.executeUserCommand=function(a){cvox.ChromeVoxUserCommands.commands[a]()};cvox.ChromeVox.host.onPageLoad()};cvox.ChromeVoxInit={};cvox.ChromeVox.initTimeout_=100;cvox.ChromeVox.recallInit_=function(a){window.console.log(a+" Will try again in "+cvox.ChromeVox.initTimeout_+"ms");window.setTimeout(cvox.ChromeVox.initDocument,cvox.ChromeVox.initTimeout_);cvox.ChromeVox.initTimeout_*=2};
-cvox.ChromeVox.initDocument=function(){document.body?(cvox.ChromeVox.host=cvox.HostFactory.getHost(),cvox.ChromeVox.host.ttsLoaded()?(window.console.log("Starting ChromeVox."),cvox.InitGlobals.initGlobals(),window.disableChromeVox=function(){cvox.ChromeVox.host.killChromeVox()}):cvox.ChromeVox.recallInit_("ChromeVox not starting; waiting for TTS. "+document.location.href+".")):cvox.ChromeVox.recallInit_("ChromeVox not starting on unloaded page: "+document.location.href+".")};
-cvox.ChromeVox.reinit=function(){cvox.ChromeVox.host.reinit();cvox.ChromeVox.initDocument()};cvox.AndroidBraille=function(){};goog.inherits(cvox.AndroidBraille,cvox.AbstractBraille);cvox.AndroidBraille.prototype.write=function(a){accessibility.braille&&accessibility.braille(JSON.stringify(a.toJson()))};cvox.HostFactory.brailleConstructor=cvox.AndroidBraille;cvox.AndroidEarcons=function(){cvox.AbstractEarcons.call(this);this.audioMap={}};goog.inherits(cvox.AndroidEarcons,cvox.AbstractEarcons);cvox.AndroidEarcons.BASE_URL="https://ssl.gstatic.com/accessibility/javascript/android/earcons/";
-cvox.AndroidEarcons.prototype.playEarcon=function(a){if(this.earconsAvailable()){cvox.AndroidEarcons.superClass_.playEarcon.call(this,a);this.currentAudio=this.audioMap[a];this.currentAudio||(this.currentAudio=new Audio(cvox.AndroidEarcons.BASE_URL+this.getEarconFilename(a)),this.audioMap[a]=this.currentAudio);try{this.currentAudio.currentTime=0}catch(b){}this.currentAudio.paused&&this.currentAudio.play()}};
-cvox.AndroidEarcons.prototype.earconsAvailable=function(){return-1==navigator.userAgent.indexOf("Chrome")?!1:!0};cvox.HostFactory.earconsConstructor=cvox.AndroidEarcons;"undefined"!=typeof goog&&goog.provide&&(cvox.Api={},cvox.Api.Math={});
-(function(){function a(){d&&(d.port1.close(),d.port2.close(),d=null);d=new MessageChannel;window.postMessage("cvox.PortSetup",[d.port2],"*");d.port1.onmessage=function(a){"cvox.Disconnect"==a.data&&(d=null);try{var b=JSON.parse(a.data);b.id&&g[b.id]&&(g[b.id](b),delete g[b.id])}catch(c){}}}function b(a,b){var c=f;f++;void 0===a.args&&(a.args=[]);a.args=[c].concat(a.args);g[c]=b;d.port1.postMessage(JSON.stringify(a))}function c(a,c){var d=null;c&&c.endCallback&&(d=c.endCallback);b(a,d)}var d,e=!1,
-f=1,g={};window.cvox||(window.cvox={});var h=window.cvox,k=null;"undefined"!=typeof h.ApiImplementation&&(k=h.ApiImplementation);h.Api=function(){};h.Api.internalEnable=function(){e=!0;k||a();var b=document.createEvent("UIEvents");b.initEvent("chromeVoxLoaded",!0,!1);document.dispatchEvent(b)};h.Api.internalDisable=function(){e=!1;d=null;var a=document.createEvent("UIEvents");a.initEvent("chromeVoxUnloaded",!0,!1);document.dispatchEvent(a)};h.Api.isChromeVoxActive=function(){return k?e:!!d};h.Api.speak=
-function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(a,b,d):(a={cmd:"speak",args:[a,b,d]},c(a,d)))};h.Api.speakNode=function(a,b,d){h.Api.isChromeVoxActive()&&(k?k.speak(h.DomUtil.getName(a),b,d):(a={cmd:"speakNodeRef",args:[h.ApiUtils.makeNodeReference(a),b,d]},c(a,d)))};h.Api.stop=function(){if(h.Api.isChromeVoxActive())if(k)k.stop();else{var a={cmd:"stop"};d.port1.postMessage(JSON.stringify(a))}};h.Api.playEarcon=function(a){h.Api.isChromeVoxActive()&&(k?k.playEarcon(a):(a={cmd:"playEarcon",args:[a]},
-d.port1.postMessage(JSON.stringify(a))))};h.Api.syncToNode=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)k.syncToNode(a,b);else{var c={cmd:"syncToNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getCurrentNode=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.navigationManager.getCurrentNode()):b({cmd:"getCurrentNode"},function(b){a(h.ApiUtils.getNodeFromRef(b.currentNode))}))};h.Api.setSpeechForNode=function(a,b){h.Api.isChromeVoxActive()&&
-a&&b&&a.setAttribute("cvoxnodedesc",JSON.stringify(b))};h.Api.click=function(a,b){if(h.Api.isChromeVoxActive()&&a)if(k)h.DomUtil.clickElem(a,b,!0);else{var c={cmd:"clickNodeRef",args:[h.ApiUtils.makeNodeReference(a),b]};d.port1.postMessage(JSON.stringify(c))}};h.Api.getBuild=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.BuildInfo.build):b({cmd:"getBuild"},function(b){a(b.build)}))};h.Api.getVersion=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.ChromeVox.version+""):b({cmd:"getVersion"},function(b){a(b.version)}))};
-h.Api.getCvoxModifierKeys=function(a){h.Api.isChromeVoxActive()&&a&&(k?a(h.KeyUtil.cvoxModKeyCodes()):b({cmd:"getCvoxModKeys"},function(b){a(b.keyCodes)}))};h.Api.isKeyShortcut=function(a,c){if(c)if(h.Api.isChromeVoxActive()){var d=[37,39];if(!d.indexOf(a.keyCode)||a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)if(k){var e=h.KeyUtil.keyEventToKeySequence(a);c(h.ChromeVoxKbHandler.handlerKeyMap.hasKey(e))}else{var d={},f=["target","srcElement","currentTarget","view"];for(e in a)-1===f.indexOf(e)&&(d[e]=
-a[e]);e={cmd:"isKeyShortcut",args:[d]};b(e,function(a){c(a.isHandled)})}else c(!1)}else c(!1)};h.Api.setKeyEcho=function(a){h.Api.isChromeVoxActive()&&(k?k.setKeyEcho(a):(a={cmd:"setKeyEcho",args:[a]},d.port1.postMessage(JSON.stringify(a))))};h.Api.Math=function(){};h.Api.Math.defineRule=function(a,b,c,e,f){if(h.Api.isChromeVoxActive()){var g=Array.prototype.slice.call(arguments,4),g=[a,b,c,e].concat(g);k?k.Math.defineRule.apply(k.Math,g):(g={cmd:"Math.defineRule",args:g},d.port1.postMessage(JSON.stringify(g)))}};
-h.Api.internalEnable();h.NodeDescription=function(a,b,c,d){this.context=a?a:"";this.text=b?b:"";this.userValue=c?c:"";this.annotation=d?d:""}})();cvox.InitialSpeech={};window.INJECTED_AFTER_LOAD||(window.INJECTED_AFTER_LOAD=!1);
-cvox.InitialSpeech.speak=function(){var a=window.INJECTED_AFTER_LOAD;if(!cvox.ChromeVox.isActive||document.webkitHidden)a=!0;window.top==window&&document.title&&!a&&cvox.ChromeVox.tts.speak(document.title,cvox.AbstractTts.QUEUE_MODE_FLUSH);cvox.LiveRegions.init(new Date,cvox.AbstractTts.QUEUE_MODE_QUEUE,a);document.hasFocus()&&document.activeElement==document.body&&cvox.ChromeVox.navigationManager.syncToBeginning();if(cvox.ChromeVox.position[document.location.href]){var b=cvox.ChromeVox.position[document.location.href];
-cvox.ChromeVox.navigationManager.updateSelToArbitraryNode(document.elementFromPoint(b.x,b.y))}document.hasFocus()&&(a||cvox.ChromeVoxEventSuspender.withSuspendedEvents(function(){cvox.ChromeVox.navigationManager.finishNavCommand("",!0,cvox.AbstractTts.QUEUE_MODE_QUEUE)})())};cvox.AndroidKeyMap=function(){};
-cvox.AndroidKeyMap.getStringifiedKeyMap=function(){return cvox.ChromeVoxJSON.stringify({'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[17]}}':"stopSpeech",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[9]}}':"handleTab",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[9]}}':"handleTabPrev",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[38]}}':"backward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"forward",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[37]}}':"previousGranularity",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[39]}}':"nextGranularity",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[false],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[13]}}':"forceClickOnCurrentItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[false],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[40]}}':"readFromHere",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[85]}}':"readLinkURL",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[75]}}':"fullyDescribe",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[189]}}':"decreaseTtsPitch",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[187]}}':"increaseTtsPitch",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[219]}}':"decreaseTtsRate",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[221]}}':"increaseTtsRate",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[81]}}':"cyclePunctuationLevel",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[49]}}':"nextHeading1",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[49]}}':"previousHeading1",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[50]}}':"nextHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[50]}}':"previousHeading2",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[51]}}':"nextHeading3",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[51]}}':"previousHeading3",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[52]}}':"nextHeading4",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[52]}}':"previousHeading4",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[53]}}':"nextHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[53]}}':"previousHeading5",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[54]}}':"nextHeading6",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[54]}}':"previousHeading6",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[67]}}':"nextComboBox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[67]}}':"previousComboBox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[69]}}':"nextEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[69]}}':"previousEditText",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[70]}}':"nextFormField",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[70]}}':"previousFormField",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[71]}}':"nextGraphic",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[71]}}':"previousGraphic",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[72]}}':"nextHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[72]}}':"previousHeading",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[73]}}':"nextListItem",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[73]}}':"previousListItem",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[76]}}':"nextLink",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[76]}}':"previousLink",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[79]}}':"nextList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[79]}}':"previousList",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[82]}}':"nextRadio",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[82]}}':"previousRadio",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[84]}}':"nextTable",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[84]}}':"previousTable",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[66]}}':"nextButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[66]}}':"previousButton",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[88]}}':"nextCheckbox",
-'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[88]}}':"previousCheckbox",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[false],"metaKey":[false],"keyCode":[186]}}':"nextLandmark",'{"cvoxModifier":false,"stickyMode":false,"prefixKey":false,"keys":{"ctrlKey":[true],"searchKeyHeld":[false],"altKey":[true],"altGraphKey":[false],"shiftKey":[true],"metaKey":[false],"keyCode":[186]}}':"previousLandmark"})};cvox.MathSimpleStore=function(){cvox.MathStore.call(this)};goog.inherits(cvox.MathSimpleStore,cvox.MathStore);cvox.MathSimpleStore.prototype.defineRulesFromMappings=function(a,b,c){for(var d in c)for(var e in c[d]){var f=c[d][e],g='self::text() = "'+b+'"';this.defineRule(a,d+"."+e,'[t] "'+f+'"',"self::text()",g)}};cvox.MathCompoundStore=function(){this.subStores_={}};goog.addSingletonGetter(cvox.MathCompoundStore);
-cvox.MathCompoundStore.prototype.defineRules=function(a,b,c){var d=new cvox.MathSimpleStore;d.defineRulesFromMappings(a,b,c);this.subStores_[b]=d};cvox.MathCompoundStore.prototype.addSymbolRules=function(a){var b=cvox.MathSimpleStore.parseUnicode_(a.key);this.defineRules(a.key,b,a.mappings)};cvox.MathCompoundStore.prototype.addFunctionRules=function(a){var b=a.names;a=a.mappings;for(var c=0,d;d=b[c];c++)this.defineRules(d,d,a)};
-cvox.MathCompoundStore.prototype.lookupRule=function(a,b){var c=this.subStores_[a.textContent];if(c)return c.lookupRule(a,b)};cvox.MathCompoundStore.prototype.lookupString=function(a,b){var c=document.createTextNode(a);return(c=this.lookupRule(c,b))?c.action.components.map(function(a){return a.content.slice(1,-1)}).join(" "):""};
-cvox.MathCompoundStore.prototype.getDynamicConstraintValues=function(){var a={},b;for(b in this.subStores_){var c=this.subStores_[b].getDynamicConstraintValues(),d;for(d in c){var e=a[d];a[d]=e?cvox.MathUtil.union(e,c[d]):c[d]}}return a};cvox.MathSimpleStore.parseUnicode_=function(a){var b=parseInt(a,16);if(65536>b)return String.fromCharCode(b);b-=65536;a=(b>>10)+55296;b=(b&1023)+56320;return String.fromCharCode(a,b)};cvox.AndroidMathMap=function(){this.store_=cvox.MathCompoundStore.getInstance();cvox.AndroidMathMap.FUNCTION_MAPPINGS_.forEach(goog.bind(this.store_.addFunctionRules,this.store_));cvox.AndroidMathMap.SYMBOL_MAPPINGS_.forEach(goog.bind(this.store_.addSymbolRules,this.store_));this.store_.getDynamicConstraintValues()};
-cvox.AndroidMathMap.prototype.evaluate=function(a,b,c){var d="";b=cvox.MathStore.createDynamicConstraint(b,c);d=this.store_.lookupString(a,b);return new cvox.NavDescription({text:d?d:a})};
-cvox.AndroidMathMap.SYMBOL_MAPPINGS_=[{category:"Po",mappings:{"default":{"default":"exclamation mark"}},key:"0021"},{category:"Po",mappings:{"default":{"default":"quotation mark"}},key:"0022"},{category:"Po",mappings:{"default":{"default":"number sign",alternative:"hash","short":"number"}},key:"0023"},{category:"Sc",mappings:{"default":{"default":"dollar sign","short":"dollar"}},key:"0024"},{category:"Po",mappings:{"default":{"default":"percent sign","short":"percent"}},key:"0025"},{category:"Po",
-mappings:{"default":{"default":"ampersand"}},key:"0026"},{category:"Po",mappings:{"default":{"default":"apostrophe",alternative:"apostrophe quote"}},key:"0027"},{category:"Po",mappings:{"default":{"default":"asterisk"}},key:"002A"},{category:"Sm",mappings:{"default":{"default":"plus sign","short":"plus"}},key:"002B"},{category:"Po",mappings:{"default":{"default":"comma"}},key:"002C"},{category:"Pd",mappings:{"default":{"default":"hyphen minus","short":"minus"}},key:"002D"},{category:"Po",mappings:{"default":{"default":"full stop",
-alternative:"period"}},key:"002E"},{category:"Po",mappings:{"default":{"default":"solidus",alternative:"slash"}},key:"002F"},{category:"Po",mappings:{"default":{"default":"colon"}},key:"003A"},{category:"Po",mappings:{"default":{"default":"semicolon"}},key:"003B"},{category:"Sm",mappings:{"default":{"default":"less than sign","short":"less than"}},key:"003C"},{category:"Sm",mappings:{"default":{"default":"equals sign","short":"equals"}},key:"003D"},{category:"Sm",mappings:{"default":{"default":"greater than sign",
-"short":"greater than"}},key:"003E"},{category:"Po",mappings:{"default":{"default":"question mark"}},key:"003F"},{category:"Po",mappings:{"default":{"default":"commercial at","short":"at"}},key:"0040"},{category:"Po",mappings:{"default":{"default":"reverse solidus",alternative:"backslash"}},key:"005C"},{category:"Sk",mappings:{"default":{"default":"circumflex accent",alternative:"spacing circumflex","short":"hat"}},key:"005E"},{category:"Pc",mappings:{"default":{"default":"low line",alternative:"spacing underscore"}},
-key:"005F"},{category:"Sk",mappings:{"default":{"default":"grave accent",alternative:"spacing grave","short":"grave"}},key:"0060"},{category:"Sm",mappings:{"default":{"default":"vertical line",alternative:"vertical bar"}},key:"007C"},{category:"Sm",mappings:{"default":{"default":"tilde"}},key:"007E"},{category:"Po",mappings:{"default":{"default":"inverted exclamation mark"}},key:"00A1"},{category:"Sc",mappings:{"default":{"default":"cent sign","short":"cent"}},key:"00A2"},{category:"Sc",mappings:{"default":{"default":"pound sign",
-"short":"pound"}},key:"00A3"},{category:"Sc",mappings:{"default":{"default":"currency sign","short":"currency"}},key:"00A4"},{category:"Sc",mappings:{"default":{"default":"yen sign","short":"yen"}},key:"00A5"},{category:"So",mappings:{"default":{"default":"broken bar",alternative:"broken vertical bar"}},key:"00A6"},{category:"Po",mappings:{"default":{"default":"section sign","short":"section"}},key:"00A7"},{category:"Sk",mappings:{"default":{"default":"diaeresis",alternative:"spacing diaeresis","short":"double dot"}},
-key:"00A8"},{category:"So",mappings:{"default":{"default":"copyright sign","short":"copyright"}},key:"00A9"},{category:"Lo",mappings:{"default":{"default":"feminine ordinal indicator"}},key:"00AA"},{category:"Pi",mappings:{"default":{"default":"left pointing double angle quotation mark",alternative:"left pointing guillemet"}},key:"00AB"},{category:"Sm",mappings:{"default":{"default":"not sign","short":"not"}},key:"00AC"},{category:"So",mappings:{"default":{"default":"registered sign",alternative:"registered trade mark sign",
-"short":"registered"}},key:"00AE"},{category:"Sk",mappings:{"default":{"default":"macron",alternative:"spacing macron"}},key:"00AF"},{category:"So",mappings:{"default":{"default":"degree sign","short":"degree"}},key:"00B0"},{category:"Sm",mappings:{"default":{"default":"plus minus sign",alternative:"plus or minus sign","short":"plus minus"}},key:"00B1"},{category:"Sk",mappings:{"default":{"default":"acute accent",alternative:"spacing acute","short":"acute"}},key:"00B4"},{category:"Ll",mappings:{"default":{"default":"micro sign",
-"short":"micro"}},key:"00B5"},{category:"Po",mappings:{"default":{"default":"pilcrow sign",alternative:"paragraph sign","short":"pilcrow"}},key:"00B6"},{category:"Po",mappings:{"default":{"default":"middle dot"}},key:"00B7"},{category:"Sk",mappings:{"default":{"default":"cedilla",alternative:"spacing cedilla"}},key:"00B8"},{category:"Lo",mappings:{"default":{"default":"masculine ordinal indicator"}},key:"00BA"},{category:"Pf",mappings:{"default":{"default":"right pointing double angle quotation mark",
-alternative:"right pointing guillemet"}},key:"00BB"},{category:"Po",mappings:{"default":{"default":"inverted question mark"}},key:"00BF"},{category:"Sm",mappings:{"default":{"default":"multiplication sign","short":"multiplication"}},key:"00D7"},{category:"Sm",mappings:{"default":{"default":"division sign","short":"division"}},key:"00F7"},{category:"Sk",mappings:{"default":{"default":"breve",alternative:"spacing breve"}},key:"02D8"},{category:"Sk",mappings:{"default":{"default":"dot above",alternative:"spacing dot above"}},
-key:"02D9"},{category:"Sk",mappings:{"default":{"default":"ring above",alternative:"spacing ring above"}},key:"02DA"},{category:"Sk",mappings:{"default":{"default":"ogonek",alternative:"spacing ogonek"}},key:"02DB"},{category:"Sk",mappings:{"default":{"default":"small tilde",alternative:"spacing tilde"}},key:"02DC"},{category:"Sk",mappings:{"default":{"default":"double acute accent",alternative:"spacing double acute"}},key:"02DD"},{category:"Pd",mappings:{"default":{"default":"hyphen"}},key:"2010"},
-{category:"Pd",mappings:{"default":{"default":"non breaking hyphen"}},key:"2011"},{category:"Pd",mappings:{"default":{"default":"figure dash"}},key:"2012"},{category:"Pd",mappings:{"default":{"default":"en dash"}},key:"2013"},{category:"Pd",mappings:{"default":{"default":"em dash"}},key:"2014"},{category:"Pd",mappings:{"default":{"default":"horizontal bar",alternative:"quotation dash"}},key:"2015"},{category:"Po",mappings:{"default":{"default":"double vertical line",alternative:"double vertical bar"}},
-key:"2016"},{category:"Po",mappings:{"default":{"default":"double low line",alternative:"spacing double underscore"}},key:"2017"},{category:"Pi",mappings:{"default":{"default":"left single quotation mark",alternative:"single turned comma quotation mark"}},key:"2018"},{category:"Pf",mappings:{"default":{"default":"right single quotation mark",alternative:"single comma quotation mark"}},key:"2019"},{category:"Ps",mappings:{"default":{"default":"single low 9 quotation mark",alternative:"low single comma quotation mark"}},
-key:"201A"},{category:"Pi",mappings:{"default":{"default":"single high reversed 9 quotation mark",alternative:"single reversed comma quotation mark"}},key:"201B"},{category:"Pi",mappings:{"default":{"default":"left double quotation mark",alternative:"double turned comma quotation mark"}},key:"201C"},{category:"Pf",mappings:{"default":{"default":"right double quotation mark",alternative:"double comma quotation mark"}},key:"201D"},{category:"Ps",mappings:{"default":{"default":"double low 9 quotation mark",
-alternative:"low double comma quotation mark"}},key:"201E"},{category:"Pi",mappings:{"default":{"default":"double high reversed 9 quotation mark",alternative:"double reversed comma quotation mark"}},key:"201F"},{category:"Po",mappings:{"default":{"default":"dagger"}},key:"2020"},{category:"Po",mappings:{"default":{"default":"double dagger"}},key:"2021"},{category:"Po",mappings:{"default":{"default":"bullet"}},key:"2022"},{category:"Po",mappings:{"default":{"default":"triangular bullet"}},key:"2023"},
-{category:"Po",mappings:{"default":{"default":"one dot leader"}},key:"2024"},{category:"Po",mappings:{"default":{"default":"two dot leader"}},key:"2025"},{category:"Po",mappings:{"default":{"default":"horizontal ellipsis"}},key:"2026"},{category:"Po",mappings:{"default":{"default":"hyphenation point"}},key:"2027"},{category:"Po",mappings:{"default":{"default":"per mille sign","short":"per mille"}},key:"2030"},{category:"Po",mappings:{"default":{"default":"per ten thousand sign","short":"per ten thousand"}},
-key:"2031"},{category:"Po",mappings:{"default":{"default":"prime"}},key:"2032"},{category:"Po",mappings:{"default":{"default":"double prime"}},key:"2033"},{category:"Po",mappings:{"default":{"default":"triple prime"}},key:"2034"},{category:"Po",mappings:{"default":{"default":"reversed prime"}},key:"2035"},{category:"Po",mappings:{"default":{"default":"reversed double prime"}},key:"2036"},{category:"Po",mappings:{"default":{"default":"reversed triple prime"}},key:"2037"},{category:"Po",mappings:{"default":{"default":"caret"}},
-key:"2038"},{category:"Pi",mappings:{"default":{"default":"single left pointing angle quotation mark",alternative:"left pointing single guillemet"}},key:"2039"},{category:"Pf",mappings:{"default":{"default":"single right pointing angle quotation mark",alternative:"right pointing single guillemet"}},key:"203A"},{category:"Po",mappings:{"default":{"default":"reference mark"}},key:"203B"},{category:"Po",mappings:{"default":{"default":"double exclamation mark"}},key:"203C"},{category:"Po",mappings:{"default":{"default":"interrobang"}},
-key:"203D"},{category:"Po",mappings:{"default":{"default":"overline",alternative:"spacing overscore"}},key:"203E"},{category:"Pc",mappings:{"default":{"default":"undertie"}},key:"203F"},{category:"Pc",mappings:{"default":{"default":"character tie"}},key:"2040"},{category:"Po",mappings:{"default":{"default":"caret insertion point"}},key:"2041"},{category:"Po",mappings:{"default":{"default":"asterism"}},key:"2042"},{category:"Po",mappings:{"default":{"default":"hyphen bullet"}},key:"2043"},{category:"Sm",
-mappings:{"default":{"default":"fraction slash"}},key:"2044"},{category:"Po",mappings:{"default":{"default":"double question mark"}},key:"2047"},{category:"Po",mappings:{"default":{"default":"question exclamation mark"}},key:"2048"},{category:"Po",mappings:{"default":{"default":"exclamation question mark"}},key:"2049"},{category:"Po",mappings:{"default":{"default":"reversed pilcrow sign","short":"reversed pilcrow"}},key:"204B"},{category:"Po",mappings:{"default":{"default":"black leftwards bullet"}},
-key:"204C"},{category:"Po",mappings:{"default":{"default":"black rightwards bullet"}},key:"204D"},{category:"Po",mappings:{"default":{"default":"low asterisk"}},key:"204E"},{category:"Po",mappings:{"default":{"default":"reversed semicolon"}},key:"204F"},{category:"Po",mappings:{"default":{"default":"close up"}},key:"2050"},{category:"Po",mappings:{"default":{"default":"two asterisks aligned vertically"}},key:"2051"},{category:"Sm",mappings:{"default":{"default":"commercial minus sign","short":"commercial minus"}},
-key:"2052"},{category:"Po",mappings:{"default":{"default":"swung dash"}},key:"2053"},{category:"Pc",mappings:{"default":{"default":"inverted undertie"}},key:"2054"},{category:"Po",mappings:{"default":{"default":"flower punctuation mark"}},key:"2055"},{category:"Po",mappings:{"default":{"default":"three dot punctuation"}},key:"2056"},{category:"Po",mappings:{"default":{"default":"quadruple prime"}},key:"2057"},{category:"Po",mappings:{"default":{"default":"four dot punctuation"}},key:"2058"},{category:"Po",
-mappings:{"default":{"default":"five dot punctuation"}},key:"2059"},{category:"Po",mappings:{"default":{"default":"two dot punctuation"}},key:"205A"},{category:"Po",mappings:{"default":{"default":"four dot mark"}},key:"205B"},{category:"Po",mappings:{"default":{"default":"dotted cross"}},key:"205C"},{category:"Po",mappings:{"default":{"default":"tricolon"}},key:"205D"},{category:"Po",mappings:{"default":{"default":"vertical four dots"}},key:"205E"},{category:"Sm",mappings:{"default":{"default":"superscript plus sign",
-"short":"superscript plus"}},key:"207A"},{category:"Sm",mappings:{"default":{"default":"superscript minus",alternative:"superscript hyphen minus"}},key:"207B"},{category:"Sm",mappings:{"default":{"default":"superscript equals sign","short":"superscript equals"}},key:"207C"},{category:"Ps",mappings:{"default":{"default":"superscript left parenthesis",alternative:"superscript opening parenthesis"}},key:"207D"},{category:"Pe",mappings:{"default":{"default":"superscript right parenthesis",alternative:"superscript closing parenthesis"}},
-key:"207E"},{category:"Sm",mappings:{"default":{"default":"subscript plus sign","short":"subscript plus"}},key:"208A"},{category:"Sm",mappings:{"default":{"default":"subscript minus",alternative:"subscript hyphen minus"}},key:"208B"},{category:"Sm",mappings:{"default":{"default":"subscript equals sign","short":"subscript equals"}},key:"208C"},{category:"Ps",mappings:{"default":{"default":"subscript left parenthesis",alternative:"subscript opening parenthesis"}},key:"208D"},{category:"Pe",mappings:{"default":{"default":"subscript right parenthesis",
-alternative:"subscript closing parenthesis"}},key:"208E"},{category:"So",mappings:{"default":{"default":"property line"}},key:"214A"},{category:"Sm",mappings:{"default":{"default":"turned ampersand"}},key:"214B"},{category:"So",mappings:{"default":{"default":"per sign","short":"per"}},key:"214C"},{category:"So",mappings:{"default":{"default":"aktieselskab"}},key:"214D"},{category:"Ll",mappings:{"default":{"default":"turned small f"}},key:"214E"},{category:"Sm",mappings:{"default":{"default":"for all"}},
-key:"2200"},{category:"Sm",mappings:{"default":{"default":"complement"}},key:"2201"},{category:"Sm",mappings:{"default":{"default":"partial differential"}},key:"2202"},{category:"Sm",mappings:{"default":{"default":"there exists"}},key:"2203"},{category:"Sm",mappings:{"default":{"default":"there does not exist"}},key:"2204"},{category:"Sm",mappings:{"default":{"default":"empty set"}},key:"2205"},{category:"Sm",mappings:{"default":{"default":"increment"}},key:"2206"},{category:"Sm",mappings:{"default":{"default":"nabla"}},
-key:"2207"},{category:"Sm",mappings:{"default":{"default":"element of"}},key:"2208"},{category:"Sm",mappings:{"default":{"default":"not an element of"}},key:"2209"},{category:"Sm",mappings:{"default":{"default":"small element of"}},key:"220A"},{category:"Sm",mappings:{"default":{"default":"contains as member"}},key:"220B"},{category:"Sm",mappings:{"default":{"default":"does not contain as member"}},key:"220C"},{category:"Sm",mappings:{"default":{"default":"small contains as member"}},key:"220D"},
-{category:"Sm",mappings:{"default":{"default":"end of proof"}},key:"220E"},{category:"Sm",mappings:{"default":{"default":"n ary product"}},key:"220F"},{category:"Sm",mappings:{"default":{"default":"n ary coproduct"}},key:"2210"},{category:"Sm",mappings:{"default":{"default":"n ary summation"}},key:"2211"},{category:"Sm",mappings:{"default":{"default":"minus sign","short":"minus"}},key:"2212"},{category:"Sm",mappings:{"default":{"default":"minus or plus sign","short":"minus or plus"}},key:"2213"},
-{category:"Sm",mappings:{"default":{"default":"dot plus"}},key:"2214"},{category:"Sm",mappings:{"default":{"default":"division slash"}},key:"2215"},{category:"Sm",mappings:{"default":{"default":"set minus"}},key:"2216"},{category:"Sm",mappings:{"default":{"default":"asterisk operator"}},key:"2217"},{category:"Sm",mappings:{"default":{"default":"ring operator"}},key:"2218"},{category:"Sm",mappings:{"default":{"default":"bullet operator"}},key:"2219"},{category:"Sm",mappings:{"default":{"default":"square root"}},
-key:"221A"},{category:"Sm",mappings:{"default":{"default":"cube root"}},key:"221B"},{category:"Sm",mappings:{"default":{"default":"fourth root"}},key:"221C"},{category:"Sm",mappings:{"default":{"default":"proportional to"}},key:"221D"},{category:"Sm",mappings:{"default":{"default":"infinity"}},key:"221E"},{category:"Sm",mappings:{"default":{"default":"right angle"}},key:"221F"},{category:"Sm",mappings:{"default":{"default":"angle"}},key:"2220"},{category:"Sm",mappings:{"default":{"default":"measured angle"}},
-key:"2221"},{category:"Sm",mappings:{"default":{"default":"spherical angle"}},key:"2222"},{category:"Sm",mappings:{"default":{"default":"divides","short":"bar"}},key:"2223"},{category:"Sm",mappings:{"default":{"default":"does not divide"}},key:"2224"},{category:"Sm",mappings:{"default":{"default":"parallel to"}},key:"2225"},{category:"Sm",mappings:{"default":{"default":"not parallel to"}},key:"2226"},{category:"Sm",mappings:{"default":{"default":"logical and"}},key:"2227"},{category:"Sm",mappings:{"default":{"default":"logical or"}},
-key:"2228"},{category:"Sm",mappings:{"default":{"default":"intersection"}},key:"2229"},{category:"Sm",mappings:{"default":{"default":"union"}},key:"222A"},{category:"Sm",mappings:{"default":{"default":"integral"}},key:"222B"},{category:"Sm",mappings:{"default":{"default":"double integral"}},key:"222C"},{category:"Sm",mappings:{"default":{"default":"triple integral"}},key:"222D"},{category:"Sm",mappings:{"default":{"default":"contour integral"}},key:"222E"},{category:"Sm",mappings:{"default":{"default":"surface integral"}},
-key:"222F"},{category:"Sm",mappings:{"default":{"default":"volume integral"}},key:"2230"},{category:"Sm",mappings:{"default":{"default":"clockwise integral"}},key:"2231"},{category:"Sm",mappings:{"default":{"default":"clockwise contour integral"}},key:"2232"},{category:"Sm",mappings:{"default":{"default":"anticlockwise contour integral"}},key:"2233"},{category:"Sm",mappings:{"default":{"default":"therefore"}},key:"2234"},{category:"Sm",mappings:{"default":{"default":"because"}},key:"2235"},{category:"Sm",
-mappings:{"default":{"default":"ratio"}},key:"2236"},{category:"Sm",mappings:{"default":{"default":"proportion"}},key:"2237"},{category:"Sm",mappings:{"default":{"default":"dot minus"}},key:"2238"},{category:"Sm",mappings:{"default":{"default":"excess"}},key:"2239"},{category:"Sm",mappings:{"default":{"default":"geometric proportion"}},key:"223A"},{category:"Sm",mappings:{"default":{"default":"homothetic"}},key:"223B"},{category:"Sm",mappings:{"default":{"default":"tilde operator"}},key:"223C"},{category:"Sm",
-mappings:{"default":{"default":"reversed tilde"}},key:"223D"},{category:"Sm",mappings:{"default":{"default":"inverted lazy s"}},key:"223E"},{category:"Sm",mappings:{"default":{"default":"sine wave"}},key:"223F"},{category:"Sm",mappings:{"default":{"default":"wreath product"}},key:"2240"},{category:"Sm",mappings:{"default":{"default":"not tilde"}},key:"2241"},{category:"Sm",mappings:{"default":{"default":"minus tilde"}},key:"2242"},{category:"Sm",mappings:{"default":{"default":"asymptotically equal to"}},
-key:"2243"},{category:"Sm",mappings:{"default":{"default":"not asymptotically equal to"}},key:"2244"},{category:"Sm",mappings:{"default":{"default":"approximately equal to"}},key:"2245"},{category:"Sm",mappings:{"default":{"default":"approximately but not actually equal to"}},key:"2246"},{category:"Sm",mappings:{"default":{"default":"neither approximately nor actually equal to"}},key:"2247"},{category:"Sm",mappings:{"default":{"default":"almost equal to"}},key:"2248"},{category:"Sm",mappings:{"default":{"default":"not almost equal to"}},
-key:"2249"},{category:"Sm",mappings:{"default":{"default":"almost equal or equal to"}},key:"224A"},{category:"Sm",mappings:{"default":{"default":"triple tilde"}},key:"224B"},{category:"Sm",mappings:{"default":{"default":"all equal to"}},key:"224C"},{category:"Sm",mappings:{"default":{"default":"equivalent to"}},key:"224D"},{category:"Sm",mappings:{"default":{"default":"geometrically equivalent to"}},key:"224E"},{category:"Sm",mappings:{"default":{"default":"difference between"}},key:"224F"},{category:"Sm",
-mappings:{"default":{"default":"approaches the limit"}},key:"2250"},{category:"Sm",mappings:{"default":{"default":"geometrically equal to"}},key:"2251"},{category:"Sm",mappings:{"default":{"default":"approximately equal to or the image of"}},key:"2252"},{category:"Sm",mappings:{"default":{"default":"image of or approximately equal to"}},key:"2253"},{category:"Sm",mappings:{"default":{"default":"colon equals",alternative:"colon equal"}},key:"2254"},{category:"Sm",mappings:{"default":{"default":"equals colon",
-alternative:"equal colon"}},key:"2255"},{category:"Sm",mappings:{"default":{"default":"ring in equal to"}},key:"2256"},{category:"Sm",mappings:{"default":{"default":"ring equal to"}},key:"2257"},{category:"Sm",mappings:{"default":{"default":"corresponds to"}},key:"2258"},{category:"Sm",mappings:{"default":{"default":"estimates"}},key:"2259"},{category:"Sm",mappings:{"default":{"default":"equiangular to"}},key:"225A"},{category:"Sm",mappings:{"default":{"default":"star equals"}},key:"225B"},{category:"Sm",
-mappings:{"default":{"default":"delta equal to"}},key:"225C"},{category:"Sm",mappings:{"default":{"default":"equal to by definition"}},key:"225D"},{category:"Sm",mappings:{"default":{"default":"measured by"}},key:"225E"},{category:"Sm",mappings:{"default":{"default":"questioned equal to"}},key:"225F"},{category:"Sm",mappings:{"default":{"default":"not equal to"}},key:"2260"},{category:"Sm",mappings:{"default":{"default":"identical to"}},key:"2261"},{category:"Sm",mappings:{"default":{"default":"not identical to"}},
-key:"2262"},{category:"Sm",mappings:{"default":{"default":"strictly equivalent to"}},key:"2263"},{category:"Sm",mappings:{"default":{"default":"less than or equal to",alternative:"less than or equal to"}},key:"2264"},{category:"Sm",mappings:{"default":{"default":"greater than or equal to",alternative:"greater than or equal to"}},key:"2265"},{category:"Sm",mappings:{"default":{"default":"less than over equal to",alternative:"less than over equal to"}},key:"2266"},{category:"Sm",mappings:{"default":{"default":"greater than over equal to",
-alternative:"greater than over equal to"}},key:"2267"},{category:"Sm",mappings:{"default":{"default":"less than but not equal to",alternative:"less than but not equal to"}},key:"2268"},{category:"Sm",mappings:{"default":{"default":"greater than but not equal to",alternative:"greater than but not equal to"}},key:"2269"},{category:"Sm",mappings:{"default":{"default":"much less than",alternative:"much less than"}},key:"226A"},{category:"Sm",mappings:{"default":{"default":"much greater than",alternative:"much greater than"}},
-key:"226B"},{category:"Sm",mappings:{"default":{"default":"between"}},key:"226C"},{category:"Sm",mappings:{"default":{"default":"not equivalent to"}},key:"226D"},{category:"Sm",mappings:{"default":{"default":"not less than",alternative:"not less than"}},key:"226E"},{category:"Sm",mappings:{"default":{"default":"not greater than",alternative:"not greater than"}},key:"226F"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equal to",alternative:"neither less than nor equal to"}},
-key:"2270"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equal to",alternative:"neither greater than nor equal to"}},key:"2271"},{category:"Sm",mappings:{"default":{"default":"less than or equivalent to",alternative:"less than or equivalent to"}},key:"2272"},{category:"Sm",mappings:{"default":{"default":"greater than or equivalent to",alternative:"greater than or equivalent to"}},key:"2273"},{category:"Sm",mappings:{"default":{"default":"neither less than nor equivalent to",
-alternative:"neither less than nor equivalent to"}},key:"2274"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor equivalent to",alternative:"neither greater than nor equivalent to"}},key:"2275"},{category:"Sm",mappings:{"default":{"default":"less than or greater than",alternative:"less than or greater than"}},key:"2276"},{category:"Sm",mappings:{"default":{"default":"greater than or less than",alternative:"greater than or less than"}},key:"2277"},{category:"Sm",mappings:{"default":{"default":"neither less than nor greater than",
-alternative:"neither less than nor greater than"}},key:"2278"},{category:"Sm",mappings:{"default":{"default":"neither greater than nor less than",alternative:"neither greater than nor less than"}},key:"2279"},{category:"Sm",mappings:{"default":{"default":"precedes"}},key:"227A"},{category:"Sm",mappings:{"default":{"default":"succeeds"}},key:"227B"},{category:"Sm",mappings:{"default":{"default":"precedes or equal to"}},key:"227C"},{category:"Sm",mappings:{"default":{"default":"succeeds or equal to"}},
-key:"227D"},{category:"Sm",mappings:{"default":{"default":"precedes or equivalent to"}},key:"227E"},{category:"Sm",mappings:{"default":{"default":"succeeds or equivalent to"}},key:"227F"},{category:"Sm",mappings:{"default":{"default":"does not precede"}},key:"2280"},{category:"Sm",mappings:{"default":{"default":"does not succeed"}},key:"2281"},{category:"Sm",mappings:{"default":{"default":"subset of"}},key:"2282"},{category:"Sm",mappings:{"default":{"default":"superset of"}},key:"2283"},{category:"Sm",
-mappings:{"default":{"default":"not a subset of"}},key:"2284"},{category:"Sm",mappings:{"default":{"default":"not a superset of"}},key:"2285"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to"}},key:"2286"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to"}},key:"2287"},{category:"Sm",mappings:{"default":{"default":"neither a subset of nor equal to"}},key:"2288"},{category:"Sm",mappings:{"default":{"default":"neither a superset of nor equal to"}},key:"2289"},
-{category:"Sm",mappings:{"default":{"default":"subset of with not equal to",alternative:"subset of or not equal to","short":"subset of or not equal to"}},key:"228A"},{category:"Sm",mappings:{"default":{"default":"superset of with not equal to",alternative:"superset of or not equal to","short":"superset of or not equal to"}},key:"228B"},{category:"Sm",mappings:{"default":{"default":"multiset"}},key:"228C"},{category:"Sm",mappings:{"default":{"default":"multiset multiplication"}},key:"228D"},{category:"Sm",
-mappings:{"default":{"default":"multiset union"}},key:"228E"},{category:"Sm",mappings:{"default":{"default":"square image of"}},key:"228F"},{category:"Sm",mappings:{"default":{"default":"square original of"}},key:"2290"},{category:"Sm",mappings:{"default":{"default":"square image of or equal to"}},key:"2291"},{category:"Sm",mappings:{"default":{"default":"square original of or equal to"}},key:"2292"},{category:"Sm",mappings:{"default":{"default":"square cap"}},key:"2293"},{category:"Sm",mappings:{"default":{"default":"square cup"}},
-key:"2294"},{category:"Sm",mappings:{"default":{"default":"circled plus"}},key:"2295"},{category:"Sm",mappings:{"default":{"default":"circled minus"}},key:"2296"},{category:"Sm",mappings:{"default":{"default":"circled times"}},key:"2297"},{category:"Sm",mappings:{"default":{"default":"circled division slash"}},key:"2298"},{category:"Sm",mappings:{"default":{"default":"circled dot operator"}},key:"2299"},{category:"Sm",mappings:{"default":{"default":"circled ring operator"}},key:"229A"},{category:"Sm",
-mappings:{"default":{"default":"circled asterisk operator"}},key:"229B"},{category:"Sm",mappings:{"default":{"default":"circled equals"}},key:"229C"},{category:"Sm",mappings:{"default":{"default":"circled dash"}},key:"229D"},{category:"Sm",mappings:{"default":{"default":"squared plus"}},key:"229E"},{category:"Sm",mappings:{"default":{"default":"squared minus"}},key:"229F"},{category:"Sm",mappings:{"default":{"default":"squared times"}},key:"22A0"},{category:"Sm",mappings:{"default":{"default":"squared dot operator"}},
-key:"22A1"},{category:"Sm",mappings:{"default":{"default":"right tack"}},key:"22A2"},{category:"Sm",mappings:{"default":{"default":"left tack"}},key:"22A3"},{category:"Sm",mappings:{"default":{"default":"down tack"}},key:"22A4"},{category:"Sm",mappings:{"default":{"default":"up tack"}},key:"22A5"},{category:"Sm",mappings:{"default":{"default":"assertion"}},key:"22A6"},{category:"Sm",mappings:{"default":{"default":"models"}},key:"22A7"},{category:"Sm",mappings:{"default":{"default":"true"}},key:"22A8"},
-{category:"Sm",mappings:{"default":{"default":"forces"}},key:"22A9"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar right turnstile"}},key:"22AA"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double right turnstile"}},key:"22AB"},{category:"Sm",mappings:{"default":{"default":"does not prove"}},key:"22AC"},{category:"Sm",mappings:{"default":{"default":"not true"}},key:"22AD"},{category:"Sm",mappings:{"default":{"default":"does not force"}},key:"22AE"},{category:"Sm",
-mappings:{"default":{"default":"negated double vertical bar double right turnstile"}},key:"22AF"},{category:"Sm",mappings:{"default":{"default":"precedes under relation"}},key:"22B0"},{category:"Sm",mappings:{"default":{"default":"succeeds under relation"}},key:"22B1"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of"}},key:"22B2"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup"}},key:"22B3"},{category:"Sm",mappings:{"default":{"default":"normal subgroup of or equal to"}},
-key:"22B4"},{category:"Sm",mappings:{"default":{"default":"contains as normal subgroup or equal to"}},key:"22B5"},{category:"Sm",mappings:{"default":{"default":"original of"}},key:"22B6"},{category:"Sm",mappings:{"default":{"default":"image of"}},key:"22B7"},{category:"Sm",mappings:{"default":{"default":"multimap"}},key:"22B8"},{category:"Sm",mappings:{"default":{"default":"hermitian conjugate matrix"}},key:"22B9"},{category:"Sm",mappings:{"default":{"default":"intercalate"}},key:"22BA"},{category:"Sm",
-mappings:{"default":{"default":"xor"}},key:"22BB"},{category:"Sm",mappings:{"default":{"default":"nand"}},key:"22BC"},{category:"Sm",mappings:{"default":{"default":"nor"}},key:"22BD"},{category:"Sm",mappings:{"default":{"default":"right triangle"}},key:"22BF"},{category:"Sm",mappings:{"default":{"default":"n ary logical and"}},key:"22C0"},{category:"Sm",mappings:{"default":{"default":"n ary logical or"}},key:"22C1"},{category:"Sm",mappings:{"default":{"default":"n ary intersection"}},key:"22C2"},
-{category:"Sm",mappings:{"default":{"default":"n ary union"}},key:"22C3"},{category:"Sm",mappings:{"default":{"default":"diamond operator"}},key:"22C4"},{category:"Sm",mappings:{"default":{"default":"dot operator"}},key:"22C5"},{category:"Sm",mappings:{"default":{"default":"star operator"}},key:"22C6"},{category:"Sm",mappings:{"default":{"default":"division times"}},key:"22C7"},{category:"Sm",mappings:{"default":{"default":"bowtie"}},key:"22C8"},{category:"Sm",mappings:{"default":{"default":"left normal factor semidirect product"}},
-key:"22C9"},{category:"Sm",mappings:{"default":{"default":"right normal factor semidirect product"}},key:"22CA"},{category:"Sm",mappings:{"default":{"default":"left semidirect product"}},key:"22CB"},{category:"Sm",mappings:{"default":{"default":"right semidirect product"}},key:"22CC"},{category:"Sm",mappings:{"default":{"default":"reversed tilde equals"}},key:"22CD"},{category:"Sm",mappings:{"default":{"default":"curly logical or"}},key:"22CE"},{category:"Sm",mappings:{"default":{"default":"curly logical and"}},
-key:"22CF"},{category:"Sm",mappings:{"default":{"default":"double subset"}},key:"22D0"},{category:"Sm",mappings:{"default":{"default":"double superset"}},key:"22D1"},{category:"Sm",mappings:{"default":{"default":"double intersection"}},key:"22D2"},{category:"Sm",mappings:{"default":{"default":"double union"}},key:"22D3"},{category:"Sm",mappings:{"default":{"default":"pitchfork"}},key:"22D4"},{category:"Sm",mappings:{"default":{"default":"equal and parallel to"}},key:"22D5"},{category:"Sm",mappings:{"default":{"default":"less than with dot",
-alternative:"less than with dot","short":"less than dot"}},key:"22D6"},{category:"Sm",mappings:{"default":{"default":"greater than with dot",alternative:"greater than with dot","short":"greater than dot"}},key:"22D7"},{category:"Sm",mappings:{"default":{"default":"very much less than",alternative:"very much less than"}},key:"22D8"},{category:"Sm",mappings:{"default":{"default":"very much greater than",alternative:"very much greater than"}},key:"22D9"},{category:"Sm",mappings:{"default":{"default":"less than equal to or greater than",
-alternative:"less than equal to or greater than"}},key:"22DA"},{category:"Sm",mappings:{"default":{"default":"greater than equal to or less than",alternative:"greater than equal to or less than"}},key:"22DB"},{category:"Sm",mappings:{"default":{"default":"equal to or less than",alternative:"equal to or less than"}},key:"22DC"},{category:"Sm",mappings:{"default":{"default":"equal to or greater than",alternative:"equal to or greater than"}},key:"22DD"},{category:"Sm",mappings:{"default":{"default":"equal to or precedes"}},
-key:"22DE"},{category:"Sm",mappings:{"default":{"default":"equal to or succeeds"}},key:"22DF"},{category:"Sm",mappings:{"default":{"default":"does not precede or equal"}},key:"22E0"},{category:"Sm",mappings:{"default":{"default":"does not succeed or equal"}},key:"22E1"},{category:"Sm",mappings:{"default":{"default":"not square image of or equal to"}},key:"22E2"},{category:"Sm",mappings:{"default":{"default":"not square original of or equal to"}},key:"22E3"},{category:"Sm",mappings:{"default":{"default":"square image of or not equal to"}},
-key:"22E4"},{category:"Sm",mappings:{"default":{"default":"square original of or not equal to"}},key:"22E5"},{category:"Sm",mappings:{"default":{"default":"less than but not equivalent to",alternative:"less than but not equivalent to"}},key:"22E6"},{category:"Sm",mappings:{"default":{"default":"greater than but not equivalent to",alternative:"greater than but not equivalent to"}},key:"22E7"},{category:"Sm",mappings:{"default":{"default":"precedes but not equivalent to"}},key:"22E8"},{category:"Sm",
-mappings:{"default":{"default":"succeeds but not equivalent to"}},key:"22E9"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of"}},key:"22EA"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup"}},key:"22EB"},{category:"Sm",mappings:{"default":{"default":"not normal subgroup of or equal to"}},key:"22EC"},{category:"Sm",mappings:{"default":{"default":"does not contain as normal subgroup or equal"}},key:"22ED"},{category:"Sm",mappings:{"default":{"default":"vertical ellipsis",
-"short":"dot dot dot"}},key:"22EE"},{category:"Sm",mappings:{"default":{"default":"midline horizontal ellipsis","short":"dot dot dot"}},key:"22EF"},{category:"Sm",mappings:{"default":{"default":"up right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F0"},{category:"Sm",mappings:{"default":{"default":"down right diagonal ellipsis","short":"diagonal dot dot dot"}},key:"22F1"},{category:"Sm",mappings:{"default":{"default":"element of with long horizontal stroke"}},key:"22F2"},{category:"Sm",
-mappings:{"default":{"default":"element of with vertical bar at end of horizontal stroke"}},key:"22F3"},{category:"Sm",mappings:{"default":{"default":"small element of with vertical bar at end of horizontal stroke"}},key:"22F4"},{category:"Sm",mappings:{"default":{"default":"element of with dot above"}},key:"22F5"},{category:"Sm",mappings:{"default":{"default":"element of with overbar"}},key:"22F6"},{category:"Sm",mappings:{"default":{"default":"small element of with overbar"}},key:"22F7"},{category:"Sm",
-mappings:{"default":{"default":"element of with underbar"}},key:"22F8"},{category:"Sm",mappings:{"default":{"default":"element of with two horizontal strokes"}},key:"22F9"},{category:"Sm",mappings:{"default":{"default":"contains with long horizontal stroke"}},key:"22FA"},{category:"Sm",mappings:{"default":{"default":"contains with vertical bar at end of horizontal stroke"}},key:"22FB"},{category:"Sm",mappings:{"default":{"default":"small contains with vertical bar at end of horizontal stroke"}},key:"22FC"},
-{category:"Sm",mappings:{"default":{"default":"contains with overbar"}},key:"22FD"},{category:"Sm",mappings:{"default":{"default":"small contains with overbar"}},key:"22FE"},{category:"Sm",mappings:{"default":{"default":"z notation bag membership"}},key:"22FF"},{category:"So",mappings:{"default":{"default":"diameter sign","short":"diameter"}},key:"2300"},{category:"So",mappings:{"default":{"default":"house"}},key:"2302"},{category:"So",mappings:{"default":{"default":"projective"}},key:"2305"},{category:"So",
-mappings:{"default":{"default":"perspective"}},key:"2306"},{category:"So",mappings:{"default":{"default":"wavy line"}},key:"2307"},{category:"So",mappings:{"default":{"default":"reversed not sign","short":"reversed not"}},key:"2310"},{category:"So",mappings:{"default":{"default":"square lozenge"}},key:"2311"},{category:"So",mappings:{"default":{"default":"arc"}},key:"2312"},{category:"So",mappings:{"default":{"default":"segment"}},key:"2313"},{category:"So",mappings:{"default":{"default":"sector"}},
-key:"2314"},{category:"So",mappings:{"default":{"default":"heavy plus sign",alternative:"heavy plus","short":"bold plus"}},key:"2795"},{category:"So",mappings:{"default":{"default":"heavy minus sign",alternative:"heavy minus","short":"bold minus"}},key:"2796"},{category:"So",mappings:{"default":{"default":"heavy division sign",alternative:"heavy division","short":"bold division"}},key:"2797"},{category:"So",mappings:{"default":{"default":"curly loop"}},key:"27B0"},{category:"So",mappings:{"default":{"default":"double curly loop"}},
-key:"27BF"},{category:"Sm",mappings:{"default":{"default":"white triangle containing small white triangle"}},key:"27C1"},{category:"Sm",mappings:{"default":{"default":"perpendicular"}},key:"27C2"},{category:"Sm",mappings:{"default":{"default":"open subset"}},key:"27C3"},{category:"Sm",mappings:{"default":{"default":"open superset"}},key:"27C4"},{category:"Sm",mappings:{"default":{"default":"or with dot inside"}},key:"27C7"},{category:"Sm",mappings:{"default":{"default":"reverse solidus preceding subset"}},
-key:"27C8"},{category:"Sm",mappings:{"default":{"default":"superset preceding solidus"}},key:"27C9"},{category:"Sm",mappings:{"default":{"default":"vertical bar with horizontal stroke"}},key:"27CA"},{category:"Sm",mappings:{"default":{"default":"mathematical rising diagonal"}},key:"27CB"},{category:"Sm",mappings:{"default":{"default":"long division"}},key:"27CC"},{category:"Sm",mappings:{"default":{"default":"mathematical falling diagonal"}},key:"27CD"},{category:"Sm",mappings:{"default":{"default":"squared logical and"}},
-key:"27CE"},{category:"Sm",mappings:{"default":{"default":"squared logical or"}},key:"27CF"},{category:"Sm",mappings:{"default":{"default":"white diamond with centered dot"}},key:"27D0"},{category:"Sm",mappings:{"default":{"default":"and with dot"}},key:"27D1"},{category:"Sm",mappings:{"default":{"default":"element of opening upwards"}},key:"27D2"},{category:"Sm",mappings:{"default":{"default":"lower right corner with dot"}},key:"27D3"},{category:"Sm",mappings:{"default":{"default":"upper left corner with dot"}},
-key:"27D4"},{category:"Sm",mappings:{"default":{"default":"left outer join"}},key:"27D5"},{category:"Sm",mappings:{"default":{"default":"right outer join"}},key:"27D6"},{category:"Sm",mappings:{"default":{"default":"full outer join"}},key:"27D7"},{category:"Sm",mappings:{"default":{"default":"large up tack"}},key:"27D8"},{category:"Sm",mappings:{"default":{"default":"large down tack"}},key:"27D9"},{category:"Sm",mappings:{"default":{"default":"left and right double turnstile"}},key:"27DA"},{category:"Sm",
-mappings:{"default":{"default":"left and right tack"}},key:"27DB"},{category:"Sm",mappings:{"default":{"default":"left multimap"}},key:"27DC"},{category:"Sm",mappings:{"default":{"default":"long right tack"}},key:"27DD"},{category:"Sm",mappings:{"default":{"default":"long left tack"}},key:"27DE"},{category:"Sm",mappings:{"default":{"default":"up tack with circle above"}},key:"27DF"},{category:"Sm",mappings:{"default":{"default":"lozenge divided by horizontal rule"}},key:"27E0"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond"}},
-key:"27E1"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with leftwards tick"}},key:"27E2"},{category:"Sm",mappings:{"default":{"default":"white concave sided diamond with rightwards tick"}},key:"27E3"},{category:"Sm",mappings:{"default":{"default":"white square with leftwards tick"}},key:"27E4"},{category:"Sm",mappings:{"default":{"default":"white square with rightwards tick"}},key:"27E5"},{category:"Sm",mappings:{"default":{"default":"rising diagonal crossing falling diagonal"}},
-key:"292B"},{category:"Sm",mappings:{"default":{"default":"falling diagonal crossing rising diagonal"}},key:"292C"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar delimiter"}},key:"2980"},{category:"Sm",mappings:{"default":{"default":"z notation spot"}},key:"2981"},{category:"Sm",mappings:{"default":{"default":"z notation type colon"}},key:"2982"},{category:"Sm",mappings:{"default":{"default":"dotted fence"}},key:"2999"},{category:"Sm",mappings:{"default":{"default":"vertical zigzag line"}},
-key:"299A"},{category:"Sm",mappings:{"default":{"default":"reversed empty set"}},key:"29B0"},{category:"Sm",mappings:{"default":{"default":"empty set with overbar"}},key:"29B1"},{category:"Sm",mappings:{"default":{"default":"empty set with small circle above"}},key:"29B2"},{category:"Sm",mappings:{"default":{"default":"circle with horizontal bar"}},key:"29B5"},{category:"Sm",mappings:{"default":{"default":"circled vertical bar"}},key:"29B6"},{category:"Sm",mappings:{"default":{"default":"circled parallel"}},
-key:"29B7"},{category:"Sm",mappings:{"default":{"default":"circled reverse solidus"}},key:"29B8"},{category:"Sm",mappings:{"default":{"default":"circled perpendicular"}},key:"29B9"},{category:"Sm",mappings:{"default":{"default":"circle divided by horizontal bar and top half divided by vertical bar"}},key:"29BA"},{category:"Sm",mappings:{"default":{"default":"circle with superimposed x"}},key:"29BB"},{category:"Sm",mappings:{"default":{"default":"circled anticlockwise rotated division sign","short":"circled anticlockwise rotated division"}},
-key:"29BC"},{category:"Sm",mappings:{"default":{"default":"circled white bullet"}},key:"29BE"},{category:"Sm",mappings:{"default":{"default":"circled bullet"}},key:"29BF"},{category:"Sm",mappings:{"default":{"default":"circled less than"}},key:"29C0"},{category:"Sm",mappings:{"default":{"default":"circled greater than"}},key:"29C1"},{category:"Sm",mappings:{"default":{"default":"circle with small circle to the right"}},key:"29C2"},{category:"Sm",mappings:{"default":{"default":"circle with two horizontal strokes to the right"}},
-key:"29C3"},{category:"Sm",mappings:{"default":{"default":"squared rising diagonal slash"}},key:"29C4"},{category:"Sm",mappings:{"default":{"default":"squared falling diagonal slash"}},key:"29C5"},{category:"Sm",mappings:{"default":{"default":"squared asterisk"}},key:"29C6"},{category:"Sm",mappings:{"default":{"default":"squared small circle"}},key:"29C7"},{category:"Sm",mappings:{"default":{"default":"squared square"}},key:"29C8"},{category:"Sm",mappings:{"default":{"default":"two joined squares"}},
-key:"29C9"},{category:"Sm",mappings:{"default":{"default":"triangle with dot above"}},key:"29CA"},{category:"Sm",mappings:{"default":{"default":"triangle with underbar"}},key:"29CB"},{category:"Sm",mappings:{"default":{"default":"s in triangle"}},key:"29CC"},{category:"Sm",mappings:{"default":{"default":"triangle with serifs at bottom"}},key:"29CD"},{category:"Sm",mappings:{"default":{"default":"right triangle above left triangle"}},key:"29CE"},{category:"Sm",mappings:{"default":{"default":"left triangle beside vertical bar"}},
-key:"29CF"},{category:"Sm",mappings:{"default":{"default":"vertical bar beside right triangle"}},key:"29D0"},{category:"Sm",mappings:{"default":{"default":"bowtie with left half black"}},key:"29D1"},{category:"Sm",mappings:{"default":{"default":"bowtie with right half black"}},key:"29D2"},{category:"Sm",mappings:{"default":{"default":"black bowtie"}},key:"29D3"},{category:"Sm",mappings:{"default":{"default":"times with left half black"}},key:"29D4"},{category:"Sm",mappings:{"default":{"default":"times with right half black"}},
-key:"29D5"},{category:"Sm",mappings:{"default":{"default":"white hourglass"}},key:"29D6"},{category:"Sm",mappings:{"default":{"default":"black hourglass"}},key:"29D7"},{category:"Sm",mappings:{"default":{"default":"incomplete infinity"}},key:"29DC"},{category:"Sm",mappings:{"default":{"default":"tie over infinity"}},key:"29DD"},{category:"Sm",mappings:{"default":{"default":"infinity negated with vertical bar"}},key:"29DE"},{category:"Sm",mappings:{"default":{"default":"double ended multimap"}},key:"29DF"},
-{category:"Sm",mappings:{"default":{"default":"square with contoured outline"}},key:"29E0"},{category:"Sm",mappings:{"default":{"default":"increases as"}},key:"29E1"},{category:"Sm",mappings:{"default":{"default":"shuffle product"}},key:"29E2"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel"}},key:"29E3"},{category:"Sm",mappings:{"default":{"default":"equals sign and slanted parallel with tilde above"}},key:"29E4"},{category:"Sm",mappings:{"default":{"default":"identical to and slanted parallel"}},
-key:"29E5"},{category:"Sm",mappings:{"default":{"default":"gleich stark"}},key:"29E6"},{category:"Sm",mappings:{"default":{"default":"thermodynamic"}},key:"29E7"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with left half black"}},key:"29E8"},{category:"Sm",mappings:{"default":{"default":"down pointing triangle with right half black"}},key:"29E9"},{category:"Sm",mappings:{"default":{"default":"black lozenge"}},key:"29EB"},{category:"Sm",mappings:{"default":{"default":"error barred white square"}},
-key:"29EE"},{category:"Sm",mappings:{"default":{"default":"error barred black square"}},key:"29EF"},{category:"Sm",mappings:{"default":{"default":"error barred white diamond"}},key:"29F0"},{category:"Sm",mappings:{"default":{"default":"error barred black diamond"}},key:"29F1"},{category:"Sm",mappings:{"default":{"default":"error barred white circle"}},key:"29F2"},{category:"Sm",mappings:{"default":{"default":"error barred black circle"}},key:"29F3"},{category:"Sm",mappings:{"default":{"default":"rule delayed"}},
-key:"29F4"},{category:"Sm",mappings:{"default":{"default":"reverse solidus operator"}},key:"29F5"},{category:"Sm",mappings:{"default":{"default":"solidus with overbar"}},key:"29F6"},{category:"Sm",mappings:{"default":{"default":"reverse solidus with horizontal stroke"}},key:"29F7"},{category:"Sm",mappings:{"default":{"default":"big solidus"}},key:"29F8"},{category:"Sm",mappings:{"default":{"default":"big reverse solidus"}},key:"29F9"},{category:"Sm",mappings:{"default":{"default":"double plus"}},
-key:"29FA"},{category:"Sm",mappings:{"default":{"default":"triple plus"}},key:"29FB"},{category:"Sm",mappings:{"default":{"default":"tiny"}},key:"29FE"},{category:"Sm",mappings:{"default":{"default":"miny"}},key:"29FF"},{category:"Sm",mappings:{"default":{"default":"n ary circled dot operator"}},key:"2A00"},{category:"Sm",mappings:{"default":{"default":"n ary circled plus operator"}},key:"2A01"},{category:"Sm",mappings:{"default":{"default":"n ary circled times operator"}},key:"2A02"},{category:"Sm",
-mappings:{"default":{"default":"n ary union operator with dot"}},key:"2A03"},{category:"Sm",mappings:{"default":{"default":"n ary union operator with plus"}},key:"2A04"},{category:"Sm",mappings:{"default":{"default":"n ary square intersection operator"}},key:"2A05"},{category:"Sm",mappings:{"default":{"default":"n ary square union operator"}},key:"2A06"},{category:"Sm",mappings:{"default":{"default":"two logical and operator"}},key:"2A07"},{category:"Sm",mappings:{"default":{"default":"two logical or operator"}},
-key:"2A08"},{category:"Sm",mappings:{"default":{"default":"n ary times operator"}},key:"2A09"},{category:"Sm",mappings:{"default":{"default":"modulo two sum"}},key:"2A0A"},{category:"Sm",mappings:{"default":{"default":"summation with integral"}},key:"2A0B"},{category:"Sm",mappings:{"default":{"default":"quadruple integral operator"}},key:"2A0C"},{category:"Sm",mappings:{"default":{"default":"finite part integral"}},key:"2A0D"},{category:"Sm",mappings:{"default":{"default":"integral with double stroke"}},
-key:"2A0E"},{category:"Sm",mappings:{"default":{"default":"integral average with slash"}},key:"2A0F"},{category:"Sm",mappings:{"default":{"default":"circulation function"}},key:"2A10"},{category:"Sm",mappings:{"default":{"default":"anticlockwise integration"}},key:"2A11"},{category:"Sm",mappings:{"default":{"default":"line integration with rectangular path around pole"}},key:"2A12"},{category:"Sm",mappings:{"default":{"default":"line integration with semicircular path around pole"}},key:"2A13"},{category:"Sm",
-mappings:{"default":{"default":"line integration not including the pole"}},key:"2A14"},{category:"Sm",mappings:{"default":{"default":"integral around a point operator"}},key:"2A15"},{category:"Sm",mappings:{"default":{"default":"quaternion integral operator"}},key:"2A16"},{category:"Sm",mappings:{"default":{"default":"integral with times sign","short":"integral with times"}},key:"2A18"},{category:"Sm",mappings:{"default":{"default":"integral with intersection"}},key:"2A19"},{category:"Sm",mappings:{"default":{"default":"integral with union"}},
-key:"2A1A"},{category:"Sm",mappings:{"default":{"default":"integral with overbar"}},key:"2A1B"},{category:"Sm",mappings:{"default":{"default":"integral with underbar"}},key:"2A1C"},{category:"Sm",mappings:{"default":{"default":"join"}},key:"2A1D"},{category:"Sm",mappings:{"default":{"default":"large left triangle operator"}},key:"2A1E"},{category:"Sm",mappings:{"default":{"default":"z notation schema composition"}},key:"2A1F"},{category:"Sm",mappings:{"default":{"default":"z notation schema piping"}},
-key:"2A20"},{category:"Sm",mappings:{"default":{"default":"z notation schema projection"}},key:"2A21"},{category:"Sm",mappings:{"default":{"default":"plus sign with small circle above","short":"plus with circle above"}},key:"2A22"},{category:"Sm",mappings:{"default":{"default":"plus sign with circumflex accent above","short":"plus hat"}},key:"2A23"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde above","short":"plus tilde"}},key:"2A24"},{category:"Sm",mappings:{"default":{"default":"plus sign with dot below",
-"short":"plus underdot"}},key:"2A25"},{category:"Sm",mappings:{"default":{"default":"plus sign with tilde below"}},key:"2A26"},{category:"Sm",mappings:{"default":{"default":"plus sign with subscript two"}},key:"2A27"},{category:"Sm",mappings:{"default":{"default":"plus sign with black triangle"}},key:"2A28"},{category:"Sm",mappings:{"default":{"default":"minus sign with comma above"}},key:"2A29"},{category:"Sm",mappings:{"default":{"default":"minus sign with dot below"}},key:"2A2A"},{category:"Sm",
-mappings:{"default":{"default":"minus sign with falling dots"}},key:"2A2B"},{category:"Sm",mappings:{"default":{"default":"minus sign with rising dots"}},key:"2A2C"},{category:"Sm",mappings:{"default":{"default":"plus sign in left half circle"}},key:"2A2D"},{category:"Sm",mappings:{"default":{"default":"plus sign in right half circle"}},key:"2A2E"},{category:"Sm",mappings:{"default":{"default":"vector or cross product"}},key:"2A2F"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with dot above"}},
-key:"2A30"},{category:"Sm",mappings:{"default":{"default":"multiplication sign with underbar"}},key:"2A31"},{category:"Sm",mappings:{"default":{"default":"semidirect product with bottom closed"}},key:"2A32"},{category:"Sm",mappings:{"default":{"default":"smash product"}},key:"2A33"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in left half circle"}},key:"2A34"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in right half circle"}},key:"2A35"},{category:"Sm",
-mappings:{"default":{"default":"circled multiplication sign with circumflex accent"}},key:"2A36"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in double circle"}},key:"2A37"},{category:"Sm",mappings:{"default":{"default":"circled division sign","short":"circled division"}},key:"2A38"},{category:"Sm",mappings:{"default":{"default":"plus sign in triangle"}},key:"2A39"},{category:"Sm",mappings:{"default":{"default":"minus sign in triangle"}},key:"2A3A"},{category:"Sm",mappings:{"default":{"default":"multiplication sign in triangle"}},
-key:"2A3B"},{category:"Sm",mappings:{"default":{"default":"interior product"}},key:"2A3C"},{category:"Sm",mappings:{"default":{"default":"righthand interior product"}},key:"2A3D"},{category:"Sm",mappings:{"default":{"default":"z notation relational composition"}},key:"2A3E"},{category:"Sm",mappings:{"default":{"default":"amalgamation or coproduct"}},key:"2A3F"},{category:"Sm",mappings:{"default":{"default":"intersection with dot"}},key:"2A40"},{category:"Sm",mappings:{"default":{"default":"union with minus sign",
-"short":"union with minus"}},key:"2A41"},{category:"Sm",mappings:{"default":{"default":"union with overbar"}},key:"2A42"},{category:"Sm",mappings:{"default":{"default":"intersection with overbar"}},key:"2A43"},{category:"Sm",mappings:{"default":{"default":"intersection with logical and"}},key:"2A44"},{category:"Sm",mappings:{"default":{"default":"union with logical or"}},key:"2A45"},{category:"Sm",mappings:{"default":{"default":"union above intersection"}},key:"2A46"},{category:"Sm",mappings:{"default":{"default":"intersection above union"}},
-key:"2A47"},{category:"Sm",mappings:{"default":{"default":"union above bar above intersection"}},key:"2A48"},{category:"Sm",mappings:{"default":{"default":"intersection above bar above union"}},key:"2A49"},{category:"Sm",mappings:{"default":{"default":"union beside and joined with union"}},key:"2A4A"},{category:"Sm",mappings:{"default":{"default":"intersection beside and joined with intersection"}},key:"2A4B"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs"}},key:"2A4C"},
-{category:"Sm",mappings:{"default":{"default":"closed intersection with serifs"}},key:"2A4D"},{category:"Sm",mappings:{"default":{"default":"double square intersection"}},key:"2A4E"},{category:"Sm",mappings:{"default":{"default":"double square union"}},key:"2A4F"},{category:"Sm",mappings:{"default":{"default":"closed union with serifs and smash product"}},key:"2A50"},{category:"Sm",mappings:{"default":{"default":"logical and with dot above"}},key:"2A51"},{category:"Sm",mappings:{"default":{"default":"logical or with dot above"}},
-key:"2A52"},{category:"Sm",mappings:{"default":{"default":"double logical and"}},key:"2A53"},{category:"Sm",mappings:{"default":{"default":"double logical or"}},key:"2A54"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical and"}},key:"2A55"},{category:"Sm",mappings:{"default":{"default":"two intersecting logical or"}},key:"2A56"},{category:"Sm",mappings:{"default":{"default":"sloping large or"}},key:"2A57"},{category:"Sm",mappings:{"default":{"default":"sloping large and"}},
-key:"2A58"},{category:"Sm",mappings:{"default":{"default":"logical or overlapping logical and"}},key:"2A59"},{category:"Sm",mappings:{"default":{"default":"logical and with middle stem"}},key:"2A5A"},{category:"Sm",mappings:{"default":{"default":"logical or with middle stem"}},key:"2A5B"},{category:"Sm",mappings:{"default":{"default":"logical and with horizontal dash"}},key:"2A5C"},{category:"Sm",mappings:{"default":{"default":"logical or with horizontal dash"}},key:"2A5D"},{category:"Sm",mappings:{"default":{"default":"logical and with double overbar"}},
-key:"2A5E"},{category:"Sm",mappings:{"default":{"default":"logical and with underbar"}},key:"2A5F"},{category:"Sm",mappings:{"default":{"default":"logical and with double underbar"}},key:"2A60"},{category:"Sm",mappings:{"default":{"default":"small vee with underbar"}},key:"2A61"},{category:"Sm",mappings:{"default":{"default":"logical or with double overbar"}},key:"2A62"},{category:"Sm",mappings:{"default":{"default":"logical or with double underbar"}},key:"2A63"},{category:"Sm",mappings:{"default":{"default":"z notation domain antirestriction"}},
-key:"2A64"},{category:"Sm",mappings:{"default":{"default":"z notation range antirestriction"}},key:"2A65"},{category:"Sm",mappings:{"default":{"default":"equals sign with dot below"}},key:"2A66"},{category:"Sm",mappings:{"default":{"default":"identical with dot above"}},key:"2A67"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with double vertical stroke"}},key:"2A68"},{category:"Sm",mappings:{"default":{"default":"triple horizontal bar with triple vertical stroke"}},key:"2A69"},
-{category:"Sm",mappings:{"default":{"default":"tilde operator with dot above"}},key:"2A6A"},{category:"Sm",mappings:{"default":{"default":"tilde operator with rising dots"}},key:"2A6B"},{category:"Sm",mappings:{"default":{"default":"similar minus similar"}},key:"2A6C"},{category:"Sm",mappings:{"default":{"default":"congruent with dot above"}},key:"2A6D"},{category:"Sm",mappings:{"default":{"default":"equals with asterisk"}},key:"2A6E"},{category:"Sm",mappings:{"default":{"default":"almost equal to with circumflex accent",
-"short":"almost equal hat"}},key:"2A6F"},{category:"Sm",mappings:{"default":{"default":"approximately equal or equal to"}},key:"2A70"},{category:"Sm",mappings:{"default":{"default":"equals sign above plus sign","short":"equals above plus"}},key:"2A71"},{category:"Sm",mappings:{"default":{"default":"plus sign above equals sign","short":"plus above equals"}},key:"2A72"},{category:"Sm",mappings:{"default":{"default":"equals sign above tilde operator","short":"equals above tilde operator"}},key:"2A73"},
-{category:"Sm",mappings:{"default":{"default":"double colon equal"}},key:"2A74"},{category:"Sm",mappings:{"default":{"default":"two consecutive equals signs","short":"two consecutive equals"}},key:"2A75"},{category:"Sm",mappings:{"default":{"default":"three consecutive equals signs","short":"three consecutive equals"}},key:"2A76"},{category:"Sm",mappings:{"default":{"default":"equals sign with two dots above and two dots below"}},key:"2A77"},{category:"Sm",mappings:{"default":{"default":"equivalent with four dots above"}},
-key:"2A78"},{category:"Sm",mappings:{"default":{"default":"less than with circle inside"}},key:"2A79"},{category:"Sm",mappings:{"default":{"default":"greater than with circle inside"}},key:"2A7A"},{category:"Sm",mappings:{"default":{"default":"less than with question mark above"}},key:"2A7B"},{category:"Sm",mappings:{"default":{"default":"greater than with question mark above"}},key:"2A7C"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to"}},key:"2A7D"},{category:"Sm",
-mappings:{"default":{"default":"greater than or slanted equal to"}},key:"2A7E"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot inside"}},key:"2A7F"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot inside"}},key:"2A80"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above"}},key:"2A81"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above"}},
-key:"2A82"},{category:"Sm",mappings:{"default":{"default":"less than or slanted equal to with dot above right"}},key:"2A83"},{category:"Sm",mappings:{"default":{"default":"greater than or slanted equal to with dot above left"}},key:"2A84"},{category:"Sm",mappings:{"default":{"default":"less than or approximate"}},key:"2A85"},{category:"Sm",mappings:{"default":{"default":"greater than or approximate"}},key:"2A86"},{category:"Sm",mappings:{"default":{"default":"less than and single line not equal to"}},
-key:"2A87"},{category:"Sm",mappings:{"default":{"default":"greater than and single line not equal to"}},key:"2A88"},{category:"Sm",mappings:{"default":{"default":"less than and not approximate"}},key:"2A89"},{category:"Sm",mappings:{"default":{"default":"greater than and not approximate"}},key:"2A8A"},{category:"Sm",mappings:{"default":{"default":"less than above double line equal above greater than"}},key:"2A8B"},{category:"Sm",mappings:{"default":{"default":"greater than above double line equal above less than"}},
-key:"2A8C"},{category:"Sm",mappings:{"default":{"default":"less than above similar or equal"}},key:"2A8D"},{category:"Sm",mappings:{"default":{"default":"greater than above similar or equal"}},key:"2A8E"},{category:"Sm",mappings:{"default":{"default":"less than above similar above greater than"}},key:"2A8F"},{category:"Sm",mappings:{"default":{"default":"greater than above similar above less than"}},key:"2A90"},{category:"Sm",mappings:{"default":{"default":"less than above greater than above double line equal"}},
-key:"2A91"},{category:"Sm",mappings:{"default":{"default":"greater than above less than above double line equal"}},key:"2A92"},{category:"Sm",mappings:{"default":{"default":"less than above slanted equal above greater than above slanted equal"}},key:"2A93"},{category:"Sm",mappings:{"default":{"default":"greater than above slanted equal above less than above slanted equal"}},key:"2A94"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than"}},key:"2A95"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than"}},
-key:"2A96"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or less than with dot inside"}},key:"2A97"},{category:"Sm",mappings:{"default":{"default":"slanted equal to or greater than with dot inside"}},key:"2A98"},{category:"Sm",mappings:{"default":{"default":"double line equal to or less than"}},key:"2A99"},{category:"Sm",mappings:{"default":{"default":"double line equal to or greater than"}},key:"2A9A"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or less than"}},
-key:"2A9B"},{category:"Sm",mappings:{"default":{"default":"double line slanted equal to or greater than"}},key:"2A9C"},{category:"Sm",mappings:{"default":{"default":"similar or less than"}},key:"2A9D"},{category:"Sm",mappings:{"default":{"default":"similar or greater than"}},key:"2A9E"},{category:"Sm",mappings:{"default":{"default":"similar above less than above equals sign"}},key:"2A9F"},{category:"Sm",mappings:{"default":{"default":"similar above greater than above equals sign"}},key:"2AA0"},{category:"Sm",
-mappings:{"default":{"default":"double nested less than"}},key:"2AA1"},{category:"Sm",mappings:{"default":{"default":"double nested greater than"}},key:"2AA2"},{category:"Sm",mappings:{"default":{"default":"double nested less than with underbar"}},key:"2AA3"},{category:"Sm",mappings:{"default":{"default":"greater than overlapping less than"}},key:"2AA4"},{category:"Sm",mappings:{"default":{"default":"greater than beside less than"}},key:"2AA5"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve"}},
-key:"2AA6"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve"}},key:"2AA7"},{category:"Sm",mappings:{"default":{"default":"less than closed by curve above slanted equal"}},key:"2AA8"},{category:"Sm",mappings:{"default":{"default":"greater than closed by curve above slanted equal"}},key:"2AA9"},{category:"Sm",mappings:{"default":{"default":"smaller than"}},key:"2AAA"},{category:"Sm",mappings:{"default":{"default":"larger than"}},key:"2AAB"},{category:"Sm",mappings:{"default":{"default":"smaller than or equal to"}},
-key:"2AAC"},{category:"Sm",mappings:{"default":{"default":"larger than or equal to"}},key:"2AAD"},{category:"Sm",mappings:{"default":{"default":"equals sign with bumpy above"}},key:"2AAE"},{category:"Sm",mappings:{"default":{"default":"precedes above single line equals sign"}},key:"2AAF"},{category:"Sm",mappings:{"default":{"default":"succeeds above single line equals sign"}},key:"2AB0"},{category:"Sm",mappings:{"default":{"default":"precedes above single line not equal to"}},key:"2AB1"},{category:"Sm",
-mappings:{"default":{"default":"succeeds above single line not equal to"}},key:"2AB2"},{category:"Sm",mappings:{"default":{"default":"precedes above equals sign"}},key:"2AB3"},{category:"Sm",mappings:{"default":{"default":"succeeds above equals sign"}},key:"2AB4"},{category:"Sm",mappings:{"default":{"default":"precedes above not equal to"}},key:"2AB5"},{category:"Sm",mappings:{"default":{"default":"succeeds above not equal to"}},key:"2AB6"},{category:"Sm",mappings:{"default":{"default":"precedes above almost equal to"}},
-key:"2AB7"},{category:"Sm",mappings:{"default":{"default":"succeeds above almost equal to"}},key:"2AB8"},{category:"Sm",mappings:{"default":{"default":"precedes above not almost equal to"}},key:"2AB9"},{category:"Sm",mappings:{"default":{"default":"succeeds above not almost equal to"}},key:"2ABA"},{category:"Sm",mappings:{"default":{"default":"double precedes"}},key:"2ABB"},{category:"Sm",mappings:{"default":{"default":"double succeeds"}},key:"2ABC"},{category:"Sm",mappings:{"default":{"default":"subset with dot"}},
-key:"2ABD"},{category:"Sm",mappings:{"default":{"default":"superset with dot"}},key:"2ABE"},{category:"Sm",mappings:{"default":{"default":"subset with plus sign below"}},key:"2ABF"},{category:"Sm",mappings:{"default":{"default":"superset with plus sign below"}},key:"2AC0"},{category:"Sm",mappings:{"default":{"default":"subset with multiplication sign below"}},key:"2AC1"},{category:"Sm",mappings:{"default":{"default":"superset with multiplication sign below"}},key:"2AC2"},{category:"Sm",mappings:{"default":{"default":"subset of or equal to with dot above"}},
-key:"2AC3"},{category:"Sm",mappings:{"default":{"default":"superset of or equal to with dot above"}},key:"2AC4"},{category:"Sm",mappings:{"default":{"default":"subset of above equals sign"}},key:"2AC5"},{category:"Sm",mappings:{"default":{"default":"superset of above equals sign"}},key:"2AC6"},{category:"Sm",mappings:{"default":{"default":"subset of above tilde operator"}},key:"2AC7"},{category:"Sm",mappings:{"default":{"default":"superset of above tilde operator"}},key:"2AC8"},{category:"Sm",mappings:{"default":{"default":"subset of above almost equal to"}},
-key:"2AC9"},{category:"Sm",mappings:{"default":{"default":"superset of above almost equal to"}},key:"2ACA"},{category:"Sm",mappings:{"default":{"default":"subset of above not equal to"}},key:"2ACB"},{category:"Sm",mappings:{"default":{"default":"superset of above not equal to"}},key:"2ACC"},{category:"Sm",mappings:{"default":{"default":"square left open box operator"}},key:"2ACD"},{category:"Sm",mappings:{"default":{"default":"square right open box operator"}},key:"2ACE"},{category:"Sm",mappings:{"default":{"default":"closed subset"}},
-key:"2ACF"},{category:"Sm",mappings:{"default":{"default":"closed superset"}},key:"2AD0"},{category:"Sm",mappings:{"default":{"default":"closed subset or equal to"}},key:"2AD1"},{category:"Sm",mappings:{"default":{"default":"closed superset or equal to"}},key:"2AD2"},{category:"Sm",mappings:{"default":{"default":"subset above superset"}},key:"2AD3"},{category:"Sm",mappings:{"default":{"default":"superset above subset"}},key:"2AD4"},{category:"Sm",mappings:{"default":{"default":"subset above subset"}},
-key:"2AD5"},{category:"Sm",mappings:{"default":{"default":"superset above superset"}},key:"2AD6"},{category:"Sm",mappings:{"default":{"default":"superset beside subset"}},key:"2AD7"},{category:"Sm",mappings:{"default":{"default":"superset beside and joined by dash with subset"}},key:"2AD8"},{category:"Sm",mappings:{"default":{"default":"element of opening downwards"}},key:"2AD9"},{category:"Sm",mappings:{"default":{"default":"pitchfork with tee top"}},key:"2ADA"},{category:"Sm",mappings:{"default":{"default":"transversal intersection"}},
-key:"2ADB"},{category:"Sm",mappings:{"default":{"default":"forking"}},key:"2ADC"},{category:"Sm",mappings:{"default":{"default":"nonforking"}},key:"2ADD"},{category:"Sm",mappings:{"default":{"default":"short left tack"}},key:"2ADE"},{category:"Sm",mappings:{"default":{"default":"short down tack"}},key:"2ADF"},{category:"Sm",mappings:{"default":{"default":"short up tack"}},key:"2AE0"},{category:"Sm",mappings:{"default":{"default":"perpendicular with s"}},key:"2AE1"},{category:"Sm",mappings:{"default":{"default":"vertical bar triple right turnstile"}},
-key:"2AE2"},{category:"Sm",mappings:{"default":{"default":"double vertical bar left turnstile"}},key:"2AE3"},{category:"Sm",mappings:{"default":{"default":"vertical bar double left turnstile"}},key:"2AE4"},{category:"Sm",mappings:{"default":{"default":"double vertical bar double left turnstile"}},key:"2AE5"},{category:"Sm",mappings:{"default":{"default":"long dash from left member of double vertical"}},key:"2AE6"},{category:"Sm",mappings:{"default":{"default":"short down tack with overbar"}},key:"2AE7"},
-{category:"Sm",mappings:{"default":{"default":"short up tack with underbar"}},key:"2AE8"},{category:"Sm",mappings:{"default":{"default":"short up tack above short down tack"}},key:"2AE9"},{category:"Sm",mappings:{"default":{"default":"double down tack"}},key:"2AEA"},{category:"Sm",mappings:{"default":{"default":"double up tack"}},key:"2AEB"},{category:"Sm",mappings:{"default":{"default":"double stroke not sign"}},key:"2AEC"},{category:"Sm",mappings:{"default":{"default":"reversed double stroke not sign"}},
-key:"2AED"},{category:"Sm",mappings:{"default":{"default":"does not divide with reversed negation slash"}},key:"2AEE"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle above"}},key:"2AEF"},{category:"Sm",mappings:{"default":{"default":"vertical line with circle below"}},key:"2AF0"},{category:"Sm",mappings:{"default":{"default":"down tack with circle below"}},key:"2AF1"},{category:"Sm",mappings:{"default":{"default":"parallel with horizontal stroke"}},key:"2AF2"},{category:"Sm",
-mappings:{"default":{"default":"parallel with tilde operator"}},key:"2AF3"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar binary relation"}},key:"2AF4"},{category:"Sm",mappings:{"default":{"default":"triple vertical bar with horizontal stroke"}},key:"2AF5"},{category:"Sm",mappings:{"default":{"default":"triple colon operator"}},key:"2AF6"},{category:"Sm",mappings:{"default":{"default":"triple nested less than"}},key:"2AF7"},{category:"Sm",mappings:{"default":{"default":"triple nested greater than"}},
-key:"2AF8"},{category:"Sm",mappings:{"default":{"default":"double line slanted less than or equal to"}},key:"2AF9"},{category:"Sm",mappings:{"default":{"default":"double line slanted greater than or equal to"}},key:"2AFA"},{category:"Sm",mappings:{"default":{"default":"triple solidus binary relation"}},key:"2AFB"},{category:"Sm",mappings:{"default":{"default":"large triple vertical bar operator"}},key:"2AFC"},{category:"Sm",mappings:{"default":{"default":"double solidus operator"}},key:"2AFD"},{category:"Sm",
-mappings:{"default":{"default":"white vertical bar"}},key:"2AFE"},{category:"Sm",mappings:{"default":{"default":"n ary white vertical bar"}},key:"2AFF"},{category:"Pd",mappings:{"default":{"default":"wave dash"}},key:"301C"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical comma"}},key:"FE10"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical colon"}},key:"FE13"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical semicolon"}},
-key:"FE14"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical exclamation mark"}},key:"FE15"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical question mark"}},key:"FE16"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical horizontal ellipsis"}},key:"FE19"},{category:"Po",mappings:{"default":{"default":"presentation form for vertical two dot leader",alternative:"glyph for vertical two dot leader"}},key:"FE30"},{category:"Pd",
-mappings:{"default":{"default":"presentation form for vertical em dash",alternative:"glyph for vertical em dash"}},key:"FE31"},{category:"Pd",mappings:{"default":{"default":"presentation form for vertical en dash",alternative:"glyph for vertical en dash"}},key:"FE32"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical low line",alternative:"glyph for vertical spacing underscore"}},key:"FE33"},{category:"Pc",mappings:{"default":{"default":"presentation form for vertical wavy low line",
-alternative:"glyph for vertical spacing wavy underscore"}},key:"FE34"},{category:"Po",mappings:{"default":{"default":"sesame dot"}},key:"FE45"},{category:"Po",mappings:{"default":{"default":"white sesame dot"}},key:"FE46"},{category:"Po",mappings:{"default":{"default":"dashed overline",alternative:"spacing dashed overscore"}},key:"FE49"},{category:"Po",mappings:{"default":{"default":"centerline overline",alternative:"spacing centerline overscore"}},key:"FE4A"},{category:"Po",mappings:{"default":{"default":"wavy overline",
-alternative:"spacing wavy overscore"}},key:"FE4B"},{category:"Po",mappings:{"default":{"default":"double wavy overline",alternative:"spacing double wavy overscore"}},key:"FE4C"},{category:"Pc",mappings:{"default":{"default":"dashed low line",alternative:"spacing dashed underscore"}},key:"FE4D"},{category:"Pc",mappings:{"default":{"default":"centerline low line",alternative:"spacing centerline underscore"}},key:"FE4E"},{category:"Pc",mappings:{"default":{"default":"wavy low line",alternative:"spacing wavy underscore"}},
-key:"FE4F"},{category:"Po",mappings:{"default":{"default":"small comma"}},key:"FE50"},{category:"Po",mappings:{"default":{"default":"small full stop",alternative:"small period"}},key:"FE52"},{category:"Po",mappings:{"default":{"default":"small semicolon"}},key:"FE54"},{category:"Po",mappings:{"default":{"default":"small colon"}},key:"FE55"},{category:"Po",mappings:{"default":{"default":"small question mark"}},key:"FE56"},{category:"Po",mappings:{"default":{"default":"small exclamation mark"}},key:"FE57"},
-{category:"Pd",mappings:{"default":{"default":"small em dash"}},key:"FE58"},{category:"Po",mappings:{"default":{"default":"small number sign"}},key:"FE5F"},{category:"Po",mappings:{"default":{"default":"small ampersand"}},key:"FE60"},{category:"Po",mappings:{"default":{"default":"small asterisk"}},key:"FE61"},{category:"Sm",mappings:{"default":{"default":"small plus sign"}},key:"FE62"},{category:"Pd",mappings:{"default":{"default":"small hyphen minus"}},key:"FE63"},{category:"Sm",mappings:{"default":{"default":"small less than sign"}},
-key:"FE64"},{category:"Sm",mappings:{"default":{"default":"small greater than sign"}},key:"FE65"},{category:"Sm",mappings:{"default":{"default":"small equals sign"}},key:"FE66"},{category:"Po",mappings:{"default":{"default":"small reverse solidus",alternative:"small backslash"}},key:"FE68"},{category:"Sc",mappings:{"default":{"default":"small dollar sign"}},key:"FE69"},{category:"Po",mappings:{"default":{"default":"small percent sign"}},key:"FE6A"},{category:"Po",mappings:{"default":{"default":"small commercial at"}},
-key:"FE6B"},{category:"Po",mappings:{"default":{"default":"fullwidth exclamation mark"}},key:"FF01"},{category:"Po",mappings:{"default":{"default":"fullwidth quotation mark"}},key:"FF02"},{category:"Po",mappings:{"default":{"default":"fullwidth number sign"}},key:"FF03"},{category:"Sc",mappings:{"default":{"default":"fullwidth dollar sign"}},key:"FF04"},{category:"Po",mappings:{"default":{"default":"fullwidth percent sign"}},key:"FF05"},{category:"Po",mappings:{"default":{"default":"fullwidth ampersand"}},
-key:"FF06"},{category:"Po",mappings:{"default":{"default":"fullwidth apostrophe"}},key:"FF07"},{category:"Po",mappings:{"default":{"default":"fullwidth asterisk"}},key:"FF0A"},{category:"Sm",mappings:{"default":{"default":"fullwidth plus sign"}},key:"FF0B"},{category:"Po",mappings:{"default":{"default":"fullwidth comma"}},key:"FF0C"},{category:"Pd",mappings:{"default":{"default":"fullwidth hyphen minus"}},key:"FF0D"},{category:"Po",mappings:{"default":{"default":"fullwidth full stop",alternative:"fullwidth period"}},
-key:"FF0E"},{category:"Po",mappings:{"default":{"default":"fullwidth solidus",alternative:"fullwidth slash"}},key:"FF0F"},{category:"Po",mappings:{"default":{"default":"fullwidth colon"}},key:"FF1A"},{category:"Po",mappings:{"default":{"default":"fullwidth semicolon"}},key:"FF1B"},{category:"Sm",mappings:{"default":{"default":"fullwidth less than sign"}},key:"FF1C"},{category:"Sm",mappings:{"default":{"default":"fullwidth equals sign"}},key:"FF1D"},{category:"Sm",mappings:{"default":{"default":"fullwidth greater than sign"}},
-key:"FF1E"},{category:"Po",mappings:{"default":{"default":"fullwidth question mark"}},key:"FF1F"},{category:"Po",mappings:{"default":{"default":"fullwidth commercial at"}},key:"FF20"},{category:"Po",mappings:{"default":{"default":"fullwidth reverse solidus",alternative:"fullwidth backslash"}},key:"FF3C"},{category:"Sk",mappings:{"default":{"default":"fullwidth circumflex accent",alternative:"fullwidth spacing circumflex"}},key:"FF3E"},{category:"Pc",mappings:{"default":{"default":"fullwidth low line",
-alternative:"fullwidth spacing underscore"}},key:"FF3F"},{category:"Sk",mappings:{"default":{"default":"fullwidth grave accent",alternative:"fullwidth spacing grave"}},key:"FF40"},{category:"Sm",mappings:{"default":{"default":"fullwidth vertical line",alternative:"fullwidth vertical bar"}},key:"FF5C"},{category:"Sm",mappings:{"default":{"default":"fullwidth tilde",alternative:"fullwidth spacing tilde"}},key:"FF5E"},{category:"Sc",mappings:{"default":{"default":"fullwidth cent sign"}},key:"FFE0"},
-{category:"Sc",mappings:{"default":{"default":"fullwidth pound sign"}},key:"FFE1"},{category:"Sm",mappings:{"default":{"default":"fullwidth not sign"}},key:"FFE2"},{category:"Sk",mappings:{"default":{"default":"fullwidth macron",alternative:"fullwidth spacing macron"}},key:"FFE3"},{category:"So",mappings:{"default":{"default":"fullwidth broken bar",alternative:"fullwidth broken vertical bar"}},key:"FFE4"},{category:"Sc",mappings:{"default":{"default":"fullwidth yen sign"}},key:"FFE5"},{category:"Sc",
-mappings:{"default":{"default":"fullwidth won sign"}},key:"FFE6"},{category:"So",mappings:{"default":{"default":"halfwidth forms light vertical"}},key:"FFE8"},{category:"So",mappings:{"default":{"default":"halfwidth black square"}},key:"FFED"},{category:"So",mappings:{"default":{"default":"halfwidth white circle"}},key:"FFEE"},{category:"Ll",names:[],key:"03B1",mappings:{"default":{"default":"greek small letter alpha","short":"alpha"}}},{category:"Ll",names:[],key:"03B2",mappings:{"default":{"default":"greek small letter beta",
-"short":"beta"}}},{category:"Ll",names:[],key:"03B3",mappings:{"default":{"default":"greek small letter gamma","short":"gamma"}}},{category:"Ll",names:[],key:"03B4",mappings:{"default":{"default":"greek small letter delta","short":"delta"}}},{category:"Ll",names:[],key:"03B5",mappings:{"default":{"default":"greek small letter epsilon","short":"epsilon"}}},{category:"Ll",names:[],key:"03B6",mappings:{"default":{"default":"greek small letter zeta","short":"zeta"}}},{category:"Ll",names:[],key:"03B7",
-mappings:{"default":{"default":"greek small letter eta","short":"eta"}}},{category:"Ll",names:[],key:"03B8",mappings:{"default":{"default":"greek small letter theta","short":"theta"}}},{category:"Ll",names:[],key:"03B9",mappings:{"default":{"default":"greek small letter iota","short":"iota"}}},{category:"Ll",names:[],key:"03BA",mappings:{"default":{"default":"greek small letter kappa","short":"kappa"}}},{category:"Ll",names:[],key:"03BB",mappings:{"default":{"default":"greek small letter lamda",alternative:"greek small letter lambda",
-"short":"lamda"}}},{category:"Ll",names:[],key:"03BC",mappings:{"default":{"default":"greek small letter mu","short":"mu"}}},{category:"Ll",names:[],key:"03BD",mappings:{"default":{"default":"greek small letter nu","short":"nu"}}},{category:"Ll",names:[],key:"03BE",mappings:{"default":{"default":"greek small letter xi","short":"xi"}}},{category:"Ll",names:[],key:"03BF",mappings:{"default":{"default":"greek small letter omicron","short":"omicron"}}},{category:"Ll",names:[],key:"03C0",mappings:{"default":{"default":"greek small letter pi",
-"short":"pi"}}},{category:"Ll",names:[],key:"03C1",mappings:{"default":{"default":"greek small letter rho","short":"rho"}}},{category:"Ll",names:[],key:"03C2",mappings:{"default":{"default":"greek small letter final sigma","short":"final sigma"}}},{category:"Ll",names:[],key:"03C3",mappings:{"default":{"default":"greek small letter sigma","short":"sigma"}}},{category:"Ll",names:[],key:"03C4",mappings:{"default":{"default":"greek small letter tau","short":"tau"}}},{category:"Ll",names:[],key:"03C5",
-mappings:{"default":{"default":"greek small letter upsilon","short":"upsilon"}}},{category:"Ll",names:[],key:"03C6",mappings:{"default":{"default":"greek small letter phi","short":"phi"}}},{category:"Ll",names:[],key:"03C7",mappings:{"default":{"default":"greek small letter chi","short":"chi"}}},{category:"Ll",names:[],key:"03C8",mappings:{"default":{"default":"greek small letter psi","short":"psi"}}},{category:"Ll",names:[],key:"03C9",mappings:{"default":{"default":"greek small letter omega","short":"omega"}}},
-{category:"Ll",mappings:{"default":{"default":"greek beta symbol",alternative:"greek small letter curled beta","short":"beta"}},key:"03D0"},{category:"Ll",mappings:{"default":{"default":"greek theta symbol",alternative:"greek small letter script theta","short":"theta"}},key:"03D1"},{category:"Ll",mappings:{"default":{"default":"greek phi symbol",alternative:"greek small letter script phi","short":"phi"}},key:"03D5"},{category:"Ll",mappings:{"default":{"default":"greek pi symbol",alternative:"greek small letter omega pi",
-"short":"pi"}},key:"03D6"},{category:"Ll",mappings:{"default":{"default":"greek kai symbol","short":"kai"}},key:"03D7"},{category:"Ll",mappings:{"default":{"default":"greek kappa symbol",alternative:"greek small letter script kappa","short":"kappa"}},key:"03F0"},{category:"Ll",mappings:{"default":{"default":"greek rho symbol",alternative:"greek small letter tailed rho","short":"rho"}},key:"03F1"},{category:"Ll",mappings:{"default":{"default":"greek lunate epsilon symbol","short":"epsilon"}},key:"03F5"},
-{category:"Sm",mappings:{"default":{"default":"greek reversed lunate epsilon symbol","short":"reversed epsilon"}},key:"03F6"},{category:"Lu",names:[],key:"0391",mappings:{"default":{"default":"greek capital letter alpha","short":"cap alpha"}}},{category:"Lu",names:[],key:"0392",mappings:{"default":{"default":"greek capital letter beta","short":"cap beta"}}},{category:"Lu",names:[],key:"0393",mappings:{"default":{"default":"greek capital letter gamma","short":"cap gamma"}}},{category:"Lu",names:[],
-key:"0394",mappings:{"default":{"default":"greek capital letter delta","short":"cap delta"}}},{category:"Lu",names:[],key:"0395",mappings:{"default":{"default":"greek capital letter epsilon","short":"cap epsilon"}}},{category:"Lu",names:[],key:"0396",mappings:{"default":{"default":"greek capital letter zeta","short":"cap zeta"}}},{category:"Lu",names:[],key:"0397",mappings:{"default":{"default":"greek capital letter eta","short":"cap eta"}}},{category:"Lu",names:[],key:"0398",mappings:{"default":{"default":"greek capital letter theta",
-"short":"cap theta"}}},{category:"Lu",names:[],key:"0399",mappings:{"default":{"default":"greek capital letter iota","short":"cap iota"}}},{category:"Lu",names:[],key:"039A",mappings:{"default":{"default":"greek capital letter kappa","short":"cap kappa"}}},{category:"Lu",names:[],key:"039B",mappings:{"default":{"default":"greek capital letter lamda",alternative:"greek capital letter lambda","short":"cap lamda"}}},{category:"Lu",names:[],key:"039C",mappings:{"default":{"default":"greek capital letter mu",
-"short":"cap mu"}}},{category:"Lu",names:[],key:"039D",mappings:{"default":{"default":"greek capital letter nu","short":"cap nu"}}},{category:"Lu",names:[],key:"039E",mappings:{"default":{"default":"greek capital letter xi","short":"cap xi"}}},{category:"Lu",names:[],key:"039F",mappings:{"default":{"default":"greek capital letter omicron","short":"cap omicron"}}},{category:"Lu",names:[],key:"03A0",mappings:{"default":{"default":"greek capital letter pi","short":"cap pi"}}},{category:"Lu",names:[],
-key:"03A1",mappings:{"default":{"default":"greek capital letter rho","short":"cap rho"}}},{category:"Lu",names:[],key:"03A3",mappings:{"default":{"default":"greek capital letter sigma","short":"cap sigma"}}},{category:"Lu",names:[],key:"03A4",mappings:{"default":{"default":"greek capital letter tau","short":"cap tau"}}},{category:"Lu",names:[],key:"03A5",mappings:{"default":{"default":"greek capital letter upsilon","short":"cap upsilon"}}},{category:"Lu",names:[],key:"03A6",mappings:{"default":{"default":"greek capital letter phi",
-"short":"cap phi"}}},{category:"Lu",names:[],key:"03A7",mappings:{"default":{"default":"greek capital letter chi","short":"cap chi"}}},{category:"Lu",names:[],key:"03A8",mappings:{"default":{"default":"greek capital letter psi","short":"cap psi"}}},{category:"Lu",names:[],key:"03A9",mappings:{"default":{"default":"greek capital letter omega","short":"cap omega"}}},{category:"Lu",mappings:{"default":{"default":"greek capital theta symbol","short":"cap theta"}},key:"03F4"},{category:"Ps",mappings:{"default":{"default":"left parenthesis",
-alternative:"opening parenthesis"}},key:"0028"},{category:"Pe",mappings:{"default":{"default":"right parenthesis",alternative:"closing parenthesis"}},key:"0029"},{category:"Ps",mappings:{"default":{"default":"left square bracket",alternative:"opening square bracket"}},key:"005B"},{category:"Pe",mappings:{"default":{"default":"right square bracket",alternative:"closing square bracket"}},key:"005D"},{category:"Ps",mappings:{"default":{"default":"left curly bracket",alternative:"opening curly bracket"}},
-key:"007B"},{category:"Pe",mappings:{"default":{"default":"right curly bracket",alternative:"closing curly bracket"}},key:"007D"},{category:"Ps",mappings:{"default":{"default":"left square bracket with quill"}},key:"2045"},{category:"Pe",mappings:{"default":{"default":"right square bracket with quill"}},key:"2046"},{category:"Sm",mappings:{"default":{"default":"left ceiling"}},key:"2308"},{category:"Sm",mappings:{"default":{"default":"right ceiling"}},key:"2309"},{category:"Sm",mappings:{"default":{"default":"left floor"}},
-key:"230A"},{category:"Sm",mappings:{"default":{"default":"right floor"}},key:"230B"},{category:"So",mappings:{"default":{"default":"bottom right crop"}},key:"230C"},{category:"So",mappings:{"default":{"default":"bottom left crop"}},key:"230D"},{category:"So",mappings:{"default":{"default":"top right crop"}},key:"230E"},{category:"So",mappings:{"default":{"default":"top left crop"}},key:"230F"},{category:"So",mappings:{"default":{"default":"top left corner"}},key:"231C"},{category:"So",mappings:{"default":{"default":"top right corner"}},
-key:"231D"},{category:"So",mappings:{"default":{"default":"bottom left corner"}},key:"231E"},{category:"So",mappings:{"default":{"default":"bottom right corner"}},key:"231F"},{category:"Sm",mappings:{"default":{"default":"top half integral"}},key:"2320"},{category:"Sm",mappings:{"default":{"default":"bottom half integral"}},key:"2321"},{category:"Ps",mappings:{"default":{"default":"left pointing angle bracket",alternative:"bra"}},key:"2329"},{category:"Pe",mappings:{"default":{"default":"right pointing angle bracket",
-alternative:"ket"}},key:"232A"},{category:"Sm",mappings:{"default":{"default":"left parenthesis upper hook"}},key:"239B"},{category:"Sm",mappings:{"default":{"default":"left parenthesis extension"}},key:"239C"},{category:"Sm",mappings:{"default":{"default":"left parenthesis lower hook"}},key:"239D"},{category:"Sm",mappings:{"default":{"default":"right parenthesis upper hook"}},key:"239E"},{category:"Sm",mappings:{"default":{"default":"right parenthesis extension"}},key:"239F"},{category:"Sm",mappings:{"default":{"default":"right parenthesis lower hook"}},
-key:"23A0"},{category:"Sm",mappings:{"default":{"default":"left square bracket upper corner"}},key:"23A1"},{category:"Sm",mappings:{"default":{"default":"left square bracket extension"}},key:"23A2"},{category:"Sm",mappings:{"default":{"default":"left square bracket lower corner"}},key:"23A3"},{category:"Sm",mappings:{"default":{"default":"right square bracket upper corner"}},key:"23A4"},{category:"Sm",mappings:{"default":{"default":"right square bracket extension"}},key:"23A5"},{category:"Sm",mappings:{"default":{"default":"right square bracket lower corner"}},
-key:"23A6"},{category:"Sm",mappings:{"default":{"default":"left curly bracket upper hook"}},key:"23A7"},{category:"Sm",mappings:{"default":{"default":"left curly bracket middle piece"}},key:"23A8"},{category:"Sm",mappings:{"default":{"default":"left curly bracket lower hook"}},key:"23A9"},{category:"Sm",mappings:{"default":{"default":"curly bracket extension"}},key:"23AA"},{category:"Sm",mappings:{"default":{"default":"right curly bracket upper hook"}},key:"23AB"},{category:"Sm",mappings:{"default":{"default":"right curly bracket middle piece"}},
-key:"23AC"},{category:"Sm",mappings:{"default":{"default":"right curly bracket lower hook"}},key:"23AD"},{category:"Sm",mappings:{"default":{"default":"integral extension"}},key:"23AE"},{category:"Sm",mappings:{"default":{"default":"horizontal line extension"}},key:"23AF"},{category:"Sm",mappings:{"default":{"default":"upper left or lower right curly bracket section"}},key:"23B0"},{category:"Sm",mappings:{"default":{"default":"upper right or lower left curly bracket section"}},key:"23B1"},{category:"Sm",
-mappings:{"default":{"default":"summation top"}},key:"23B2"},{category:"Sm",mappings:{"default":{"default":"summation bottom"}},key:"23B3"},{category:"So",mappings:{"default":{"default":"top square bracket"}},key:"23B4"},{category:"So",mappings:{"default":{"default":"bottom square bracket"}},key:"23B5"},{category:"So",mappings:{"default":{"default":"bottom square bracket over top square bracket"}},key:"23B6"},{category:"So",mappings:{"default":{"default":"radical symbol bottom"}},key:"23B7"},{category:"So",
-mappings:{"default":{"default":"left vertical box line"}},key:"23B8"},{category:"So",mappings:{"default":{"default":"right vertical box line"}},key:"23B9"},{category:"Sm",mappings:{"default":{"default":"top parenthesis"}},key:"23DC"},{category:"Sm",mappings:{"default":{"default":"bottom parenthesis"}},key:"23DD"},{category:"Sm",mappings:{"default":{"default":"top curly bracket"}},key:"23DE"},{category:"Sm",mappings:{"default":{"default":"bottom curly bracket"}},key:"23DF"},{category:"Sm",mappings:{"default":{"default":"top tortoise shell bracket"}},
-key:"23E0"},{category:"Sm",mappings:{"default":{"default":"bottom tortoise shell bracket"}},key:"23E1"},{category:"Ps",mappings:{"default":{"default":"medium left parenthesis ornament"}},key:"2768"},{category:"Pe",mappings:{"default":{"default":"medium right parenthesis ornament"}},key:"2769"},{category:"Ps",mappings:{"default":{"default":"medium flattened left parenthesis ornament"}},key:"276A"},{category:"Pe",mappings:{"default":{"default":"medium flattened right parenthesis ornament"}},key:"276B"},
-{category:"Ps",mappings:{"default":{"default":"medium left pointing angle bracket ornament"}},key:"276C"},{category:"Pe",mappings:{"default":{"default":"medium right pointing angle bracket ornament"}},key:"276D"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle quotation mark ornament"}},key:"276E"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle quotation mark ornament"}},key:"276F"},{category:"Ps",mappings:{"default":{"default":"heavy left pointing angle bracket ornament"}},
-key:"2770"},{category:"Pe",mappings:{"default":{"default":"heavy right pointing angle bracket ornament"}},key:"2771"},{category:"Ps",mappings:{"default":{"default":"light left tortoise shell bracket ornament"}},key:"2772"},{category:"Pe",mappings:{"default":{"default":"light right tortoise shell bracket ornament"}},key:"2773"},{category:"Ps",mappings:{"default":{"default":"medium left curly bracket ornament"}},key:"2774"},{category:"Pe",mappings:{"default":{"default":"medium right curly bracket ornament"}},
-key:"2775"},{category:"Ps",mappings:{"default":{"default":"left s shaped bag delimiter"}},key:"27C5"},{category:"Pe",mappings:{"default":{"default":"right s shaped bag delimiter"}},key:"27C6"},{category:"Ps",mappings:{"default":{"default":"mathematical left white square bracket"}},key:"27E6"},{category:"Pe",mappings:{"default":{"default":"mathematical right white square bracket"}},key:"27E7"},{category:"Ps",mappings:{"default":{"default":"mathematical left angle bracket"}},key:"27E8"},{category:"Pe",
-mappings:{"default":{"default":"mathematical right angle bracket"}},key:"27E9"},{category:"Ps",mappings:{"default":{"default":"mathematical left double angle bracket"}},key:"27EA"},{category:"Pe",mappings:{"default":{"default":"mathematical right double angle bracket"}},key:"27EB"},{category:"Ps",mappings:{"default":{"default":"mathematical left white tortoise shell bracket"}},key:"27EC"},{category:"Pe",mappings:{"default":{"default":"mathematical right white tortoise shell bracket"}},key:"27ED"},
-{category:"Ps",mappings:{"default":{"default":"mathematical left flattened parenthesis"}},key:"27EE"},{category:"Pe",mappings:{"default":{"default":"mathematical right flattened parenthesis"}},key:"27EF"},{category:"Ps",mappings:{"default":{"default":"left white curly bracket"}},key:"2983"},{category:"Pe",mappings:{"default":{"default":"right white curly bracket"}},key:"2984"},{category:"Ps",mappings:{"default":{"default":"left white parenthesis"}},key:"2985"},{category:"Pe",mappings:{"default":{"default":"right white parenthesis"}},
-key:"2986"},{category:"Ps",mappings:{"default":{"default":"z notation left image bracket"}},key:"2987"},{category:"Pe",mappings:{"default":{"default":"z notation right image bracket"}},key:"2988"},{category:"Ps",mappings:{"default":{"default":"z notation left binding bracket"}},key:"2989"},{category:"Pe",mappings:{"default":{"default":"z notation right binding bracket"}},key:"298A"},{category:"Ps",mappings:{"default":{"default":"left square bracket with underbar"}},key:"298B"},{category:"Pe",mappings:{"default":{"default":"right square bracket with underbar"}},
-key:"298C"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in top corner"}},key:"298D"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in bottom corner"}},key:"298E"},{category:"Ps",mappings:{"default":{"default":"left square bracket with tick in bottom corner"}},key:"298F"},{category:"Pe",mappings:{"default":{"default":"right square bracket with tick in top corner"}},key:"2990"},{category:"Ps",mappings:{"default":{"default":"left angle bracket with dot"}},
-key:"2991"},{category:"Pe",mappings:{"default":{"default":"right angle bracket with dot"}},key:"2992"},{category:"Ps",mappings:{"default":{"default":"left arc less than bracket"}},key:"2993"},{category:"Pe",mappings:{"default":{"default":"right arc greater than bracket"}},key:"2994"},{category:"Ps",mappings:{"default":{"default":"double left arc greater than bracket"}},key:"2995"},{category:"Pe",mappings:{"default":{"default":"double right arc less than bracket"}},key:"2996"},{category:"Ps",mappings:{"default":{"default":"left black tortoise shell bracket"}},
-key:"2997"},{category:"Pe",mappings:{"default":{"default":"right black tortoise shell bracket"}},key:"2998"},{category:"Ps",mappings:{"default":{"default":"left wiggly fence"}},key:"29D8"},{category:"Pe",mappings:{"default":{"default":"right wiggly fence"}},key:"29D9"},{category:"Ps",mappings:{"default":{"default":"left double wiggly fence"}},key:"29DA"},{category:"Pe",mappings:{"default":{"default":"right double wiggly fence"}},key:"29DB"},{category:"Ps",mappings:{"default":{"default":"left pointing curved angle bracket"}},
-key:"29FC"},{category:"Pe",mappings:{"default":{"default":"right pointing curved angle bracket"}},key:"29FD"},{category:"Ps",mappings:{"default":{"default":"top left half bracket"}},key:"2E22"},{category:"Pe",mappings:{"default":{"default":"top right half bracket"}},key:"2E23"},{category:"Ps",mappings:{"default":{"default":"bottom left half bracket"}},key:"2E24"},{category:"Pe",mappings:{"default":{"default":"bottom right half bracket"}},key:"2E25"},{category:"Ps",mappings:{"default":{"default":"left sideways u bracket"}},
-key:"2E26"},{category:"Pe",mappings:{"default":{"default":"right sideways u bracket"}},key:"2E27"},{category:"Ps",mappings:{"default":{"default":"left double parenthesis"}},key:"2E28"},{category:"Pe",mappings:{"default":{"default":"right double parenthesis"}},key:"2E29"},{category:"Ps",mappings:{"default":{"default":"left angle bracket",alternative:"opening angle bracket"}},key:"3008"},{category:"Pe",mappings:{"default":{"default":"right angle bracket",alternative:"closing angle bracket"}},key:"3009"},
-{category:"Ps",mappings:{"default":{"default":"left double angle bracket",alternative:"opening double angle bracket"}},key:"300A"},{category:"Pe",mappings:{"default":{"default":"right double angle bracket",alternative:"closing double angle bracket"}},key:"300B"},{category:"Ps",mappings:{"default":{"default":"left corner bracket",alternative:"opening corner bracket"}},key:"300C"},{category:"Pe",mappings:{"default":{"default":"right corner bracket",alternative:"closing corner bracket"}},key:"300D"},
-{category:"Ps",mappings:{"default":{"default":"left white corner bracket",alternative:"opening white corner bracket"}},key:"300E"},{category:"Pe",mappings:{"default":{"default":"right white corner bracket",alternative:"closing white corner bracket"}},key:"300F"},{category:"Ps",mappings:{"default":{"default":"left black lenticular bracket",alternative:"opening black lenticular bracket"}},key:"3010"},{category:"Pe",mappings:{"default":{"default":"right black lenticular bracket",alternative:"closing black lenticular bracket"}},
-key:"3011"},{category:"Ps",mappings:{"default":{"default":"left tortoise shell bracket",alternative:"opening tortoise shell bracket"}},key:"3014"},{category:"Pe",mappings:{"default":{"default":"right tortoise shell bracket",alternative:"closing tortoise shell bracket"}},key:"3015"},{category:"Ps",mappings:{"default":{"default":"left white lenticular bracket",alternative:"opening white lenticular bracket"}},key:"3016"},{category:"Pe",mappings:{"default":{"default":"right white lenticular bracket",
-alternative:"closing white lenticular bracket"}},key:"3017"},{category:"Ps",mappings:{"default":{"default":"left white tortoise shell bracket",alternative:"opening white tortoise shell bracket"}},key:"3018"},{category:"Pe",mappings:{"default":{"default":"right white tortoise shell bracket",alternative:"closing white tortoise shell bracket"}},key:"3019"},{category:"Ps",mappings:{"default":{"default":"left white square bracket",alternative:"opening white square bracket"}},key:"301A"},{category:"Pe",
-mappings:{"default":{"default":"right white square bracket",alternative:"closing white square bracket"}},key:"301B"},{category:"Ps",mappings:{"default":{"default":"reversed double prime quotation mark"}},key:"301D"},{category:"Pe",mappings:{"default":{"default":"double prime quotation mark"}},key:"301E"},{category:"Pe",mappings:{"default":{"default":"low double prime quotation mark"}},key:"301F"},{category:"Ps",mappings:{"default":{"default":"ornate left parenthesis"}},key:"FD3E"},{category:"Pe",
-mappings:{"default":{"default":"ornate right parenthesis"}},key:"FD3F"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white lenticular bracket"}},key:"FE17"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white lenticular bracket"}},key:"FE18"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left parenthesis",alternative:"glyph for vertical opening parenthesis"}},key:"FE35"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right parenthesis",
-alternative:"glyph for vertical closing parenthesis"}},key:"FE36"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left curly bracket",alternative:"glyph for vertical opening curly bracket"}},key:"FE37"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right curly bracket",alternative:"glyph for vertical closing curly bracket"}},key:"FE38"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left tortoise shell bracket",
-alternative:"glyph for vertical opening tortoise shell bracket"}},key:"FE39"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right tortoise shell bracket",alternative:"glyph for vertical closing tortoise shell bracket"}},key:"FE3A"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left black lenticular bracket",alternative:"glyph for vertical opening black lenticular bracket"}},key:"FE3B"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right black lenticular bracket",
-alternative:"glyph for vertical closing black lenticular bracket"}},key:"FE3C"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left double angle bracket",alternative:"glyph for vertical opening double angle bracket"}},key:"FE3D"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right double angle bracket",alternative:"glyph for vertical closing double angle bracket"}},key:"FE3E"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left angle bracket",
-alternative:"glyph for vertical opening angle bracket"}},key:"FE3F"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right angle bracket",alternative:"glyph for vertical closing angle bracket"}},key:"FE40"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left corner bracket",alternative:"glyph for vertical opening corner bracket"}},key:"FE41"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right corner bracket",
-alternative:"glyph for vertical closing corner bracket"}},key:"FE42"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left white corner bracket",alternative:"glyph for vertical opening white corner bracket"}},key:"FE43"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right white corner bracket",alternative:"glyph for vertical closing white corner bracket"}},key:"FE44"},{category:"Ps",mappings:{"default":{"default":"presentation form for vertical left square bracket"}},
-key:"FE47"},{category:"Pe",mappings:{"default":{"default":"presentation form for vertical right square bracket"}},key:"FE48"},{category:"Ps",mappings:{"default":{"default":"small left parenthesis",alternative:"small opening parenthesis"}},key:"FE59"},{category:"Pe",mappings:{"default":{"default":"small right parenthesis",alternative:"small closing parenthesis"}},key:"FE5A"},{category:"Ps",mappings:{"default":{"default":"small left curly bracket",alternative:"small opening curly bracket"}},key:"FE5B"},
-{category:"Pe",mappings:{"default":{"default":"small right curly bracket",alternative:"small closing curly bracket"}},key:"FE5C"},{category:"Ps",mappings:{"default":{"default":"small left tortoise shell bracket",alternative:"small opening tortoise shell bracket"}},key:"FE5D"},{category:"Pe",mappings:{"default":{"default":"small right tortoise shell bracket",alternative:"small closing tortoise shell bracket"}},key:"FE5E"},{category:"Ps",mappings:{"default":{"default":"fullwidth left parenthesis",alternative:"fullwidth opening parenthesis"}},
-key:"FF08"},{category:"Pe",mappings:{"default":{"default":"fullwidth right parenthesis",alternative:"fullwidth closing parenthesis"}},key:"FF09"},{category:"Ps",mappings:{"default":{"default":"fullwidth left square bracket",alternative:"fullwidth opening square bracket"}},key:"FF3B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right square bracket",alternative:"fullwidth closing square bracket"}},key:"FF3D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left curly bracket",
-alternative:"fullwidth opening curly bracket"}},key:"FF5B"},{category:"Pe",mappings:{"default":{"default":"fullwidth right curly bracket",alternative:"fullwidth closing curly bracket"}},key:"FF5D"},{category:"Ps",mappings:{"default":{"default":"fullwidth left white parenthesis"}},key:"FF5F"},{category:"Pe",mappings:{"default":{"default":"fullwidth right white parenthesis"}},key:"FF60"},{category:"Ps",mappings:{"default":{"default":"halfwidth left corner bracket",alternative:"halfwidth opening corner bracket"}},
-key:"FF62"},{category:"Pe",mappings:{"default":{"default":"halfwidth right corner bracket",alternative:"halfwidth closing corner bracket"}},key:"FF63"}];
-cvox.AndroidMathMap.FUNCTION_MAPPINGS_=[{category:"Elementary",mappings:{"default":{"default":"logarithm",alternative:"logarithm function","short":"log"}},key:"log",names:["log"]},{category:"Elementary",mappings:{"default":{"default":"natural logarithm",alternative:"natural logarithm function","short":"natural log"}},key:"ln",names:["ln"]},{category:"Elementary",mappings:{"default":{"default":"logarithm base 10","short":"log base 10"}},key:"lg",names:["lg"]},{category:"Elementary",mappings:{"default":{"default":"exponential",
-alternative:"exponential function","short":"exp"}},key:"exp",names:["exp","expt"]},{category:"Elementary",mappings:{"default":{"default":"greatest common divisor","short":"gcd"}},key:"gcd",names:["gcd"]},{category:"Elementary",mappings:{"default":{"default":"least common multiple","short":"lcm"}},key:"gcd",names:["gcd"]},{category:"Complex",mappings:{"default":{"default":"argument","short":"arg"}},key:"arg",names:["arg"]},{category:"Complex",mappings:{"default":{"default":"imaginary part","short":"imaginary"}},
-key:"im",names:["im"]},{category:"Complex",mappings:{"default":{"default":"real part","short":"real"}},key:"re",names:["re"]},{category:"Limits",mappings:{"default":{"default":"infimum","short":"inf"}},key:"inf",names:["inf"]},{category:"Limits",mappings:{"default":{"default":"limit","short":"lim"}},key:"lim",names:["lim"]},{category:"Limits",mappings:{"default":{"default":"infimum default",alternative:"inferior limit","short":"liminf"}},key:"liminf",names:["lim inf"]},{category:"Limits",mappings:{"default":{"default":"supremum limit",
-alternative:"superior limit","short":"limsup"}},key:"limsup",names:["lim sup"]},{category:"Limits",mappings:{"default":{"default":"maximum","short":"max"}},key:"max",names:["max"]},{category:"Limits",mappings:{"default":{"default":"minimum","short":"min"}},key:"min",names:["min"]},{category:"Limits",mappings:{"default":{"default":"supremum","short":"sup"}},key:"sup",names:["sup"]},{category:"Limits",mappings:{"default":{"default":"injective limit",alternative:"direct limit","short":"colimit"}},key:"injlim",
-names:["injlim","inj lim"]},{category:"Limits",mappings:{"default":{"default":"projective limit",alternative:"inverse limit","short":"limit"}},key:"projlim",names:["projlim","proj lim"]},{category:"Elementary",mappings:{"default":{"default":"modulo","short":"mod"}},key:"mod",names:["mod"]},{category:"Probability",mappings:{"default":{"default":"probability"}},key:"Pr",names:["Pr"]},{category:"Trigonometric",mappings:{"default":{"default":"cosine function","short":"cosine"}},key:"cos",names:["cos",
-"cosine"]},{category:"Trigonometric",mappings:{"default":{"default":"cotangent function","short":"cotangent"}},key:"cot",names:["cot"]},{category:"Trigonometric",mappings:{"default":{"default":"cosecant function","short":"cosecant"}},key:"csc",names:["csc"]},{category:"Trigonometric",mappings:{"default":{"default":"secant function","short":"secant"}},key:"sec",names:["sec"]},{category:"Trigonometric",mappings:{"default":{"default":"sine function",alternative:"sine function","short":"sine"}},key:"sin",
-names:["sin","sine"]},{category:"Trigonometric",mappings:{"default":{"default":"tangent function","short":"tangent"}},key:"tan",names:["tan"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cosine function",alternative:"arc cosine function","short":"arc cosine"}},key:"arccos",names:["arccos"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse cotangent function",alternative:"arc cotangent function","short":"arc cotangent"}},key:"arccot",names:["arccot"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse cosecant function",alternative:"arc cosecant function","short":"arc cosecant"}},key:"arccsc",names:["arccsc"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse secant function",alternative:"arc secant function","short":"arc secant"}},key:"arcsec",names:["arcsec"]},{category:"Cyclometric",mappings:{"default":{"default":"inverse sine function",alternative:"arc sine function","short":"arc sine"}},key:"arcsin",names:["arcsin"]},{category:"Cyclometric",
-mappings:{"default":{"default":"inverse tangent function",alternative:"arc tangent function","short":"arc tangent"}},key:"arctan",names:["arctan"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosine function","short":"hyperbolic cosine"}},key:"cosh",names:["cosh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cotangent function","short":"hyperbolic cotangent"}},key:"coth",names:["coth"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic cosecant function",
-"short":"hyperbolic cosecant"}},key:"csch",names:["csch"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic secant function","short":"hyperbolic secant"}},key:"sech",names:["sech"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic sine function","short":"hyperbolic sine"}},key:"sinh",names:["sinh"]},{category:"Hyperbolic",mappings:{"default":{"default":"hyperbolic tangent function","short":"hyperbolic tangent"}},key:"tanh",names:["tanh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosine function",
-alternative:"area hyperbolic cosine function","short":"area hyperbolic cosine"}},key:"arcosh",names:["arcosh","arccosh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cotangent function",alternative:"area hyperbolic cotangent function","short":"area hyperbolic cotangent"}},key:"arcoth",names:["arcoth","arccoth"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic cosecant function",alternative:"area hyperbolic cosecant function","short":"area hyperbolic cosecant"}},
-key:"arcsch",names:["arcsch","arccsch"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic secant function",alternative:"area hyperbolic secant function","short":"area hyperbolic secant"}},key:"arsech",names:["arsech","arcsech"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic sine function",alternative:"area hyperbolic sine function","short":"area hyperbolic sine"}},key:"arsinh",names:["arsinh","arcsinh"]},{category:"Area",mappings:{"default":{"default":"inverse hyperbolic tangent function",
-alternative:"area hyperbolic tangent function","short":"area hyperbolic tangent"}},key:"artanh",names:["artanh","arctanh"]},{category:"Algebra",mappings:{"default":{"default":"degree"}},key:"deg",names:["deg"]},{category:"Algebra",mappings:{"default":{"default":"determinant","short":"det"}},key:"det",names:["det"]},{category:"Algebra",mappings:{"default":{"default":"dimension"}},key:"dim",names:["dim"]},{category:"Algebra",mappings:{"default":{"default":"homomorphism","short":"hom"}},key:"hom",names:["hom",
-"Hom"]},{category:"Algebra",mappings:{"default":{"default":"kernel"}},key:"ker",names:["ker"]},{category:"Algebra",mappings:{"default":{"default":"trace"}},key:"Tr",names:["Tr","tr"]}];cvox.AndroidVox=function(){cvox.ChromeVox.navigationManager.ignoreIframesNoMatterWhat()};goog.exportSymbol("cvox.AndroidVox",cvox.AndroidVox);
-cvox.AndroidVox.performAction=function(a){var b=JSON.parse(a);a=b.action;var c=b.granularity,b=b.element,d=cvox.SearchWidget.getInstance().isActive();16==c&&512==a&&(cvox.ChromeVox.navigationManager.setReversed(!1),cvox.ChromeVox.navigationManager.syncToBeginning(),cvox.ChromeVox.navigationManager.updateIndicator());if(16==c)return cvox.ChromeVoxUserCommands.commands.readFromHere(),!0;cvox.ChromeVoxUserCommands.commands.stopSpeech();if(256==a||512==a)d||cvox.ChromeVoxEventWatcher.setUpTextHandler();
-var e=cvox.ChromeVoxEventWatcher.currentTextHandler;e||document.activeElement==document.body||console.log("no text handler, but there is an active element",document.activeElement);if(e&&1==c){if(256==a)return e.moveCursorToNextCharacter();if(512==a)return e.moveCursorToPreviousCharacter()}else if(e&&2==c){if(256==a)return e.moveCursorToNextWord();if(512==a)return e.moveCursorToPreviousWord()}else if(e&&8==c){if(256==a)return e.moveCursorToNextParagraph();if(512==a)return e.moveCursorToPreviousParagraph()}else if(e&&
-4==c){var f=!1;256==a?f=e.moveCursorToNextLine():512==a&&(f=e.moveCursorToPreviousLine());if(f)return!0}switch(c){case -1:return cvox.ChromeVox.navigationManager.finishNavCommand(""),!0;case -2:return cvox.ChromeVoxUserCommands.commands.readCurrentTitle(),!0;case -3:return!0;case -4:return 512==a?cvox.ChromeVoxUserCommands.commands.exitShifter():cvox.ChromeVoxUserCommands.commands.enterShifter(),!0;case -5:return cvox.SearchWidget.getInstance().toggle(),!0}if(-275999999<=c&&-275E6>=c){cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),
-cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);a=cvox.ChromeVox.navigationManager.getBraille();b=-275E6-c;if(c=a.text.getSpan(b))a=b-a.text.getSpanStart(c),cvox.AndroidVox.performClickAction(c,a);return!0}if(0>c)return!1;e=[];e[8]=cvox.NavigationShifter.GRANULARITIES.GROUP;e[4]=cvox.NavigationShifter.GRANULARITIES.LINE;e[2]=cvox.NavigationShifter.GRANULARITIES.WORD;e[1]=cvox.NavigationShifter.GRANULARITIES.CHARACTER;d||(c=c?e[c]:cvox.NavigationShifter.GRANULARITIES.OBJECT,
-cvox.ChromeVox.navigationManager.setGranularity(c));c=!1;switch(a){case 16:if(d)break;cvox.ChromeVox.tts.speak(cvox.ChromeVox.msgs.getMsg("element_clicked"),cvox.AbstractTts.QUEUE_MODE_FLUSH,cvox.AbstractTts.PERSONALITY_ANNOTATION);(c=cvox.ChromeVox.navigationManager.getCurrentNode())&&cvox.AndroidVox.performClickAction(c);c=!0;break;case 1024:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.nextSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.nextList();break;case "CONTROL":c=
-!cvox.ChromeVoxUserCommands.commands.nextControl()}if(c)break;case 256:d?(cvox.SearchWidget.getInstance().nextResult(!1),c=!0):c=!cvox.ChromeVoxUserCommands.commands.forward();break;case 2048:switch(b){case "SECTION":c=!cvox.ChromeVoxUserCommands.commands.previousSection();break;case "LIST":c=!cvox.ChromeVoxUserCommands.commands.previousList();break;case "CONTROL":c=!cvox.ChromeVoxUserCommands.commands.previousControl()}if(c)break;case 512:d?(cvox.SearchWidget.getInstance().nextResult(!0),c=!0):c=
-!cvox.ChromeVoxUserCommands.commands.backward()}return c};goog.exportSymbol("cvox.AndroidVox.performAction",cvox.AndroidVox.performAction);
-cvox.AndroidVox.performClickAction=function(a,b){cvox.ChromeVox.navigationManager.getCurrentNode()!=a&&cvox.ApiImplementation.syncToNode(a,!1);cvox.Focuser.setFocus(a);var c=cvox.DomUtil.isInputTypeText(a)||a instanceof HTMLTextAreaElement;if(goog.isDef(b)&&c){var d=cvox.BrailleUtil.getTemplated(null,a),c=d.getSpanInstanceOf(cvox.BrailleUtil.ValueSpan),e=d.getSpanStart(c),d=d.getSpanEnd(c);e<=b&&b<=d&&(c=b-e+c.offset,a.selectionStart=a.selectionEnd=c,cvox.ChromeVoxEventWatcher.handleTextChanged(!0))}cvox.DomUtil.clickElem(a,
-!1,!0)};cvox.AndroidHost=function(){};goog.inherits(cvox.AndroidHost,cvox.AbstractHost);
-cvox.AndroidHost.prototype.init=function(){cvox.ChromeVox.version="AndroidVox";var a=cvox.AndroidKeyMap.getStringifiedKeyMap();cvox.ChromeVoxKbHandler.loadKeyToFunctionsTable(a);cvox.ApiImplementation.siteSpecificScriptLoader="";cvox.ApiImplementation.siteSpecificScriptBase="";cvox.ApiImplementation.init();cvox.ChromeVox.earcons.earconsAvailable()&&(cvox.ChromeVox.verbosity=cvox.VERBOSITY_BRIEF);new cvox.AndroidMathMap;cvox.InitialSpeech.speak()};cvox.AndroidHost.prototype.reinit=function(){};
-cvox.AndroidHost.prototype.onPageLoad=function(){cvox.ChromeVoxEventWatcher.focusFollowsMouse=!0;cvox.ChromeVoxEventWatcher.mouseoverDelayMs=0};cvox.AndroidHost.prototype.ttsLoaded=function(){return"undefined"!=typeof accessibility};cvox.AndroidHost.prototype.getApiSrc=function(){return""};cvox.AndroidHost.prototype.hasTtsCallback=function(){return!1};cvox.AndroidHost.prototype.mustRedispatchClickEvent=function(){return!0};
-cvox.AndroidHost.prototype.activateOrDeactivateChromeVox=function(a){cvox.ChromeVox.tts.stop();cvox.AndroidHost.superClass_.activateOrDeactivateChromeVox.call(this,a);this.onPageLoad()};goog.exportSymbol("cvox.AndroidHost.prototype.activateOrDeactivateChromeVox",cvox.AndroidHost.prototype.activateOrDeactivateChromeVox);cvox.HostFactory.hostConstructor=cvox.AndroidHost;window.cvox||(window.cvox={});cvox.MathJaxExternalUtil=function(){};cvox.MathJaxExternalUtil.mmlAttr=function(){return""};
-cvox.MathJaxExternalUtil.mfenced=function(a){null==a&&(a="");var b=[a+'<mrow mfenced="true"'+this.toMathMLattributes()+">"],c=a+" ";this.data.open&&b.push(this.data.open.toMathML(c));null!=this.data[0]&&b.push(this.data[0].toMathML(c));for(var d=1,e=this.data.length;d<e;d++)this.data[d]&&(this.data["sep"+d]&&b.push(this.data["sep"+d].toMathML(c)),b.push(this.data[d].toMathML(c)));this.data.close&&b.push(this.data.close.toMathML(c));b.push(a+"</mrow>");return b.join("\n")};
-cvox.MathJaxExternalUtil.getMathml=function(a,b){var c=MathJax.ElementJax.mml.mbase.prototype,d=MathJax.ElementJax.mml.mfenced.prototype;this.mmlAttr=c.toMathMLattributes;var e=d.toMathML;try{c.toMathMLattributes=cvox.MathJaxExternalUtil.mbase;d.toMathML=cvox.MathJaxExternalUtil.mfenced;var f=a.root.toMathML("");c.toMathMLattributes=this.mmlAttr;d.toMathML=e;MathJax.Callback(b)(f)}catch(g){c.toMathMLattributes=this.mmlAttr;d.toMathML=e;if(!g.restart)throw g;return MathJax.Callback.After([cvox.MathJaxExternalUtil.getMathml,
-a,b],g.restart)}};cvox.MathJaxExternalUtil.mbase=function(){var a=cvox.MathJaxExternalUtil.mmlAttr.call(this);if(null!=this.spanID)var b=(this.id||"MathJax-Span-"+this.spanID)+MathJax.OutputJax["HTML-CSS"].idPostfix,a=a+(' spanID="'+b+'"');null!=this.texClass&&(a+=' texClass="'+this.texClass+'"');return a};cvox.MathJaxExternalUtil.isActive=function(){return"undefined"!=typeof MathJax&&"undefined"!=typeof MathJax.Hub&&"undefined"!=typeof MathJax.ElementJax&&"undefined"!=typeof MathJax.InputJax};
-cvox.MathJaxExternalUtil.getMathjaxCallback_=function(a,b){cvox.MathJaxExternalUtil.getMathml(b,function(c){b.root.inputID&&a(c,b.root.inputID)})};cvox.MathJaxExternalUtil.registerSignal=function(a,b){MathJax.Hub.Register.MessageHook(b,function(b){b=MathJax.Hub.getJaxFor(b[1]);cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};cvox.MathJaxExternalUtil.getAllJax=function(a){var b=MathJax.Hub.getAllJax();b&&b.forEach(function(b){b.root.spanID&&cvox.MathJaxExternalUtil.getMathjaxCallback_(a,b)})};
-cvox.MathJaxExternalUtil.injectConfigScript=function(){var a=document.createElement("script");a.setAttribute("type","text/x-mathjax-config");a.textContent='MathJax.Hub.Config({\n jax: ["input/AsciiMath", "input/TeX"],\n extensions: ["toMathML.js"],\n skipStartupTypeset: true,\n messageStyle: "none",\n TeX: {extensions: ["AMSmath.js","AMSsymbols.js"]}\n});\nMathJax.Hub.Queue(\n function() {MathJax.Hub.inputJax["math/asciimath"].Process();\n MathJax.Hub.inputJax["math/tex"].Process()}\n);\n//\n// Prevent these from being loaded\n//\nif (!MathJax.Extension.MathMenu) {MathJax.Extension.MathMenu = {}};\nif (!MathJax.Extension.MathZoom) {MathJax.Extension.MathZoom = {}};';
-document.activeElement.appendChild(a)};cvox.MathJaxExternalUtil.injectLoadScript=function(){var a=document.createElement("script");a.setAttribute("type","text/javascript");a.setAttribute("src","http://cdn.mathjax.org/mathjax/latest/MathJax.js");document.activeElement.appendChild(a)};
-cvox.MathJaxExternalUtil.configMediaWiki=function(){mediaWiki&&MathJax.Hub.Register.StartupHook("TeX Jax Ready",function(){var a=MathJax.ElementJax.mml;MathJax.Hub.Insert(MathJax.InputJax.TeX.Definitions,{mathchar0mi:{thetasym:"03B8",koppa:"03DF",stigma:"03DB",varstigma:"03DB",coppa:"03D9",varcoppa:"03D9",sampi:"03E1",C:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],cnums:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Complex:["0043",{mathvariant:a.VARIANT.DOUBLESTRUCK}],H:["210D",{mathvariant:a.VARIANT.DOUBLESTRUCK}],
-N:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],natnums:["004E",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Q:["0051",{mathvariant:a.VARIANT.DOUBLESTRUCK}],R:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Reals:["0052",{mathvariant:a.VARIANT.DOUBLESTRUCK}],Z:["005A",{mathvariant:a.VARIANT.DOUBLESTRUCK}],sect:"00A7",P:"00B6",AA:["00C5",{mathvariant:a.VARIANT.NORMAL}],alef:["2135",{mathvariant:a.VARIANT.NORMAL}],alefsym:["2135",{mathvariant:a.VARIANT.NORMAL}],
-weierp:["2118",{mathvariant:a.VARIANT.NORMAL}],real:["211C",{mathvariant:a.VARIANT.NORMAL}],part:["2202",{mathvariant:a.VARIANT.NORMAL}],infin:["221E",{mathvariant:a.VARIANT.NORMAL}],empty:["2205",{mathvariant:a.VARIANT.NORMAL}],O:["2205",{mathvariant:a.VARIANT.NORMAL}],ang:["2220",{mathvariant:a.VARIANT.NORMAL}],exist:["2203",{mathvariant:a.VARIANT.NORMAL}],clubs:["2663",{mathvariant:a.VARIANT.NORMAL}],diamonds:["2662",{mathvariant:a.VARIANT.NORMAL}],hearts:["2661",{mathvariant:a.VARIANT.NORMAL}],
-spades:["2660",{mathvariant:a.VARIANT.NORMAL}],textvisiblespace:"2423",geneuro:"20AC",euro:"20AC"},mathchar0mo:{and:"2227",or:"2228",bull:"2219",plusmn:"00B1",sdot:"22C5",Dagger:"2021",sup:"2283",sub:"2282",supe:"2287",sube:"2286",isin:"2208",hAar:"21D4",hArr:"21D4",Harr:"21D4",Lrarr:"21D4",lrArr:"21D4",lArr:"21D0",Larr:"21D0",rArr:"21D2",Rarr:"21D2",harr:"2194",lrarr:"2194",larr:"2190",gets:"2190",rarr:"2192",oiint:["222F",{texClass:a.TEXCLASS.OP}],oiiint:["2230",{texClass:a.TEXCLASS.OP}]},mathchar7:{Alpha:"0391",
-Beta:"0392",Epsilon:"0395",Zeta:"0396",Eta:"0397",Iota:"0399",Kappa:"039A",Mu:"039C",Nu:"039D",Omicron:"039F",Rho:"03A1",Tau:"03A4",Chi:"03A7",Koppa:"03DE",Stigma:"03DA",Digamma:"03DC",Coppa:"03D8",Sampi:"03E0"},delimiter:{"\\uarr":"2191","\\darr":"2193","\\Uarr":"21D1","\\uArr":"21D1","\\Darr":"21D3","\\dArr":"21D3","\\rang":"27E9","\\lang":"27E8"},macros:{sgn:"NamedFn",arccot:"NamedFn",arcsec:"NamedFn",arccsc:"NamedFn",sen:"NamedFn",image:["Macro","\\Im"],bold:["Macro","\\mathbf{#1}",1],pagecolor:["Macro",
-"",1],emph:["Macro","\\textit{#1}",1],textsf:["Macro","\\mathord{\\sf{\\text{#1}}}",1],texttt:["Macro","\\mathord{\\tt{\\text{#1}}}",1],vline:["Macro","\\smash{\\large\\lvert}",0]}})})};
-cvox.MathJaxExternalUtil.convertToMml=function(a,b,c,d,e,f){var g=MathJax.HTML.Element("script",{type:c},[b]),g={math:b,script:g};MathJax.InputJax[d].prefilterHooks.Execute(g);var h;try{h=f(g.math)}catch(k){if(k[e])h=MathJax.ElementJax.mml.merror(k.message.replace(/\n.*/,""));else{if(k.restart)return MathJax.Callback.After([cvox.MathJaxExternalUtil.convertToMml,a,b,c,d,e,f],k.restart);throw k;}}h=h.inferred?MathJax.ElementJax.mml.apply(MathJax.ElementJax,h.data):MathJax.ElementJax.mml(h);h.root.display=
-"block";g.math=h;g.script.MathJax={};MathJax.InputJax[d].postfilterHooks.Execute(g);return cvox.MathJaxExternalUtil.getMathml(g.math,a)};cvox.MathJaxExternalUtil.texToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/tex;mode=display","TeX","texError",function(a){return MathJax.InputJax.TeX.Parse(a).mml()})};cvox.MathJaxExternalUtil.asciiMathToMml=function(a,b){cvox.MathJaxExternalUtil.convertToMml(a,b,"math/asciimath","AsciiMath","asciimathError",MathJax.InputJax.AsciiMath.AM.parseMath)};cvox.AndroidMathJax=function(){this.altMathNodeId_=0};goog.inherits(cvox.AndroidMathJax,cvox.AbstractMathJax);cvox.AndroidMathJax.prototype.getMathmlToDomCallback_=function(a){return goog.bind(function(b,c){return this.convertMarkupToDom(a,b,c)},this)};cvox.AndroidMathJax.prototype.isMathjaxActive=function(a){var b=0,c=function(){b++;cvox.MathJaxExternalUtil.isActive()?a(!0):5>b&&setTimeout(c,1E3)};c()};cvox.AndroidMathJax.prototype.getAllJax=function(a){cvox.MathJaxExternalUtil.getAllJax(this.getMathmlToDomCallback_(a))};
-cvox.AndroidMathJax.prototype.registerSignal=function(a,b){cvox.MathJaxExternalUtil.registerSignal(this.getMathmlToDomCallback_(a),b)};cvox.AndroidMathJax.prototype.injectScripts=function(){cvox.MathJaxExternalUtil.injectConfigScript();cvox.MathJaxExternalUtil.injectLoadScript()};cvox.AndroidMathJax.prototype.configMediaWiki=function(){cvox.MathJaxExternalUtil.configMediaWiki()};
-cvox.AndroidMathJax.prototype.getTex=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.texToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};cvox.AndroidMathJax.prototype.getAsciiMath=function(a,b){var c=b.alt||b.title;if(c){var d="cvoxId-"+this.altMathNodeId_++;b.setAttribute("cvoxId",d);cvox.MathJaxExternalUtil.asciiMathToMml(goog.bind(function(b){this.convertMarkupToDom(a,b,d)},this),c)}};
-cvox.HostFactory.mathJaxConstructor=cvox.AndroidMathJax;cvox.AndroidTts=function(){cvox.AbstractTts.call(this);this.ttsProperties.rate=0.5;this.ttsProperties.pitch=0.5;this.ttsProperties.volume=1};goog.inherits(cvox.AndroidTts,cvox.AbstractTts);cvox.AndroidTts.prototype.speak=function(a,b,c){cvox.AndroidTts.superClass_.speak.call(this,a,b,c);c=this.mergeProperties(c);accessibility.speak(a,b,c);return this};cvox.AndroidTts.prototype.isSpeaking=function(){cvox.AndroidTts.superClass_.isSpeaking.call(this);return accessibility.isSpeaking()};
-cvox.AndroidTts.prototype.stop=function(){cvox.AndroidTts.superClass_.stop.call(this);accessibility.stop()};cvox.HostFactory.ttsConstructor=cvox.AndroidTts;cvox.TestMessages={locale:{message:"en"},chromevox_name:{message:"ChromeVox"},chromevox_description:{message:"ChromeVox - Giving Voice to Chrome"},chromevox_stop_speech_key:{message:"Stop speech"},chromevox_toggle_sticky_mode:{message:"Enable/Disable sticky mode"},chromevox_prefix_key:{message:"Prefix key"},chromevox_handle_tab_next:{message:"Jump to next focusable item"},chromevox_handle_tab_prev:{message:"Jump to previous focusable item"},chromevox_backward:{message:"Navigate backward"},chromevox_forward:{message:"Navigate forward"},
-chromevox_left:{message:"Move left"},chromevox_right:{message:"Move right"},chromevox_skip_backward:{message:"Skip backward during continuous reading"},chromevox_skip_forward:{message:"Skip forward during continuous reading"},chromevox_previous_granularity:{message:"Decrease navigation granularity"},chromevox_next_granularity:{message:"Increase navigation granularity"},chromevox_act_on_current_item:{message:"Take action on current item"},chromevox_force_click_on_current_item:{message:"Click on current item"},
-chromevox_read_link_url:{message:"Announce the URL behind a link"},chromevox_read_current_title:{message:"Announce the title of the current page"},chromevox_read_current_url:{message:"Announce the URL of the current page"},chromevox_read_from_here:{message:"Start reading from current location"},chromevox_show_power_key:{message:"Open ChromeVox keyboard help"},chromevox_hide_power_key:{message:"Hide ChromeVox help"},chromevox_power_key_help:{message:"Press up or down to review commands, press enter to activate"},
-chromevox_help:{message:"Open ChromeVox tutorial"},chromevox_toggle_search_widget:{message:"Toggle search widget"},chromevox_show_options_page:{message:"Open options page"},chromevox_show_kb_explorer_page:{message:"Open keyboard explorer"},chromevox_decrease_tts_rate:{message:"Decrease rate of speech"},chromevox_increase_tts_rate:{message:"Increase rate of speech"},chromevox_decrease_tts_pitch:{message:"Decrease pitch"},chromevox_increase_tts_pitch:{message:"Increase pitch"},chromevox_decrease_tts_volume:{message:"Decrease speech volume"},
-chromevox_increase_tts_volume:{message:"Increase speech volume"},chromevox_show_forms_list:{message:"Show forms list"},chromevox_show_headings_list:{message:"Show headings list"},chromevox_show_links_list:{message:"Show links list"},chromevox_show_tables_list:{message:"Show tables list"},chromevox_show_landmarks_list:{message:"Show landmarks list"},chromevox_previous_row:{message:"Previous table row"},chromevox_next_row:{message:"Next table row"},chromevox_previous_col:{message:"Previous table column"},
-chromevox_next_col:{message:"Next table column"},chromevox_announce_headers:{message:"Announce the headers of the current cell"},chromevox_speak_table_location:{message:"Announce current cell coordinates"},chromevox_guess_row_header:{message:"Make a guess at the row header of the current cell"},chromevox_guess_col_header:{message:"Make a guess at the column header of the current cell"},chromevox_skip_to_beginning:{message:"Go to beginning of table"},chromevox_skip_to_end:{message:"Go to end of table"},
-chromevox_skip_to_row_beginning:{message:"Go to beginning of the current row"},chromevox_skip_to_row_end:{message:"Go to end of the current row"},chromevox_skip_to_col_beginning:{message:"Go to beginning of the current column"},chromevox_skip_to_col_end:{message:"Go to end of the current column"},chromevox_next_heading1:{message:"Next level 1 heading"},chromevox_previous_heading1:{message:"Previous level 1 heading"},chromevox_next_heading2:{message:"Next level 2 heading"},chromevox_previous_heading2:{message:"Previous level 2 heading"},
-chromevox_next_heading3:{message:"Next level 3 heading"},chromevox_previous_heading3:{message:"Previous level 3 heading"},chromevox_next_heading4:{message:"Next level 4 heading"},chromevox_previous_heading4:{message:"Previous level 4 heading"},chromevox_next_heading5:{message:"Next level 5 heading"},chromevox_previous_heading5:{message:"Previous level 5 heading"},chromevox_next_heading6:{message:"Next level 6 heading"},chromevox_previous_heading6:{message:"Previous level 6 heading"},chromevox_next_combo_box:{message:"Next combo box"},
-chromevox_previous_combo_box:{message:"Previous combo box"},chromevox_next_edit_text:{message:"Next editable text area"},chromevox_previous_edit_text:{message:"Previous editable text area"},chromevox_next_form_field:{message:"Next form field"},chromevox_previous_form_field:{message:"Previous form field"},chromevox_next_graphic:{message:"Next graphic"},chromevox_previous_graphic:{message:"Previous graphic"},chromevox_next_heading:{message:"Next heading"},chromevox_previous_heading:{message:"Previous heading"},
-chromevox_next_list_item:{message:"Next list item"},chromevox_previous_list_item:{message:"Previous list item"},chromevox_next_jump:{message:"Next jump"},chromevox_previous_jump:{message:"Previous jump"},chromevox_next_link:{message:"Next link"},chromevox_previous_link:{message:"Previous link"},chromevox_next_list:{message:"Next list"},chromevox_previous_list:{message:"Previous list"},chromevox_next_math:{message:"Next math"},chromevox_previous_math:{message:"Previous math"},chromevox_next_media:{message:"Next media"},
-chromevox_previous_media:{message:"Previous media"},chromevox_next_blockquote:{message:"Next block quote"},chromevox_previous_blockquote:{message:"Previous block quote"},chromevox_next_radio:{message:"Next radio button"},chromevox_previous_radio:{message:"Previous radio button"},chromevox_next_slider:{message:"Next slider"},chromevox_previous_slider:{message:"Previous slider"},chromevox_next_table:{message:"Next table"},chromevox_next_visited_link:{message:"Next visited link"},chromevox_previous_table:{message:"Previous table"},
-chromevox_previous_visited_link:{message:"Previous visited link"},chromevox_next_button:{message:"Next button"},chromevox_previous_button:{message:"Previous button"},chromevox_next_checkbox:{message:"Next checkbox"},chromevox_previous_checkbox:{message:"Previous checkbox"},chromevox_next_landmark:{message:"Next landmark"},chromevox_previous_landmark:{message:"Previous landmark"},chromevox_benchmark:{message:"Debug benchmark"},chromevox_announce_position:{message:"Announces a brief description of the current position"},
-chromevox_fully_describe:{message:"Announces a complete description of the current position"},chromevox_options_page_title:{message:"ChromeVox Options"},chromevox_options_page_summary:{message:"Use the options below to customize ChromeVox. Changes take effect immediately."},chromevox_options_mouse_focus_follows:{message:"Use the mouse to change focus."},chromevox_options_site_specific_enhancements:{message:"Enhance specific sites (like Google Search)."},chromevox_options_verbosity_verbose:{message:"Enable verbose descriptions."},
-chromevox_options_cursor_between_characters:{message:"Place cursor between characters when editing text (like Mac OS X)."},chromevox_options_magnifier_show_checkbox:{message:"Show a magnified view of the page content."},chromevox_options_voices:{message:"Voices"},chromevox_options_voices_description:{message:"Change the current voice by selecting an option from the list below."},chromevox_options_braille:{message:"Braille"},chromevox_options_braille_table_type_6:{message:"Switch to 8 dot braille"},
-chromevox_options_braille_table_type_8:{message:"Switch to 6 dot braille"},chromevox_options_braille_description_6:{message:"Change the current 6 dot braille table by selecting an option from the list below."},chromevox_options_braille_locale_grade:{message:"$1, Grade $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_options_braille_description_8:{message:"Change the current 8 dot braille table by selecting an option from the list below."},chromevox_options_keyboard_shortcuts:{message:"Keyboard shortcuts"},
-chromevox_options_keymap_description:{message:"Change the current keymap by selecting an option from the list below."},chromevox_options_select_keys:{message:"Reset current keymap"},chromevox_options_shortcuts_description:{message:"Customize keyboard shortcuts for frequently used commands by typing them into the corresponding fields below."},chromevox_options_modifier_keys:{message:"Modifier keys"},chromevox_options_cvox_modifier_key:{message:"ChromeVox modifier key"},chromevox_kbexplorer_title:{message:"ChromeOS Keyboard Explorer"},
-chromevox_kbexplorer_instructions:{message:"Press any key to learn its name. Ctrl+W will close the keyboard explorer."},chromevox_chrome_system_need_restart:{message:"System was updated. Restart is recommended."},chromevox_chrome_brightness_changed:{message:"Brightness $1 percent",placeholders:{1:{content:"$1"}}},chromevox_chrome_tab_created:{message:"tab created"},chromevox_chrome_tab_selected:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_normal_window_selected:{message:"window $1 tab",
-placeholders:{1:{content:"$1"}}},chromevox_chrome_incognito_window_selected:{message:"incognito window $1 tab",placeholders:{1:{content:"$1"}}},chromevox_chrome_menu_opened:{message:"$1 menu opened",placeholders:{1:{content:"$1"}}},chromevox_describe_checkbox_checked:{message:"$1 checkbox checked",placeholders:{1:{content:"$1"}}},chromevox_checkbox_checked_state:{message:"checked"},chromevox_checkbox_checked_state_brl:{message:"x"},chromevox_describe_checkbox_unchecked:{message:"$1, checkbox not checked",
-placeholders:{1:{content:"$1"}}},chromevox_checkbox_unchecked_state:{message:"not checked"},chromevox_checkbox_unchecked_state_brl:{message:" "},chromevox_describe_radio_selected:{message:"$1, radio button selected",placeholders:{1:{content:"$1"}}},chromevox_radio_selected_state:{message:"selected"},chromevox_radio_selected_state_brl:{message:"x"},chromevox_describe_radio_unselected:{message:"$1, radio button unselected",placeholders:{1:{content:"$1"}}},chromevox_radio_unselected_state:{message:"unselected"},
-chromevox_radio_unselected_state_brl:{message:" "},chromevox_describe_menu:{message:"$1, menu",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item:{message:"$1, menu item",placeholders:{1:{content:"$1"}}},chromevox_describe_menu_item_with_submenu:{message:"$1, menu item, with submenu",placeholders:{1:{content:"$1"}}},chromevox_describe_window:{message:"$1, window",placeholders:{1:{content:"$1"}}},chromevox_describe_textbox:{message:"$1, $2, text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},
-chromevox_describe_unnamed_textbox:{message:"$1, text box",placeholders:{1:{content:"$1"}}},chromevox_describe_password:{message:"$1, $2, password text box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_password:{message:"$1, password text box",placeholders:{1:{content:"$1"}}},chromevox_describe_button:{message:"$1, button",placeholders:{1:{content:"$1"}}},chromevox_describe_combobox:{message:"$1, $2, combo box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_combobox:{message:"$1, combo box",
-placeholders:{1:{content:"$1"}}},chromevox_describe_listbox:{message:"$1, $2, list box",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_unnamed_listbox:{message:"$1, list box",placeholders:{1:{content:"$1"}}},chromevox_describe_link:{message:"$1, link",placeholders:{1:{content:"$1"}}},chromevox_describe_tab:{message:"$1, tab",placeholders:{1:{content:"$1"}}},chromevox_describe_slider:{message:"$1, $2, slider",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_describe_selected:{message:", selected"},
-chromevox_describe_unselected:{message:", unselected"},chromevox_describe_index:{message:" $1 of $2 ",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_announce_rate:{message:"Rate $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_pitch:{message:"Pitch $1 percent",placeholders:{1:{content:"$1"}}},chromevox_announce_volume:{message:"Volume $1 percent",placeholders:{1:{content:"$1"}}},chromevox_exiting_dialog:{message:"Exited dialog."},chromevox_exited_container:{message:"Exited $1.",
-placeholders:{1:{content:"$1"}}},chromevox_entering_dialog:{message:"Entered dialog"},chromevox_live_regions_removed:{message:"removed:"},chromevox_sticky_mode_enabled:{message:"Sticky mode enabled"},chromevox_sticky_mode_disabled:{message:"Sticky mode disabled"},chromevox_keyboard_help_intro:{message:"Keyboard Help"},chromevox_context_menu_intro:{message:"Context Menu"},chromevox_choice_widget_name:{message:"$1 list.",placeholders:{1:{content:"$1"}}},chromevox_choice_widget_help:{message:"Use up and down arrow keys to browse, or type to search."},
-chromevox_choice_widget_exited:{message:"Exited"},chromevox_choice_widget_type_generic:{message:" "},chromevox_end_of_cell:{message:"End of cell."},chromevox_no_url_found:{message:"No URL found"},chromevox_leaving_table:{message:"Leaving table."},chromevox_leaving_grid:{message:"Leaving grid."},chromevox_inside_table:{message:"Inside table"},chromevox_no_tables:{message:"No table found."},chromevox_not_inside_table:{message:"Not inside table."},chromevox_no_cell_below:{message:"No cell below."},chromevox_no_cell_above:{message:"No cell above."},
-chromevox_no_cell_right:{message:"No cell right."},chromevox_no_cell_left:{message:"No cell left."},chromevox_empty_cell:{message:"Empty cell."},chromevox_spanned:{message:"Spanned."},chromevox_row_header:{message:"Row header:"},chromevox_empty_row_header:{message:"Empty row header"},chromevox_column_header:{message:"Column header:"},chromevox_empty_column_header:{message:"Empty column header"},chromevox_no_headers:{message:"No headers"},chromevox_empty_headers:{message:"Empty headers"},chromevox_table_location:{message:"Row $1 of $2, Column $3 of $4",
-placeholders:{1:{content:"$1"},2:{content:"$2"},3:{content:"$3"},4:{content:"$4"}}},chromevox_no_next_checkbox:{message:"No next checkbox."},chromevox_no_previous_checkbox:{message:"No previous checkbox."},chromevox_no_next_edit_text:{message:"No next editable text field."},chromevox_no_previous_edit_text:{message:"No previous editable text field."},chromevox_no_next_heading:{message:"No next heading."},chromevox_no_previous_heading:{message:"No previous heading."},chromevox_no_next_heading_1:{message:"No next level 1 heading."},
-chromevox_no_previous_heading_1:{message:"No previous level 1 heading."},chromevox_no_next_heading_2:{message:"No next level 2 heading."},chromevox_no_previous_heading_2:{message:"No previous level 2 heading."},chromevox_no_next_heading_3:{message:"No next level 3 heading."},chromevox_no_previous_heading_3:{message:"No previous level 3 heading."},chromevox_no_next_heading_4:{message:"No next level 4 heading."},chromevox_no_previous_heading_4:{message:"No previous level 4 heading."},chromevox_no_next_heading_5:{message:"No next level 5 heading."},
-chromevox_no_previous_heading_5:{message:"No previous level 5 heading."},chromevox_no_next_heading_6:{message:"No next level 6 heading."},chromevox_no_previous_heading_6:{message:"No previous level 6 heading."},chromevox_no_next_not_link:{message:"No next item that isn't a link."},chromevox_no_previous_not_link:{message:"No previous item that isn't a link."},chromevox_no_next_anchor:{message:"No next anchor."},chromevox_no_previous_anchor:{message:"No previous anchor."},chromevox_no_next_link:{message:"No next link."},
-chromevox_no_previous_link:{message:"No previous link."},chromevox_no_next_table:{message:"No next table."},chromevox_no_previous_table:{message:"No previous table."},chromevox_no_next_visited_link:{message:"No next visited link."},chromevox_no_previous_visited_link:{message:"No previous visited link."},chromevox_no_next_math:{message:"No next math expression."},chromevox_no_previous_math:{message:"No previous math expression."},chromevox_no_next_media_widget:{message:"No next media widget."},chromevox_no_previous_media_widget:{message:"No previous media widget."},
-chromevox_no_next_list:{message:"No next list."},chromevox_no_previous_list:{message:"No previous list."},chromevox_no_next_list_item:{message:"No next list item."},chromevox_no_previous_list_item:{message:"No previous list item."},chromevox_no_next_blockquote:{message:"No next blockquote."},chromevox_no_previous_blockquote:{message:"No previous blockquote."},chromevox_no_next_form_field:{message:"No next form field."},chromevox_no_previous_form_field:{message:"No previous form field."},chromevox_no_next_jump:{message:"No next jump point."},
-chromevox_no_previous_jump:{message:"No previous jump point."},chromevox_no_next_landmark:{message:"No next ARIA landmark."},chromevox_no_previous_landmark:{message:"No previous ARIA landmark."},chromevox_no_next_combo_box:{message:"No next combo box."},chromevox_no_previous_combo_box:{message:"No previous combo box."},chromevox_no_next_button:{message:"No next button."},chromevox_no_previous_button:{message:"No previous button."},chromevox_no_next_graphic:{message:"No next graphic."},chromevox_no_previous_graphic:{message:"No previous graphic."},
-chromevox_no_next_slider:{message:"No next slider."},chromevox_no_previous_slider:{message:"No previous slider."},chromevox_no_next_radio_button:{message:"No next radio button."},chromevox_no_previous_radio_button:{message:"No previous radio button."},chromevox_no_next_section:{message:"No next section."},chromevox_no_previous_section:{message:"No previous section."},chromevox_no_next_control:{message:"No next control."},chromevox_no_previous_control:{message:"No previous control."},chromevox_element_clicked:{message:"Clicked"},
-chromevox_element_double_clicked:{message:"double clicked"},chromevox_powerkey_no_headings:{message:"No headings."},chromevox_powerkey_no_links:{message:"No links."},chromevox_powerkey_no_forms:{message:"No forms."},chromevox_powerkey_no_tables:{message:"No tables."},chromevox_powerkey_no_landmarks:{message:"No ARIA landmarks."},chromevox_powerkey_no_jumps:{message:"No jumps."},chromevox_list_position:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_list_position_brl:{message:"$1/$2",
-placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_aria_has_submenu:{message:"has submenu"},chromevox_aria_has_submenu_brl:{message:"+submnu"},chromevox_aria_has_popup:{message:"has pop up"},chromevox_aria_has_popup_brl:{message:"+popup"},chromevox_aria_value_min:{message:"Min $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_min_brl:{message:"min:$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max:{message:"Max $1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_max_brl:{message:"max:$1",
-placeholders:{1:{content:"$1"}}},chromevox_aria_value_now:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_value_now_brl:{message:"$1",placeholders:{1:{content:"$1"}}},chromevox_aria_role_alert:{message:"Alert"},chromevox_aria_role_alert_brl:{message:"alrt"},chromevox_aria_role_alertdialog:{message:"Alert dialog"},chromevox_aria_role_alertdialog_brl:{message:"alrt dlg"},chromevox_aria_role_button:{message:"Button"},chromevox_aria_role_button_brl:{message:"btn"},chromevox_aria_role_checkbox:{message:"Check box"},
-chromevox_aria_role_checkbox_brl:{message:"chx"},chromevox_aria_role_combobox:{message:"Combo box"},chromevox_aria_role_combobox_brl:{message:"cbx"},chromevox_aria_role_dialog:{message:"Dialog"},chromevox_aria_role_dialog_brl:{message:"dlg"},chromevox_aria_role_grid:{message:"Grid"},chromevox_aria_role_grid_brl:{message:"grd"},chromevox_aria_role_gridcell:{message:"Cell"},chromevox_aria_role_gridcell_brl:{message:"cl"},chromevox_aria_role_gridcell_pos:{message:"row $1 column $2",placeholders:{1:{content:"$1"},
-2:{content:"$2"}}},chromevox_aria_role_link:{message:"Link"},chromevox_aria_role_link_brl:{message:"lnk"},chromevox_aria_role_link_singular:{message:"1 link"},chromevox_aria_role_link_plural:{message:"$1 links",placeholders:{1:{content:"$1"}}},chromevox_aria_role_listbox:{message:"List box"},chromevox_aria_role_listbox_brl:{message:"lstbx"},chromevox_aria_role_log:{message:"Log"},chromevox_aria_role_log_brl:{message:"log"},chromevox_aria_role_marquee:{message:"Marquee"},chromevox_aria_role_marquee_brl:{message:"maqe"},
-chromevox_aria_role_menu:{message:"Menu"},chromevox_aria_role_menu_brl:{message:"mnu"},chromevox_aria_role_menubar:{message:"Menu bar"},chromevox_aria_role_menubar_brl:{message:"mnu br"},chromevox_aria_role_menuitem:{message:"Menu item"},chromevox_aria_role_menuitem_brl:{message:"mnu itm"},chromevox_aria_role_menuitemcheckbox:{message:"Menu item check box"},chromevox_aria_role_menuitemcheckbox_brl:{message:"mnu itm chx"},chromevox_aria_role_menuitemradio:{message:"Menu item radio button"},chromevox_aria_role_menuitemradio_brl:{message:"mnu itm rd"},
-chromevox_aria_role_option:{message:" "},chromevox_aria_role_option_brl:{message:" "},chromevox_aria_role_popup_button:{message:"Pop-up button"},chromevox_aria_role_popup_button_brl:{message:"pup btn"},chromevox_aria_role_progressbar:{message:"Progress bar"},chromevox_aria_role_progressbar_brl:{message:"prog br"},chromevox_aria_role_radio:{message:"Radio button"},chromevox_aria_role_radio_brl:{message:"rd"},chromevox_aria_role_radiogroup:{message:"Radio button group"},chromevox_aria_role_radiogroup_brl:{message:"rd grp"},
-chromevox_aria_role_scrollbar:{message:"Scroll bar"},chromevox_aria_role_scrollbar_brl:{message:"scr br"},chromevox_aria_role_slider:{message:"Slider"},chromevox_aria_role_slider_brl:{message:"slr"},chromevox_aria_role_spinbutton:{message:"Spin button"},chromevox_aria_role_spinbutton_brl:{message:"spn btn"},chromevox_aria_role_status:{message:"Status"},chromevox_aria_role_status_brl:{message:"sts"},chromevox_aria_role_tab:{message:"Tab"},chromevox_aria_role_tab_brl:{message:"tab"},chromevox_aria_role_tabpanel:{message:"Tab panel"},
-chromevox_aria_role_tabpanel_brl:{message:"tab pnl"},chromevox_aria_role_textbox:{message:"Text box"},chromevox_aria_role_textbox_brl:{message:"txtbx"},chromevox_aria_role_timer:{message:"Timer"},chromevox_aria_role_timer_brl:{message:"tmr"},chromevox_aria_role_toolbar:{message:"Tool bar"},chromevox_aria_role_toolbar_brl:{message:"tl br"},chromevox_aria_role_tooltip:{message:"Tool tip"},chromevox_aria_role_tooltip_brl:{message:"tl tp"},chromevox_aria_role_treeitem:{message:"Tree item"},chromevox_aria_role_treeitem_brl:{message:"tr itm"},
-chromevox_aria_role_article:{message:"Article"},chromevox_aria_role_article_brl:{message:"acl"},chromevox_aria_role_application:{message:"Application"},chromevox_aria_role_application_brl:{message:"app"},chromevox_aria_role_banner:{message:"Banner"},chromevox_aria_role_banner_brl:{message:"bnr"},chromevox_aria_role_columnheader:{message:"Column header"},chromevox_aria_role_columnheader_brl:{message:"clm hd"},chromevox_aria_role_complementary:{message:"Complementary"},chromevox_aria_role_complementary_brl:{message:"cmpy"},
-chromevox_aria_role_contentinfo:{message:"Content info"},chromevox_aria_role_contentinfo_brl:{message:"cnt in"},chromevox_aria_role_definition:{message:"Definition"},chromevox_aria_role_definition_brl:{message:"def"},chromevox_aria_role_directory:{message:"Directory"},chromevox_aria_role_directory_brl:{message:"dir"},chromevox_aria_role_document:{message:"Document"},chromevox_aria_role_document_brl:{message:"doc"},chromevox_aria_role_form:{message:"Form"},chromevox_aria_role_form_brl:{message:"frm"},
-chromevox_aria_role_form_singular:{message:"1 form"},chromevox_aria_role_form_plural:{message:"$1 forms",placeholders:{1:{content:"$1"}}},chromevox_aria_role_group:{message:"Group"},chromevox_aria_role_group_brl:{message:"grp"},chromevox_aria_role_heading:{message:"Heading"},chromevox_aria_role_heading_brl:{message:"hd"},chromevox_aria_role_img:{message:"Image"},chromevox_aria_role_img_brl:{message:"img"},chromevox_aria_role_list:{message:"List"},chromevox_aria_role_list_brl:{message:"lst"},chromevox_aria_role_listitem:{message:"List item"},
-chromevox_aria_role_listitem_brl:{message:"lstitm"},chromevox_aria_role_main:{message:"Main"},chromevox_aria_role_main_brl:{message:"main"},chromevox_aria_role_math:{message:"Math"},chromevox_aria_role_math_brl:{message:"math"},chromevox_aria_role_navigation:{message:"Navigation"},chromevox_aria_role_navigation_brl:{message:"nav"},chromevox_aria_role_note:{message:"Note"},chromevox_aria_role_note_brl:{message:"note"},chromevox_aria_role_region:{message:"Region"},chromevox_aria_role_region_brl:{message:"rgn"},
-chromevox_aria_role_rowheader:{message:"Row header"},chromevox_aria_role_rowheader_brl:{message:"rw hd"},chromevox_aria_role_search:{message:"Search"},chromevox_aria_role_search_brl:{message:"srch"},chromevox_aria_role_separator:{message:"Separator"},chromevox_aria_role_separator_brl:{message:"sprtr"},chromevox_aria_autocomplete_inline:{message:"Autocompletion inline"},chromevox_aria_autocomplete_inline_brl:{message:"autocomplete"},chromevox_aria_autocomplete_list:{message:"Autocompletion list"},
-chromevox_aria_autocomplete_list_brl:{message:"autocomplete lst"},chromevox_aria_autocomplete_both:{message:"Autocompletion inline and list"},chromevox_aria_autocomplete_both_brl:{message:"autocomplete lst"},chromevox_aria_checked_true:{message:"Checked"},chromevox_aria_checked_true_brl:{message:"x"},chromevox_aria_checked_false:{message:"Not checked"},chromevox_aria_checked_false_brl:{message:" "},chromevox_aria_checked_mixed:{message:"Partially checked"},chromevox_aria_checked_mixed_brl:{message:"/x"},
-chromevox_aria_disabled_true:{message:"Disabled"},chromevox_aria_disabled_true_brl:{message:"="},chromevox_aria_expanded_true:{message:"Expanded"},chromevox_aria_expanded_true_brl:{message:">"},chromevox_aria_expanded_false:{message:"Collapsed"},chromevox_aria_expanded_false_brl:{message:"<"},chromevox_aria_invalid_true:{message:"Invalid input"},chromevox_aria_invalid_true_brl:{message:"!"},chromevox_aria_invalid_grammar:{message:"Grammatical mistake detected"},chromevox_aria_invalid_grammar_brl:{message:"Grammatical mistake detected"},
-chromevox_aria_invalid_spelling:{message:"Spelling mistake detected"},chromevox_aria_invalid_spelling_brl:{message:"misspelled"},chromevox_aria_multiline_true:{message:"Multi line"},chromevox_aria_multiline_true_brl:{message:"mult ln"},chromevox_aria_multiselectable_true:{message:"Multi select"},chromevox_aria_multiselectable_true_brl:{message:"mult sel"},chromevox_aria_pressed_true:{message:"Pressed"},chromevox_aria_pressed_true_brl:{message:"x"},chromevox_aria_pressed_false:{message:"Not pressed"},
-chromevox_aria_pressed_false_brl:{message:" "},chromevox_aria_pressed_mixed:{message:"Partially pressed"},chromevox_aria_pressed_mixed_brl:{message:"/x"},chromevox_aria_readonly_true:{message:"Read only"},chromevox_aria_readonly_true_brl:{message:"rdonly"},chromevox_aria_required_true:{message:"Required"},chromevox_aria_required_true_brl:{message:"req"},chromevox_aria_selected_true:{message:"Selected"},chromevox_aria_selected_true_brl:{message:"x"},chromevox_aria_selected_false:{message:"Not selected"},
-chromevox_aria_selected_false_brl:{message:" "},chromevox_tag_link:{message:"Link"},chromevox_tag_link_brl:{message:"lnk"},chromevox_tag_button:{message:"Button"},chromevox_tag_button_brl:{message:"btn"},chromevox_tag_h1:{message:"Heading 1"},chromevox_tag_h1_brl:{message:"h1"},chromevox_tag_h2:{message:"Heading 2"},chromevox_tag_h2_brl:{message:"h2"},chromevox_tag_h3:{message:"Heading 3"},chromevox_tag_h3_brl:{message:"h3"},chromevox_tag_h4:{message:"Heading 4"},chromevox_tag_h4_brl:{message:"h4"},
-chromevox_tag_h5:{message:"Heading 5"},chromevox_tag_h5_brl:{message:"h5"},chromevox_tag_h6:{message:"Heading 6"},chromevox_tag_h6_brl:{message:"h6"},chromevox_tag_li:{message:"List item"},chromevox_tag_li_brl:{message:"lstitm"},chromevox_tag_ol:{message:"Ordered List"},chromevox_tag_ol_brl:{message:"lst"},chromevox_tag_select:{message:"Combo box"},chromevox_tag_select_brl:{message:"cbx"},chromevox_tag_textarea:{message:"Text area"},chromevox_tag_textarea_brl:{message:"txta"},chromevox_tag_table:{message:"table"},
-chromevox_tag_table_brl:{message:"tbl"},chromevox_tag_ul:{message:"List"},chromevox_tag_ul_brl:{message:"lst"},chromevox_tag_section:{message:"Section"},chromevox_tag_section_brl:{message:"stn"},chromevox_tag_nav:{message:"Navigation"},chromevox_tag_nav_brl:{message:"nav"},chromevox_tag_article:{message:"Article"},chromevox_tag_article_brl:{message:"article"},chromevox_tag_aside:{message:"Aside"},chromevox_tag_aside_brl:{message:"aside"},chromevox_tag_hgroup:{message:"Heading group"},chromevox_tag_hgroup_brl:{message:"hgrp"},
-chromevox_tag_header:{message:"Header"},chromevox_tag_header_brl:{message:"hdr"},chromevox_tag_footer:{message:"Footer"},chromevox_tag_footer_brl:{message:"ftr"},chromevox_tag_time:{message:"Time"},chromevox_tag_time_brl:{message:" "},chromevox_tag_mark:{message:"Mark"},chromevox_tag_mark_brl:{message:"mark"},chromevox_tag_video:{message:"Video"},chromevox_tag_video_brl:{message:"video"},chromevox_tag_audio:{message:"Audio"},chromevox_tag_audio_brl:{message:"audio"},chromevox_input_type_button:{message:"Button"},
-chromevox_input_type_button_brl:{message:"btn"},chromevox_input_type_checkbox:{message:"Check box"},chromevox_input_type_checkbox_brl:{message:"chx"},chromevox_input_type_color:{message:"Color picker"},chromevox_input_type_color_brl:{message:"color picker"},chromevox_input_type_datetime:{message:"Date time control"},chromevox_input_type_datetime_brl:{message:"date time"},chromevox_input_type_datetime_local:{message:"Date time control"},chromevox_input_type_datetime_local_brl:{message:"date time"},
-chromevox_input_type_date:{message:"Date control"},chromevox_input_type_date_brl:{message:"date"},chromevox_input_type_email:{message:"Edit text, email entry"},chromevox_input_type_email_brl:{message:"edtxt email"},chromevox_input_type_file:{message:"File selection"},chromevox_input_type_file_brl:{message:"file"},chromevox_input_type_image:{message:"Button"},chromevox_input_type_image_brl:{message:"btn"},chromevox_input_type_month:{message:"Month control"},chromevox_input_type_month_brl:{message:"month"},
-chromevox_input_type_number:{message:"Edit text numeric only"},chromevox_input_type_number_brl:{message:"edtxt#"},chromevox_input_type_password:{message:"Password edit text"},chromevox_input_type_password_brl:{message:"pwd edtxt"},chromevox_input_type_radio:{message:"Radio button"},chromevox_input_type_radio_brl:{message:"rd btn"},chromevox_input_type_range:{message:"Slider"},chromevox_input_type_range_brl:{message:"slr"},chromevox_input_type_reset:{message:"Reset"},chromevox_input_type_reset_brl:{message:"reset"},
-chromevox_input_type_search:{message:"Edit text, search entry"},chromevox_input_type_search_brl:{message:"search edtxt"},chromevox_input_type_submit:{message:"Button"},chromevox_input_type_submit_brl:{message:"btn"},chromevox_input_type_tel:{message:"Edit text, number entry"},chromevox_input_type_tel_brl:{message:"tele# edtxt"},chromevox_input_type_text:{message:"Edit text"},chromevox_input_type_text_brl:{message:"edtxt"},chromevox_input_type_url:{message:"Edit text, URL entry"},chromevox_input_type_url_brl:{message:"url edtxt"},
-chromevox_input_type_week:{message:"Week of the year control"},chromevox_input_type_week_brl:{message:"week"},chromevox_internal_link:{message:"Internal link"},chromevox_internal_link_brl:{message:"int lnk"},chromevox_text_box_blank:{message:"Blank"},chromevox_list_with_items:{message:"with $1 items",placeholders:{1:{content:"$1"}}},chromevox_list_with_items_brl:{message:"+$1",placeholders:{1:{content:"$1"}}},chromevox_state_percent:{message:"$1%",placeholders:{1:{content:"$1"}}},chromevox_state_percent_brl:{message:"$1%",
-placeholders:{1:{content:"$1"}}},chromevox_has_submenu:{message:"with submenu"},chromevox_has_submenu_brl:{message:"+submnu"},chromevox_has_popup:{message:"has popup"},chromevox_has_popup_brl:{message:"has popup"},chromevox_collection:{message:"$1 collection with $2 items",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_key:{message:"Enter"},chromevox_space_key:{message:"Space"},chromevox_backspace_key:{message:"Backspace"},chromevox_tab_key:{message:"Tab"},chromevox_left_key:{message:"Left"},
-chromevox_up_key:{message:"Up"},chromevox_right_key:{message:"Right"},chromevox_down_key:{message:"Down"},chromevox_unknown_link:{message:"Unknown link"},chromevox_toggle_chromevox_active:{message:"Toggle ChromeVox active or inactive."},chromevox_chromevox_inactive:{message:"ChromeVox is now inactive."},chromevox_pause:{message:", "},chromevox_end:{message:". "},chromevox_previous_different_element:{message:"Previous different element."},chromevox_next_different_element:{message:"Next different element."},
-chromevox_previous_similar_element:{message:"Previous similar element."},chromevox_next_similar_element:{message:"Next similar element."},chromevox_no_more_similar_elements:{message:"No more similar elements."},chromevox_no_more_different_elements:{message:"No more different elements."},chromevox_index_total:{message:"$1 of $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_enter_css_space:{message:"Enter group exploration"},chromevox_enter_group_exploration:{message:"Exploring groups"},
-chromevox_pdf_header:{message:'This page contains the text automatically extracted from the PDF file <b>$1</b>. <a href="$2">Click here for the original.</a>',placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_object_strategy:{message:"Object"},chromevox_group_strategy:{message:"Group"},chromevox_table_strategy:{message:"Table"},chromevox_row_granularity:{message:"Row"},chromevox_column_granularity:{message:"Column"},chromevox_mathml_tree_granularity:{message:"Math ML Tree"},chromevox_mathml_layout_granularity:{message:"Math ML Layout"},
-chromevox_mathml_token_granularity:{message:"Math ML Token"},chromevox_mathml_leaf_granularity:{message:"Math ML Leaf"},chromevox_visual_strategy:{message:"Visual"},chromevox_custom_strategy:{message:"Custom"},chromevox_line_granularity:{message:"Line"},chromevox_sentence_granularity:{message:"Sentence"},chromevox_word_granularity:{message:"Word"},chromevox_character_granularity:{message:"Character"},chromevox_search_widget_intro:{message:"Find in page."},chromevox_search_widget_intro_help:{message:"Enter a search query."},
-chromevox_search_widget_outro:{message:"Exited find in page."},chromevox_search_widget_no_results:{message:"No more results."},chromevox_modifier_keys:{message:"Modifier Keys"},chromevox_navigation:{message:"ChromeVox Navigation"},chromevox_information:{message:"Information"},chromevox_help_commands:{message:"Help Commands"},chromevox_controlling_speech:{message:"Controlling Speech"},chromevox_overview:{message:"Overview"},chromevox_tables:{message:"Tables"},chromevox_jump_commands:{message:"Jump Commands"},
-chromevox_braille:{message:"Braille"},chromevox_developer:{message:"Developer"},chromevox_keymap_classic:{message:"Classic keymap"},chromevox_keymap_flat:{message:"Flat keymap"},chromevox_keymap_experimental:{message:"Experimental keymap"},chromevox_enable_tts_log:{message:"Enable TTS logging"},chromevox_begin_selection:{message:"Start selection"},chromevox_end_selection:{message:"End selection"},chromevox_selection_is:{message:"Selection is "},chromevox_toggle_selection:{message:"Start or end selection."},
-chromevox_copy:{message:"copy."},chromevox_cut:{message:"cut."},chromevox_paste:{message:"paste."},chromevox_selected:{message:"selected"},chromevox_unselected:{message:"unselected"},chromevox_added_to_selection:{message:"added to selection"},chromevox_removed_from_selection:{message:"removed from selection"},chromevox_then:{message:"then"},chromevox_followed_by:{message:"followed by"},chromevox_modifier_key:{message:"ChromeVox modifier"},chromevox_key_conflict:{message:"$1 is already assigned to a command.",
-placeholders:{1:{content:"$1"}}},chromevox_math_expr:{message:"Math"},chromevox_math_expr_brl:{message:"Math"},chromevox_not_inside_math:{message:"Not inside math"},chromevox_timewidget_ampm:{message:"AM PM"},chromevox_timewidget_hours:{message:"hours"},chromevox_timewidget_minutes:{message:"minutes"},chromevox_timewidget_seconds:{message:"seconds"},chromevox_timewidget_milliseconds:{message:"milliseconds"},chromevox_timewidget_am:{message:"AM"},chromevox_timewidget_pm:{message:"PM"},chromevox_datewidget_week:{message:"week"},
-chromevox_datewidget_january:{message:"January"},chromevox_datewidget_february:{message:"February"},chromevox_datewidget_march:{message:"March"},chromevox_datewidget_april:{message:"April"},chromevox_datewidget_may:{message:"May"},chromevox_datewidget_june:{message:"June"},chromevox_datewidget_july:{message:"July"},chromevox_datewidget_august:{message:"August"},chromevox_datewidget_september:{message:"September"},chromevox_datewidget_october:{message:"October"},chromevox_datewidget_november:{message:"November"},
-chromevox_datewidget_december:{message:"December"},chromevox_no_punctuation:{message:"No punctuation"},chromevox_some_punctuation:{message:"Some punctuation"},chromevox_all_punctuation:{message:"All punctuation"},chromevox_search_help_item:{message:"Press enter to accept or escape to cancel, down for next and up for previous."},chromevox_clickable:{message:"clickable"},chromevox_clickable_brl:{message:"clickable"},chromevox_previous_character:{message:"Previous Character"},chromevox_next_character:{message:"Next Character"},
-chromevox_previous_word:{message:"Previous Word"},chromevox_next_word:{message:"Next Word"},chromevox_previous_sentence:{message:"Previous Sentence"},chromevox_next_sentence:{message:"Next Sentence"},chromevox_previous_line:{message:"Previous Line"},chromevox_next_line:{message:"Next Line"},chromevox_previous_object:{message:"Previous Object"},chromevox_next_object:{message:"Next Object"},chromevox_previous_group:{message:"Previous Group"},chromevox_next_group:{message:"Next Group"},chromevox_role_landmark:{message:"Landmark"},
-chromevox_modifier_entry_error:{message:"No modifier pressed; please press and hold one or more modifiers; lift your fingers once done and you will hear the keys set. Tab to exit."},chromevox_modifier_entry_set:{message:"$1 is now the new ChromeVox modifier.",placeholders:{1:{content:"$1"}}},chromevox_keymap_reset:{message:"$1 has been reset.",placeholders:{1:{content:"$1"}}},chromevox_keymap_switch:{message:"Switched to $1.",placeholders:{1:{content:"$1"}}},chromevox_jump_to_top:{message:"Jump to the top of the page"},
-chromevox_jump_to_bottom:{message:"Jump to the bottom of the page"},chromevox_wrapped_to_top:{message:"Wrapped to top"},chromevox_wrapped_to_bottom:{message:"Wrapped to bottom"},chromevox_cycle_punctuation_echo:{message:"Cycle punctuation echo"},chromevox_cycle_typing_echo:{message:"Cycle typing echo"},chromevox_pause_all_media:{message:"Pauses all currently playing media widgets"},chromevox_open_long_desc:{message:"Open long description in a new tab"},chromevox_no_long_desc:{message:"No long description"},
-chromevox_image_with_long_desc:{message:"Image with long description"},chromevox_selected_options_value:{message:"$1 to $2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_value_brl:{message:"$1-$2",placeholders:{1:{content:"$1"},2:{content:"$2"}}},chromevox_selected_options_state:{message:"selected $1 items",placeholders:{1:{content:"$1"}}},chromevox_selected_options_state_brl:{message:"sld $1",placeholders:{1:{content:"$1"}}},chromevox_clear_page_selection:{message:"cleared selection"},
-chromevox_character_echo:{message:"character echo"},chromevox_word_echo:{message:"word echo"},chromevox_character_and_word_echo:{message:"character and word echo"},chromevox_none_echo:{message:"no typing echo"},chromevox_enter_content:{message:"enter structured content, such as tables"},chromevox_exit_content:{message:"exit structured content, such as tables"},chromevox_enter_content_say:{message:"entered $1",placeholders:{1:{content:"$1"}}},chromevox_structural_line:{message:"structural line"},chromevox_layout_line:{message:"line"},
-chromevox_toggle_line_type:{message:"Toggle line type between structural or layout"},chromevox_table_shifter:{message:"table"},chromevox_navigation_shifter:{message:"default navigation"},chromevox_math_shifter:{message:"math"},chromevox_toggle_semantics:{message:"Toggle interpretation of math expressions between structural and semantic"},chromevox_semantics_on:{message:"Semantics on"},chromevox_semantics_off:{message:"Semantics off"},chromevox_phonetic_map:{message:'{"a": "alpha", "b": "bravo", "c": "charlie", "d": "delta", "e": "echo", "f": "foxtrot", "g": "golf", "h": "hotel", "i": "india", "j": "juliet","k": "kilo", "l": "lima", "m": "mike", "n": "november", "o": "oscar","p": "papa", "q": "quebec", "r": "romeo", "s": "sierra", "t": "tango", "u": "uniform", "v": "victor", "w": "whiskey","x": "xray", "y": "yankee", "z": "zulu"}'},
-chromevox_page_has_one_alert_singular:{message:"This page has 1 alert"},chromevox_page_has_alerts_plural:{message:"This page has $1 alerts",placeholders:{1:{content:"$1"}}},chromevox_review_alerts:{message:"Press Alt+Shift+A to review alerts"},chromevox_no_next_article:{message:"No next article."},chromevox_no_previous_article:{message:"No previous article."},chromevox_chromevox_intro:{message:"ChromeVox spoken feedback is ready"},chromevox_intro_brl:{message:"ChromeVox ready"},chromevox_earcons_on:{message:"Earcons on"},
-chromevox_earcons_off:{message:"Earcons off"},chromevox_toggle_earcons:{message:"Turn sound feedback (earcons) on or off."},chromevox_speak_time_and_date:{message:"Speak the current time and date."},chromevox_mark_as_search_result_brl:{message:"S:$1",placeholders:{1:{content:"$1"}}},chromevox_text_deleted:{message:"Deleted"},chromevox_perform_default_action:{message:"Perform default action"},chromevox_visited_url:{message:"visited"},chromevox_visited_url_brl:{message:"visited"},chromevox_exclamation:{message:"{COUNT, plural, =1 {exclamation point}other {# exclamation points}}"},
-chromevox_space:{message:"{COUNT, plural, =1 {space}other {# spaces}}"},chromevox_backtick:{message:"{COUNT, plural, =1 {backtick}other {# backticks}}"},chromevox_tilde:{message:"{COUNT, plural, =1 {TILDE}other {# tildes}}"},chromevox_at:{message:"{COUNT, plural, =1 {at}other {# at signs}}"},chromevox_pound:{message:"{COUNT, plural, =1 {pound}other {# pound signs}}"},chromevox_dollar:{message:"{COUNT, plural, =1 {dollar}other {# dollar signs}}"},chromevox_percent:{message:"{COUNT, plural, =1 {percent}other {# percent signs}}"},
-chromevox_caret:{message:"{COUNT, plural, =1 {caret}other {# carets}}"},chromevox_ampersand:{message:"{COUNT, plural, =1 {ampersand}other {# ampersands}}"},chromevox_asterisk:{message:"{COUNT, plural, =1 {asterisk}other {# asterisks}}"},chromevox_open_paren:{message:"{COUNT, plural, =1 {open paren}other {# open parens}}"},chromevox_close_paren:{message:"{COUNT, plural, =1 {close paren}other {# close parens}}"},chromevox_dash:{message:"{COUNT, plural, =1 {dash}other {# dashes}}"},chromevox_underscore:{message:"{COUNT, plural, =1 {underscore}other {# underscores}}"},
-chromevox_equals:{message:"{COUNT, plural, =1 {equal}other {# equal signs}}"},chromevox_plus:{message:"{COUNT, plural, =1 {plus}other {# plus signs}}"},chromevox_left_bracket:{message:"{COUNT, plural, =1 {left bracket}other {# left brackets}}"},chromevox_right_bracket:{message:"{COUNT, plural, =1 {right bracket}other {# right brackets}}"},chromevox_left_brace:{message:"{COUNT, plural, =1 {left brace}other {# left braces}}"},chromevox_right_brace:{message:"{COUNT, plural, =1 {right brace}other {# right braces}}"},
-chromevox_pipe:{message:"{COUNT, plural, =1 {pipe}other {# vertical pipes}}"},chromevox_semicolon:{message:"{COUNT, plural, =1 {semicolon}other {# semicolons}}"},chromevox_colon:{message:"{COUNT, plural, =1 {colon}other {# colons}}"},chromevox_comma:{message:"{COUNT, plural, =1 {comma}other {# commas}}"},chromevox_dot:{message:"{COUNT, plural, =1 {dot}=3 {ellipsis}other {# dots}}"},chromevox_less_than:{message:"{COUNT, plural, =1 {less than}other {# less than signs}}"},chromevox_greater_than:{message:"{COUNT, plural, =1 {greater than}other {# greater than signs}}"},
-chromevox_slash:{message:"{COUNT, plural, =1 {slash}other {# slashes}}"},chromevox_question_mark:{message:"{COUNT, plural, =1 {question mark}other {# question marks}}"},chromevox_quote:{message:"{COUNT, plural, =1 {quote}other {# quotes}}"},chromevox_apostrophe:{message:"{COUNT, plural, =1 {apostrophe}other {# apostrophes}}"},chromevox_tab:{message:"{COUNT, plural, =1 {tab}other {# tabs}}"},chromevox_backslash:{message:"{COUNT, plural, =1 {backslash}other {# backslashes}}"},chromevox_braille_routing:{message:"Click the item under a routing key"},
-chromevox_braille_pan_left:{message:"Pan backward"},chromevox_braille_pan_right:{message:"Pan bforward"},chromevox_braille_line_up:{message:"Braille previous Line"},chromevox_braille_line_down:{message:"Braille next Line"},chromevox_braille_top:{message:"Move braille display to top of page"},chromevox_braille_bottom:{message:"Move braille display to bottom of page"},chromevox_access_key:{message:"has access key, $1",placeholders:{1:{content:"$1"}}},chromevox_locale_dict:{message:'{"ar": "Arabic","bg": "Bulgarian","ca": "Catalan","hr": "Croatian","cs": "Czech","da": "Danish","nl": "Dutch","en_CA": "English (Canada)","en_GB": "English (United Kingdom)","en_US": "English (United States)","et": "Estonian","fr": "French","fr_CA": "French (Canada)","fr_FR": "French (France)","fi": "Finnish","de": "German","de_CH": "German (Switzerland)","de_DE": "German (Germany)","el": "Greek","hi": "Hindi","hu": "Hungarian","is": "Icelandic","it": "Italian","lv": "Latvian","lt": "Lithuanian","nb": "Norwegian Bokm\u00e5l","pl": "Polish","pt": "Portuguese","ro": "Romanian","ru": "Russian","sr": "Serbian","sk": "Slovak","sl": "Slovenian","es": "Spanish","sv": "Swedish","tr": "Turkish","vi": "Vietnamese","zh": "Chinese","zh_TW": "Chinese (Traditional Han)"}'}};cvox.TestMsgs=function(){};goog.inherits(cvox.TestMsgs,cvox.AbstractMsgs);cvox.TestMsgs.prototype.getMsg=function(a,b){if(!a){var c=Error();c.message="Message id required";throw c;}c=cvox.TestMessages["chromevox_"+a];if(void 0==c)throw c=Error(),c.message="missing-msg: "+a,c;var d=c.message;if(b)for(var e=0;e<b.length;e++){var f=c.placeholders[e+1];if(!f)throw c=Error(),c.message="Bad placeholder "+e+" for message id "+a,c;f=c.placeholders[e+1].content;d=d.replace(f,b[e])}return d};
-cvox.TestMsgs.prototype.getNumber=function(a){return""+a};cvox.HostFactory.msgsConstructor=cvox.TestMsgs;cvox.ChromeVox.initDocument();
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js
deleted file mode 100644
index 091a8297..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js
+++ /dev/null
@@ -1,48 +0,0 @@
-cordova.define("cordova-plugin-customurlscheme.LaunchMyApp", function(require, exports, module) { (function () {
- "use strict";
-
- var remainingAttempts = 10;
-
- function waitForAndCallHandlerFunction(url) {
- if (typeof window.handleOpenURL === "function") {
- // Clear the intent when we have a handler (note that this is only done when the preference 'CustomURLSchemePluginClearsAndroidIntent' is 'true' in config.xml
- cordova.exec(
- null,
- null,
- "LaunchMyApp",
- "clearIntent",
- []);
-
- window.handleOpenURL(url);
- } else if (remainingAttempts-- > 0) {
- setTimeout(function(){waitForAndCallHandlerFunction(url);}, 500);
- }
- }
-
- function triggerOpenURL() {
- cordova.exec(
- waitForAndCallHandlerFunction,
- null,
- "LaunchMyApp",
- "checkIntent",
- []);
- }
-
- document.addEventListener("deviceready", triggerOpenURL, false);
-
- var launchmyapp = {
- getLastIntent: function(success, failure) {
- cordova.exec(
- success,
- failure,
- "LaunchMyApp",
- "getLastIntent",
- []);
- }
- }
-
- module.exports = launchmyapp;
-
-}());
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js
deleted file mode 100644
index ff0c5b48..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js
+++ /dev/null
@@ -1,85 +0,0 @@
-cordova.define("cordova-plugin-device.device", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var argscheck = require('cordova/argscheck'),
- channel = require('cordova/channel'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- cordova = require('cordova');
-
-channel.createSticky('onCordovaInfoReady');
-// Tell cordova channel to wait on the CordovaInfoReady event
-channel.waitForInitialization('onCordovaInfoReady');
-
-/**
- * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
- * phone, etc.
- * @constructor
- */
-function Device() {
- this.available = false;
- this.platform = null;
- this.version = null;
- this.uuid = null;
- this.cordova = null;
- this.model = null;
- this.manufacturer = null;
- this.isVirtual = null;
- this.serial = null;
-
- var me = this;
-
- channel.onCordovaReady.subscribe(function() {
- me.getInfo(function(info) {
- //ignoring info.cordova returning from native, we should use value from cordova.version defined in cordova.js
- //TODO: CB-5105 native implementations should not return info.cordova
- var buildLabel = cordova.version;
- me.available = true;
- me.platform = info.platform;
- me.version = info.version;
- me.uuid = info.uuid;
- me.cordova = buildLabel;
- me.model = info.model;
- me.isVirtual = info.isVirtual;
- me.manufacturer = info.manufacturer || 'unknown';
- me.serial = info.serial || 'unknown';
- channel.onCordovaInfoReady.fire();
- },function(e) {
- me.available = false;
- utils.alert("[ERROR] Error initializing Cordova: " + e);
- });
- });
-}
-
-/**
- * Get device info
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- */
-Device.prototype.getInfo = function(successCallback, errorCallback) {
- argscheck.checkArgs('fF', 'Device.getInfo', arguments);
- exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
-};
-
-module.exports = new Device();
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/android/notification.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/android/notification.js
deleted file mode 100644
index 07b92378..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/android/notification.js
+++ /dev/null
@@ -1,76 +0,0 @@
-cordova.define("cordova-plugin-dialogs.notification_android", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-
-/**
- * Provides Android enhanced notification API.
- */
-module.exports = {
- activityStart : function(title, message) {
- // If title and message not specified then mimic Android behavior of
- // using default strings.
- if (typeof title === "undefined" && typeof message == "undefined") {
- title = "Busy";
- message = 'Please wait...';
- }
-
- exec(null, null, 'Notification', 'activityStart', [ title, message ]);
- },
-
- /**
- * Close an activity dialog
- */
- activityStop : function() {
- exec(null, null, 'Notification', 'activityStop', []);
- },
-
- /**
- * Display a progress dialog with progress bar that goes from 0 to 100.
- *
- * @param {String}
- * title Title of the progress dialog.
- * @param {String}
- * message Message to display in the dialog.
- */
- progressStart : function(title, message) {
- exec(null, null, 'Notification', 'progressStart', [ title, message ]);
- },
-
- /**
- * Close the progress dialog.
- */
- progressStop : function() {
- exec(null, null, 'Notification', 'progressStop', []);
- },
-
- /**
- * Set the progress dialog value.
- *
- * @param {Number}
- * value 0-100
- */
- progressValue : function(value) {
- exec(null, null, 'Notification', 'progressValue', [ value ]);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/notification.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/notification.js
deleted file mode 100644
index d08d34a6..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-dialogs/www/notification.js
+++ /dev/null
@@ -1,132 +0,0 @@
-cordova.define("cordova-plugin-dialogs.notification", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-var platform = require('cordova/platform');
-
-/**
- * Provides access to notifications on the device.
- */
-
-module.exports = {
-
- /**
- * Open a native alert dialog, with a customizable title and button text.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} completeCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Alert)
- * @param {String} buttonLabel Label of the close button (default: OK)
- */
- alert: function(message, completeCallback, title, buttonLabel) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Alert");
- var _buttonLabel = (buttonLabel || "OK");
- exec(completeCallback, null, "Notification", "alert", [_message, _title, _buttonLabel]);
- },
-
- /**
- * Open a native confirm dialog, with a customizable title and button text.
- * The result that the user selects is returned to the result callback.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} resultCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Confirm)
- * @param {Array} buttonLabels Array of the labels of the buttons (default: ['OK', 'Cancel'])
- */
- confirm: function(message, resultCallback, title, buttonLabels) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Confirm");
- var _buttonLabels = (buttonLabels || ["OK", "Cancel"]);
-
- // Strings are deprecated!
- if (typeof _buttonLabels === 'string') {
- console.log("Notification.confirm(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).");
- }
-
- _buttonLabels = convertButtonLabels(_buttonLabels);
-
- exec(resultCallback, null, "Notification", "confirm", [_message, _title, _buttonLabels]);
- },
-
- /**
- * Open a native prompt dialog, with a customizable title and button text.
- * The following results are returned to the result callback:
- * buttonIndex Index number of the button selected.
- * input1 The text entered in the prompt dialog box.
- *
- * @param {String} message Dialog message to display (default: "Prompt message")
- * @param {Function} resultCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the dialog (default: "Prompt")
- * @param {Array} buttonLabels Array of strings for the button labels (default: ["OK","Cancel"])
- * @param {String} defaultText Textbox input value (default: empty string)
- */
- prompt: function(message, resultCallback, title, buttonLabels, defaultText) {
- var _message = (typeof message === "string" ? message : JSON.stringify(message));
- var _title = (typeof title === "string" ? title : "Prompt");
- var _buttonLabels = (buttonLabels || ["OK","Cancel"]);
-
- // Strings are deprecated!
- if (typeof _buttonLabels === 'string') {
- console.log("Notification.prompt(string, function, string, string) is deprecated. Use Notification.confirm(string, function, string, array).");
- }
-
- _buttonLabels = convertButtonLabels(_buttonLabels);
-
- var _defaultText = (defaultText || "");
- exec(resultCallback, null, "Notification", "prompt", [_message, _title, _buttonLabels, _defaultText]);
- },
-
- /**
- * Causes the device to beep.
- * On Android, the default notification ringtone is played "count" times.
- *
- * @param {Integer} count The number of beeps.
- */
- beep: function(count) {
- var defaultedCount = count || 1;
- exec(null, null, "Notification", "beep", [ defaultedCount ]);
- }
-};
-
-function convertButtonLabels(buttonLabels) {
-
- // Some platforms take an array of button label names.
- // Other platforms take a comma separated list.
- // For compatibility, we convert to the desired type based on the platform.
- if (platform.id == "amazon-fireos" || platform.id == "android" || platform.id == "ios" ||
- platform.id == "windowsphone" || platform.id == "firefoxos" || platform.id == "ubuntu" ||
- platform.id == "windows8" || platform.id == "windows") {
-
- if (typeof buttonLabels === 'string') {
- buttonLabels = buttonLabels.split(","); // not crazy about changing the var type here
- }
- } else {
- if (Array.isArray(buttonLabels)) {
- var buttonLabelArray = buttonLabels;
- buttonLabels = buttonLabelArray.toString();
- }
- }
-
- return buttonLabels;
-}
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/PositionError.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/PositionError.js
deleted file mode 100644
index 45439b70..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/PositionError.js
+++ /dev/null
@@ -1,40 +0,0 @@
-cordova.define("cordova-plugin-geolocation.PositionError", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Position error object
- *
- * @constructor
- * @param code
- * @param message
- */
-var PositionError = function(code, message) {
- this.code = code || null;
- this.message = message || '';
-};
-
-PositionError.prototype.PERMISSION_DENIED = PositionError.PERMISSION_DENIED = 1;
-PositionError.prototype.POSITION_UNAVAILABLE = PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.prototype.TIMEOUT = PositionError.TIMEOUT = 3;
-
-module.exports = PositionError;
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/android/geolocation.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/android/geolocation.js
deleted file mode 100644
index c90d3c2a..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-geolocation/www/android/geolocation.js
+++ /dev/null
@@ -1,73 +0,0 @@
-cordova.define("cordova-plugin-geolocation.geolocation", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = cordova.require('cordova/exec');
-var utils = require('cordova/utils');
-var PositionError = require('./PositionError');
-
-// Native watchPosition method is called async after permissions prompt.
-// So we use additional map and own ids to return watch id synchronously.
-var pluginToNativeWatchMap = {};
-
-module.exports = {
- getCurrentPosition: function(success, error, args) {
- var win = function() {
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- geo.getCurrentPosition(success, error, args);
- };
- var fail = function() {
- if (error) {
- error(new PositionError (PositionError.PERMISSION_DENIED, 'Illegal Access'));
- }
- };
- exec(win, fail, "Geolocation", "getPermission", []);
- },
-
- watchPosition: function(success, error, args) {
- var pluginWatchId = utils.createUUID();
-
- var win = function() {
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- pluginToNativeWatchMap[pluginWatchId] = geo.watchPosition(success, error, args);
- };
-
- var fail = function() {
- if (error) {
- error(new PositionError(PositionError.PERMISSION_DENIED, 'Illegal Access'));
- }
- };
- exec(win, fail, "Geolocation", "getPermission", []);
-
- return pluginWatchId;
- },
-
- clearWatch: function(pluginWatchId) {
- var win = function() {
- var nativeWatchId = pluginToNativeWatchMap[pluginWatchId];
- var geo = cordova.require('cordova/modulemapper').getOriginalSymbol(window, 'navigator.geolocation');
- geo.clearWatch(nativeWatchId);
- };
-
- exec(win, null, "Geolocation", "getPermission", []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js
deleted file mode 100644
index 20bcd65a..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-inappbrowser/www/inappbrowser.js
+++ /dev/null
@@ -1,113 +0,0 @@
-cordova.define("cordova-plugin-inappbrowser.inappbrowser", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT 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() {
- // special patch to correctly work on Ripple emulator (CB-9760)
- if (window.parent && !!window.parent.ripple) { // https://gist.github.com/triceam/4658021
- module.exports = window.open.bind(window); // fallback to default window.open behaviour
- return;
- }
-
- var exec = require('cordova/exec');
- var channel = require('cordova/channel');
- var modulemapper = require('cordova/modulemapper');
- var urlutil = require('cordova/urlutil');
-
- function InAppBrowser() {
- this.channels = {
- 'loadstart': channel.create('loadstart'),
- 'loadstop' : channel.create('loadstop'),
- 'loaderror' : channel.create('loaderror'),
- 'exit' : channel.create('exit')
- };
- }
-
- InAppBrowser.prototype = {
- _eventHandler: function (event) {
- if (event && (event.type in this.channels)) {
- this.channels[event.type].fire(event);
- }
- },
- close: function (eventname) {
- exec(null, null, "InAppBrowser", "close", []);
- },
- show: function (eventname) {
- exec(null, null, "InAppBrowser", "show", []);
- },
- addEventListener: function (eventname,f) {
- if (eventname in this.channels) {
- this.channels[eventname].subscribe(f);
- }
- },
- removeEventListener: function(eventname, f) {
- if (eventname in this.channels) {
- this.channels[eventname].unsubscribe(f);
- }
- },
-
- executeScript: function(injectDetails, cb) {
- if (injectDetails.code) {
- exec(cb, null, "InAppBrowser", "injectScriptCode", [injectDetails.code, !!cb]);
- } else if (injectDetails.file) {
- exec(cb, null, "InAppBrowser", "injectScriptFile", [injectDetails.file, !!cb]);
- } else {
- throw new Error('executeScript requires exactly one of code or file to be specified');
- }
- },
-
- insertCSS: function(injectDetails, cb) {
- if (injectDetails.code) {
- exec(cb, null, "InAppBrowser", "injectStyleCode", [injectDetails.code, !!cb]);
- } else if (injectDetails.file) {
- exec(cb, null, "InAppBrowser", "injectStyleFile", [injectDetails.file, !!cb]);
- } else {
- throw new Error('insertCSS requires exactly one of code or file to be specified');
- }
- }
- };
-
- module.exports = function(strUrl, strWindowName, strWindowFeatures, callbacks) {
- // Don't catch calls that write to existing frames (e.g. named iframes).
- if (window.frames && window.frames[strWindowName]) {
- var origOpenFunc = modulemapper.getOriginalSymbol(window, 'open');
- return origOpenFunc.apply(window, arguments);
- }
-
- strUrl = urlutil.makeAbsolute(strUrl);
- var iab = new InAppBrowser();
-
- callbacks = callbacks || {};
- for (var callbackName in callbacks) {
- iab.addEventListener(callbackName, callbacks[callbackName]);
- }
-
- var cb = function(eventname) {
- iab._eventHandler(eventname);
- };
-
- strWindowFeatures = strWindowFeatures || "";
-
- exec(cb, cb, "InAppBrowser", "open", [strUrl, strWindowName, strWindowFeatures]);
- return iab;
- };
-})();
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/Connection.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/Connection.js
deleted file mode 100644
index 1450e953..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/Connection.js
+++ /dev/null
@@ -1,36 +0,0 @@
-cordova.define("cordova-plugin-network-information.Connection", function(require, exports, module) { /*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Network status
- */
-module.exports = {
- UNKNOWN: "unknown",
- ETHERNET: "ethernet",
- WIFI: "wifi",
- CELL_2G: "2g",
- CELL_3G: "3g",
- CELL_4G: "4g",
- CELL:"cellular",
- NONE: "none"
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/network.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/network.js
deleted file mode 100644
index bfac2e3f..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-network-information/www/network.js
+++ /dev/null
@@ -1,93 +0,0 @@
-cordova.define("cordova-plugin-network-information.network", function(require, exports, module) { /*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec'),
- cordova = require('cordova'),
- channel = require('cordova/channel'),
- utils = require('cordova/utils');
-
-// Link the onLine property with the Cordova-supplied network info.
-// This works because we clobber the navigator object with our own
-// object in bootstrap.js.
-// Browser platform do not need to define this property, because
-// it is already supported by modern browsers
-if (cordova.platformId !== 'browser' && typeof navigator != 'undefined') {
- utils.defineGetter(navigator, 'onLine', function() {
- return this.connection.type != 'none';
- });
-}
-
-function NetworkConnection() {
- this.type = 'unknown';
-}
-
-/**
- * Get connection info
- *
- * @param {Function} successCallback The function to call when the Connection data is available
- * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
- */
-NetworkConnection.prototype.getInfo = function(successCallback, errorCallback) {
- exec(successCallback, errorCallback, "NetworkStatus", "getConnectionInfo", []);
-};
-
-var me = new NetworkConnection();
-var timerId = null;
-var timeout = 500;
-
-channel.createSticky('onCordovaConnectionReady');
-channel.waitForInitialization('onCordovaConnectionReady');
-
-channel.onCordovaReady.subscribe(function() {
- me.getInfo(function(info) {
- me.type = info;
- if (info === "none") {
- // set a timer if still offline at the end of timer send the offline event
- timerId = setTimeout(function(){
- cordova.fireDocumentEvent("offline");
- timerId = null;
- }, timeout);
- } else {
- // If there is a current offline event pending clear it
- if (timerId !== null) {
- clearTimeout(timerId);
- timerId = null;
- }
- cordova.fireDocumentEvent("online");
- }
-
- // should only fire this once
- if (channel.onCordovaConnectionReady.state !== 2) {
- channel.onCordovaConnectionReady.fire();
- }
- },
- function (e) {
- // If we can't get the network info we should still tell Cordova
- // to fire the deviceready event.
- if (channel.onCordovaConnectionReady.state !== 2) {
- channel.onCordovaConnectionReady.fire();
- }
- console.log("Error initializing Network Connection: " + e);
- });
-});
-
-module.exports = me;
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js
deleted file mode 100644
index 5813054f..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js
+++ /dev/null
@@ -1,11 +0,0 @@
-cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) {
-module.exports = {
- hasReadPermission: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []);
- },
- requestReadPermission: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js
deleted file mode 100644
index ccc52e54..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js
+++ /dev/null
@@ -1,8 +0,0 @@
-cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
-module.exports = {
- getSimInfo: function(successCallback, errorCallback) {
- cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
- }
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
deleted file mode 100644
index 5beaa5fd..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-splashscreen/www/splashscreen.js
+++ /dev/null
@@ -1,36 +0,0 @@
-cordova.define("cordova-plugin-splashscreen.SplashScreen", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var exec = require('cordova/exec');
-
-var splashscreen = {
- show:function() {
- exec(null, null, "SplashScreen", "show", []);
- },
- hide:function() {
- exec(null, null, "SplashScreen", "hide", []);
- }
-};
-
-module.exports = splashscreen;
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js
deleted file mode 100644
index 708186f9..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-statusbar/www/statusbar.js
+++ /dev/null
@@ -1,116 +0,0 @@
-cordova.define("cordova-plugin-statusbar.statusbar", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/* global cordova */
-
-var exec = require('cordova/exec');
-
-var namedColors = {
- "black": "#000000",
- "darkGray": "#A9A9A9",
- "lightGray": "#D3D3D3",
- "white": "#FFFFFF",
- "gray": "#808080",
- "red": "#FF0000",
- "green": "#00FF00",
- "blue": "#0000FF",
- "cyan": "#00FFFF",
- "yellow": "#FFFF00",
- "magenta": "#FF00FF",
- "orange": "#FFA500",
- "purple": "#800080",
- "brown": "#A52A2A"
-};
-
-var StatusBar = {
-
- isVisible: true,
-
- overlaysWebView: function (doOverlay) {
- exec(null, null, "StatusBar", "overlaysWebView", [doOverlay]);
- },
-
- styleDefault: function () {
- // dark text ( to be used on a light background )
- exec(null, null, "StatusBar", "styleDefault", []);
- },
-
- styleLightContent: function () {
- // light text ( to be used on a dark background )
- exec(null, null, "StatusBar", "styleLightContent", []);
- },
-
- styleBlackTranslucent: function () {
- // #88000000 ? Apple says to use lightContent instead
- exec(null, null, "StatusBar", "styleBlackTranslucent", []);
- },
-
- styleBlackOpaque: function () {
- // #FF000000 ? Apple says to use lightContent instead
- exec(null, null, "StatusBar", "styleBlackOpaque", []);
- },
-
- backgroundColorByName: function (colorname) {
- return StatusBar.backgroundColorByHexString(namedColors[colorname]);
- },
-
- backgroundColorByHexString: function (hexString) {
- if (hexString.charAt(0) !== "#") {
- hexString = "#" + hexString;
- }
-
- if (hexString.length === 4) {
- var split = hexString.split("");
- hexString = "#" + split[1] + split[1] + split[2] + split[2] + split[3] + split[3];
- }
-
- exec(null, null, "StatusBar", "backgroundColorByHexString", [hexString]);
- },
-
- hide: function () {
- exec(null, null, "StatusBar", "hide", []);
- StatusBar.isVisible = false;
- },
-
- show: function () {
- exec(null, null, "StatusBar", "show", []);
- StatusBar.isVisible = true;
- }
-
-};
-
-// prime it. setTimeout so that proxy gets time to init
-window.setTimeout(function () {
- exec(function (res) {
- if (typeof res == 'object') {
- if (res.type == 'tap') {
- cordova.fireWindowEvent('statusTap');
- }
- } else {
- StatusBar.isVisible = res;
- }
- }, null, "StatusBar", "_ready", []);
-}, 0);
-
-module.exports = StatusBar;
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js
deleted file mode 100644
index dbfd4d63..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js
+++ /dev/null
@@ -1,123 +0,0 @@
-cordova.define("cordova-plugin-x-socialsharing.SocialSharing", function(require, exports, module) { function SocialSharing() {
-}
-
-// Override this method (after deviceready) to set the location where you want the iPad popup arrow to appear.
-// If not overridden with different values, the popup is not used. Example:
-//
-// window.plugins.socialsharing.iPadPopupCoordinates = function() {
-// return "100,100,200,300";
-// };
-SocialSharing.prototype.iPadPopupCoordinates = function () {
- // left,top,width,height
- return "-1,-1,-1,-1";
-};
-
-SocialSharing.prototype.setIPadPopupCoordinates = function (coords) {
- // left,top,width,height
- cordova.exec(function() {}, this._getErrorCallback(function() {}, "setIPadPopupCoordinates"), "SocialSharing", "setIPadPopupCoordinates", [coords]);
-};
-
-SocialSharing.prototype.available = function (callback) {
- cordova.exec(function (avail) {
- callback(avail ? true : false);
- }, null, "SocialSharing", "available", []);
-};
-
-// this is the recommended way to share as it is the most feature-rich with respect to what you pass in and get back
-SocialSharing.prototype.shareWithOptions = function (options, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareWithOptions"), "SocialSharing", "shareWithOptions", [options]);
-};
-
-SocialSharing.prototype.share = function (message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "share"), "SocialSharing", "share", [message, subject, this._asArray(fileOrFileArray), url]);
-};
-
-SocialSharing.prototype.shareViaTwitter = function (message, file /* multiple not allowed by twitter */, url, successCallback, errorCallback) {
- var fileArray = this._asArray(file);
- var ecb = this._getErrorCallback(errorCallback, "shareViaTwitter");
- if (fileArray.length > 1) {
- ecb("shareViaTwitter supports max one file");
- } else {
- cordova.exec(successCallback, ecb, "SocialSharing", "shareViaTwitter", [message, null, fileArray, url]);
- }
-};
-
-SocialSharing.prototype.shareViaFacebook = function (message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaFacebook"), "SocialSharing", "shareViaFacebook", [message, null, this._asArray(fileOrFileArray), url]);
-};
-
-SocialSharing.prototype.shareViaFacebookWithPasteMessageHint = function (message, fileOrFileArray, url, pasteMessageHint, successCallback, errorCallback) {
- pasteMessageHint = pasteMessageHint || "If you like you can paste a message from your clipboard";
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaFacebookWithPasteMessageHint"), "SocialSharing", "shareViaFacebookWithPasteMessageHint", [message, null, this._asArray(fileOrFileArray), url, pasteMessageHint]);
-};
-
-SocialSharing.prototype.shareViaWhatsApp = function (message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaWhatsApp"), "SocialSharing", "shareViaWhatsApp", [message, null, this._asArray(fileOrFileArray), url, null]);
-};
-
-SocialSharing.prototype.shareViaWhatsAppToReceiver = function (receiver, message, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaWhatsAppToReceiver"), "SocialSharing", "shareViaWhatsApp", [message, null, this._asArray(fileOrFileArray), url, receiver]);
-};
-
-SocialSharing.prototype.shareViaSMS = function (options, phonenumbers, successCallback, errorCallback) {
- var opts = options;
- if (typeof options == "string") {
- opts = {"message":options}; // for backward compatibility as the options param used to be the message
- }
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaSMS"), "SocialSharing", "shareViaSMS", [opts, phonenumbers]);
-};
-
-SocialSharing.prototype.shareViaEmail = function (message, subject, toArray, ccArray, bccArray, fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaEmail"), "SocialSharing", "shareViaEmail", [message, subject, this._asArray(toArray), this._asArray(ccArray), this._asArray(bccArray), this._asArray(fileOrFileArray)]);
-};
-
-SocialSharing.prototype.canShareVia = function (via, message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "canShareVia"), "SocialSharing", "canShareVia", [message, subject, this._asArray(fileOrFileArray), url, via]);
-};
-
-SocialSharing.prototype.canShareViaEmail = function (successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "canShareViaEmail"), "SocialSharing", "canShareViaEmail", []);
-};
-
-SocialSharing.prototype.shareViaInstagram = function (message, fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareViaInstagram"), "SocialSharing", "shareViaInstagram", [message, null, this._asArray(fileOrFileArray), null]);
-};
-
-SocialSharing.prototype.shareVia = function (via, message, subject, fileOrFileArray, url, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "shareVia"), "SocialSharing", "shareVia", [message, subject, this._asArray(fileOrFileArray), url, via]);
-};
-
-SocialSharing.prototype.saveToPhotoAlbum = function (fileOrFileArray, successCallback, errorCallback) {
- cordova.exec(successCallback, this._getErrorCallback(errorCallback, "saveToPhotoAlbum"), "SocialSharing", "saveToPhotoAlbum", [this._asArray(fileOrFileArray)]);
-};
-
-SocialSharing.prototype._asArray = function (param) {
- if (param == null) {
- param = [];
- } else if (typeof param === 'string') {
- param = new Array(param);
- }
- return param;
-};
-
-SocialSharing.prototype._getErrorCallback = function (ecb, functionName) {
- if (typeof ecb === 'function') {
- return ecb;
- } else {
- return function (result) {
- console.log("The injected error callback of '" + functionName + "' received: " + JSON.stringify(result));
- }
- }
-};
-
-SocialSharing.install = function () {
- if (!window.plugins) {
- window.plugins = {};
- }
-
- window.plugins.socialsharing = new SocialSharing();
- return window.plugins.socialsharing;
-};
-
-cordova.addConstructor(SocialSharing.install);
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/ionic-plugin-keyboard/www/android/keyboard.js b/StoneIsland/platforms/android/platform_www/plugins/ionic-plugin-keyboard/www/android/keyboard.js
deleted file mode 100644
index cce2e5be..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/ionic-plugin-keyboard/www/android/keyboard.js
+++ /dev/null
@@ -1,62 +0,0 @@
-cordova.define("ionic-plugin-keyboard.keyboard", function(require, exports, module) {
-var argscheck = require('cordova/argscheck'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- channel = require('cordova/channel');
-
-
-var Keyboard = function() {
-};
-
-Keyboard.hideKeyboardAccessoryBar = function(hide) {
- exec(null, null, "Keyboard", "hideKeyboardAccessoryBar", [hide]);
-};
-
-Keyboard.close = function() {
- exec(null, null, "Keyboard", "close", []);
-};
-
-Keyboard.show = function() {
- exec(null, null, "Keyboard", "show", []);
-};
-
-Keyboard.disableScroll = function(disable) {
- exec(null, null, "Keyboard", "disableScroll", [disable]);
-};
-
-/*
-Keyboard.styleDark = function(dark) {
- exec(null, null, "Keyboard", "styleDark", [dark]);
-};
-*/
-
-Keyboard.isVisible = false;
-
-channel.onCordovaReady.subscribe(function() {
- exec(success, null, 'Keyboard', 'init', []);
-
- function success(msg) {
- var action = msg.charAt(0);
- if ( action === 'S' ) {
- var keyboardHeight = msg.substr(1);
- cordova.plugins.Keyboard.isVisible = true;
- cordova.fireWindowEvent('native.keyboardshow', { 'keyboardHeight': + keyboardHeight });
-
- //deprecated
- cordova.fireWindowEvent('native.showkeyboard', { 'keyboardHeight': + keyboardHeight });
- } else if ( action === 'H' ) {
- cordova.plugins.Keyboard.isVisible = false;
- cordova.fireWindowEvent('native.keyboardhide');
-
- //deprecated
- cordova.fireWindowEvent('native.hidekeyboard');
- }
- }
-});
-
-module.exports = Keyboard;
-
-
-
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js b/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js
deleted file mode 100644
index f5d0aaf7..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/MobileAccessibilityNotifications.js
+++ /dev/null
@@ -1,53 +0,0 @@
-cordova.define("phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications", function(require, exports, module) {
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-/**
- * Mobile Accessibility Notification event constants
- */
-module.exports = {
- /* MobileAccessibility window events */
- SCREEN_READER_STATUS_CHANGED : "screenreaderstatuschanged",
- CLOSED_CAPTIONING_STATUS_CHANGED : "closedcaptioningstatuschanged",
- GUIDED_ACCESS_STATUS_CHANGED : "guidedaccessstatuschanged",
- INVERT_COLORS_STATUS_CHANGED : "invertcolorsstatuschanged",
- MONO_AUDIO_STATUS_CHANGED : "monoaudiostatuschanged",
- REDUCE_MOTION_STATUS_CHANGED : "reducemotionstatuschanged",
- TOUCH_EXPLORATION_STATUS_CHANGED : "touchexplorationstatechanged",
- BOLD_TEXT_STATUS_CHANGED : "boldtextstatuschanged",
- DARKER_SYSTEM_COLORS_STATUS_CHANGED : "darkersystemcolorsstatuschanged",
- GRAYSCALE_STATUS_CHANGED : "grayscalestatuschanged",
- REDUCE_TRANSPARENCY_STATUS_CHANGED : "reducetransparencystatuschanged",
- SPEAK_SCREEN_STATUS_CHANGED : "speakscreenstatuschanged",
- SPEAK_SELECTION_STATUS_CHANGED : "speakselectionstatuschanged",
- SWITCH_CONTROL_STATUS_CHANGED : "switchcontrolstatuschanged",
-
- /* iOS specific UIAccessibilityNotifications */
- SCREEN_CHANGED : 1000,
- LAYOUT_CHANGED : 1001,
- ANNOUNCEMENT : 1008,
- PAGE_SCROLLED : 1009,
-
- /* Windows specific high contrast event */
- HIGH_CONTRAST_CHANGED : "highcontrastchanged"
-};
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js b/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js
deleted file mode 100644
index 852b8d34..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-mobile-accessibility/www/mobile-accessibility.js
+++ /dev/null
@@ -1,502 +0,0 @@
-cordova.define("phonegap-plugin-mobile-accessibility.mobile-accessibility", function(require, exports, module) {
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-
-var argscheck = require('cordova/argscheck'),
- utils = require('cordova/utils'),
- exec = require('cordova/exec'),
- device = require('cordova-plugin-device.device'),
- network = require('cordova-plugin-network-information.network'),
- connection = require('cordova-plugin-network-information.Connection'),
- MobileAccessibilityNotifications = require('phonegap-plugin-mobile-accessibility.MobileAccessibilityNotifications');
-
-var MobileAccessibility = function() {
- this._isBoldTextEnabled = false;
- this._isClosedCaptioningEnabled = false;
- this._isDarkerSystemColorsEnabled = false;
- this._isGrayscaleEnabled = false;
- this._isGuidedAccessEnabled = false;
- this._isInvertColorsEnabled = false;
- this._isMonoAudioEnabled = false;
- this._isReduceMotionEnabled = false;
- this._isReduceTransparencyEnabled = false;
- this._isScreenReaderRunning = false;
- this._isSpeakScreenEnabled = false;
- this._isSpeakSelectionEnabled = false;
- this._isSwitchControlRunning = false;
- this._isTouchExplorationEnabled = false;
- this._usePreferredTextZoom = false;
- this._isHighContrastEnabled = false;
- this._highContrastScheme = undefined;
-
- // Create new event handlers on the window (returns a channel instance)
- this.channels = {
- boldtextstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.BOLD_TEXT_STATUS_CHANGED),
- closedcaptioningstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.CLOSED_CAPTIONING_STATUS_CHANGED),
- darkersystemcolorsstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.DARKER_SYSTEM_COLORS_STATUS_CHANGED),
- grayscalestatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.GRAYSCALE_STATUS_CHANGED),
- guidedaccessstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.GUIDED_ACCESS_STATUS_CHANGED),
- invertcolorsstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.INVERT_COLORS_STATUS_CHANGED),
- monoaudiostatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.MONO_AUDIO_STATUS_CHANGED),
- reducemotionstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.REDUCE_MOTION_STATUS_CHANGED),
- reducetransparencystatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.REDUCE_TRANSPARENCY_STATUS_CHANGED),
- screenreaderstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SCREEN_READER_STATUS_CHANGED),
- speakscreenstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SPEAK_SCREEN_STATUS_CHANGED),
- speakselectionstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SPEAK_SELECTION_STATUS_CHANGED),
- switchcontrolstatuschanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.SWITCH_CONTROL_STATUS_CHANGED),
- touchexplorationstatechanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.TOUCH_EXPLORATION_STATUS_CHANGED),
- highcontrastchanged : cordova.addWindowEventHandler(MobileAccessibilityNotifications.HIGH_CONTRAST_CHANGED)
- };
- for (var key in this.channels) {
- this.channels[key].onHasSubscribersChange = MobileAccessibility.onHasSubscribersChange;
- }
-};
-
-/**
- * @private
- * @ignore
- */
-function handlers() {
- return mobileAccessibility.channels.boldtextstatuschanged.numHandlers +
- mobileAccessibility.channels.closedcaptioningstatuschanged.numHandlers +
- mobileAccessibility.channels.darkersystemcolorsstatuschanged.numHandlers +
- mobileAccessibility.channels.grayscalestatuschanged.numHandlers +
- mobileAccessibility.channels.guidedaccessstatuschanged.numHandlers +
- mobileAccessibility.channels.invertcolorsstatuschanged.numHandlers +
- mobileAccessibility.channels.monoaudiostatuschanged.numHandlers +
- mobileAccessibility.channels.reducemotionstatuschanged.numHandlers +
- mobileAccessibility.channels.reducetransparencystatuschanged.numHandlers +
- mobileAccessibility.channels.screenreaderstatuschanged.numHandlers +
- mobileAccessibility.channels.speakscreenstatuschanged.numHandlers +
- mobileAccessibility.channels.speakselectionstatuschanged.numHandlers +
- mobileAccessibility.channels.switchcontrolstatuschanged.numHandlers +
- mobileAccessibility.channels.touchexplorationstatechanged.numHandlers +
- mobileAccessibility.channels.highcontrastchanged.numHandlers;
-};
-
-/**
- *
- * Event handlers for when callback methods get registered for mobileAccessibility.
- * Keep track of how many handlers we have so we can start and stop the native MobileAccessibility listener
- * appropriately.
- * @private
- * @ignore
- */
-MobileAccessibility.onHasSubscribersChange = function() {
- // If we just registered the first handler, make sure native listener is started.
- if (this.numHandlers === 1 && handlers() === 1) {
- exec(mobileAccessibility._status, mobileAccessibility._error, "MobileAccessibility", "start", []);
- } else if (handlers() === 0) {
- exec(null, null, "MobileAccessibility", "stop", []);
- }
-};
-
-/**
- * Asynchronous call to native MobileAccessibility determine if a screen reader is running.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isScreenReaderRunning = function(callback) {
- exec(function(bool) {
- mobileAccessibility.activateOrDeactivateChromeVox(bool);
- callback(Boolean(bool));
- }, null, "MobileAccessibility", "isScreenReaderRunning", []);
-};
-MobileAccessibility.prototype.isVoiceOverRunning = function(callback) {
- if (device.platform.toLowerCase() === "ios") {
- MobileAccessibility.prototype.isScreenReaderRunning(callback);
- } else {
- callback(false);
- }
-};
-MobileAccessibility.prototype.isTalkBackRunning = function(callback) {
- if (device.platform.toLowerCase() === "android" || device.platform.toLowerCase() === "amazon-fireos") {
- MobileAccessibility.prototype.isScreenReaderRunning(callback);
- } else {
- callback(false);
- }
-};
-MobileAccessibility.prototype.isChromeVoxActive = function () {
- return typeof cvox !== "undefined" && cvox.ChromeVox.host.ttsLoaded() && cvox.Api.isChromeVoxActive();
-};
-MobileAccessibility.prototype.activateOrDeactivateChromeVox = function(bool) {
- if (device.platform !== "Android") return;
- if (typeof cvox === "undefined") {
- if (bool) {
- console.warn('A screen reader is running but ChromeVox has failed to initialize.');
- if (navigator.connection.type === Connection.UNKNOWN || navigator.connection.type === Connection.NONE) {
- mobileAccessibility.injectLocalAndroidVoxScript();
- }
- }
- } else {
- // activate or deactivate ChromeVox based on whether or not or not the screen reader is running.
- try {
- cvox.ChromeVox.host.activateOrDeactivateChromeVox(bool);
- } catch (err) {
- console.error(err);
- }
- }
-
- if (bool) {
- if (!mobileAccessibility.hasOrientationChangeListener) {
- window.addEventListener("orientationchange", mobileAccessibility.onOrientationChange);
- mobileAccessibility.hasOrientationChangeListener = true;
- }
- } else if(mobileAccessibility.hasOrientationChangeListener) {
- window.removeEventListener("orientationchange", mobileAccessibility.onOrientationChange);
- mobileAccessibility.hasOrientationChangeListener = false;
- }
-};
-
-MobileAccessibility.prototype.hasOrientationChangeListener = false;
-MobileAccessibility.prototype.onOrientationChange = function(event) {
- if (!mobileAccessibility.isChromeVoxActive()) return;
- cvox.ChromeVox.navigationManager.updateIndicator();
-};
-
-MobileAccessibility.prototype.scriptInjected = false;
-MobileAccessibility.prototype.injectLocalAndroidVoxScript = function() {
- var versionsplit = device.version.split('.');
- if (device.platform !== "Android" ||
- !(versionsplit[0] > 4 || (versionsplit[0] == 4 && versionsplit[1] >= 1)) ||
- typeof cvox !== "undefined" || mobileAccessibility.scriptInjected) return;
- var script = document.createElement('script');
- script.type = 'text/javascript';
- script.async = true;
- script.onload = function(){
- // console.log(this.src + ' has loaded');
- if (mobileAccessibility.isChromeVoxActive()) {
- cordova.fireWindowEvent("screenreaderstatuschanged", {
- isScreenReaderRunning: true
- });
- }
- };
-
- script.src = (versionsplit[0] > 4 || versionsplit[1] > 3)
- ? "plugins/com.phonegap.plugin.mobile-accessibility/android/chromeandroidvox.js"
- : "plugins/com.phonegap.plugin.mobile-accessibility/android/AndroidVox_v1.js";
- document.getElementsByTagName('head')[0].appendChild(script);
- mobileAccessibility.scriptInjected = true;
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Bold Text is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isBoldTextEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isBoldTextEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Closed Captioning is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isClosedCaptioningEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isClosedCaptioningEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Darker System Colors are enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isDarkerSystemColorsEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isDarkerSystemColorsEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Grayscale is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isGrayscaleEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isGrayscaleEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Guided Access is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isGuidedAccessEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isGuidedAccessEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if the display colors have been inverted.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isInvertColorsEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isInvertColorsEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Mono Audio is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isMonoAudioEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isMonoAudioEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Reduce Motion is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isReduceMotionEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isReduceMotionEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Reduce Transparency is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isReduceTransparencyEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isReduceTransparencyEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Speak Screen is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSpeakScreenEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSpeakScreenEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Speak Selection is enabled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSpeakSelectionEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSpeakSelectionEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Switch Control is running.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isSwitchControlRunning = function(callback) {
- exec(callback, null, "MobileAccessibility", "isSwitchControlRunning", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if Touch Exploration is enabled on Android.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isTouchExplorationEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isTouchExplorationEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to determine if High Contrast is enabled on Windows.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.isHighContrastEnabled = function(callback) {
- exec(callback, null, "MobileAccessibility", "isHighContrastEnabled", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to return the current text zoom percent value for the WebView.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.getTextZoom = function(callback) {
- exec(callback, null, "MobileAccessibility", "getTextZoom", []);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to set the current text zoom percent value for the WebView.
- * @param {Number} textZoom A percentage value by which text in the WebView should be scaled.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.setTextZoom = function(textZoom, callback) {
- exec(callback, null, "MobileAccessibility", "setTextZoom", [textZoom]);
-};
-
-/**
- * Asynchronous call to native MobileAccessibility to retrieve the user's preferred text zoom from system settings and apply it to the application WebView.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility.
- */
-MobileAccessibility.prototype.updateTextZoom = function(callback) {
- exec(callback, null, "MobileAccessibility", "updateTextZoom", []);
-};
-
-MobileAccessibility.prototype.usePreferredTextZoom = function(bool) {
- var currentValue = window.localStorage.getItem("MobileAccessibility.usePreferredTextZoom") === "true";
-
- if (arguments.length === 0) {
- return currentValue;
- }
-
- if (currentValue != bool) {
- window.localStorage.setItem("MobileAccessibility.usePreferredTextZoom", bool);
- }
-
- var callback = function(){
- // Wrapping updateTextZoom call in a function to stop
- // the event parameter propagation. This fixes an error
- // on resume where cordova tried to call apply() on the
- // event, expecting a function.
- mobileAccessibility.updateTextZoom();
- };
-
- document.removeEventListener("resume", callback);
-
- if (bool) {
- // console.log("We should update the text zoom at this point: " + bool)
- document.addEventListener("resume", callback, false);
- mobileAccessibility.updateTextZoom();
- } else {
- mobileAccessibility.setTextZoom(100);
- }
-
- return Boolean(bool);
-};
-
-MobileAccessibility.prototype.MobileAccessibilityNotifications = MobileAccessibilityNotifications;
-
-/**
- * Posts a notification with a string for a screen reader to announce, if it is running.
- * @param {uint} mobileAccessibilityNotification A numeric constant for the type of notification to send. Constants are defined in MobileAccessibility.MobileAccessibilityNotifications.
- * @param {string} string A string to be announced by a screen reader.
- * @param {function} callback A callback method to receive the asynchronous result from the native MobileAccessibility, when the announcement is finished, the function should expect an object containing the stringValue that was voiced and a boolean indicating that the announcement wasSuccessful.
- */
-MobileAccessibility.prototype.postNotification = function(mobileAccessibilityNotification, string, callback) {
- exec(callback, null, "MobileAccessibility", "postNotification", [mobileAccessibilityNotification, string]);
-};
-
-/**
- * Speaks the given string, and if ChromeVox is active, it will use the specified queueMode and properties.
- * @param {string} string A string to be announced by a screen reader.
- * @param {number} [queueMode] Optional number. Valid modes are 0 for flush; 1 for queue.
- * @param {Object} [properties] Speech properties to use for this utterance.
- */
-MobileAccessibility.prototype.speak = function(string, queueMode, properties) {
- if (this.isChromeVoxActive()) {
- cvox.ChromeVox.tts.speak(string, queueMode, properties);
- } else {
- exec(null, null, "MobileAccessibility", "postNotification", [MobileAccessibilityNotifications.ANNOUNCEMENT, string]);
- }
-}
-
-/**
- * Stops speech.
- */
-MobileAccessibility.prototype.stop = function() {
- if (this.isChromeVoxActive()) {
- cvox.ChromeVox.tts.stop();
- } else {
- exec(null, null, "MobileAccessibility", "postNotification", [MobileAccessibilityNotifications.ANNOUNCEMENT, "\u200b"]);
- }
-}
-
-/**
- * Callback from native MobileAccessibility returning an object which describes the status of MobileAccessibility features.
- *
- * @param {Object} info
- * @config {Boolean} [isBoldTextEnabled] Boolean to indicate bold text status (ios).
- * @config {Boolean} [isClosedCaptioningEnabled] Boolean to indicate closed captioning status.
- * @config {Boolean} [isDarkerSystemColorsEnabled] Boolean to indicate darker system colors status (ios).
- * @config {Boolean} [isGrayscaleEnabled] Boolean to indicate grayscale status (ios).
- * @config {Boolean} [isGuidedAccessEnabled] Boolean to indicate guided access status (ios).
- * @config {Boolean} [isInvertColorsEnabled] Boolean to indicate invert colors status (ios).
- * @config {Boolean} [isMonoAudioEnabled] Boolean to indicate mono audio status (ios).
- * @config {Boolean} [isReduceMotionEnabled] Boolean to indicate reduce motion status (ios).
- * @config {Boolean} [isReduceTransparencyEnabled] Boolean to indicate reduce transparency status (ios).
- * @config {Boolean} [isScreenReaderRunning] Boolean to indicate screen reader status.
- * @config {Boolean} [isSpeakScreenEnabled] Boolean to indicate speak screen status (ios).
- * @config {Boolean} [isSpeakSelectionEnabled] Boolean to indicate speak selection status (ios).
- * @config {Boolean} [isSwitchControlRunning] Boolean to indicate switch control status (ios).
- * @config {Boolean} [isTouchExplorationEnabled] Boolean to indicate touch exploration status (android).
- */
-MobileAccessibility.prototype._status = function(info) {
- if (info) {
- mobileAccessibility.activateOrDeactivateChromeVox(info.isScreenReaderRunning);
- if (mobileAccessibility._isBoldTextEnabled !== info.isBoldTextEnabled) {
- mobileAccessibility._isBoldTextEnabled = info.isBoldTextEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.BOLD_TEXT_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isClosedCaptioningEnabled !== info.isClosedCaptioningEnabled) {
- mobileAccessibility._isClosedCaptioningEnabled = info.isClosedCaptioningEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.CLOSED_CAPTIONING_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isDarkerSystemColorsEnabled !== info.isDarkerSystemColorsEnabled) {
- mobileAccessibility._isDarkerSystemColorsEnabled = info.isDarkerSystemColorsEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.DARKER_SYSTEM_COLORS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isGrayscaleEnabled !== info.isGrayscaleEnabled) {
- mobileAccessibility._isGrayscaleEnabled = info.isGrayscaleEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.GRAYSCALE_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isGuidedAccessEnabled !== info.isGuidedAccessEnabled) {
- mobileAccessibility._isGuidedAccessEnabled = info.isGuidedAccessEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.GUIDED_ACCESS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isInvertColorsEnabled !== info.isInvertColorsEnabled) {
- mobileAccessibility._isInvertColorsEnabled = info.isInvertColorsEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.INVERT_COLORS_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isMonoAudioEnabled !== info.isMonoAudioEnabled) {
- mobileAccessibility._isMonoAudioEnabled = info.isMonoAudioEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.MONO_AUDIO_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isReduceMotionEnabled !== info.isReduceMotionEnabled) {
- mobileAccessibility._isReduceMotionEnabled = info.isReduceMotionEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.REDUCE_MOTION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isReduceTransparencyEnabled !== info.isReduceTransparencyEnabled) {
- mobileAccessibility._isReduceTransparencyEnabled = info.isReduceTransparencyEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.REDUCE_TRANSPARENCY_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isScreenReaderRunning !== info.isScreenReaderRunning) {
- mobileAccessibility._isScreenReaderRunning = info.isScreenReaderRunning;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SCREEN_READER_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSpeakScreenEnabled !== info.isSpeakScreenEnabled) {
- mobileAccessibility._isSpeakScreenEnabled = info.isSpeakScreenEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SPEAK_SCREEN_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSpeakSelectionEnabled !== info.isSpeakSelectionEnabled) {
- mobileAccessibility._isSpeakSelectionEnabled = info.isSpeakSelectionEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SPEAK_SELECTION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isSwitchControlRunning !== info.isSwitchControlRunning) {
- mobileAccessibility._isSwitchControlRunning = info.isSwitchControlRunning;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.SWITCH_CONTROL_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isTouchExplorationEnabled !== info.isTouchExplorationEnabled) {
- mobileAccessibility._isTouchExplorationEnabled = info.isTouchExplorationEnabled;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.TOUCH_EXPLORATION_STATUS_CHANGED, info);
- }
- if (mobileAccessibility._isHighContrastEnabled !== info.isHighContrastEnabled) {
- mobileAccessibility._isHighContrastEnabled = info.isHighContrastEnabled;
- mobileAccessibility._highContrastScheme = info.highContrastScheme;
- cordova.fireWindowEvent(MobileAccessibilityNotifications.HIGH_CONTRAST_CHANGED, info);
- }
- }
-};
-
-/**
- * Error callback for MobileAccessibility start
- */
-MobileAccessibility.prototype._error = function(e) {
- console.log("Error initializing MobileAccessibility: " + e);
-};
-
-var mobileAccessibility = new MobileAccessibility();
-
-module.exports = mobileAccessibility;
-
-});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js b/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js
deleted file mode 100644
index a5315486..00000000
--- a/StoneIsland/platforms/android/platform_www/plugins/phonegap-plugin-push/www/push.js
+++ /dev/null
@@ -1,329 +0,0 @@
-cordova.define("phonegap-plugin-push.PushNotification", function(require, exports, module) {
-/* global cordova:false */
-/* globals window */
-
-/*!
- * Module dependencies.
- */
-
-var exec = cordova.require('cordova/exec');
-
-/**
- * PushNotification constructor.
- *
- * @param {Object} options to initiate Push Notifications.
- * @return {PushNotification} instance that can be monitored and cancelled.
- */
-
-var PushNotification = function(options) {
- this._handlers = {
- 'registration': [],
- 'notification': [],
- 'error': []
- };
-
- // require options parameter
- if (typeof options === 'undefined') {
- throw new Error('The options argument is required.');
- }
-
- // store the options to this object instance
- this.options = options;
-
- // triggered on registration and notification
- var that = this;
- var success = function(result) {
- if (result && typeof result.registrationId !== 'undefined') {
- that.emit('registration', result);
- } else if (result && result.additionalData && typeof result.additionalData.actionCallback !== 'undefined') {
- var executeFuctionOrEmitEventByName = function(callbackName, context, arg) {
- var namespaces = callbackName.split('.');
- var func = namespaces.pop();
- for (var i = 0; i < namespaces.length; i++) {
- context = context[namespaces[i]];
- }
-
- if (typeof context[func] === 'function') {
- context[func].call(context, arg);
- } else {
- that.emit(callbackName, arg);
- }
- };
-
- executeFuctionOrEmitEventByName(result.additionalData.actionCallback, window, result);
- } else if (result) {
- that.emit('notification', result);
- }
- };
-
- // triggered on error
- var fail = function(msg) {
- var e = (typeof msg === 'string') ? new Error(msg) : msg;
- that.emit('error', e);
- };
-
- // wait at least one process tick to allow event subscriptions
- setTimeout(function() {
- exec(success, fail, 'PushNotification', 'init', [options]);
- }, 10);
-};
-
-/**
- * Unregister from push notifications
- */
-
-PushNotification.prototype.unregister = function(successCallback, errorCallback, options) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.unregister failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unregister failure: success callback parameter must be a function');
- return;
- }
-
- var that = this;
- var cleanHandlersAndPassThrough = function() {
- if (!options) {
- that._handlers = {
- 'registration': [],
- 'notification': [],
- 'error': []
- };
- }
- successCallback();
- };
-
- exec(cleanHandlersAndPassThrough, errorCallback, 'PushNotification', 'unregister', [options]);
-};
-
-/**
- * subscribe to a topic
- * @param {String} topic topic to subscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
-PushNotification.prototype.subscribe = function(topic, successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.subscribe failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.subscribe failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'subscribe', [topic]);
-};
-
-/**
- * unsubscribe to a topic
- * @param {String} topic topic to unsubscribe
- * @param {Function} successCallback success callback
- * @param {Function} errorCallback error callback
- * @return {void}
- */
-PushNotification.prototype.unsubscribe = function(topic, successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.unsubscribe failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'unsubscribe', [topic]);
-};
-
-/**
- * Call this to set the application icon badge
- */
-
-PushNotification.prototype.setApplicationIconBadgeNumber = function(successCallback, errorCallback, badge) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.setApplicationIconBadgeNumber failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'setApplicationIconBadgeNumber', [{badge: badge}]);
-};
-
-/**
- * Get the application icon badge
- */
-
-PushNotification.prototype.getApplicationIconBadgeNumber = function(successCallback, errorCallback) {
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.getApplicationIconBadgeNumber failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'getApplicationIconBadgeNumber', []);
-};
-
-/**
- * Get the application icon badge
- */
-
-PushNotification.prototype.clearAllNotifications = function(successCallback, errorCallback) {
- if (!successCallback) { successCallback = function() {}; }
- if (!errorCallback) { errorCallback = function() {}; }
-
- if (typeof errorCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: failure parameter not a function');
- return;
- }
-
- if (typeof successCallback !== 'function') {
- console.log('PushNotification.clearAllNotifications failure: success callback parameter must be a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'clearAllNotifications', []);
-};
-
-/**
- * Listen for an event.
- *
- * Any event is supported, but the following are built-in:
- *
- * - registration
- * - notification
- * - error
- *
- * @param {String} eventName to subscribe to.
- * @param {Function} callback triggered on the event.
- */
-
-PushNotification.prototype.on = function(eventName, callback) {
- if (!this._handlers.hasOwnProperty(eventName)) {
- this._handlers[eventName] = [];
- }
- this._handlers[eventName].push(callback);
-};
-
-/**
- * Remove event listener.
- *
- * @param {String} eventName to match subscription.
- * @param {Function} handle function associated with event.
- */
-
-PushNotification.prototype.off = function (eventName, handle) {
- if (this._handlers.hasOwnProperty(eventName)) {
- var handleIndex = this._handlers[eventName].indexOf(handle);
- if (handleIndex >= 0) {
- this._handlers[eventName].splice(handleIndex, 1);
- }
- }
-};
-
-/**
- * Emit an event.
- *
- * This is intended for internal use only.
- *
- * @param {String} eventName is the event to trigger.
- * @param {*} all arguments are passed to the event listeners.
- *
- * @return {Boolean} is true when the event is triggered otherwise false.
- */
-
-PushNotification.prototype.emit = function() {
- var args = Array.prototype.slice.call(arguments);
- var eventName = args.shift();
-
- if (!this._handlers.hasOwnProperty(eventName)) {
- return false;
- }
-
- for (var i = 0, length = this._handlers[eventName].length; i < length; i++) {
- var callback = this._handlers[eventName][i];
- if (typeof callback === 'function') {
- callback.apply(undefined,args);
- } else {
- console.log('event handler: ' + eventName + ' must be a function');
- }
- }
-
- return true;
-};
-
-PushNotification.prototype.finish = function(successCallback, errorCallback, id) {
- if (!successCallback) { successCallback = function() {}; }
- if (!errorCallback) { errorCallback = function() {}; }
- if (!id) { id = 'handler'; }
-
- if (typeof successCallback !== 'function') {
- console.log('finish failure: success callback parameter must be a function');
- return;
- }
-
- if (typeof errorCallback !== 'function') {
- console.log('finish failure: failure parameter not a function');
- return;
- }
-
- exec(successCallback, errorCallback, 'PushNotification', 'finish', [id]);
-};
-
-/*!
- * Push Notification Plugin.
- */
-
-module.exports = {
- /**
- * Register for Push Notifications.
- *
- * This method will instantiate a new copy of the PushNotification object
- * and start the registration process.
- *
- * @param {Object} options
- * @return {PushNotification} instance
- */
-
- init: function(options) {
- return new PushNotification(options);
- },
-
- hasPermission: function(successCallback, errorCallback) {
- exec(successCallback, errorCallback, 'PushNotification', 'hasPermission', []);
- },
-
- /**
- * PushNotification Object.
- *
- * Expose the PushNotification object for direct use
- * and testing. Typically, you should use the
- * .init helper method.
- */
-
- PushNotification: PushNotification
-};
-
-});
diff --git a/StoneIsland/platforms/android/project.properties b/StoneIsland/platforms/android/project.properties
deleted file mode 100755
index 6936daa2..00000000
--- a/StoneIsland/platforms/android/project.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-# Project target.
-target=android-25
-android.library.reference.1=CordovaLib
-cordova.gradle.include.1=phonegap-plugin-push/stoneisland-push.gradle
-cordova.system.library.1=com.android.support:support-v13:23+
-cordova.system.library.2=com.google.android.gms:play-services-gcm:9.8+
-cordova.system.library.3=me.leolin:ShortcutBadger:1.1.11@aar \ No newline at end of file
diff --git a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_next_item.png b/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_next_item.png
deleted file mode 100644
index fa469d88..00000000
--- a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_next_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_previous_item.png b/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_previous_item.png
deleted file mode 100644
index e861ecce..00000000
--- a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_previous_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_remove.png b/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_remove.png
deleted file mode 100644
index f889617e..00000000
--- a/StoneIsland/platforms/android/res/drawable-hdpi/ic_action_remove.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-hdpi/icon.png b/StoneIsland/platforms/android/res/drawable-hdpi/icon.png
deleted file mode 100755
index 3094af16..00000000
--- a/StoneIsland/platforms/android/res/drawable-hdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-hdpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-hdpi/screen.png
deleted file mode 100755
index c658420c..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-hdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-ldpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-ldpi/screen.png
deleted file mode 100755
index 72b67808..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-ldpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-mdpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-mdpi/screen.png
deleted file mode 100755
index 97c72be1..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-mdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-xhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-xhdpi/screen.png
deleted file mode 100755
index 0a2be659..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-xhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-xxhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-xxhdpi/screen.png
deleted file mode 100644
index af8311af..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-xxhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-land-xxxhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-land-xxxhdpi/screen.png
deleted file mode 100644
index c42a74c8..00000000
--- a/StoneIsland/platforms/android/res/drawable-land-xxxhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-ldpi/icon.png b/StoneIsland/platforms/android/res/drawable-ldpi/icon.png
deleted file mode 100755
index b49c0c1d..00000000
--- a/StoneIsland/platforms/android/res/drawable-ldpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_next_item.png b/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_next_item.png
deleted file mode 100644
index 47365a30..00000000
--- a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_next_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_previous_item.png b/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_previous_item.png
deleted file mode 100644
index 4ad2df42..00000000
--- a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_previous_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_remove.png b/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_remove.png
deleted file mode 100644
index e84853e4..00000000
--- a/StoneIsland/platforms/android/res/drawable-mdpi/ic_action_remove.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-mdpi/icon.png b/StoneIsland/platforms/android/res/drawable-mdpi/icon.png
deleted file mode 100755
index b6d9c9ab..00000000
--- a/StoneIsland/platforms/android/res/drawable-mdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-hdpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-hdpi/screen.png
deleted file mode 100755
index b529649b..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-hdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-ldpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-ldpi/screen.png
deleted file mode 100755
index 3ebbd6ae..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-ldpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-mdpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-mdpi/screen.png
deleted file mode 100755
index d898d145..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-mdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-xhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-xhdpi/screen.png
deleted file mode 100755
index f304015a..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-xhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-xxhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-xxhdpi/screen.png
deleted file mode 100644
index 11aabef0..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-xxhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-port-xxxhdpi/screen.png b/StoneIsland/platforms/android/res/drawable-port-xxxhdpi/screen.png
deleted file mode 100644
index b5f5eaa0..00000000
--- a/StoneIsland/platforms/android/res/drawable-port-xxxhdpi/screen.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_next_item.png b/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_next_item.png
deleted file mode 100644
index 5f304742..00000000
--- a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_next_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_previous_item.png b/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_previous_item.png
deleted file mode 100644
index ed8ac91d..00000000
--- a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_previous_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_remove.png b/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_remove.png
deleted file mode 100644
index 4cd0458b..00000000
--- a/StoneIsland/platforms/android/res/drawable-xhdpi/ic_action_remove.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xhdpi/icon.png b/StoneIsland/platforms/android/res/drawable-xhdpi/icon.png
deleted file mode 100755
index 4e63bbd9..00000000
--- a/StoneIsland/platforms/android/res/drawable-xhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_next_item.png b/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_next_item.png
deleted file mode 100644
index 51479d8d..00000000
--- a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_next_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_previous_item.png b/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_previous_item.png
deleted file mode 100644
index bc8ff124..00000000
--- a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_previous_item.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_remove.png b/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_remove.png
deleted file mode 100644
index 331c545b..00000000
--- a/StoneIsland/platforms/android/res/drawable-xxhdpi/ic_action_remove.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xxhdpi/icon.png b/StoneIsland/platforms/android/res/drawable-xxhdpi/icon.png
deleted file mode 100644
index 9515e8dc..00000000
--- a/StoneIsland/platforms/android/res/drawable-xxhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable-xxxhdpi/icon.png b/StoneIsland/platforms/android/res/drawable-xxxhdpi/icon.png
deleted file mode 100644
index 4e0d84b5..00000000
--- a/StoneIsland/platforms/android/res/drawable-xxxhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/drawable/icon.png b/StoneIsland/platforms/android/res/drawable/icon.png
deleted file mode 100644
index 4e63bbd9..00000000
--- a/StoneIsland/platforms/android/res/drawable/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-hdpi/icon.png b/StoneIsland/platforms/android/res/mipmap-hdpi/icon.png
deleted file mode 100644
index 1d4f8160..00000000
--- a/StoneIsland/platforms/android/res/mipmap-hdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-ldpi/icon.png b/StoneIsland/platforms/android/res/mipmap-ldpi/icon.png
deleted file mode 100644
index 6d874732..00000000
--- a/StoneIsland/platforms/android/res/mipmap-ldpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-mdpi/icon.png b/StoneIsland/platforms/android/res/mipmap-mdpi/icon.png
deleted file mode 100644
index 7b7a5b15..00000000
--- a/StoneIsland/platforms/android/res/mipmap-mdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-xhdpi/icon.png b/StoneIsland/platforms/android/res/mipmap-xhdpi/icon.png
deleted file mode 100644
index 9db5bef2..00000000
--- a/StoneIsland/platforms/android/res/mipmap-xhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-xxhdpi/icon.png b/StoneIsland/platforms/android/res/mipmap-xxhdpi/icon.png
deleted file mode 100644
index 63a82478..00000000
--- a/StoneIsland/platforms/android/res/mipmap-xxhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/mipmap-xxxhdpi/icon.png b/StoneIsland/platforms/android/res/mipmap-xxxhdpi/icon.png
deleted file mode 100644
index 55bdd800..00000000
--- a/StoneIsland/platforms/android/res/mipmap-xxxhdpi/icon.png
+++ /dev/null
Binary files differ
diff --git a/StoneIsland/platforms/android/res/values/strings.xml b/StoneIsland/platforms/android/res/values/strings.xml
deleted file mode 100755
index 5d26f7f8..00000000
--- a/StoneIsland/platforms/android/res/values/strings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources>
- <string name="app_name">Stone Island</string>
- <string name="launcher_name">@string/app_name</string>
- <string name="activity_name">@string/launcher_name</string>
- <string name="google_app_id">85075801930</string>
-</resources> \ No newline at end of file
diff --git a/StoneIsland/platforms/android/res/xml/config.xml b/StoneIsland/platforms/android/res/xml/config.xml
deleted file mode 100644
index c9de73ec..00000000
--- a/StoneIsland/platforms/android/res/xml/config.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<widget android-versionCode="6126" id="us.okfoc.stoneisland" version="1.2.6" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
- <feature name="InAppBrowser">
- <param name="android-package" value="org.apache.cordova.inappbrowser.InAppBrowser" />
- </feature>
- <feature name="SocialSharing">
- <param name="android-package" value="nl.xservices.plugins.SocialSharing" />
- </feature>
- <feature name="LaunchMyApp">
- <param name="android-package" value="nl.xservices.plugins.LaunchMyApp" />
- </feature>
- <feature name="Whitelist">
- <param name="android-package" value="org.apache.cordova.whitelist.WhitelistPlugin" />
- <param name="onload" value="true" />
- </feature>
- <feature name="Device">
- <param name="android-package" value="org.apache.cordova.device.Device" />
- </feature>
- <feature name="NetworkStatus">
- <param name="android-package" value="org.apache.cordova.networkinformation.NetworkManager" />
- </feature>
- <feature name="Notification">
- <param name="android-package" value="org.apache.cordova.dialogs.Notification" />
- </feature>
- <feature name="Geolocation">
- <param name="android-package" value="org.apache.cordova.geolocation.Geolocation" />
- </feature>
- <feature name="Keyboard">
- <param name="android-package" value="io.ionic.keyboard.IonicKeyboard" />
- <param name="onload" value="true" />
- </feature>
- <feature name="StatusBar">
- <param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
- <param name="onload" value="true" />
- </feature>
- <feature name="SplashScreen">
- <param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
- <param name="onload" value="true" />
- </feature>
- <feature name="PushNotification">
- <param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
- </feature>
- <feature name="Sim">
- <param name="android-package" value="com.pbakondy.Sim" />
- </feature>
- <access origin="https://ssl.gstatic.com/accessibility/javascript/android/*" />
- <feature name="MobileAccessibility">
- <param name="android-package" value="com.phonegap.plugin.mobileaccessibility.MobileAccessibility" />
- </feature>
- <name>Stone Island</name>
- <description>
- Stone Island
- </description>
- <author email="julescarbon@gmail.com" href="https://asdf.us/">
- Jules LaPlace
- </author>
- <content src="index.html" />
- <access origin="*" />
- <allow-intent href="http://*/*" />
- <allow-intent href="https://*/*" />
- <allow-intent href="tel:*" />
- <allow-intent href="sms:*" />
- <allow-intent href="mailto:*" />
- <allow-intent href="geo:*" />
- <allow-intent href="market:*" />
- <preference name="loglevel" value="DEBUG" />
- <preference name="AppName" value="Stone Island" />
- <preference name="EnableViewportScale" value="true" />
- <preference name="BackupWebStorage" value="local" />
- <preference name="TopActivityIndicator" value="white" />
- <preference name="SuppressesIncrementalRendering" value="true" />
- <preference name="DisallowOverscroll" value="true" />
- <preference name="HideKeyboardFormAccessoryBar" value="false" />
- <preference name="orientation" value="portrait" />
- <preference name="StatusBarOverlaysWebView" value="false" />
- <preference name="StatusBarBackgroundColor" value="#ffffff" />
- <preference name="StatusBarStyle" value="default" />
- <preference name="SplashMaintainAspectRatio" value="true" />
- <preference name="ShowSplashScreenSpinner" value="false" />
- <preference name="AutoHideSplashScreen" value="true" />
- <preference name="AllowInlineMediaPlayback" value="true" />
- <preference name="AndroidLaunchMode" value="singleTop" />
- <preference name="android-minSdkVersion" value="28" />
- <preference name="android-targetSdkVersion" value="28" />
-</widget>
diff --git a/StoneIsland/platforms/android/settings.gradle b/StoneIsland/platforms/android/settings.gradle
deleted file mode 100755
index 8a39471f..00000000
--- a/StoneIsland/platforms/android/settings.gradle
+++ /dev/null
@@ -1,3 +0,0 @@
-// GENERATED FILE - DO NOT EDIT
-include ":"
-include ":CordovaLib"
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java
deleted file mode 100644
index 3ccea6cb..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/BackgroundActionButtonHandler.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.app.NotificationManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.os.Bundle;
-import android.util.Log;
-import android.support.v4.app.RemoteInput;
-
-public class BackgroundActionButtonHandler extends BroadcastReceiver implements PushConstants {
- private static String LOG_TAG = "PushPlugin_BackgroundActionButtonHandler";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Bundle extras = intent.getExtras();
- Log.d(LOG_TAG, "BackgroundActionButtonHandler = " + extras);
-
- int notId = intent.getIntExtra(NOT_ID, 0);
- Log.d(LOG_TAG, "not id = " + notId);
- NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancel(GCMIntentService.getAppName(context), notId);
-
- if (extras != null) {
- Bundle originalExtras = extras.getBundle(PUSH_BUNDLE);
-
- originalExtras.putBoolean(FOREGROUND, false);
- originalExtras.putBoolean(COLDSTART, false);
- originalExtras.putString(ACTION_CALLBACK, extras.getString(CALLBACK));
-
- Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
- if (remoteInput != null) {
- String inputString = remoteInput.getCharSequence(INLINE_REPLY).toString();
- Log.d(LOG_TAG, "response: " + inputString);
- originalExtras.putString(INLINE_REPLY, inputString);
- }
-
- PushPlugin.sendExtras(originalExtras);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java
deleted file mode 100644
index e1a2b75c..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/GCMIntentService.java
+++ /dev/null
@@ -1,802 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.annotation.SuppressLint;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.res.AssetManager;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-import android.net.Uri;
-import android.os.Bundle;
-import android.support.v4.app.NotificationCompat;
-import android.support.v4.app.NotificationManagerCompat;
-import android.support.v4.app.NotificationCompat.WearableExtender;
-import android.support.v4.app.RemoteInput;
-import android.text.Html;
-import android.text.Spanned;
-import android.util.Log;
-
-import com.google.android.gms.gcm.GcmListenerService;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Random;
-
-@SuppressLint("NewApi")
-public class GCMIntentService extends GcmListenerService implements PushConstants {
-
- private static final String LOG_TAG = "PushPlugin_GCMIntentService";
- private static HashMap<Integer, ArrayList<String>> messageMap = new HashMap<Integer, ArrayList<String>>();
-
- public void setNotification(int notId, String message){
- ArrayList<String> messageList = messageMap.get(notId);
- if(messageList == null) {
- messageList = new ArrayList<String>();
- messageMap.put(notId, messageList);
- }
-
- if(message.isEmpty()){
- messageList.clear();
- }else{
- messageList.add(message);
- }
- }
-
- @Override
- public void onMessageReceived(String from, Bundle extras) {
- Log.d(LOG_TAG, "onMessage - from: " + from);
-
- if (extras != null) {
- Context applicationContext = getApplicationContext();
-
- SharedPreferences prefs = applicationContext.getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- boolean forceShow = prefs.getBoolean(FORCE_SHOW, false);
- boolean clearBadge = prefs.getBoolean(CLEAR_BADGE, false);
-
- extras = normalizeExtras(applicationContext, extras);
-
- if (clearBadge) {
- PushPlugin.setApplicationIconBadgeNumber(getApplicationContext(), 0);
- }
-
- // if we are in the foreground and forceShow is `false` only send data
- if (!forceShow && PushPlugin.isInForeground()) {
- Log.d(LOG_TAG, "foreground");
- extras.putBoolean(FOREGROUND, true);
- extras.putBoolean(COLDSTART, false);
- PushPlugin.sendExtras(extras);
- }
- // if we are in the foreground and forceShow is `true`, force show the notification if the data has at least a message or title
- else if (forceShow && PushPlugin.isInForeground()) {
- Log.d(LOG_TAG, "foreground force");
- extras.putBoolean(FOREGROUND, true);
- extras.putBoolean(COLDSTART, false);
-
- showNotificationIfPossible(applicationContext, extras);
- }
- // if we are not in the foreground always send notification if the data has at least a message or title
- else {
- Log.d(LOG_TAG, "background");
- extras.putBoolean(FOREGROUND, false);
- extras.putBoolean(COLDSTART, PushPlugin.isActive());
-
- showNotificationIfPossible(applicationContext, extras);
- }
- }
- }
-
- /*
- * Change a values key in the extras bundle
- */
- private void replaceKey(Context context, String oldKey, String newKey, Bundle extras, Bundle newExtras) {
- Object value = extras.get(oldKey);
- if ( value != null ) {
- if (value instanceof String) {
- value = localizeKey(context, newKey, (String) value);
-
- newExtras.putString(newKey, (String) value);
- } else if (value instanceof Boolean) {
- newExtras.putBoolean(newKey, (Boolean) value);
- } else if (value instanceof Number) {
- newExtras.putDouble(newKey, ((Number) value).doubleValue());
- } else {
- newExtras.putString(newKey, String.valueOf(value));
- }
- }
- }
-
- /*
- * Normalize localization for key
- */
- private String localizeKey(Context context, String key, String value) {
- if (key.equals(TITLE) || key.equals(MESSAGE) || key.equals(SUMMARY_TEXT)) {
- try {
- JSONObject localeObject = new JSONObject(value);
-
- String localeKey = localeObject.getString(LOC_KEY);
-
- ArrayList<String> localeFormatData = new ArrayList<String>();
- if (!localeObject.isNull(LOC_DATA)) {
- String localeData = localeObject.getString(LOC_DATA);
- JSONArray localeDataArray = new JSONArray(localeData);
- for (int i = 0 ; i < localeDataArray.length(); i++) {
- localeFormatData.add(localeDataArray.getString(i));
- }
- }
-
- String packageName = context.getPackageName();
- Resources resources = context.getResources();
-
- int resourceId = resources.getIdentifier(localeKey, "string", packageName);
-
- if (resourceId != 0) {
- return resources.getString(resourceId, localeFormatData.toArray());
- }
- else {
- Log.d(LOG_TAG, "can't find resource for locale key = " + localeKey);
-
- return value;
- }
- }
- catch(JSONException e) {
- Log.d(LOG_TAG, "no locale found for key = " + key + ", error " + e.getMessage());
-
- return value;
- }
- }
-
- return value;
- }
-
- /*
- * Replace alternate keys with our canonical value
- */
- private String normalizeKey(String key) {
- if (key.equals(BODY) || key.equals(ALERT) || key.equals(GCM_NOTIFICATION_BODY) || key.equals(TWILIO_BODY)) {
- return MESSAGE;
- } else if (key.equals(TWILIO_TITLE)) {
- return TITLE;
- }else if (key.equals(MSGCNT) || key.equals(BADGE)) {
- return COUNT;
- } else if (key.equals(SOUNDNAME) || key.equals(TWILIO_SOUND)) {
- return SOUND;
- } else if (key.startsWith(GCM_NOTIFICATION)) {
- return key.substring(GCM_NOTIFICATION.length()+1, key.length());
- } else if (key.startsWith(GCM_N)) {
- return key.substring(GCM_N.length()+1, key.length());
- } else if (key.startsWith(UA_PREFIX)) {
- key = key.substring(UA_PREFIX.length()+1, key.length());
- return key.toLowerCase();
- } else {
- return key;
- }
- }
-
- /*
- * Parse bundle into normalized keys.
- */
- private Bundle normalizeExtras(Context context, Bundle extras) {
- Log.d(LOG_TAG, "normalize extras");
- Iterator<String> it = extras.keySet().iterator();
- Bundle newExtras = new Bundle();
-
- while (it.hasNext()) {
- String key = it.next();
-
- Log.d(LOG_TAG, "key = " + key);
-
- // If normalizeKeythe key is "data" or "message" and the value is a json object extract
- // This is to support parse.com and other services. Issue #147 and pull #218
- if (key.equals(PARSE_COM_DATA) || key.equals(MESSAGE)) {
- Object json = extras.get(key);
- // Make sure data is json object stringified
- if ( json instanceof String && ((String) json).startsWith("{") ) {
- Log.d(LOG_TAG, "extracting nested message data from key = " + key);
- try {
- // If object contains message keys promote each value to the root of the bundle
- JSONObject data = new JSONObject((String) json);
- if ( data.has(ALERT) || data.has(MESSAGE) || data.has(BODY) || data.has(TITLE) ) {
- Iterator<String> jsonIter = data.keys();
- while (jsonIter.hasNext()) {
- String jsonKey = jsonIter.next();
-
- Log.d(LOG_TAG, "key = data/" + jsonKey);
-
- String value = data.getString(jsonKey);
- jsonKey = normalizeKey(jsonKey);
- value = localizeKey(context, jsonKey, value);
-
- newExtras.putString(jsonKey, value);
- }
- }
- } catch( JSONException e) {
- Log.e(LOG_TAG, "normalizeExtras: JSON exception");
- }
- }
- } else if (key.equals(("notification"))) {
- Bundle value = extras.getBundle(key);
- Iterator<String> iterator = value.keySet().iterator();
- while (iterator.hasNext()) {
- String notifkey = iterator.next();
-
- Log.d(LOG_TAG, "notifkey = " + notifkey);
- String newKey = normalizeKey(notifkey);
- Log.d(LOG_TAG, "replace key " + notifkey + " with " + newKey);
-
- String valueData = value.getString(notifkey);
- valueData = localizeKey(context, newKey, valueData);
-
- newExtras.putString(newKey, valueData);
- }
- continue;
- }
-
- String newKey = normalizeKey(key);
- Log.d(LOG_TAG, "replace key " + key + " with " + newKey);
- replaceKey(context, key, newKey, extras, newExtras);
-
- } // while
-
- return newExtras;
- }
-
- private int extractBadgeCount(Bundle extras) {
- int count = -1;
- String msgcnt = extras.getString(COUNT);
-
- try {
- if (msgcnt != null) {
- count = Integer.parseInt(msgcnt);
- }
- } catch (NumberFormatException e) {
- Log.e(LOG_TAG, e.getLocalizedMessage(), e);
- }
-
- return count;
- }
-
- private void showNotificationIfPossible (Context context, Bundle extras) {
-
- // Send a notification if there is a message or title, otherwise just send data
- String message = extras.getString(MESSAGE);
- String title = extras.getString(TITLE);
- String contentAvailable = extras.getString(CONTENT_AVAILABLE);
- String forceStart = extras.getString(FORCE_START);
- int badgeCount = extractBadgeCount(extras);
- if (badgeCount >= 0) {
- Log.d(LOG_TAG, "count =[" + badgeCount + "]");
- PushPlugin.setApplicationIconBadgeNumber(context, badgeCount);
- }
-
- Log.d(LOG_TAG, "message =[" + message + "]");
- Log.d(LOG_TAG, "title =[" + title + "]");
- Log.d(LOG_TAG, "contentAvailable =[" + contentAvailable + "]");
- Log.d(LOG_TAG, "forceStart =[" + forceStart + "]");
-
- if ((message != null && message.length() != 0) ||
- (title != null && title.length() != 0)) {
-
- Log.d(LOG_TAG, "create notification");
-
- if(title == null || title.isEmpty()){
- extras.putString(TITLE, getAppName(this));
- }
-
- createNotification(context, extras);
- }
-
- if(!PushPlugin.isActive() && "1".equals(forceStart)){
- Log.d(LOG_TAG, "app is not running but we should start it and put in background");
- Intent intent = new Intent(this, PushHandlerActivity.class);
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.putExtra(PUSH_BUNDLE, extras);
- intent.putExtra(START_IN_BACKGROUND, true);
- intent.putExtra(FOREGROUND, false);
- startActivity(intent);
- } else if ("1".equals(contentAvailable)) {
- Log.d(LOG_TAG, "app is not running and content available true");
- Log.d(LOG_TAG, "send notification event");
- PushPlugin.sendExtras(extras);
- }
- }
-
- public void createNotification(Context context, Bundle extras) {
- NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- String appName = getAppName(this);
- String packageName = context.getPackageName();
- Resources resources = context.getResources();
-
- int notId = parseInt(NOT_ID, extras);
- Intent notificationIntent = new Intent(this, PushHandlerActivity.class);
- notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
- notificationIntent.putExtra(PUSH_BUNDLE, extras);
- notificationIntent.putExtra(NOT_ID, notId);
-
- int requestCode = new Random().nextInt();
- PendingIntent contentIntent = PendingIntent.getActivity(this, requestCode, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
-
- NotificationCompat.Builder mBuilder =
- new NotificationCompat.Builder(context)
- .setWhen(System.currentTimeMillis())
- .setContentTitle(fromHtml(extras.getString(TITLE)))
- .setTicker(fromHtml(extras.getString(TITLE)))
- .setContentIntent(contentIntent)
- .setAutoCancel(true);
-
- SharedPreferences prefs = context.getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- String localIcon = prefs.getString(ICON, null);
- String localIconColor = prefs.getString(ICON_COLOR, null);
- boolean soundOption = prefs.getBoolean(SOUND, true);
- boolean vibrateOption = prefs.getBoolean(VIBRATE, true);
- Log.d(LOG_TAG, "stored icon=" + localIcon);
- Log.d(LOG_TAG, "stored iconColor=" + localIconColor);
- Log.d(LOG_TAG, "stored sound=" + soundOption);
- Log.d(LOG_TAG, "stored vibrate=" + vibrateOption);
-
- /*
- * Notification Vibration
- */
-
- setNotificationVibration(extras, vibrateOption, mBuilder);
-
- /*
- * Notification Icon Color
- *
- * Sets the small-icon background color of the notification.
- * To use, add the `iconColor` key to plugin android options
- *
- */
- setNotificationIconColor(extras.getString("color"), mBuilder, localIconColor);
-
- /*
- * Notification Icon
- *
- * Sets the small-icon of the notification.
- *
- * - checks the plugin options for `icon` key
- * - if none, uses the application icon
- *
- * The icon value must be a string that maps to a drawable resource.
- * If no resource is found, falls
- *
- */
- setNotificationSmallIcon(context, extras, packageName, resources, mBuilder, localIcon);
-
- /*
- * Notification Large-Icon
- *
- * Sets the large-icon of the notification
- *
- * - checks the gcm data for the `image` key
- * - checks to see if remote image, loads it.
- * - checks to see if assets image, Loads It.
- * - checks to see if resource image, LOADS IT!
- * - if none, we don't set the large icon
- *
- */
- setNotificationLargeIcon(extras, packageName, resources, mBuilder);
-
- /*
- * Notification Sound
- */
- if (soundOption) {
- setNotificationSound(context, extras, mBuilder);
- }
-
- /*
- * LED Notification
- */
- setNotificationLedColor(extras, mBuilder);
-
- /*
- * Priority Notification
- */
- setNotificationPriority(extras, mBuilder);
-
- /*
- * Notification message
- */
- setNotificationMessage(notId, extras, mBuilder);
-
- /*
- * Notification count
- */
- setNotificationCount(context, extras, mBuilder);
-
- /*
- * Notification count
- */
- setVisibility(context, extras, mBuilder);
-
- /*
- * Notification add actions
- */
- createActions(extras, mBuilder, resources, packageName, notId);
-
- mNotificationManager.notify(appName, notId, mBuilder.build());
- }
-
- private void updateIntent(Intent intent, String callback, Bundle extras, boolean foreground, int notId) {
- intent.putExtra(CALLBACK, callback);
- intent.putExtra(PUSH_BUNDLE, extras);
- intent.putExtra(FOREGROUND, foreground);
- intent.putExtra(NOT_ID, notId);
- }
-
- private void createActions(Bundle extras, NotificationCompat.Builder mBuilder, Resources resources, String packageName, int notId) {
- Log.d(LOG_TAG, "create actions: with in-line");
- String actions = extras.getString(ACTIONS);
- if (actions != null) {
- try {
- JSONArray actionsArray = new JSONArray(actions);
- ArrayList<NotificationCompat.Action> wActions = new ArrayList<NotificationCompat.Action>();
- for (int i=0; i < actionsArray.length(); i++) {
- int min = 1;
- int max = 2000000000;
- Random random = new Random();
- int uniquePendingIntentRequestCode = random.nextInt((max - min) + 1) + min;
- Log.d(LOG_TAG, "adding action");
- JSONObject action = actionsArray.getJSONObject(i);
- Log.d(LOG_TAG, "adding callback = " + action.getString(CALLBACK));
- boolean foreground = action.optBoolean(FOREGROUND, true);
- boolean inline = action.optBoolean("inline", false);
- Intent intent = null;
- PendingIntent pIntent = null;
- if (inline) {
- Log.d(LOG_TAG, "Version: " + android.os.Build.VERSION.SDK_INT + " = " + android.os.Build.VERSION_CODES.M);
- if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.M) {
- Log.d(LOG_TAG, "push activity");
- intent = new Intent(this, PushHandlerActivity.class);
- } else {
- Log.d(LOG_TAG, "push receiver");
- intent = new Intent(this, BackgroundActionButtonHandler.class);
- }
-
- updateIntent(intent, action.getString(CALLBACK), extras, foreground, notId);
-
- if (android.os.Build.VERSION.SDK_INT <= android.os.Build.VERSION_CODES.M) {
- Log.d(LOG_TAG, "push activity for notId " + notId);
- pIntent = PendingIntent.getActivity(this, uniquePendingIntentRequestCode, intent, PendingIntent.FLAG_ONE_SHOT);
- } else {
- Log.d(LOG_TAG, "push receiver for notId " + notId);
- pIntent = PendingIntent.getBroadcast(this, uniquePendingIntentRequestCode, intent, PendingIntent.FLAG_ONE_SHOT);
- }
- } else if (foreground) {
- intent = new Intent(this, PushHandlerActivity.class);
- updateIntent(intent, action.getString(CALLBACK), extras, foreground, notId);
- pIntent = PendingIntent.getActivity(this, uniquePendingIntentRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
- } else {
- intent = new Intent(this, BackgroundActionButtonHandler.class);
- updateIntent(intent, action.getString(CALLBACK), extras, foreground, notId);
- pIntent = PendingIntent.getBroadcast(this, uniquePendingIntentRequestCode, intent, PendingIntent.FLAG_UPDATE_CURRENT);
- }
-
- NotificationCompat.Action.Builder actionBuilder =
- new NotificationCompat.Action.Builder(resources.getIdentifier(action.optString(ICON, ""), DRAWABLE, packageName),
- action.getString(TITLE), pIntent);
-
- RemoteInput remoteInput = null;
- if (inline) {
- Log.d(LOG_TAG, "create remote input");
- String replyLabel = "Enter your reply here";
- remoteInput =
- new RemoteInput.Builder(INLINE_REPLY)
- .setLabel(replyLabel)
- .build();
- actionBuilder.addRemoteInput(remoteInput);
- }
-
- NotificationCompat.Action wAction = actionBuilder.build();
- wActions.add(actionBuilder.build());
-
- if (inline) {
- mBuilder.addAction(wAction);
- } else {
- mBuilder.addAction(resources.getIdentifier(action.optString(ICON, ""), DRAWABLE, packageName),
- action.getString(TITLE), pIntent);
- }
- wAction = null;
- pIntent = null;
- }
- mBuilder.extend(new WearableExtender().addActions(wActions));
- wActions.clear();
- } catch(JSONException e) {
- // nope
- }
- }
- }
-
- private void setNotificationCount(Context context, Bundle extras, NotificationCompat.Builder mBuilder) {
- int count = extractBadgeCount(extras);
- if (count >= 0) {
- Log.d(LOG_TAG, "count =[" + count + "]");
- mBuilder.setNumber(count);
- }
- }
-
-
- private void setVisibility(Context context, Bundle extras, NotificationCompat.Builder mBuilder) {
- String visibilityStr = extras.getString(VISIBILITY);
- if (visibilityStr != null) {
- try {
- Integer visibility = Integer.parseInt(visibilityStr);
- if (visibility >= NotificationCompat.VISIBILITY_SECRET && visibility <= NotificationCompat.VISIBILITY_PUBLIC) {
- mBuilder.setVisibility(visibility);
- } else {
- Log.e(LOG_TAG, "Visibility parameter must be between -1 and 1");
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- }
- }
-
- private void setNotificationVibration(Bundle extras, Boolean vibrateOption, NotificationCompat.Builder mBuilder) {
- String vibrationPattern = extras.getString(VIBRATION_PATTERN);
- if (vibrationPattern != null) {
- String[] items = vibrationPattern.replaceAll("\\[", "").replaceAll("\\]", "").split(",");
- long[] results = new long[items.length];
- for (int i = 0; i < items.length; i++) {
- try {
- results[i] = Long.parseLong(items[i].trim());
- } catch (NumberFormatException nfe) {}
- }
- mBuilder.setVibrate(results);
- } else {
- if (vibrateOption) {
- mBuilder.setDefaults(Notification.DEFAULT_VIBRATE);
- }
- }
- }
-
- private void setNotificationMessage(int notId, Bundle extras, NotificationCompat.Builder mBuilder) {
- String message = extras.getString(MESSAGE);
-
- String style = extras.getString(STYLE, STYLE_TEXT);
- if(STYLE_INBOX.equals(style)) {
- setNotification(notId, message);
-
- mBuilder.setContentText(fromHtml(message));
-
- ArrayList<String> messageList = messageMap.get(notId);
- Integer sizeList = messageList.size();
- if (sizeList > 1) {
- String sizeListMessage = sizeList.toString();
- String stacking = sizeList + " more";
- if (extras.getString(SUMMARY_TEXT) != null) {
- stacking = extras.getString(SUMMARY_TEXT);
- stacking = stacking.replace("%n%", sizeListMessage);
- }
- NotificationCompat.InboxStyle notificationInbox = new NotificationCompat.InboxStyle()
- .setBigContentTitle(fromHtml(extras.getString(TITLE)))
- .setSummaryText(fromHtml(stacking));
-
- for (int i = messageList.size() - 1; i >= 0; i--) {
- notificationInbox.addLine(fromHtml(messageList.get(i)));
- }
-
- mBuilder.setStyle(notificationInbox);
- } else {
- NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
- if (message != null) {
- bigText.bigText(fromHtml(message));
- bigText.setBigContentTitle(fromHtml(extras.getString(TITLE)));
- mBuilder.setStyle(bigText);
- }
- }
- } else if (STYLE_PICTURE.equals(style)) {
- setNotification(notId, "");
-
- NotificationCompat.BigPictureStyle bigPicture = new NotificationCompat.BigPictureStyle();
- bigPicture.bigPicture(getBitmapFromURL(extras.getString(PICTURE)));
- bigPicture.setBigContentTitle(fromHtml(extras.getString(TITLE)));
- bigPicture.setSummaryText(fromHtml(extras.getString(SUMMARY_TEXT)));
-
- mBuilder.setContentTitle(fromHtml(extras.getString(TITLE)));
- mBuilder.setContentText(fromHtml(message));
-
- mBuilder.setStyle(bigPicture);
- } else {
- setNotification(notId, "");
-
- NotificationCompat.BigTextStyle bigText = new NotificationCompat.BigTextStyle();
-
- if (message != null) {
- mBuilder.setContentText(fromHtml(message));
-
- bigText.bigText(fromHtml(message));
- bigText.setBigContentTitle(fromHtml(extras.getString(TITLE)));
-
- String summaryText = extras.getString(SUMMARY_TEXT);
- if (summaryText != null) {
- bigText.setSummaryText(fromHtml(summaryText));
- }
-
- mBuilder.setStyle(bigText);
- }
- /*
- else {
- mBuilder.setContentText("<missing message content>");
- }
- */
- }
- }
-
- private void setNotificationSound(Context context, Bundle extras, NotificationCompat.Builder mBuilder) {
- String soundname = extras.getString(SOUNDNAME);
- if (soundname == null) {
- soundname = extras.getString(SOUND);
- }
- if (SOUND_RINGTONE.equals(soundname)) {
- mBuilder.setSound(android.provider.Settings.System.DEFAULT_RINGTONE_URI);
- } else if (soundname != null && !soundname.contentEquals(SOUND_DEFAULT)) {
- Uri sound = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE
- + "://" + context.getPackageName() + "/raw/" + soundname);
- Log.d(LOG_TAG, sound.toString());
- mBuilder.setSound(sound);
- } else {
- mBuilder.setSound(android.provider.Settings.System.DEFAULT_NOTIFICATION_URI);
- }
- }
-
- private void setNotificationLedColor(Bundle extras, NotificationCompat.Builder mBuilder) {
- String ledColor = extras.getString(LED_COLOR);
- if (ledColor != null) {
- // Converts parse Int Array from ledColor
- String[] items = ledColor.replaceAll("\\[", "").replaceAll("\\]", "").split(",");
- int[] results = new int[items.length];
- for (int i = 0; i < items.length; i++) {
- try {
- results[i] = Integer.parseInt(items[i].trim());
- } catch (NumberFormatException nfe) {}
- }
- if (results.length == 4) {
- mBuilder.setLights(Color.argb(results[0], results[1], results[2], results[3]), 500, 500);
- } else {
- Log.e(LOG_TAG, "ledColor parameter must be an array of length == 4 (ARGB)");
- }
- }
- }
-
- private void setNotificationPriority(Bundle extras, NotificationCompat.Builder mBuilder) {
- String priorityStr = extras.getString(PRIORITY);
- if (priorityStr != null) {
- try {
- Integer priority = Integer.parseInt(priorityStr);
- if (priority >= NotificationCompat.PRIORITY_MIN && priority <= NotificationCompat.PRIORITY_MAX) {
- mBuilder.setPriority(priority);
- } else {
- Log.e(LOG_TAG, "Priority parameter must be between -2 and 2");
- }
- } catch (NumberFormatException e) {
- e.printStackTrace();
- }
- }
- }
-
- private void setNotificationLargeIcon(Bundle extras, String packageName, Resources resources, NotificationCompat.Builder mBuilder) {
- String gcmLargeIcon = extras.getString(IMAGE); // from gcm
- if (gcmLargeIcon != null && !"".equals(gcmLargeIcon)) {
- if (gcmLargeIcon.startsWith("http://") || gcmLargeIcon.startsWith("https://")) {
- mBuilder.setLargeIcon(getBitmapFromURL(gcmLargeIcon));
- Log.d(LOG_TAG, "using remote large-icon from gcm");
- } else {
- AssetManager assetManager = getAssets();
- InputStream istr;
- try {
- istr = assetManager.open(gcmLargeIcon);
- Bitmap bitmap = BitmapFactory.decodeStream(istr);
- mBuilder.setLargeIcon(bitmap);
- Log.d(LOG_TAG, "using assets large-icon from gcm");
- } catch (IOException e) {
- int largeIconId = 0;
- largeIconId = resources.getIdentifier(gcmLargeIcon, DRAWABLE, packageName);
- if (largeIconId != 0) {
- Bitmap largeIconBitmap = BitmapFactory.decodeResource(resources, largeIconId);
- mBuilder.setLargeIcon(largeIconBitmap);
- Log.d(LOG_TAG, "using resources large-icon from gcm");
- } else {
- Log.d(LOG_TAG, "Not setting large icon");
- }
- }
- }
- }
- }
-
- private void setNotificationSmallIcon(Context context, Bundle extras, String packageName, Resources resources, NotificationCompat.Builder mBuilder, String localIcon) {
- int iconId = 0;
- String icon = extras.getString(ICON);
- if (icon != null && !"".equals(icon)) {
- iconId = resources.getIdentifier(icon, DRAWABLE, packageName);
- Log.d(LOG_TAG, "using icon from plugin options");
- }
- else if (localIcon != null && !"".equals(localIcon)) {
- iconId = resources.getIdentifier(localIcon, DRAWABLE, packageName);
- Log.d(LOG_TAG, "using icon from plugin options");
- }
- if (iconId == 0) {
- Log.d(LOG_TAG, "no icon resource found - using application icon");
- iconId = context.getApplicationInfo().icon;
- }
- mBuilder.setSmallIcon(iconId);
- }
-
- private void setNotificationIconColor(String color, NotificationCompat.Builder mBuilder, String localIconColor) {
- int iconColor = 0;
- if (color != null && !"".equals(color)) {
- try {
- iconColor = Color.parseColor(color);
- } catch (IllegalArgumentException e) {
- Log.e(LOG_TAG, "couldn't parse color from android options");
- }
- }
- else if (localIconColor != null && !"".equals(localIconColor)) {
- try {
- iconColor = Color.parseColor(localIconColor);
- } catch (IllegalArgumentException e) {
- Log.e(LOG_TAG, "couldn't parse color from android options");
- }
- }
- if (iconColor != 0) {
- mBuilder.setColor(iconColor);
- }
- }
-
- public Bitmap getBitmapFromURL(String strURL) {
- try {
- URL url = new URL(strURL);
- HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- connection.setDoInput(true);
- connection.connect();
- InputStream input = connection.getInputStream();
- return BitmapFactory.decodeStream(input);
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- public static String getAppName(Context context) {
- CharSequence appName = context.getPackageManager().getApplicationLabel(context.getApplicationInfo());
- return (String)appName;
- }
-
- private int parseInt(String value, Bundle extras) {
- int retval = 0;
-
- try {
- retval = Integer.parseInt(extras.getString(value));
- }
- catch(NumberFormatException e) {
- Log.e(LOG_TAG, "Number format exception - Error parsing " + value + ": " + e.getMessage());
- }
- catch(Exception e) {
- Log.e(LOG_TAG, "Number format exception - Error parsing " + value + ": " + e.getMessage());
- }
-
- return retval;
- }
-
- private Spanned fromHtml(String source) {
- if (source != null)
- return Html.fromHtml(source);
- else
- return null;
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java
deleted file mode 100644
index 6aa5c9bf..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PermissionUtils.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-public class PermissionUtils {
-
- private static final String CHECK_OP_NO_THROW = "checkOpNoThrow";
-
- public static boolean hasPermission(Context appContext, String appOpsServiceId) throws UnknownError {
-
- ApplicationInfo appInfo = appContext.getApplicationInfo();
-
- String pkg = appContext.getPackageName();
- int uid = appInfo.uid;
- Class appOpsClass = null;
- Object appOps = appContext.getSystemService("appops");
-
- try {
-
- appOpsClass = Class.forName("android.app.AppOpsManager");
-
- Method checkOpNoThrowMethod = appOpsClass.getMethod(
- CHECK_OP_NO_THROW,
- Integer.TYPE,
- Integer.TYPE,
- String.class
- );
-
- Field opValue = appOpsClass.getDeclaredField(appOpsServiceId);
-
- int value = (int) opValue.getInt(Integer.class);
- Object result = checkOpNoThrowMethod.invoke(appOps, value, uid, pkg);
-
- return Integer.parseInt(result.toString()) == 0; // AppOpsManager.MODE_ALLOWED
-
- } catch (ClassNotFoundException e) {
- throw new UnknownError("class not found");
- } catch (NoSuchMethodException e) {
- throw new UnknownError("no such method");
- } catch (NoSuchFieldException e) {
- throw new UnknownError("no such field");
- } catch (InvocationTargetException e) {
- throw new UnknownError("invocation target");
- } catch (IllegalAccessException e) {
- throw new UnknownError("illegal access");
- }
-
- }
-
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java
deleted file mode 100644
index 37874e04..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushConstants.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.adobe.phonegap.push;
-
-public interface PushConstants {
- public static final String COM_ADOBE_PHONEGAP_PUSH = "com.adobe.phonegap.push";
- public static final String REGISTRATION_ID = "registrationId";
- public static final String FOREGROUND = "foreground";
- public static final String TITLE = "title";
- public static final String NOT_ID = "notId";
- public static final String PUSH_BUNDLE = "pushBundle";
- public static final String ICON = "icon";
- public static final String ICON_COLOR = "iconColor";
- public static final String SOUND = "sound";
- public static final String SOUND_DEFAULT = "default";
- public static final String SOUND_RINGTONE = "ringtone";
- public static final String VIBRATE = "vibrate";
- public static final String ACTIONS = "actions";
- public static final String CALLBACK = "callback";
- public static final String ACTION_CALLBACK = "actionCallback";
- public static final String DRAWABLE = "drawable";
- public static final String MSGCNT = "msgcnt";
- public static final String VIBRATION_PATTERN = "vibrationPattern";
- public static final String STYLE = "style";
- public static final String SUMMARY_TEXT = "summaryText";
- public static final String PICTURE = "picture";
- public static final String GCM_N = "gcm.n.";
- public static final String GCM_NOTIFICATION = "gcm.notification";
- public static final String GCM_NOTIFICATION_BODY = "gcm.notification.body";
- public static final String UA_PREFIX = "com.urbanairship.push";
- public static final String PARSE_COM_DATA = "data";
- public static final String ALERT = "alert";
- public static final String MESSAGE = "message";
- public static final String BODY = "body";
- public static final String SOUNDNAME = "soundname";
- public static final String LED_COLOR = "ledColor";
- public static final String PRIORITY = "priority";
- public static final String IMAGE = "image";
- public static final String STYLE_INBOX = "inbox";
- public static final String STYLE_PICTURE = "picture";
- public static final String STYLE_TEXT = "text";
- public static final String BADGE = "badge";
- public static final String INITIALIZE = "init";
- public static final String SUBSCRIBE = "subscribe";
- public static final String UNSUBSCRIBE = "unsubscribe";
- public static final String UNREGISTER = "unregister";
- public static final String EXIT = "exit";
- public static final String FINISH = "finish";
- public static final String HAS_PERMISSION = "hasPermission";
- public static final String ANDROID = "android";
- public static final String SENDER_ID = "senderID";
- public static final String CLEAR_BADGE = "clearBadge";
- public static final String CLEAR_NOTIFICATIONS = "clearNotifications";
- public static final String COLDSTART = "coldstart";
- public static final String ADDITIONAL_DATA = "additionalData";
- public static final String COUNT = "count";
- public static final String FROM = "from";
- public static final String COLLAPSE_KEY = "collapse_key";
- public static final String FORCE_SHOW = "forceShow";
- public static final String GCM = "GCM";
- public static final String CONTENT_AVAILABLE = "content-available";
- public static final String TOPICS = "topics";
- public static final String SET_APPLICATION_ICON_BADGE_NUMBER = "setApplicationIconBadgeNumber";
- public static final String CLEAR_ALL_NOTIFICATIONS = "clearAllNotifications";
- public static final String VISIBILITY = "visibility";
- public static final String INLINE_REPLY = "inlineReply";
- public static final String LOC_KEY = "locKey";
- public static final String LOC_DATA = "locData";
- public static final String TWILIO_BODY = "twi_body";
- public static final String TWILIO_TITLE = "twi_title";
- public static final String TWILIO_SOUND = "twi_sound";
- public static final String START_IN_BACKGROUND = "cdvStartInBackground";
- public static final String FORCE_START = "force-start";
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java
deleted file mode 100644
index 23682ac8..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushHandlerActivity.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.app.Activity;
-import android.app.NotificationManager;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.os.Bundle;
-import android.util.Log;
-import android.support.v4.app.RemoteInput;
-
-
-public class PushHandlerActivity extends Activity implements PushConstants {
- private static String LOG_TAG = "PushPlugin_PushHandlerActivity";
-
- /*
- * this activity will be started if the user touches a notification that we own.
- * We send it's data off to the push plugin for processing.
- * If needed, we boot up the main activity to kickstart the application.
- * @see android.app.Activity#onCreate(android.os.Bundle)
- */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- GCMIntentService gcm = new GCMIntentService();
-
- Intent intent = getIntent();
-
- int notId = intent.getExtras().getInt(NOT_ID, 0);
- Log.d(LOG_TAG, "not id = " + notId);
- gcm.setNotification(notId, "");
- super.onCreate(savedInstanceState);
- Log.v(LOG_TAG, "onCreate");
- String callback = getIntent().getExtras().getString("callback");
- Log.d(LOG_TAG, "callback = " + callback);
- boolean foreground = getIntent().getExtras().getBoolean("foreground", true);
- boolean startOnBackground = getIntent().getExtras().getBoolean(START_IN_BACKGROUND, false);
-
- if(!startOnBackground){
- NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancel(GCMIntentService.getAppName(this), notId);
- }
-
- boolean isPushPluginActive = PushPlugin.isActive();
- boolean inline = processPushBundle(isPushPluginActive, intent);
-
- if(inline && android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N){
- foreground = true;
- }
-
- Log.d(LOG_TAG, "bringToForeground = " + foreground);
-
- finish();
-
- Log.d(LOG_TAG, "isPushPluginActive = " + isPushPluginActive);
- if (!isPushPluginActive && foreground && inline) {
- Log.d(LOG_TAG, "forceMainActivityReload");
- forceMainActivityReload(false);
- } else if(startOnBackground) {
- Log.d(LOG_TAG, "startOnBackgroundTrue");
- forceMainActivityReload(true);
- } else {
- Log.d(LOG_TAG, "don't want main activity");
- }
- }
-
- /**
- * Takes the pushBundle extras from the intent,
- * and sends it through to the PushPlugin for processing.
- */
- private boolean processPushBundle(boolean isPushPluginActive, Intent intent) {
- Bundle extras = getIntent().getExtras();
- Bundle remoteInput = null;
-
- if (extras != null) {
- Bundle originalExtras = extras.getBundle(PUSH_BUNDLE);
-
- originalExtras.putBoolean(FOREGROUND, false);
- originalExtras.putBoolean(COLDSTART, !isPushPluginActive);
- originalExtras.putString(ACTION_CALLBACK, extras.getString(CALLBACK));
-
- remoteInput = RemoteInput.getResultsFromIntent(intent);
- if (remoteInput != null) {
- String inputString = remoteInput.getCharSequence(INLINE_REPLY).toString();
- Log.d(LOG_TAG, "response: " + inputString);
- originalExtras.putString(INLINE_REPLY, inputString);
- }
-
- PushPlugin.sendExtras(originalExtras);
- }
- return remoteInput == null;
- }
-
- /**
- * Forces the main activity to re-launch if it's unloaded.
- */
- private void forceMainActivityReload(boolean startOnBackground) {
- PackageManager pm = getPackageManager();
- Intent launchIntent = pm.getLaunchIntentForPackage(getApplicationContext().getPackageName());
-
- Bundle extras = getIntent().getExtras();
- if (extras != null) {
- Bundle originalExtras = extras.getBundle(PUSH_BUNDLE);
- if (originalExtras != null) {
- launchIntent.putExtras(originalExtras);
- }
- launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- launchIntent.addFlags(Intent.FLAG_FROM_BACKGROUND);
- launchIntent.putExtra(START_IN_BACKGROUND, startOnBackground);
- }
-
- startActivity(launchIntent);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- final NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancelAll();
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java
deleted file mode 100644
index eaa39a48..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushInstanceIDListenerService.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.content.Intent;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.util.Log;
-
-import com.google.android.gms.iid.InstanceID;
-import com.google.android.gms.iid.InstanceIDListenerService;
-
-import org.json.JSONException;
-
-import java.io.IOException;
-
-public class PushInstanceIDListenerService extends InstanceIDListenerService implements PushConstants {
- public static final String LOG_TAG = "PushPlugin_PushInstanceIDListenerService";
-
- @Override
- public void onTokenRefresh() {
- SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- String senderID = sharedPref.getString(SENDER_ID, "");
- if (!"".equals(senderID)) {
- Intent intent = new Intent(this, RegistrationIntentService.class);
- startService(intent);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java
deleted file mode 100644
index f6faaa2b..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/PushPlugin.java
+++ /dev/null
@@ -1,458 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.app.NotificationManager;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.google.android.gms.gcm.GcmPubSub;
-import com.google.android.gms.iid.InstanceID;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.ArrayList;
-import java.util.List;
-
-import me.leolin.shortcutbadger.ShortcutBadger;
-
-public class PushPlugin extends CordovaPlugin implements PushConstants {
-
- public static final String LOG_TAG = "PushPlugin";
-
- private static CallbackContext pushContext;
- private static CordovaWebView gWebView;
- private static List<Bundle> gCachedExtras = Collections.synchronizedList(new ArrayList<Bundle>());
- private static boolean gForeground = false;
-
- private static String registration_id = "";
-
- /**
- * Gets the application context from cordova's main activity.
- * @return the application context
- */
- private Context getApplicationContext() {
- return this.cordova.getActivity().getApplicationContext();
- }
-
- @Override
- public boolean execute(final String action, final JSONArray data, final CallbackContext callbackContext) {
- Log.v(LOG_TAG, "execute: action=" + action);
- gWebView = this.webView;
-
- if (INITIALIZE.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- pushContext = callbackContext;
- JSONObject jo = null;
-
- Log.v(LOG_TAG, "execute: data=" + data.toString());
- SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- String senderID = null;
-
- try {
- jo = data.getJSONObject(0).getJSONObject(ANDROID);
-
- Log.v(LOG_TAG, "execute: jo=" + jo.toString());
-
- senderID = jo.getString(SENDER_ID);
-
- Log.v(LOG_TAG, "execute: senderID=" + senderID);
-
- String savedSenderID = sharedPref.getString(SENDER_ID, "");
- registration_id = InstanceID.getInstance(getApplicationContext()).getToken(senderID, GCM);
-
- if (!"".equals(registration_id)) {
- JSONObject json = new JSONObject().put(REGISTRATION_ID, registration_id);
-
- Log.v(LOG_TAG, "onRegistered: " + json.toString());
-
- JSONArray topics = jo.optJSONArray(TOPICS);
- subscribeToTopics(topics, registration_id);
-
- PushPlugin.sendEvent( json );
- } else {
- callbackContext.error("Empty registration ID received from GCM");
- return;
- }
- } catch (JSONException e) {
- Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage());
- callbackContext.error(e.getMessage());
- } catch (IOException e) {
- Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage());
- callbackContext.error(e.getMessage());
- }
-
- if (jo != null) {
- SharedPreferences.Editor editor = sharedPref.edit();
- try {
- editor.putString(ICON, jo.getString(ICON));
- } catch (JSONException e) {
- Log.d(LOG_TAG, "no icon option");
- }
- try {
- editor.putString(ICON_COLOR, jo.getString(ICON_COLOR));
- } catch (JSONException e) {
- Log.d(LOG_TAG, "no iconColor option");
- }
-
- boolean clearBadge = jo.optBoolean(CLEAR_BADGE, false);
- if (clearBadge) {
- setApplicationIconBadgeNumber(getApplicationContext(), 0);
- }
-
- editor.putBoolean(SOUND, jo.optBoolean(SOUND, true));
- editor.putBoolean(VIBRATE, jo.optBoolean(VIBRATE, true));
- editor.putBoolean(CLEAR_BADGE, clearBadge);
- editor.putBoolean(CLEAR_NOTIFICATIONS, jo.optBoolean(CLEAR_NOTIFICATIONS, true));
- editor.putBoolean(FORCE_SHOW, jo.optBoolean(FORCE_SHOW, false));
- editor.putString(SENDER_ID, senderID);
- editor.commit();
-
- }
-
- if (!gCachedExtras.isEmpty()) {
- Log.v(LOG_TAG, "sending cached extras");
- synchronized(gCachedExtras) {
- Iterator<Bundle> gCachedExtrasIterator = gCachedExtras.iterator();
- while (gCachedExtrasIterator.hasNext()) {
- sendExtras(gCachedExtrasIterator.next());
- }
- }
- gCachedExtras.clear();
- }
- }
- });
- } else if (UNREGISTER.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- try {
- SharedPreferences sharedPref = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- JSONArray topics = data.optJSONArray(0);
- if (topics != null && !"".equals(registration_id)) {
- unsubscribeFromTopics(topics, registration_id);
- } else {
- InstanceID.getInstance(getApplicationContext()).deleteInstanceID();
- Log.v(LOG_TAG, "UNREGISTER");
-
- // Remove shared prefs
- SharedPreferences.Editor editor = sharedPref.edit();
- editor.remove(SOUND);
- editor.remove(VIBRATE);
- editor.remove(CLEAR_BADGE);
- editor.remove(CLEAR_NOTIFICATIONS);
- editor.remove(FORCE_SHOW);
- editor.remove(SENDER_ID);
- editor.commit();
- }
-
- callbackContext.success();
- } catch (IOException e) {
- Log.e(LOG_TAG, "execute: Got JSON Exception " + e.getMessage());
- callbackContext.error(e.getMessage());
- }
- }
- });
- } else if (FINISH.equals(action)) {
- callbackContext.success();
- } else if (HAS_PERMISSION.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- JSONObject jo = new JSONObject();
- try {
- jo.put("isEnabled", PermissionUtils.hasPermission(getApplicationContext(), "OP_POST_NOTIFICATION"));
- PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, jo);
- pluginResult.setKeepCallback(true);
- callbackContext.sendPluginResult(pluginResult);
- } catch (UnknownError e) {
- callbackContext.error(e.getMessage());
- } catch (JSONException e) {
- callbackContext.error(e.getMessage());
- }
- }
- });
- } else if (SET_APPLICATION_ICON_BADGE_NUMBER.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- Log.v(LOG_TAG, "setApplicationIconBadgeNumber: data=" + data.toString());
- try {
- setApplicationIconBadgeNumber(getApplicationContext(), data.getJSONObject(0).getInt(BADGE));
- } catch (JSONException e) {
- callbackContext.error(e.getMessage());
- }
- callbackContext.success();
- }
- });
- } else if (CLEAR_ALL_NOTIFICATIONS.equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- Log.v(LOG_TAG, "clearAllNotifications");
- clearAllNotifications();
- callbackContext.success();
- }
- });
- } else if (SUBSCRIBE.equals(action)){
- // Subscribing for a topic
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- try {
- String topic = data.getString(0);
- subscribeToTopic(topic, registration_id);
- callbackContext.success();
- } catch (JSONException e) {
- callbackContext.error(e.getMessage());
- } catch (IOException e) {
- callbackContext.error(e.getMessage());
- }
- }
- });
- } else if (UNSUBSCRIBE.equals(action)){
- // un-subscribing for a topic
- cordova.getThreadPool().execute(new Runnable(){
- public void run() {
- try {
- String topic = data.getString(0);
- unsubscribeFromTopic(topic, registration_id);
- callbackContext.success();
- } catch (JSONException e) {
- callbackContext.error(e.getMessage());
- } catch (IOException e) {
- callbackContext.error(e.getMessage());
- }
- }
- });
- } else {
- Log.e(LOG_TAG, "Invalid action : " + action);
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.INVALID_ACTION));
- return false;
- }
-
- return true;
- }
-
- public static void sendEvent(JSONObject _json) {
- PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, _json);
- pluginResult.setKeepCallback(true);
- if (pushContext != null) {
- pushContext.sendPluginResult(pluginResult);
- }
- }
-
- public static void sendError(String message) {
- PluginResult pluginResult = new PluginResult(PluginResult.Status.ERROR, message);
- pluginResult.setKeepCallback(true);
- if (pushContext != null) {
- pushContext.sendPluginResult(pluginResult);
- }
- }
-
- /*
- * Sends the pushbundle extras to the client application.
- * If the client application isn't currently active, it is cached for later processing.
- */
- public static void sendExtras(Bundle extras) {
- if (extras != null) {
- if (gWebView != null) {
- sendEvent(convertBundleToJson(extras));
- } else {
- Log.v(LOG_TAG, "sendExtras: caching extras to send at a later time.");
- gCachedExtras.add(extras);
- }
- }
- }
-
- public static void setApplicationIconBadgeNumber(Context context, int badgeCount) {
- if (badgeCount > 0) {
- ShortcutBadger.applyCount(context, badgeCount);
- } else {
- ShortcutBadger.removeCount(context);
- }
- }
-
- @Override
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- super.initialize(cordova, webView);
- gForeground = true;
- }
-
- @Override
- public void onPause(boolean multitasking) {
- super.onPause(multitasking);
- gForeground = false;
-
- SharedPreferences prefs = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
- if (prefs.getBoolean(CLEAR_NOTIFICATIONS, true)) {
- clearAllNotifications();
- }
- }
-
- @Override
- public void onResume(boolean multitasking) {
- super.onResume(multitasking);
- gForeground = true;
- }
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- gForeground = false;
- gWebView = null;
- }
-
- private void clearAllNotifications() {
- final NotificationManager notificationManager = (NotificationManager) cordova.getActivity().getSystemService(Context.NOTIFICATION_SERVICE);
- notificationManager.cancelAll();
- }
-
- /**
- * Transform `topic name` to `topic path`
- * Normally, the `topic` inputed from end-user is `topic name` only.
- * We should convert them to GCM `topic path`
- * Example:
- * when topic name = 'my-topic'
- * then topic path = '/topics/my-topic'
- *
- * @param String topic The topic name
- * @return The topic path
- */
- private String getTopicPath(String topic)
- {
- return "/topics/" + topic;
- }
-
- private void subscribeToTopics(JSONArray topics, String registrationToken) throws IOException {
- if (topics != null) {
- String topic = null;
- for (int i=0; i<topics.length(); i++) {
- topic = topics.optString(i, null);
- subscribeToTopic(topic, registrationToken);
- }
- }
- }
-
- private void subscribeToTopic(String topic, String registrationToken) throws IOException
- {
- try {
- if (topic != null) {
- Log.d(LOG_TAG, "Subscribing to topic: " + topic);
- GcmPubSub.getInstance(getApplicationContext()).subscribe(registrationToken, getTopicPath(topic), null);
- }
- } catch (IOException e) {
- Log.e(LOG_TAG, "Failed to subscribe to topic: " + topic, e);
- throw e;
- }
- }
-
- private void unsubscribeFromTopics(JSONArray topics, String registrationToken) {
- if (topics != null) {
- String topic = null;
- for (int i=0; i<topics.length(); i++) {
- try {
- topic = topics.optString(i, null);
- if (topic != null) {
- Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
- GcmPubSub.getInstance(getApplicationContext()).unsubscribe(registrationToken, getTopicPath(topic));
- }
- } catch (IOException e) {
- Log.e(LOG_TAG, "Failed to unsubscribe to topic: " + topic, e);
- }
- }
- }
- }
-
- private void unsubscribeFromTopic(String topic, String registrationToken) throws IOException
- {
- try {
- if (topic != null) {
- Log.d(LOG_TAG, "Unsubscribing to topic: " + topic);
- GcmPubSub.getInstance(getApplicationContext()).unsubscribe(registrationToken, getTopicPath(topic));
- }
- } catch (IOException e) {
- Log.e(LOG_TAG, "Failed to unsubscribe to topic: " + topic, e);
- throw e;
- }
- }
-
- /*
- * serializes a bundle to JSON.
- */
- private static JSONObject convertBundleToJson(Bundle extras) {
- Log.d(LOG_TAG, "convert extras to json");
- try {
- JSONObject json = new JSONObject();
- JSONObject additionalData = new JSONObject();
-
- // Add any keys that need to be in top level json to this set
- HashSet<String> jsonKeySet = new HashSet();
- Collections.addAll(jsonKeySet, TITLE,MESSAGE,COUNT,SOUND,IMAGE);
-
- Iterator<String> it = extras.keySet().iterator();
- while (it.hasNext()) {
- String key = it.next();
- Object value = extras.get(key);
-
- Log.d(LOG_TAG, "key = " + key);
-
- if (jsonKeySet.contains(key)) {
- json.put(key, value);
- }
- else if (key.equals(COLDSTART)) {
- additionalData.put(key, extras.getBoolean(COLDSTART));
- }
- else if (key.equals(FOREGROUND)) {
- additionalData.put(key, extras.getBoolean(FOREGROUND));
- }
- else if ( value instanceof String ) {
- String strValue = (String)value;
- try {
- // Try to figure out if the value is another JSON object
- if (strValue.startsWith("{")) {
- additionalData.put(key, new JSONObject(strValue));
- }
- // Try to figure out if the value is another JSON array
- else if (strValue.startsWith("[")) {
- additionalData.put(key, new JSONArray(strValue));
- }
- else {
- additionalData.put(key, value);
- }
- } catch (Exception e) {
- additionalData.put(key, value);
- }
- }
- } // while
-
- json.put(ADDITIONAL_DATA, additionalData);
- Log.v(LOG_TAG, "extrasToJSON: " + json.toString());
-
- return json;
- }
- catch( JSONException e) {
- Log.e(LOG_TAG, "extrasToJSON: JSON exception");
- }
- return null;
- }
-
- public static boolean isInForeground() {
- return gForeground;
- }
-
- public static boolean isActive() {
- return gWebView != null;
- }
-
- protected static void setRegistrationID(String token) {
- registration_id = token;
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java b/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java
deleted file mode 100644
index b181e88e..00000000
--- a/StoneIsland/platforms/android/src/com/adobe/phonegap/push/RegistrationIntentService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.adobe.phonegap.push;
-
-import android.content.Context;
-
-import android.app.IntentService;
-import android.content.Intent;
-import android.content.SharedPreferences;
-import android.util.Log;
-
-import com.google.android.gms.gcm.GoogleCloudMessaging;
-import com.google.android.gms.iid.InstanceID;
-
-import java.io.IOException;
-
-public class RegistrationIntentService extends IntentService implements PushConstants {
- public static final String LOG_TAG = "PushPlugin_RegistrationIntentService";
-
- public RegistrationIntentService() {
- super(LOG_TAG);
- }
-
- @Override
- protected void onHandleIntent(Intent intent) {
- SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE);
-
- try {
- InstanceID instanceID = InstanceID.getInstance(this);
- String senderID = sharedPreferences.getString(SENDER_ID, "");
- String token = instanceID.getToken(senderID,
- GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
- PushPlugin.setRegistrationID(token);
- Log.i(LOG_TAG, "new GCM Registration Token: " + token);
-
- } catch (Exception e) {
- Log.d(LOG_TAG, "Failed to complete token refresh", e);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java
deleted file mode 100644
index df3542f7..00000000
--- a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java
+++ /dev/null
@@ -1,264 +0,0 @@
-// MCC and MNC codes on Wikipedia
-// http://en.wikipedia.org/wiki/Mobile_country_code
-
-// Mobile Network Codes (MNC) for the international identification plan for public networks and subscriptions
-// http://www.itu.int/pub/T-SP-E.212B-2014
-
-// class TelephonyManager
-// http://developer.android.com/reference/android/telephony/TelephonyManager.html
-// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/TelephonyManager.java
-
-// permissions
-// http://developer.android.com/training/permissions/requesting.html
-
-// Multiple SIM Card Support
-// https://developer.android.com/about/versions/android-5.1.html
-
-// class SubscriptionManager
-// https://developer.android.com/reference/android/telephony/SubscriptionManager.html
-// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionManager.java
-
-// class SubscriptionInfo
-// https://developer.android.com/reference/android/telephony/SubscriptionInfo.html
-// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionInfo.java
-
-// Cordova Permissions API
-// https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html#android-permissions
-
-package com.pbakondy;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
-import org.apache.cordova.LOG;
-
-import org.json.JSONObject;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.os.Build;
-import android.Manifest;
-
-import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
-
-import java.util.List;
-
-public class Sim extends CordovaPlugin {
- private static final String LOG_TAG = "CordovaPluginSim";
-
-
- private static final String GET_SIM_INFO = "getSimInfo";
- private static final String HAS_READ_PERMISSION = "hasReadPermission";
- private static final String REQUEST_READ_PERMISSION = "requestReadPermission";
-
- private CallbackContext callback;
-
- @SuppressLint("HardwareIds")
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- callback = callbackContext;
-
- if (GET_SIM_INFO.equals(action)) {
- Context context = this.cordova.getActivity().getApplicationContext();
-
- TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-
- // dual SIM detection with SubscriptionManager API
- // requires API 22
- // requires permission READ_PHONE_STATE
- JSONArray sims = null;
- Integer phoneCount = null;
- Integer activeSubscriptionInfoCount = null;
- Integer activeSubscriptionInfoCountMax = null;
-
- try {
- // TelephonyManager.getPhoneCount() requires API 23
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
- phoneCount = manager.getPhoneCount();
- }
-
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
-
- if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
-
- SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
- activeSubscriptionInfoCount = subscriptionManager.getActiveSubscriptionInfoCount();
- activeSubscriptionInfoCountMax = subscriptionManager.getActiveSubscriptionInfoCountMax();
-
- sims = new JSONArray();
-
- List<SubscriptionInfo> subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList();
- for (SubscriptionInfo subscriptionInfo : subscriptionInfos) {
-
- CharSequence carrierName = subscriptionInfo.getCarrierName();
- String countryIso = subscriptionInfo.getCountryIso();
- int dataRoaming = subscriptionInfo.getDataRoaming(); // 1 is enabled ; 0 is disabled
- CharSequence displayName = subscriptionInfo.getDisplayName();
- String iccId = subscriptionInfo.getIccId();
- int mcc = subscriptionInfo.getMcc();
- int mnc = subscriptionInfo.getMnc();
- String number = subscriptionInfo.getNumber();
- int simSlotIndex = subscriptionInfo.getSimSlotIndex();
- int subscriptionId = subscriptionInfo.getSubscriptionId();
-
- boolean networkRoaming = subscriptionManager.isNetworkRoaming(simSlotIndex);
-
- String deviceId = null;
- // TelephonyManager.getDeviceId(slotId) requires API 23
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
- deviceId = manager.getDeviceId(simSlotIndex);
- }
-
- JSONObject simData = new JSONObject();
-
- simData.put("carrierName", carrierName.toString());
- simData.put("displayName", displayName.toString());
- simData.put("countryCode", countryIso);
- simData.put("mcc", mcc);
- simData.put("mnc", mnc);
- simData.put("isNetworkRoaming", networkRoaming);
- simData.put("isDataRoaming", (dataRoaming == 1));
- simData.put("simSlotIndex", simSlotIndex);
- simData.put("phoneNumber", number);
- if (deviceId != null) {
- simData.put("deviceId", deviceId);
- }
- simData.put("simSerialNumber", iccId);
- simData.put("subscriptionId", subscriptionId);
-
- sims.put(simData);
-
- }
- }
- }
- } catch (JSONException e) {
- e.printStackTrace();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- String phoneNumber = null;
- String countryCode = manager.getSimCountryIso();
- String simOperator = manager.getSimOperator();
- String carrierName = manager.getSimOperatorName();
-
- String deviceId = null;
- String deviceSoftwareVersion = null;
- String simSerialNumber = null;
- String subscriberId = null;
-
- int callState = manager.getCallState();
- int dataActivity = manager.getDataActivity();
- int networkType = manager.getNetworkType();
- int phoneType = manager.getPhoneType();
- int simState = manager.getSimState();
-
- boolean isNetworkRoaming = manager.isNetworkRoaming();
-
- if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
- phoneNumber = manager.getLine1Number();
- deviceId = manager.getDeviceId();
- deviceSoftwareVersion = manager.getDeviceSoftwareVersion();
- simSerialNumber = manager.getSimSerialNumber();
- subscriberId = manager.getSubscriberId();
- }
-
- String mcc = "";
- String mnc = "";
-
- if (simOperator.length() >= 3) {
- mcc = simOperator.substring(0, 3);
- mnc = simOperator.substring(3);
- }
-
- JSONObject result = new JSONObject();
-
- result.put("carrierName", carrierName);
- result.put("countryCode", countryCode);
- result.put("mcc", mcc);
- result.put("mnc", mnc);
-
- result.put("callState", callState);
- result.put("dataActivity", dataActivity);
- result.put("networkType", networkType);
- result.put("phoneType", phoneType);
- result.put("simState", simState);
-
- result.put("isNetworkRoaming", isNetworkRoaming);
-
- if (phoneCount != null) {
- result.put("phoneCount", (int)phoneCount);
- }
- if (activeSubscriptionInfoCount != null) {
- result.put("activeSubscriptionInfoCount", (int)activeSubscriptionInfoCount);
- }
- if (activeSubscriptionInfoCountMax != null) {
- result.put("activeSubscriptionInfoCountMax", (int)activeSubscriptionInfoCountMax);
- }
-
- if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
- result.put("phoneNumber", phoneNumber);
- result.put("deviceId", deviceId);
- result.put("deviceSoftwareVersion", deviceSoftwareVersion);
- result.put("simSerialNumber", simSerialNumber);
- result.put("subscriberId", subscriberId);
- }
-
- if (sims != null && sims.length() != 0) {
- result.put("cards", sims);
- }
-
- callbackContext.success(result);
-
- return true;
- } else if (HAS_READ_PERMISSION.equals(action)) {
- hasReadPermission();
- return true;
- } else if (REQUEST_READ_PERMISSION.equals(action)) {
- requestReadPermission();
- return true;
- } else {
- return false;
- }
- }
-
- private void hasReadPermission() {
- this.callback.sendPluginResult(new PluginResult(PluginResult.Status.OK,
- simPermissionGranted(Manifest.permission.READ_PHONE_STATE)));
- }
-
- private void requestReadPermission() {
- requestPermission(Manifest.permission.READ_PHONE_STATE);
- }
-
- private boolean simPermissionGranted(String type) {
- if (Build.VERSION.SDK_INT < 23) {
- return true;
- }
- return cordova.hasPermission(type);
- }
-
- private void requestPermission(String type) {
- LOG.i(LOG_TAG, "requestPermission");
- if (!simPermissionGranted(type)) {
- cordova.requestPermission(this, 12345, type);
- } else {
- this.callback.success();
- }
- }
-
- @Override
- public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException
- {
- if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- this.callback.success();
- } else {
- this.callback.error("Permission denied");
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/AbstractMobileAccessibilityHelper.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/AbstractMobileAccessibilityHelper.java
deleted file mode 100644
index d76a951f..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/AbstractMobileAccessibilityHelper.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import android.view.ViewParent;
-
-abstract class AbstractMobileAccessibilityHelper {
- MobileAccessibility mMobileAccessibility;
- ViewParent mParent;
- public abstract void initialize(MobileAccessibility mobileAccessibility);
- public abstract boolean isClosedCaptioningEnabled();
- public abstract boolean isScreenReaderRunning();
- public abstract boolean isTouchExplorationEnabled();
- public abstract void onAccessibilityStateChanged(boolean enabled);
- public abstract void onCaptioningEnabledChanged(boolean enabled);
- public abstract void onTouchExplorationStateChanged(boolean enabled);
- public abstract void addStateChangeListeners();
- public abstract void removeStateChangeListeners();
- public abstract void announceForAccessibility(CharSequence text);
- public abstract double getTextZoom();
- public abstract void setTextZoom(double textZoom);
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/DonutMobileAccessibilityHelper.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/DonutMobileAccessibilityHelper.java
deleted file mode 100644
index e6972719..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/DonutMobileAccessibilityHelper.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.os.Build;
-import android.view.accessibility.AccessibilityEvent;
-import android.view.accessibility.AccessibilityManager;
-import android.view.View;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-
-import java.lang.IllegalAccessException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-@TargetApi(Build.VERSION_CODES.DONUT)
-public class DonutMobileAccessibilityHelper extends
- AbstractMobileAccessibilityHelper {
- AccessibilityManager mAccessibilityManager;
- View mView;
-
- @Override
- public void initialize(MobileAccessibility mobileAccessibility) {
- mMobileAccessibility = mobileAccessibility;
- WebView view;
- try {
- view = (WebView) mobileAccessibility.webView;
- mView = view;
- } catch(ClassCastException ce) { // cordova-android 4.0+
- try {
- Method getView = mobileAccessibility.webView.getClass().getMethod("getView");
- mView = (View) getView.invoke(mobileAccessibility.webView);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
-
- mAccessibilityManager = (AccessibilityManager) mMobileAccessibility.cordova.getActivity().getSystemService(Context.ACCESSIBILITY_SERVICE);
- }
-
- @Override
- public boolean isClosedCaptioningEnabled() {
- return false;
- }
-
- @Override
- public boolean isScreenReaderRunning() {
- return mAccessibilityManager.isEnabled();
- }
-
- @Override
- public boolean isTouchExplorationEnabled() {
- return false;
- }
-
- @Override
- public void onAccessibilityStateChanged(boolean enabled) {
- mMobileAccessibility.onAccessibilityStateChanged(enabled);
- }
-
- @Override
- public void onCaptioningEnabledChanged(boolean enabled) {
- mMobileAccessibility.onCaptioningEnabledChanged(enabled);
- }
-
- @Override
- public void onTouchExplorationStateChanged(boolean enabled) {
- mMobileAccessibility.onTouchExplorationStateChanged(enabled);
- }
-
- @Override
- public void addStateChangeListeners() {
- }
-
- @Override
- public void removeStateChangeListeners() {
- }
-
- @Override
- public void announceForAccessibility(CharSequence text) {
- if (!mAccessibilityManager.isEnabled()) {
- return;
- }
-
- final int eventType = AccessibilityEvent.TYPE_VIEW_FOCUSED;
- final AccessibilityEvent event = AccessibilityEvent.obtain(eventType);
- event.getText().add(text);
- event.setEnabled(mView.isEnabled());
- event.setClassName(mView.getClass().getName());
- event.setPackageName(mView.getContext().getPackageName());
- event.setContentDescription(null);
-
- mAccessibilityManager.sendAccessibilityEvent(event);
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public double getTextZoom() {
- double zoom = 100;
- WebSettings.TextSize wTextSize = WebSettings.TextSize.NORMAL;
-
- try {
- Method getSettings = mView.getClass().getMethod("getSettings");
- Object wSettings = getSettings.invoke(mView);
- Method getTextSize = wSettings.getClass().getMethod("getTextSize");
- wTextSize = (WebSettings.TextSize) getTextSize.invoke(wSettings);
- } catch(ClassCastException ce) {
- ce.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
-
- switch (wTextSize) {
- case LARGEST:
- zoom = 200;
- break;
- case LARGER:
- zoom = 150;
- break;
- case SMALLER:
- zoom = 75;
- break;
- case SMALLEST:
- zoom = 50;
- break;
- }
-
- return zoom;
- }
-
- @SuppressWarnings("deprecation")
- @Override
- public void setTextZoom(double textZoom) {
- WebSettings.TextSize wTextSize = WebSettings.TextSize.SMALLEST;
- if (textZoom > 115) {
- wTextSize = WebSettings.TextSize.LARGEST;
- } else if (textZoom > 100) {
- wTextSize = WebSettings.TextSize.LARGER;
- } else if (textZoom == 100) {
- wTextSize = WebSettings.TextSize.NORMAL;
- } else if (textZoom > 50) {
- wTextSize = WebSettings.TextSize.SMALLER;
- }
- //Log.i("MobileAccessibility", "fontScale = " + zoom + ", WebSettings.TextSize = " + wTextSize.toString());
- try {
- Method getSettings = mView.getClass().getMethod("getSettings");
- Object wSettings = getSettings.invoke(mView);
- Method setTextSize = wSettings.getClass().getMethod("setTextSize", WebSettings.TextSize.class);
- setTextSize.invoke(wSettings, wTextSize);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/IceCreamSandwichMobileAccessibilityHelper.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/IceCreamSandwichMobileAccessibilityHelper.java
deleted file mode 100644
index f0cd252e..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/IceCreamSandwichMobileAccessibilityHelper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import android.accessibilityservice.AccessibilityServiceInfo;
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener;
-
-import java.lang.IllegalAccessException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
-public class IceCreamSandwichMobileAccessibilityHelper extends
- DonutMobileAccessibilityHelper {
- private AccessibilityStateChangeListener mAccessibilityStateChangeListener;
-
- @Override
- public boolean isScreenReaderRunning() {
- return mAccessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_SPOKEN).size() > 0;
- }
-
- @Override
- public void addStateChangeListeners() {
- if (mAccessibilityStateChangeListener == null) {
- mAccessibilityStateChangeListener = new InternalAccessibilityStateChangeListener();
- }
- mAccessibilityManager.addAccessibilityStateChangeListener(mAccessibilityStateChangeListener);
- }
-
- @Override
- public void removeStateChangeListeners() {
- mAccessibilityManager.removeAccessibilityStateChangeListener(mAccessibilityStateChangeListener);
- mAccessibilityStateChangeListener = null;
- }
-
- @Override
- public double getTextZoom() {
- double zoom = 100;
- try {
- Method getSettings = mView.getClass().getMethod("getSettings");
- Object wSettings = getSettings.invoke(mView);
- Method getTextZoom = wSettings.getClass().getMethod("getTextZoom");
- zoom = Double.valueOf(getTextZoom.invoke(wSettings).toString());
- } catch (ClassCastException ce) {
- ce.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return zoom;
- }
-
- @Override
- public void setTextZoom(double textZoom) {
- //Log.i("MobileAccessibility", "setTextZoom(" + zoom + ")");
- try {
- Method getSettings = mView.getClass().getMethod("getSettings");
- Object wSettings = getSettings.invoke(mView);
- Method setTextZoom = wSettings.getClass().getMethod("setTextZoom", Integer.TYPE);
- setTextZoom.invoke(wSettings, (int) textZoom);
- } catch (ClassCastException ce) {
- ce.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
-
- private class InternalAccessibilityStateChangeListener
- implements AccessibilityStateChangeListener {
-
- @Override
- public void onAccessibilityStateChanged(boolean enabled) {
- mMobileAccessibility.onAccessibilityStateChanged(enabled);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/JellyBeanMobileAccessibilityHelper.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/JellyBeanMobileAccessibilityHelper.java
deleted file mode 100644
index 7c97d247..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/JellyBeanMobileAccessibilityHelper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import com.phonegap.plugin.mobileaccessibility.MobileAccessibility;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.view.accessibility.AccessibilityEvent;
-
-@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
-public class JellyBeanMobileAccessibilityHelper extends
- IceCreamSandwichMobileAccessibilityHelper {
-
- @Override
- public void initialize(MobileAccessibility mobileAccessibility) {
- super.initialize(mobileAccessibility);
- mParent = mView.getParentForAccessibility();
- }
-
- @Override
- public void announceForAccessibility(CharSequence text) {
- if (mAccessibilityManager.isEnabled() && mParent != null) {
- mAccessibilityManager.interrupt();
- AccessibilityEvent event = AccessibilityEvent.obtain(
- AccessibilityEvent.TYPE_ANNOUNCEMENT);
- mView.onInitializeAccessibilityEvent(event);
- event.getText().add(text);
- event.setContentDescription(null);
- mParent.requestSendAccessibilityEvent(mView, event);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/KitKatMobileAccessibilityHelper.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/KitKatMobileAccessibilityHelper.java
deleted file mode 100644
index 11d342cb..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/KitKatMobileAccessibilityHelper.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import android.accessibilityservice.AccessibilityServiceInfo;
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener;
-import android.view.accessibility.CaptioningManager;
-import android.view.accessibility.CaptioningManager.CaptioningChangeListener;
-
-@TargetApi(19)
-public class KitKatMobileAccessibilityHelper extends
- JellyBeanMobileAccessibilityHelper {
- private CaptioningManager mCaptioningManager;
- private CaptioningChangeListener mCaptioningChangeListener;
- private TouchExplorationStateChangeListener mTouchExplorationStateChangeListener;
-
- @Override
- public void initialize(MobileAccessibility mobileAccessibility) {
- super.initialize(mobileAccessibility);
- mCaptioningManager = (CaptioningManager) mobileAccessibility.cordova.getActivity().getSystemService(Context.CAPTIONING_SERVICE);
- }
-
- @Override
- public boolean isScreenReaderRunning() {
- return mAccessibilityManager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_BRAILLE | AccessibilityServiceInfo.FEEDBACK_SPOKEN).size() > 0;
- }
-
- @Override
- public boolean isClosedCaptioningEnabled() {
- return mCaptioningManager.isEnabled();
- }
-
- @Override
- public boolean isTouchExplorationEnabled() {
- return mAccessibilityManager.isTouchExplorationEnabled();
- }
-
- @Override
- public void addStateChangeListeners() {
- super.addStateChangeListeners();
- if (mCaptioningChangeListener == null) {
- mCaptioningChangeListener = new CaptioningChangeListener() {
- @Override
- public void onEnabledChanged(boolean enabled) {
- onCaptioningEnabledChanged(enabled);
- }
- };
- }
- mCaptioningManager.addCaptioningChangeListener(mCaptioningChangeListener);
-
- if (mTouchExplorationStateChangeListener == null) {
- mTouchExplorationStateChangeListener = new InternalTouchExplorationStateChangeListener();
- }
- mAccessibilityManager.addTouchExplorationStateChangeListener(mTouchExplorationStateChangeListener);
- }
-
- @Override
- public void removeStateChangeListeners() {
- super.removeStateChangeListeners();
- if (mCaptioningChangeListener != null) {
- mCaptioningManager.removeCaptioningChangeListener(mCaptioningChangeListener);
- mCaptioningChangeListener = null;
- }
- if (mTouchExplorationStateChangeListener != null) {
- mAccessibilityManager.removeTouchExplorationStateChangeListener(mTouchExplorationStateChangeListener);
- mTouchExplorationStateChangeListener = null;
- }
- }
-
- private class InternalTouchExplorationStateChangeListener
- implements TouchExplorationStateChangeListener {
-
- @Override
- public void onTouchExplorationStateChanged(boolean enabled) {
- mMobileAccessibility.onTouchExplorationStateChanged(enabled);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/MobileAccessibility.java b/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/MobileAccessibility.java
deleted file mode 100644
index a979420e..00000000
--- a/StoneIsland/platforms/android/src/com/phonegap/plugin/mobileaccessibility/MobileAccessibility.java
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES 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.phonegap.plugin.mobileaccessibility;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.os.Build;
-import android.webkit.WebView;
-
-import java.lang.IllegalAccessException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * This class provides information on the status of native accessibility services to JavaScript.
- */
-public class MobileAccessibility extends CordovaPlugin {
- private AbstractMobileAccessibilityHelper mMobileAccessibilityHelper;
- private CallbackContext mCallbackContext = null;
- private boolean mIsScreenReaderRunning = false;
- private boolean mClosedCaptioningEnabled = false;
- private boolean mTouchExplorationEnabled = false;
- private boolean mCachedIsScreenReaderRunning = false;
- private float mFontScale = 1;
-
- @Override
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- super.initialize(cordova, webView);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- mMobileAccessibilityHelper = new KitKatMobileAccessibilityHelper();
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
- mMobileAccessibilityHelper = new JellyBeanMobileAccessibilityHelper();
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- mMobileAccessibilityHelper = new IceCreamSandwichMobileAccessibilityHelper();
- } else {
- mMobileAccessibilityHelper = new DonutMobileAccessibilityHelper();
- }
- mMobileAccessibilityHelper.initialize(this);
- }
-
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- try {
- if (action.equals("isScreenReaderRunning")) {
- isScreenReaderRunning(callbackContext);
- return true;
- } else if (action.equals("isClosedCaptioningEnabled")) {
- isClosedCaptioningEnabled(callbackContext);
- return true;
- } else if (action.equals("isTouchExplorationEnabled")) {
- isTouchExplorationEnabled(callbackContext);
- return true;
- } else if (action.equals("postNotification")) {
- if (args.length() > 1) {
- String string = args.getString(1);
- if (!string.isEmpty()) {
- announceForAccessibility(string, callbackContext);
- }
- }
- return true;
- } else if(action.equals("getTextZoom")) {
- getTextZoom(callbackContext);
- return true;
- } else if(action.equals("setTextZoom")) {
- if (args.length() > 0) {
- double textZoom = args.getDouble(0);
- if (textZoom > 0) {
- setTextZoom(textZoom, callbackContext);
- }
- }
- return true;
- } else if(action.equals("updateTextZoom")) {
- updateTextZoom(callbackContext);
- return true;
- } else if (action.equals("start")) {
- start(callbackContext);
- return true;
- } else if (action.equals("stop")) {
- stop();
- return true;
- }
- } catch (JSONException e) {
- e.printStackTrace();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
- }
- return false;
- }
-
- /**
- * Called when the system is about to pause the current activity
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- @Override
- public void onPause(boolean multitasking) {
- //Log.i("MobileAccessibility", "onPause");
- mCachedIsScreenReaderRunning = mIsScreenReaderRunning;
- }
-
- /**
- * Called when the activity will start interacting with the user.
- *
- * @param multitasking Flag indicating if multitasking is turned on for app
- */
- @Override
- public void onResume(boolean multitasking) {
- //Log.i("MobileAccessibility", "onResume");
- if (mIsScreenReaderRunning && !mCachedIsScreenReaderRunning) {
- //Log.i("MobileAccessibility", "Reloading page on reload because the Accessibility State has changed.");
- mCachedIsScreenReaderRunning = mIsScreenReaderRunning;
- stop();
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- WebView view;
- try {
- view = (WebView) webView;
- view.reload();
- } catch(ClassCastException ce) { // cordova-android 4.0+
- try { // cordova-android 4.0+
- Method getView = webView.getClass().getMethod("getView");
- Method reload = getView.invoke(webView).getClass().getMethod("reload");
- reload.invoke(webView);
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- });
- }
- }
-
- /**
- * The final call you receive before your activity is destroyed.
- */
- public void onDestroy() {
- stop();
- }
-
- private void isScreenReaderRunning(final CallbackContext callbackContext) {
- mIsScreenReaderRunning = mMobileAccessibilityHelper.isScreenReaderRunning();
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- callbackContext.success(mIsScreenReaderRunning ? 1 : 0);
- }
- });
- }
-
- protected boolean isScreenReaderRunning() {
- mIsScreenReaderRunning = mMobileAccessibilityHelper.isScreenReaderRunning();
- return mIsScreenReaderRunning;
- }
-
- private void isClosedCaptioningEnabled(final CallbackContext callbackContext) {
- mClosedCaptioningEnabled = mMobileAccessibilityHelper.isClosedCaptioningEnabled();
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- callbackContext.success(mClosedCaptioningEnabled ? 1 : 0);
- }
- });
- }
-
- protected boolean isClosedCaptioningEnabled() {
- mClosedCaptioningEnabled = mMobileAccessibilityHelper.isClosedCaptioningEnabled();
- return mClosedCaptioningEnabled;
- }
-
- private void isTouchExplorationEnabled(final CallbackContext callbackContext) {
- mTouchExplorationEnabled= mMobileAccessibilityHelper.isTouchExplorationEnabled();
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- callbackContext.success(mTouchExplorationEnabled ? 1 : 0);
- }
- });
- }
-
- protected boolean isTouchExplorationEnabled() {
- mTouchExplorationEnabled = mMobileAccessibilityHelper.isTouchExplorationEnabled();
- return mTouchExplorationEnabled;
- }
-
- private void announceForAccessibility(CharSequence text, final CallbackContext callbackContext) {
- mMobileAccessibilityHelper.announceForAccessibility(text);
- if (callbackContext != null) {
- JSONObject info = new JSONObject();
- try {
- info.put("stringValue", text);
- info.put("wasSuccessful", mIsScreenReaderRunning);
- } catch (JSONException e) {
- e.printStackTrace();
- }
- callbackContext.success(info);
- }
- }
-
- public void onAccessibilityStateChanged(boolean enabled) {
- mIsScreenReaderRunning = enabled;
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- sendMobileAccessibilityStatusChangedCallback();
- }
- });
- }
-
- public void onCaptioningEnabledChanged(boolean enabled) {
- mClosedCaptioningEnabled = enabled;
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- sendMobileAccessibilityStatusChangedCallback();
- }
- });
- }
-
- public void onTouchExplorationStateChanged(boolean enabled) {
- mTouchExplorationEnabled = enabled;
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- sendMobileAccessibilityStatusChangedCallback();
- }
- });
- }
-
- private void getTextZoom(final CallbackContext callbackContext) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- final double textZoom = mMobileAccessibilityHelper.getTextZoom();
- if (callbackContext != null) {
- callbackContext.success((int) textZoom);
- }
- }
- });
- }
-
- private void setTextZoom(final double textZoom, final CallbackContext callbackContext) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- mMobileAccessibilityHelper.setTextZoom(textZoom);
- if (callbackContext != null) {
- callbackContext.success((int) mMobileAccessibilityHelper.getTextZoom());
- }
- }
- });
- }
-
- public void setTextZoom(final double textZoom) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- mMobileAccessibilityHelper.setTextZoom(textZoom);
- }
- });
- }
-
- private void updateTextZoom(final CallbackContext callbackContext) {
- float fontScale = cordova.getActivity().getResources().getConfiguration().fontScale;
- if (fontScale != mFontScale) {
- mFontScale = fontScale;
- }
- final double textZoom = Math.round(mFontScale * 100);
- setTextZoom(textZoom, callbackContext);
- }
-
- private void sendMobileAccessibilityStatusChangedCallback() {
- if (this.mCallbackContext != null) {
- PluginResult result = new PluginResult(PluginResult.Status.OK, getMobileAccessibilityStatus());
- result.setKeepCallback(true);
- this.mCallbackContext.sendPluginResult(result);
- }
- }
-
- /* Get the current mobile accessibility status. */
- private JSONObject getMobileAccessibilityStatus() {
- JSONObject status = new JSONObject();
- try {
- status.put("isScreenReaderRunning", mIsScreenReaderRunning);
- status.put("isClosedCaptioningEnabled", mClosedCaptioningEnabled);
- status.put("isTouchExplorationEnabled", mTouchExplorationEnabled);
- //Log.i("MobileAccessibility", "MobileAccessibility.isScreenReaderRunning == " + status.getString("isScreenReaderRunning") +
- // "\nMobileAccessibility.isClosedCaptioningEnabled == " + status.getString("isClosedCaptioningEnabled") +
- // "\nMobileAccessibility.isTouchExplorationEnabled == " + status.getString("isTouchExplorationEnabled") );
- } catch (JSONException e) {
- e.printStackTrace();
- }
- return status;
- }
-
- private void start(CallbackContext callbackContext) {
- //Log.i("MobileAccessibility", "MobileAccessibility.start");
- mCallbackContext = callbackContext;
- mMobileAccessibilityHelper.addStateChangeListeners();
- sendMobileAccessibilityStatusChangedCallback();
- }
-
- private void stop() {
- //Log.i("MobileAccessibility", "MobileAccessibility.stop");
- if (mCallbackContext != null) {
- sendMobileAccessibilityStatusChangedCallback();
- mMobileAccessibilityHelper.removeStateChangeListeners();
- mCallbackContext = null;
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/io/ionic/keyboard/IonicKeyboard.java b/StoneIsland/platforms/android/src/io/ionic/keyboard/IonicKeyboard.java
deleted file mode 100644
index 128063b9..00000000
--- a/StoneIsland/platforms/android/src/io/ionic/keyboard/IonicKeyboard.java
+++ /dev/null
@@ -1,130 +0,0 @@
-package io.ionic.keyboard;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.PluginResult;
-import org.apache.cordova.PluginResult.Status;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.content.Context;
-import android.graphics.Rect;
-import android.util.DisplayMetrics;
-import android.view.View;
-import android.view.ViewTreeObserver.OnGlobalLayoutListener;
-import android.view.inputmethod.InputMethodManager;
-
-// import additionally required classes for calculating screen height
-import android.view.Display;
-import android.graphics.Point;
-import android.os.Build;
-
-public class IonicKeyboard extends CordovaPlugin {
-
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- super.initialize(cordova, webView);
- }
-
- public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
- if ("close".equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- //http://stackoverflow.com/a/7696791/1091751
- InputMethodManager inputManager = (InputMethodManager) cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
- View v = cordova.getActivity().getCurrentFocus();
-
- if (v == null) {
- callbackContext.error("No current focus");
- } else {
- inputManager.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
- callbackContext.success(); // Thread-safe.
- }
- }
- });
- return true;
- }
- if ("show".equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- ((InputMethodManager) cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY);
- callbackContext.success(); // Thread-safe.
- }
- });
- return true;
- }
- if ("init".equals(action)) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- //calculate density-independent pixels (dp)
- //http://developer.android.com/guide/practices/screens_support.html
- DisplayMetrics dm = new DisplayMetrics();
- cordova.getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
- final float density = dm.density;
-
- //http://stackoverflow.com/a/4737265/1091751 detect if keyboard is showing
- final View rootView = cordova.getActivity().getWindow().getDecorView().findViewById(android.R.id.content).getRootView();
- OnGlobalLayoutListener list = new OnGlobalLayoutListener() {
- int previousHeightDiff = 0;
- @Override
- public void onGlobalLayout() {
- Rect r = new Rect();
- //r will be populated with the coordinates of your view that area still visible.
- rootView.getWindowVisibleDisplayFrame(r);
-
- PluginResult result;
-
- // cache properties for later use
- int rootViewHeight = rootView.getRootView().getHeight();
- int resultBottom = r.bottom;
-
- // calculate screen height differently for android versions >= 21: Lollipop 5.x, Marshmallow 6.x
- //http://stackoverflow.com/a/29257533/3642890 beware of nexus 5
- int screenHeight;
-
- if (Build.VERSION.SDK_INT >= 21) {
- Display display = cordova.getActivity().getWindowManager().getDefaultDisplay();
- Point size = new Point();
- display.getSize(size);
- screenHeight = size.y;
- } else {
- screenHeight = rootViewHeight;
- }
-
- int heightDiff = screenHeight - resultBottom;
-
- int pixelHeightDiff = (int)(heightDiff / density);
- if (pixelHeightDiff > 100 && pixelHeightDiff != previousHeightDiff) { // if more than 100 pixels, its probably a keyboard...
- String msg = "S" + Integer.toString(pixelHeightDiff);
- result = new PluginResult(PluginResult.Status.OK, msg);
- result.setKeepCallback(true);
- callbackContext.sendPluginResult(result);
- }
- else if ( pixelHeightDiff != previousHeightDiff && ( previousHeightDiff - pixelHeightDiff ) > 100 ){
- String msg = "H";
- result = new PluginResult(PluginResult.Status.OK, msg);
- result.setKeepCallback(true);
- callbackContext.sendPluginResult(result);
- }
- previousHeightDiff = pixelHeightDiff;
- }
- };
-
- rootView.getViewTreeObserver().addOnGlobalLayoutListener(list);
-
-
- PluginResult dataResult = new PluginResult(PluginResult.Status.OK);
- dataResult.setKeepCallback(true);
- callbackContext.sendPluginResult(dataResult);
- }
- });
- return true;
- }
- return false; // Returning false results in a "MethodNotFound" error.
- }
-
-
-}
-
-
diff --git a/StoneIsland/platforms/android/src/nl/xservices/plugins/LaunchMyApp.java b/StoneIsland/platforms/android/src/nl/xservices/plugins/LaunchMyApp.java
deleted file mode 100644
index 3a52d287..00000000
--- a/StoneIsland/platforms/android/src/nl/xservices/plugins/LaunchMyApp.java
+++ /dev/null
@@ -1,173 +0,0 @@
-package nl.xservices.plugins;
-
-import android.content.Intent;
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaActivity;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.Locale;
-
-public class LaunchMyApp extends CordovaPlugin {
-
- private static final String ACTION_CHECKINTENT = "checkIntent";
- private static final String ACTION_CLEARINTENT = "clearIntent";
- private static final String ACTION_GETLASTINTENT = "getLastIntent";
-
- private String lastIntentString = null;
-
- /**
- * We don't want to interfere with other plugins requiring the intent data,
- * but in case of a multi-page app your app may receive the same intent data
- * multiple times, that's why you'll get an option to reset it (null it).
- *
- * Add this to config.xml to enable that behaviour (default false):
- * <preference name="CustomURLSchemePluginClearsAndroidIntent" value="true"/>
- */
- private boolean resetIntent;
-
- @Override
- public void initialize(final CordovaInterface cordova, CordovaWebView webView){
- this.resetIntent = preferences.getBoolean("resetIntent", false) ||
- preferences.getBoolean("CustomURLSchemePluginClearsAndroidIntent", false);
- }
-
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- if (ACTION_CLEARINTENT.equalsIgnoreCase(action)) {
- final Intent intent = ((CordovaActivity) this.webView.getContext()).getIntent();
- if (resetIntent){
- intent.setData(null);
- }
- return true;
- } else if (ACTION_CHECKINTENT.equalsIgnoreCase(action)) {
- final Intent intent = ((CordovaActivity) this.webView.getContext()).getIntent();
- final String intentString = intent.getDataString();
- if (intentString != null && intent.getScheme() != null) {
- lastIntentString = intentString;
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, intent.getDataString()));
- } else {
- callbackContext.error("App was not started via the launchmyapp URL scheme. Ignoring this errorcallback is the best approach.");
- }
- return true;
- } else if (ACTION_GETLASTINTENT.equalsIgnoreCase(action)) {
- if(lastIntentString != null) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, lastIntentString));
- } else {
- callbackContext.error("No intent received so far.");
- }
- return true;
- } else {
- callbackContext.error("This plugin only responds to the " + ACTION_CHECKINTENT + " action.");
- return false;
- }
- }
-
- @Override
- public void onNewIntent(Intent intent) {
- final String intentString = intent.getDataString();
- if (intentString != null && intent.getScheme() != null) {
- if (resetIntent){
- intent.setData(null);
- }
- try {
- StringWriter writer = new StringWriter(intentString.length() * 2);
- escapeJavaStyleString(writer, intentString, true, false);
- webView.loadUrl("javascript:handleOpenURL('" + writer.toString() + "');");
- } catch (IOException ignore) {
- }
- }
- }
-
- // Taken from commons StringEscapeUtils
- private static void escapeJavaStyleString(Writer out, String str, boolean escapeSingleQuote,
- boolean escapeForwardSlash) throws IOException {
- if (out == null) {
- throw new IllegalArgumentException("The Writer must not be null");
- }
- if (str == null) {
- return;
- }
- int sz;
- sz = str.length();
- for (int i = 0; i < sz; i++) {
- char ch = str.charAt(i);
-
- // handle unicode
- if (ch > 0xfff) {
- out.write("\\u" + hex(ch));
- } else if (ch > 0xff) {
- out.write("\\u0" + hex(ch));
- } else if (ch > 0x7f) {
- out.write("\\u00" + hex(ch));
- } else if (ch < 32) {
- switch (ch) {
- case '\b':
- out.write('\\');
- out.write('b');
- break;
- case '\n':
- out.write('\\');
- out.write('n');
- break;
- case '\t':
- out.write('\\');
- out.write('t');
- break;
- case '\f':
- out.write('\\');
- out.write('f');
- break;
- case '\r':
- out.write('\\');
- out.write('r');
- break;
- default:
- if (ch > 0xf) {
- out.write("\\u00" + hex(ch));
- } else {
- out.write("\\u000" + hex(ch));
- }
- break;
- }
- } else {
- switch (ch) {
- case '\'':
- if (escapeSingleQuote) {
- out.write('\\');
- }
- out.write('\'');
- break;
- case '"':
- out.write('\\');
- out.write('"');
- break;
- case '\\':
- out.write('\\');
- out.write('\\');
- break;
- case '/':
- if (escapeForwardSlash) {
- out.write('\\');
- }
- out.write('/');
- break;
- default:
- out.write(ch);
- break;
- }
- }
- }
- }
-
- private static String hex(char ch) {
- return Integer.toHexString(ch).toUpperCase(Locale.ENGLISH);
- }
-}
diff --git a/StoneIsland/platforms/android/src/nl/xservices/plugins/SocialSharing.java b/StoneIsland/platforms/android/src/nl/xservices/plugins/SocialSharing.java
deleted file mode 100644
index 8de31da8..00000000
--- a/StoneIsland/platforms/android/src/nl/xservices/plugins/SocialSharing.java
+++ /dev/null
@@ -1,775 +0,0 @@
-package nl.xservices.plugins;
-
-import android.annotation.SuppressLint;
-import android.app.Activity;
-import android.content.*;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Environment;
-import android.text.Html;
-import android.util.Base64;
-import android.view.Gravity;
-import android.widget.Toast;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Timer;
-import java.util.TimerTask;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class SocialSharing extends CordovaPlugin {
-
- private static final String ACTION_AVAILABLE_EVENT = "available";
- private static final String ACTION_SHARE_EVENT = "share";
- private static final String ACTION_SHARE_WITH_OPTIONS_EVENT = "shareWithOptions";
- private static final String ACTION_CAN_SHARE_VIA = "canShareVia";
- private static final String ACTION_CAN_SHARE_VIA_EMAIL = "canShareViaEmail";
- private static final String ACTION_SHARE_VIA = "shareVia";
- private static final String ACTION_SHARE_VIA_TWITTER_EVENT = "shareViaTwitter";
- private static final String ACTION_SHARE_VIA_FACEBOOK_EVENT = "shareViaFacebook";
- private static final String ACTION_SHARE_VIA_FACEBOOK_WITH_PASTEMESSAGEHINT = "shareViaFacebookWithPasteMessageHint";
- private static final String ACTION_SHARE_VIA_WHATSAPP_EVENT = "shareViaWhatsApp";
- private static final String ACTION_SHARE_VIA_INSTAGRAM_EVENT = "shareViaInstagram";
- private static final String ACTION_SHARE_VIA_SMS_EVENT = "shareViaSMS";
- private static final String ACTION_SHARE_VIA_EMAIL_EVENT = "shareViaEmail";
-
- private static final int ACTIVITY_CODE_SEND__BOOLRESULT = 1;
- private static final int ACTIVITY_CODE_SEND__OBJECT = 2;
- private static final int ACTIVITY_CODE_SENDVIAEMAIL = 3;
- private static final int ACTIVITY_CODE_SENDVIAWHATSAPP = 4;
-
- private CallbackContext _callbackContext;
-
- private String pasteMessage;
-
- private abstract class SocialSharingRunnable implements Runnable {
- public CallbackContext callbackContext;
-
- SocialSharingRunnable(CallbackContext cb) {
- this.callbackContext = cb;
- }
- }
-
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- this._callbackContext = callbackContext; // only used for onActivityResult
- this.pasteMessage = null;
- if (ACTION_AVAILABLE_EVENT.equals(action)) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
- return true;
- } else if (ACTION_SHARE_EVENT.equals(action)) {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), null, null, false, true);
- } else if (ACTION_SHARE_WITH_OPTIONS_EVENT.equals(action)) {
- return shareWithOptions(callbackContext, args.getJSONObject(0));
- } else if (ACTION_SHARE_VIA_TWITTER_EVENT.equals(action)) {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), "twitter", null, false, true);
- } else if (ACTION_SHARE_VIA_FACEBOOK_EVENT.equals(action)) {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), "com.facebook.katana", null, false, true);
- } else if (ACTION_SHARE_VIA_FACEBOOK_WITH_PASTEMESSAGEHINT.equals(action)) {
- this.pasteMessage = args.getString(4);
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), "com.facebook.katana", null, false, true);
- } else if (ACTION_SHARE_VIA_WHATSAPP_EVENT.equals(action)) {
- if (notEmpty(args.getString(4))) {
- return shareViaWhatsAppDirectly(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), args.getString(4));
- } else {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), "whatsapp", null, false, true);
- }
- } else if (ACTION_SHARE_VIA_INSTAGRAM_EVENT.equals(action)) {
- if (notEmpty(args.getString(0))) {
- copyHintToClipboard(args.getString(0), "Instagram paste message");
- }
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), "instagram", null, false, true);
- } else if (ACTION_CAN_SHARE_VIA.equals(action)) {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), args.getString(4), null, true, true);
- } else if (ACTION_CAN_SHARE_VIA_EMAIL.equals(action)) {
- if (isEmailAvailable()) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
- return true;
- } else {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, "not available"));
- return false;
- }
- } else if (ACTION_SHARE_VIA.equals(action)) {
- return doSendIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), args.getString(4), null, false, true);
- } else if (ACTION_SHARE_VIA_SMS_EVENT.equals(action)) {
- return invokeSMSIntent(callbackContext, args.getJSONObject(0), args.getString(1));
- } else if (ACTION_SHARE_VIA_EMAIL_EVENT.equals(action)) {
- return invokeEmailIntent(callbackContext, args.getString(0), args.getString(1), args.getJSONArray(2), args.isNull(3) ? null : args.getJSONArray(3), args.isNull(4) ? null : args.getJSONArray(4), args.isNull(5) ? null : args.getJSONArray(5));
- } else {
- callbackContext.error("socialSharing." + action + " is not a supported function. Did you mean '" + ACTION_SHARE_EVENT + "'?");
- return false;
- }
- }
-
- private boolean isEmailAvailable() {
- final Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "someone@domain.com", null));
- return cordova.getActivity().getPackageManager().queryIntentActivities(intent, 0).size() > 0;
- }
-
- private boolean invokeEmailIntent(final CallbackContext callbackContext, final String message, final String subject, final JSONArray to, final JSONArray cc, final JSONArray bcc, final JSONArray files) throws JSONException {
-
- final SocialSharing plugin = this;
- cordova.getThreadPool().execute(new SocialSharingRunnable(callbackContext) {
- public void run() {
- final Intent draft = new Intent(Intent.ACTION_SEND_MULTIPLE);
- if (notEmpty(message)) {
- Pattern htmlPattern = Pattern.compile(".*\\<[^>]+>.*", Pattern.DOTALL);
- if (htmlPattern.matcher(message).matches()) {
- draft.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(message));
- draft.setType("text/html");
- } else {
- draft.putExtra(android.content.Intent.EXTRA_TEXT, message);
- draft.setType("text/plain");
- }
- }
- if (notEmpty(subject)) {
- draft.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
- }
- try {
- if (to != null && to.length() > 0) {
- draft.putExtra(android.content.Intent.EXTRA_EMAIL, toStringArray(to));
- }
- if (cc != null && cc.length() > 0) {
- draft.putExtra(android.content.Intent.EXTRA_CC, toStringArray(cc));
- }
- if (bcc != null && bcc.length() > 0) {
- draft.putExtra(android.content.Intent.EXTRA_BCC, toStringArray(bcc));
- }
- if (files.length() > 0) {
- final String dir = getDownloadDir();
- if (dir != null) {
- ArrayList<Uri> fileUris = new ArrayList<Uri>();
- for (int i = 0; i < files.length(); i++) {
- final Uri fileUri = getFileUriAndSetType(draft, dir, files.getString(i), subject, i);
- if (fileUri != null) {
- fileUris.add(fileUri);
- }
- }
- if (!fileUris.isEmpty()) {
- draft.putExtra(Intent.EXTRA_STREAM, fileUris);
- }
- }
- }
- } catch (Exception e) {
- callbackContext.error(e.getMessage());
- }
-
- // this was added to start the intent in a new window as suggested in #300 to prevent crashes upon return
- draft.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- draft.setType("application/octet-stream");
-
- // as an experiment for #300 we're explicitly running it on the ui thread here
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- cordova.startActivityForResult(plugin, Intent.createChooser(draft, "Choose Email App"), ACTIVITY_CODE_SENDVIAEMAIL);
- }
- });
- }
- });
-
- return true;
- }
-
- private String getDownloadDir() throws IOException {
- // better check, otherwise it may crash the app
- if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
- // we need to use external storage since we need to share to another app
- final String dir = webView.getContext().getExternalFilesDir(null) + "/socialsharing-downloads";
- createOrCleanDir(dir);
- return dir;
- } else {
- return null;
- }
- }
-
- private boolean shareWithOptions(CallbackContext callbackContext, JSONObject jsonObject) {
- return doSendIntent(
- callbackContext,
- jsonObject.optString("message", null),
- jsonObject.optString("subject", null),
- jsonObject.optJSONArray("files") == null ? new JSONArray() : jsonObject.optJSONArray("files"),
- jsonObject.optString("url", null),
- null,
- jsonObject.optString("chooserTitle", null),
- false,
- false
- );
- }
-
- private boolean doSendIntent(
- final CallbackContext callbackContext,
- final String msg,
- final String subject,
- final JSONArray files,
- final String url,
- final String appPackageName,
- final String chooserTitle,
- final boolean peek,
- final boolean boolResult) {
-
- final CordovaInterface mycordova = cordova;
- final CordovaPlugin plugin = this;
-
- cordova.getThreadPool().execute(new SocialSharingRunnable(callbackContext) {
- public void run() {
- String message = msg;
- final boolean hasMultipleAttachments = files.length() > 1;
- final Intent sendIntent = new Intent(hasMultipleAttachments ? Intent.ACTION_SEND_MULTIPLE : Intent.ACTION_SEND);
- sendIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
-
- try {
- if (files.length() > 0 && !"".equals(files.getString(0))) {
- final String dir = getDownloadDir();
- if (dir != null) {
- ArrayList<Uri> fileUris = new ArrayList<Uri>();
- Uri fileUri = null;
- for (int i = 0; i < files.length(); i++) {
- fileUri = getFileUriAndSetType(sendIntent, dir, files.getString(i), subject, i);
- if (fileUri != null) {
- fileUris.add(fileUri);
- }
- }
- if (!fileUris.isEmpty()) {
- if (hasMultipleAttachments) {
- sendIntent.putExtra(Intent.EXTRA_STREAM, fileUris);
- } else {
- sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri);
- }
- }
- } else {
- sendIntent.setType("text/plain");
- }
- } else {
- sendIntent.setType("text/plain");
- }
- } catch (Exception e) {
- callbackContext.error(e.getMessage());
- }
-
- if (notEmpty(subject)) {
- sendIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
- }
-
- // add the URL to the message, as there seems to be no separate field
- if (notEmpty(url)) {
- if (notEmpty(message)) {
- message += " " + url;
- } else {
- message = url;
- }
- }
- if (notEmpty(message)) {
- sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
- // sometimes required when the user picks share via sms
- if (Build.VERSION.SDK_INT < 21) { // LOLLIPOP
- sendIntent.putExtra("sms_body", message);
- }
- }
-
- // this was added to start the intent in a new window as suggested in #300 to prevent crashes upon return
- sendIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- if (appPackageName != null) {
- String packageName = appPackageName;
- String passedActivityName = null;
- if (packageName.contains("/")) {
- String[] items = appPackageName.split("/");
- packageName = items[0];
- passedActivityName = items[1];
- }
- final ActivityInfo activity = getActivity(callbackContext, sendIntent, packageName);
- if (activity != null) {
- if (peek) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
- } else {
- sendIntent.addCategory(Intent.CATEGORY_LAUNCHER);
- sendIntent.setComponent(new ComponentName(activity.applicationInfo.packageName,
- passedActivityName != null ? passedActivityName : activity.name));
-
- // as an experiment for #300 we're explicitly running it on the ui thread here
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- mycordova.startActivityForResult(plugin, sendIntent, 0);
- }
- });
-
- if (pasteMessage != null) {
- // add a little delay because target app (facebook only atm) needs to be started first
- new Timer().schedule(new TimerTask() {
- public void run() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- copyHintToClipboard(msg, pasteMessage);
- showPasteMessage(pasteMessage);
- }
- });
- }
- }, 2000);
- }
- }
- }
- } else {
- if (peek) {
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
- } else {
- // experimenting a bit
- // as an experiment for #300 we're explicitly running it on the ui thread here
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- mycordova.startActivityForResult(plugin, Intent.createChooser(sendIntent, chooserTitle), boolResult ? ACTIVITY_CODE_SEND__BOOLRESULT : ACTIVITY_CODE_SEND__OBJECT);
- }
- });
- }
- }
- }
- });
- return true;
- }
-
- @SuppressLint("NewApi")
- private void copyHintToClipboard(String msg, String label) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
- return;
- }
- final ClipboardManager clipboard = (android.content.ClipboardManager) cordova.getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
- final ClipData clip = android.content.ClipData.newPlainText(label, msg);
- clipboard.setPrimaryClip(clip);
- }
-
- @SuppressLint("NewApi")
- private void showPasteMessage(String label) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
- return;
- }
- final Toast toast = Toast.makeText(webView.getContext(), label, Toast.LENGTH_LONG);
- toast.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0);
- toast.show();
- }
-
- private Uri getFileUriAndSetType(Intent sendIntent, String dir, String image, String subject, int nthFile) throws IOException {
- // we're assuming an image, but this can be any filetype you like
- String localImage = image;
- if (image.endsWith("mp4") || image.endsWith("mov") || image.endsWith("3gp")){
- sendIntent.setType("video/*");
- } else {
- sendIntent.setType("image/*");
- }
-
- if (image.startsWith("http") || image.startsWith("www/")) {
- String filename = getFileName(image);
- localImage = "file://" + dir + "/" + filename;
- if (image.startsWith("http")) {
- // filename optimisation taken from https://github.com/EddyVerbruggen/SocialSharing-PhoneGap-Plugin/pull/56
- URLConnection connection = new URL(image).openConnection();
- String disposition = connection.getHeaderField("Content-Disposition");
- if (disposition != null) {
- final Pattern dispositionPattern = Pattern.compile("filename=([^;]+)");
- Matcher matcher = dispositionPattern.matcher(disposition);
- if (matcher.find()) {
- filename = matcher.group(1).replaceAll("[^a-zA-Z0-9._-]", "");
- if (filename.length() == 0) {
- // in this case we can't determine a filetype so some targets (gmail) may not render it correctly
- filename = "file";
- }
- localImage = "file://" + dir + "/" + filename;
- }
- }
- saveFile(getBytes(connection.getInputStream()), dir, filename);
- } else {
- saveFile(getBytes(webView.getContext().getAssets().open(image)), dir, filename);
- }
- } else if (image.startsWith("data:")) {
- // safeguard for https://code.google.com/p/android/issues/detail?id=7901#c43
- if (!image.contains(";base64,")) {
- sendIntent.setType("text/plain");
- return null;
- }
- // image looks like this: data:image/png;base64,R0lGODlhDAA...
- final String encodedImg = image.substring(image.indexOf(";base64,") + 8);
- // correct the intent type if anything else was passed, like a pdf: data:application/pdf;base64,..
- if (!image.contains("data:image/")) {
- sendIntent.setType(image.substring(image.indexOf("data:") + 5, image.indexOf(";base64")));
- }
- // the filename needs a valid extension, so it renders correctly in target apps
- final String imgExtension = image.substring(image.indexOf("/") + 1, image.indexOf(";base64"));
- String fileName;
- // if a subject was passed, use it as the filename
- // filenames must be unique when passing in multiple files [#158]
- if (notEmpty(subject)) {
- fileName = sanitizeFilename(subject) + (nthFile == 0 ? "" : "_" + nthFile) + "." + imgExtension;
- } else {
- fileName = "file" + (nthFile == 0 ? "" : "_" + nthFile) + "." + imgExtension;
- }
- saveFile(Base64.decode(encodedImg, Base64.DEFAULT), dir, fileName);
- localImage = "file://" + dir + "/" + fileName;
- } else if (image.startsWith("df:")) {
- // safeguard for https://code.google.com/p/android/issues/detail?id=7901#c43
- if (!image.contains(";base64,")) {
- sendIntent.setType("text/plain");
- return null;
- }
- // format looks like this : df:filename.txt;data:image/png;base64,R0lGODlhDAA...
- final String fileName = image.substring(image.indexOf("df:") + 3, image.indexOf(";data:"));
- final String fileType = image.substring(image.indexOf(";data:") + 6, image.indexOf(";base64,"));
- final String encodedImg = image.substring(image.indexOf(";base64,") + 8);
- sendIntent.setType(fileType);
- saveFile(Base64.decode(encodedImg, Base64.DEFAULT), dir, sanitizeFilename(fileName));
- localImage = "file://" + dir + "/" + fileName;
- } else if (!image.startsWith("file://")) {
- throw new IllegalArgumentException("URL_NOT_SUPPORTED");
- } else {
- //get file MIME type
- String type = getMIMEType(image);
- //set intent data and Type
- sendIntent.setType(type);
- }
- return Uri.parse(localImage);
- }
-
- private String getMIMEType(String fileName) {
- String type = "*/*";
- int dotIndex = fileName.lastIndexOf(".");
- if (dotIndex == -1) {
- return type;
- }
- final String end = fileName.substring(dotIndex+1, fileName.length()).toLowerCase();
- String fromMap = MIME_Map.get(end);
- return fromMap == null ? type : fromMap;
- }
-
- private static final Map<String, String> MIME_Map = new HashMap<String, String>();
- static {
- MIME_Map.put("3gp", "video/3gpp");
- MIME_Map.put("apk", "application/vnd.android.package-archive");
- MIME_Map.put("asf", "video/x-ms-asf");
- MIME_Map.put("avi", "video/x-msvideo");
- MIME_Map.put("bin", "application/octet-stream");
- MIME_Map.put("bmp", "image/bmp");
- MIME_Map.put("c", "text/plain");
- MIME_Map.put("class", "application/octet-stream");
- MIME_Map.put("conf", "text/plain");
- MIME_Map.put("cpp", "text/plain");
- MIME_Map.put("doc", "application/msword");
- MIME_Map.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
- MIME_Map.put("xls", "application/vnd.ms-excel");
- MIME_Map.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
- MIME_Map.put("exe", "application/octet-stream");
- MIME_Map.put("gif", "image/gif");
- MIME_Map.put("gtar", "application/x-gtar");
- MIME_Map.put("gz", "application/x-gzip");
- MIME_Map.put("h", "text/plain");
- MIME_Map.put("htm", "text/html");
- MIME_Map.put("html", "text/html");
- MIME_Map.put("jar", "application/java-archive");
- MIME_Map.put("java", "text/plain");
- MIME_Map.put("jpeg", "image/jpeg");
- MIME_Map.put("jpg", "image/*");
- MIME_Map.put("js", "application/x-javascript");
- MIME_Map.put("log", "text/plain");
- MIME_Map.put("m3u", "audio/x-mpegurl");
- MIME_Map.put("m4a", "audio/mp4a-latm");
- MIME_Map.put("m4b", "audio/mp4a-latm");
- MIME_Map.put("m4p", "audio/mp4a-latm");
- MIME_Map.put("m4u", "video/vnd.mpegurl");
- MIME_Map.put("m4v", "video/x-m4v");
- MIME_Map.put("mov", "video/quicktime");
- MIME_Map.put("mp2", "audio/x-mpeg");
- MIME_Map.put("mp3", "audio/x-mpeg");
- MIME_Map.put("mp4", "video/mp4");
- MIME_Map.put("mpc", "application/vnd.mpohun.certificate");
- MIME_Map.put("mpe", "video/mpeg");
- MIME_Map.put("mpeg", "video/mpeg");
- MIME_Map.put("mpg", "video/mpeg");
- MIME_Map.put("mpg4", "video/mp4");
- MIME_Map.put("mpga", "audio/mpeg");
- MIME_Map.put("msg", "application/vnd.ms-outlook");
- MIME_Map.put("ogg", "audio/ogg");
- MIME_Map.put("pdf", "application/pdf");
- MIME_Map.put("png", "image/png");
- MIME_Map.put("pps", "application/vnd.ms-powerpoint");
- MIME_Map.put("ppt", "application/vnd.ms-powerpoint");
- MIME_Map.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
- MIME_Map.put("prop", "text/plain");
- MIME_Map.put("rc", "text/plain");
- MIME_Map.put("rmvb", "audio/x-pn-realaudio");
- MIME_Map.put("rtf", "application/rtf");
- MIME_Map.put("sh", "text/plain");
- MIME_Map.put("tar", "application/x-tar");
- MIME_Map.put("tgz", "application/x-compressed");
- MIME_Map.put("txt", "text/plain");
- MIME_Map.put("wav", "audio/x-wav");
- MIME_Map.put("wma", "audio/x-ms-wma");
- MIME_Map.put("wmv", "audio/x-ms-wmv");
- MIME_Map.put("wps", "application/vnd.ms-works");
- MIME_Map.put("xml", "text/plain");
- MIME_Map.put("z", "application/x-compress");
- MIME_Map.put("zip", "application/x-zip-compressed");
- MIME_Map.put("", "*/*");
- }
-
- private boolean shareViaWhatsAppDirectly(final CallbackContext callbackContext, String message, final String subject, final JSONArray files, final String url, final String number) {
- // add the URL to the message, as there seems to be no separate field
- if (notEmpty(url)) {
- if (notEmpty(message)) {
- message += " " + url;
- } else {
- message = url;
- }
- }
- final String shareMessage = message;
- final SocialSharing plugin = this;
- cordova.getThreadPool().execute(new SocialSharingRunnable(callbackContext) {
- public void run() {
- final Intent intent = new Intent(Intent.ACTION_SENDTO);
- intent.setData(Uri.parse("smsto:" + number));
-
- intent.putExtra("sms_body", shareMessage);
- intent.putExtra("sms_subject", subject);
- intent.setPackage("com.whatsapp");
-
- try {
- if (files.length() > 0 && !"".equals(files.getString(0))) {
- final boolean hasMultipleAttachments = files.length() > 1;
- final String dir = getDownloadDir();
- if (dir != null) {
- ArrayList<Uri> fileUris = new ArrayList<Uri>();
- Uri fileUri = null;
- for (int i = 0; i < files.length(); i++) {
- fileUri = getFileUriAndSetType(intent, dir, files.getString(i), subject, i);
- if (fileUri != null) {
- fileUris.add(fileUri);
- }
- }
- if (!fileUris.isEmpty()) {
- if (hasMultipleAttachments) {
- intent.putExtra(Intent.EXTRA_STREAM, fileUris);
- } else {
- intent.putExtra(Intent.EXTRA_STREAM, fileUri);
- }
- }
- }
- }
- } catch (Exception e) {
- callbackContext.error(e.getMessage());
- }
- try {
- // this was added to start the intent in a new window as suggested in #300 to prevent crashes upon return
- // update: didn't help (doesn't seem to hurt either though)
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- // as an experiment for #300 we're explicitly running it on the ui thread here
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- cordova.startActivityForResult(plugin, intent, ACTIVITY_CODE_SENDVIAWHATSAPP);
- }
- });
- } catch (Exception e) {
- callbackContext.error(e.getMessage());
- }
- }
- });
- return true;
- }
-
- private boolean invokeSMSIntent(final CallbackContext callbackContext, JSONObject options, String p_phonenumbers) {
- final String message = options.optString("message");
- // TODO test this on a real SMS enabled device before releasing it
-// final String subject = options.optString("subject");
-// final String image = options.optString("image");
- final String subject = null; //options.optString("subject");
- final String image = null; // options.optString("image");
- final String phonenumbers = getPhoneNumbersWithManufacturerSpecificSeparators(p_phonenumbers);
- final SocialSharing plugin = this;
- cordova.getThreadPool().execute(new SocialSharingRunnable(callbackContext) {
- public void run() {
- Intent intent;
-
- if (Build.VERSION.SDK_INT >= 19) { // Build.VERSION_CODES.KITKAT) {
- // passing in no phonenumbers for kitkat may result in an error,
- // but it may also work for some devices, so documentation will need to cover this case
- intent = new Intent(Intent.ACTION_SENDTO);
- intent.setData(Uri.parse("smsto:" + (notEmpty(phonenumbers) ? phonenumbers : "")));
- } else {
- intent = new Intent(Intent.ACTION_VIEW);
- intent.setType("vnd.android-dir/mms-sms");
- if (phonenumbers != null) {
- intent.putExtra("address", phonenumbers);
- }
- }
- intent.putExtra("sms_body", message);
- intent.putExtra("sms_subject", subject);
-
- try {
- if (image != null && !"".equals(image)) {
- final Uri fileUri = getFileUriAndSetType(intent, getDownloadDir(), image, subject, 0);
- if (fileUri != null) {
- intent.putExtra(Intent.EXTRA_STREAM, fileUri);
- }
- }
- // this was added to start the intent in a new window as suggested in #300 to prevent crashes upon return
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
- cordova.startActivityForResult(plugin, intent, 0);
- } catch (Exception e) {
- callbackContext.error(e.getMessage());
- }
- }
- });
- return true;
- }
-
- private static String getPhoneNumbersWithManufacturerSpecificSeparators(String phonenumbers) {
- if (notEmpty(phonenumbers)) {
- char separator;
- if (android.os.Build.MANUFACTURER.equalsIgnoreCase("samsung")) {
- separator = ',';
- } else {
- separator = ';';
- }
- return phonenumbers.replace(';', separator).replace(',', separator);
- }
- return null;
- }
-
- private ActivityInfo getActivity(final CallbackContext callbackContext, final Intent shareIntent, final String appPackageName) {
- final PackageManager pm = webView.getContext().getPackageManager();
- List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
- for (final ResolveInfo app : activityList) {
- if ((app.activityInfo.packageName).contains(appPackageName)) {
- return app.activityInfo;
- }
- }
- // no matching app found
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, getShareActivities(activityList)));
- return null;
- }
-
- private JSONArray getShareActivities(List<ResolveInfo> activityList) {
- List<String> packages = new ArrayList<String>();
- for (final ResolveInfo app : activityList) {
- packages.add(app.activityInfo.packageName);
- }
- return new JSONArray(packages);
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent intent) {
- super.onActivityResult(requestCode, resultCode, intent);
- if (_callbackContext != null) {
- switch (requestCode) {
- case ACTIVITY_CODE_SEND__BOOLRESULT:
- _callbackContext.sendPluginResult(new PluginResult(
- PluginResult.Status.OK,
- resultCode == Activity.RESULT_OK));
- break;
- case ACTIVITY_CODE_SEND__OBJECT:
- JSONObject json = new JSONObject();
- try {
- json.put("completed", resultCode == Activity.RESULT_OK);
- json.put("app", ""); // we need a completely different approach if we want to support this on Android. Idea: https://clickclickclack.wordpress.com/2012/01/03/intercepting-androids-action_send-intents/
- _callbackContext.sendPluginResult(new PluginResult(
- PluginResult.Status.OK,
- json));
- } catch (JSONException e) {
- _callbackContext.error(e.getMessage());
- }
- break;
- default:
- _callbackContext.success();
- }
- }
- }
-
- private void createOrCleanDir(final String downloadDir) throws IOException {
- final File dir = new File(downloadDir);
- if (!dir.exists()) {
- if (!dir.mkdirs()) {
- throw new IOException("CREATE_DIRS_FAILED");
- }
- } else {
- cleanupOldFiles(dir);
- }
- }
-
- private static String getFileName(String url) {
- if (url.endsWith("/")) {
- url = url.substring(0, url.length()-1);
- }
- final String pattern = ".*/([^?#]+)?";
- Pattern r = Pattern.compile(pattern);
- Matcher m = r.matcher(url);
- if (m.find()) {
- return m.group(1);
- } else {
- return "file";
- }
- }
-
- private byte[] getBytes(InputStream is) throws IOException {
- ByteArrayOutputStream buffer = new ByteArrayOutputStream();
- int nRead;
- byte[] data = new byte[16384];
- while ((nRead = is.read(data, 0, data.length)) != -1) {
- buffer.write(data, 0, nRead);
- }
- buffer.flush();
- return buffer.toByteArray();
- }
-
- private void saveFile(byte[] bytes, String dirName, String fileName) throws IOException {
- final File dir = new File(dirName);
- final FileOutputStream fos = new FileOutputStream(new File(dir, fileName));
- fos.write(bytes);
- fos.flush();
- fos.close();
- }
-
- /**
- * As file.deleteOnExit does not work on Android, we need to delete files manually.
- * Deleting them in onActivityResult is not a good idea, because for example a base64 encoded file
- * will not be available for upload to Facebook (it's deleted before it's uploaded).
- * So the best approach is deleting old files when saving (sharing) a new one.
- */
- private void cleanupOldFiles(File dir) {
- for (File f : dir.listFiles()) {
- //noinspection ResultOfMethodCallIgnored
- f.delete();
- }
- }
-
- private static boolean notEmpty(String what) {
- return what != null &&
- !"".equals(what) &&
- !"null".equalsIgnoreCase(what);
- }
-
- private static String[] toStringArray(JSONArray jsonArray) throws JSONException {
- String[] result = new String[jsonArray.length()];
- for (int i = 0; i < jsonArray.length(); i++) {
- result[i] = jsonArray.getString(i);
- }
- return result;
- }
-
- public static String sanitizeFilename(String name) {
- return name.replaceAll("[:\\\\/*?|<> ]", "_");
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/BuildHelper.java b/StoneIsland/platforms/android/src/org/apache/cordova/BuildHelper.java
deleted file mode 100644
index d9b18aa2..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/BuildHelper.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova;
-
-/*
- * This is a utility class that allows us to get the BuildConfig variable, which is required
- * for the use of different providers. This is not guaranteed to work, and it's better for this
- * to be set in the build step in config.xml
- *
- */
-
-import android.app.Activity;
-import android.content.Context;
-
-import java.lang.reflect.Field;
-
-
-public class BuildHelper {
-
-
- private static String TAG="BuildHelper";
-
- /*
- * This needs to be implemented if you wish to use the Camera Plugin or other plugins
- * that read the Build Configuration.
- *
- * Thanks to Phil@Medtronic and Graham Borland for finding the answer and posting it to
- * StackOverflow. This is annoying as hell! However, this method does not work with
- * ProGuard, and you should use the config.xml to define the application_id
- *
- */
-
- public static Object getBuildConfigValue(Context ctx, String key)
- {
- try
- {
- Class<?> clazz = Class.forName(ctx.getPackageName() + ".BuildConfig");
- Field field = clazz.getField(key);
- return field.get(null);
- } catch (ClassNotFoundException e) {
- LOG.d(TAG, "Unable to get the BuildConfig, is this built with ANT?");
- e.printStackTrace();
- } catch (NoSuchFieldException e) {
- LOG.d(TAG, key + " is not a valid field. Check your build.gradle");
- } catch (IllegalAccessException e) {
- LOG.d(TAG, "Illegal Access Exception: Let's print a stack trace.");
- e.printStackTrace();
- }
-
- return null;
- }
-
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/PermissionHelper.java b/StoneIsland/platforms/android/src/org/apache/cordova/PermissionHelper.java
deleted file mode 100644
index bbd79112..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/PermissionHelper.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.LOG;
-
-import android.content.pm.PackageManager;
-
-/**
- * This class provides reflective methods for permission requesting and checking so that plugins
- * written for cordova-android 5.0.0+ can still compile with earlier cordova-android versions.
- */
-public class PermissionHelper {
- private static final String LOG_TAG = "CordovaPermissionHelper";
-
- /**
- * Requests a "dangerous" permission for the application at runtime. This is a helper method
- * alternative to cordovaInterface.requestPermission() that does not require the project to be
- * built with cordova-android 5.0.0+
- *
- * @param plugin The plugin the permission is being requested for
- * @param requestCode A requestCode to be passed to the plugin's onRequestPermissionResult()
- * along with the result of the permission request
- * @param permission The permission to be requested
- */
- public static void requestPermission(CordovaPlugin plugin, int requestCode, String permission) {
- PermissionHelper.requestPermissions(plugin, requestCode, new String[] {permission});
- }
-
- /**
- * Requests "dangerous" permissions for the application at runtime. This is a helper method
- * alternative to cordovaInterface.requestPermissions() that does not require the project to be
- * built with cordova-android 5.0.0+
- *
- * @param plugin The plugin the permissions are being requested for
- * @param requestCode A requestCode to be passed to the plugin's onRequestPermissionResult()
- * along with the result of the permissions request
- * @param permissions The permissions to be requested
- */
- public static void requestPermissions(CordovaPlugin plugin, int requestCode, String[] permissions) {
- try {
- Method requestPermission = CordovaInterface.class.getDeclaredMethod(
- "requestPermissions", CordovaPlugin.class, int.class, String[].class);
-
- // If there is no exception, then this is cordova-android 5.0.0+
- requestPermission.invoke(plugin.cordova, plugin, requestCode, permissions);
- } catch (NoSuchMethodException noSuchMethodException) {
- // cordova-android version is less than 5.0.0, so permission is implicitly granted
- LOG.d(LOG_TAG, "No need to request permissions " + Arrays.toString(permissions));
-
- // Notify the plugin that all were granted by using more reflection
- deliverPermissionResult(plugin, requestCode, permissions);
- } catch (IllegalAccessException illegalAccessException) {
- // Should never be caught; this is a public method
- LOG.e(LOG_TAG, "IllegalAccessException when requesting permissions " + Arrays.toString(permissions), illegalAccessException);
- } catch(InvocationTargetException invocationTargetException) {
- // This method does not throw any exceptions, so this should never be caught
- LOG.e(LOG_TAG, "invocationTargetException when requesting permissions " + Arrays.toString(permissions), invocationTargetException);
- }
- }
-
- /**
- * Checks at runtime to see if the application has been granted a permission. This is a helper
- * method alternative to cordovaInterface.hasPermission() that does not require the project to
- * be built with cordova-android 5.0.0+
- *
- * @param plugin The plugin the permission is being checked against
- * @param permission The permission to be checked
- *
- * @return True if the permission has already been granted and false otherwise
- */
- public static boolean hasPermission(CordovaPlugin plugin, String permission) {
- try {
- Method hasPermission = CordovaInterface.class.getDeclaredMethod("hasPermission", String.class);
-
- // If there is no exception, then this is cordova-android 5.0.0+
- return (Boolean) hasPermission.invoke(plugin.cordova, permission);
- } catch (NoSuchMethodException noSuchMethodException) {
- // cordova-android version is less than 5.0.0, so permission is implicitly granted
- LOG.d(LOG_TAG, "No need to check for permission " + permission);
- return true;
- } catch (IllegalAccessException illegalAccessException) {
- // Should never be caught; this is a public method
- LOG.e(LOG_TAG, "IllegalAccessException when checking permission " + permission, illegalAccessException);
- } catch(InvocationTargetException invocationTargetException) {
- // This method does not throw any exceptions, so this should never be caught
- LOG.e(LOG_TAG, "invocationTargetException when checking permission " + permission, invocationTargetException);
- }
- return false;
- }
-
- private static void deliverPermissionResult(CordovaPlugin plugin, int requestCode, String[] permissions) {
- // Generate the request results
- int[] requestResults = new int[permissions.length];
- Arrays.fill(requestResults, PackageManager.PERMISSION_GRANTED);
-
- try {
- Method onRequestPermissionResult = CordovaPlugin.class.getDeclaredMethod(
- "onRequestPermissionResult", int.class, String[].class, int[].class);
-
- onRequestPermissionResult.invoke(plugin, requestCode, permissions, requestResults);
- } catch (NoSuchMethodException noSuchMethodException) {
- // Should never be caught since the plugin must be written for cordova-android 5.0.0+ if it
- // made it to this point
- LOG.e(LOG_TAG, "NoSuchMethodException when delivering permissions results", noSuchMethodException);
- } catch (IllegalAccessException illegalAccessException) {
- // Should never be caught; this is a public method
- LOG.e(LOG_TAG, "IllegalAccessException when delivering permissions results", illegalAccessException);
- } catch(InvocationTargetException invocationTargetException) {
- // This method may throw a JSONException. We are just duplicating cordova-android's
- // exception handling behavior here; all it does is log the exception in CordovaActivity,
- // print the stacktrace, and ignore it
- LOG.e(LOG_TAG, "InvocationTargetException when delivering permissions results", invocationTargetException);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/device/Device.java b/StoneIsland/platforms/android/src/org/apache/cordova/device/Device.java
deleted file mode 100644
index e9efcb49..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/device/Device.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.device;
-
-import java.util.TimeZone;
-
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaInterface;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.provider.Settings;
-
-public class Device extends CordovaPlugin {
- public static final String TAG = "Device";
-
- public static String platform; // Device OS
- public static String uuid; // Device UUID
-
- private static final String ANDROID_PLATFORM = "Android";
- private static final String AMAZON_PLATFORM = "amazon-fireos";
- private static final String AMAZON_DEVICE = "Amazon";
-
- /**
- * Constructor.
- */
- public Device() {
- }
-
- /**
- * Sets the context of the Command. This can then be used to do things like
- * get file paths associated with the Activity.
- *
- * @param cordova The context of the main Activity.
- * @param webView The CordovaWebView Cordova is running in.
- */
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- super.initialize(cordova, webView);
- Device.uuid = getUuid();
- }
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action The action to execute.
- * @param args JSONArry of arguments for the plugin.
- * @param callbackContext The callback id used when calling back into JavaScript.
- * @return True if the action was valid, false if not.
- */
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- if ("getDeviceInfo".equals(action)) {
- JSONObject r = new JSONObject();
- r.put("uuid", Device.uuid);
- r.put("version", this.getOSVersion());
- r.put("platform", this.getPlatform());
- r.put("model", this.getModel());
- r.put("manufacturer", this.getManufacturer());
- r.put("isVirtual", this.isVirtual());
- r.put("serial", this.getSerialNumber());
- callbackContext.success(r);
- }
- else {
- return false;
- }
- return true;
- }
-
- //--------------------------------------------------------------------------
- // LOCAL METHODS
- //--------------------------------------------------------------------------
-
- /**
- * Get the OS name.
- *
- * @return
- */
- public String getPlatform() {
- String platform;
- if (isAmazonDevice()) {
- platform = AMAZON_PLATFORM;
- } else {
- platform = ANDROID_PLATFORM;
- }
- return platform;
- }
-
- /**
- * Get the device's Universally Unique Identifier (UUID).
- *
- * @return
- */
- public String getUuid() {
- String uuid = Settings.Secure.getString(this.cordova.getActivity().getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);
- return uuid;
- }
-
- public String getModel() {
- String model = android.os.Build.MODEL;
- return model;
- }
-
- public String getProductName() {
- String productname = android.os.Build.PRODUCT;
- return productname;
- }
-
- public String getManufacturer() {
- String manufacturer = android.os.Build.MANUFACTURER;
- return manufacturer;
- }
-
- public String getSerialNumber() {
- String serial = android.os.Build.SERIAL;
- return serial;
- }
-
- /**
- * Get the OS version.
- *
- * @return
- */
- public String getOSVersion() {
- String osversion = android.os.Build.VERSION.RELEASE;
- return osversion;
- }
-
- public String getSDKVersion() {
- @SuppressWarnings("deprecation")
- String sdkversion = android.os.Build.VERSION.SDK;
- return sdkversion;
- }
-
- public String getTimeZoneID() {
- TimeZone tz = TimeZone.getDefault();
- return (tz.getID());
- }
-
- /**
- * Function to check if the device is manufactured by Amazon
- *
- * @return
- */
- public boolean isAmazonDevice() {
- if (android.os.Build.MANUFACTURER.equals(AMAZON_DEVICE)) {
- return true;
- }
- return false;
- }
-
- public boolean isVirtual() {
- return android.os.Build.FINGERPRINT.contains("generic") ||
- android.os.Build.PRODUCT.contains("sdk");
- }
-
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/dialogs/Notification.java b/StoneIsland/platforms/android/src/org/apache/cordova/dialogs/Notification.java
deleted file mode 100644
index f19bc888..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/dialogs/Notification.java
+++ /dev/null
@@ -1,513 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.dialogs;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.annotation.SuppressLint;
-import android.app.AlertDialog;
-import android.app.AlertDialog.Builder;
-import android.app.ProgressDialog;
-import android.content.DialogInterface;
-import android.content.res.Resources;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.widget.EditText;
-import android.widget.TextView;
-
-
-/**
- * This class provides access to notifications on the device.
- *
- * Be aware that this implementation gets called on
- * navigator.notification.{alert|confirm|prompt}, and that there is a separate
- * implementation in org.apache.cordova.CordovaChromeClient that gets
- * called on a simple window.{alert|confirm|prompt}.
- */
-public class Notification extends CordovaPlugin {
-
- private static final String LOG_TAG = "Notification";
-
- public int confirmResult = -1;
- public ProgressDialog spinnerDialog = null;
- public ProgressDialog progressDialog = null;
-
- /**
- * Constructor.
- */
- public Notification() {
- }
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action The action to execute.
- * @param args JSONArray of arguments for the plugin.
- * @param callbackContext The callback context used when calling back into JavaScript.
- * @return True when the action was valid, false otherwise.
- */
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- /*
- * Don't run any of these if the current activity is finishing
- * in order to avoid android.view.WindowManager$BadTokenException
- * crashing the app. Just return true here since false should only
- * be returned in the event of an invalid action.
- */
- if(this.cordova.getActivity().isFinishing()) return true;
-
- if (action.equals("beep")) {
- this.beep(args.getLong(0));
- }
- else if (action.equals("alert")) {
- this.alert(args.getString(0), args.getString(1), args.getString(2), callbackContext);
- return true;
- }
- else if (action.equals("confirm")) {
- this.confirm(args.getString(0), args.getString(1), args.getJSONArray(2), callbackContext);
- return true;
- }
- else if (action.equals("prompt")) {
- this.prompt(args.getString(0), args.getString(1), args.getJSONArray(2), args.getString(3), callbackContext);
- return true;
- }
- else if (action.equals("activityStart")) {
- this.activityStart(args.getString(0), args.getString(1));
- }
- else if (action.equals("activityStop")) {
- this.activityStop();
- }
- else if (action.equals("progressStart")) {
- this.progressStart(args.getString(0), args.getString(1));
- }
- else if (action.equals("progressValue")) {
- this.progressValue(args.getInt(0));
- }
- else if (action.equals("progressStop")) {
- this.progressStop();
- }
- else {
- return false;
- }
-
- // Only alert and confirm are async.
- callbackContext.success();
- return true;
- }
-
- //--------------------------------------------------------------------------
- // LOCAL METHODS
- //--------------------------------------------------------------------------
-
- /**
- * Beep plays the default notification ringtone.
- *
- * @param count Number of times to play notification
- */
- public void beep(final long count) {
- cordova.getThreadPool().execute(new Runnable() {
- public void run() {
- Uri ringtone = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
- Ringtone notification = RingtoneManager.getRingtone(cordova.getActivity().getBaseContext(), ringtone);
-
- // If phone is not set to silent mode
- if (notification != null) {
- for (long i = 0; i < count; ++i) {
- notification.play();
- long timeout = 5000;
- while (notification.isPlaying() && (timeout > 0)) {
- timeout = timeout - 100;
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- }
- }
- }
- });
- }
-
- /**
- * Builds and shows a native Android alert with given Strings
- * @param message The message the alert should display
- * @param title The title of the alert
- * @param buttonLabel The label of the button
- * @param callbackContext The callback context
- */
- public synchronized void alert(final String message, final String title, final String buttonLabel, final CallbackContext callbackContext) {
- final CordovaInterface cordova = this.cordova;
-
- Runnable runnable = new Runnable() {
- public void run() {
-
- AlertDialog.Builder dlg = createDialog(cordova); // new AlertDialog.Builder(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- dlg.setMessage(message);
- dlg.setTitle(title);
- dlg.setCancelable(true);
- dlg.setPositiveButton(buttonLabel,
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
- }
- });
- dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
- public void onCancel(DialogInterface dialog)
- {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
- }
- });
-
- changeTextDirection(dlg);
- };
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- }
-
- /**
- * Builds and shows a native Android confirm dialog with given title, message, buttons.
- * This dialog only shows up to 3 buttons. Any labels after that will be ignored.
- * The index of the button pressed will be returned to the JavaScript callback identified by callbackId.
- *
- * @param message The message the dialog should display
- * @param title The title of the dialog
- * @param buttonLabels A comma separated list of button labels (Up to 3 buttons)
- * @param callbackContext The callback context.
- */
- public synchronized void confirm(final String message, final String title, final JSONArray buttonLabels, final CallbackContext callbackContext) {
- final CordovaInterface cordova = this.cordova;
-
- Runnable runnable = new Runnable() {
- public void run() {
- AlertDialog.Builder dlg = createDialog(cordova); // new AlertDialog.Builder(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- dlg.setMessage(message);
- dlg.setTitle(title);
- dlg.setCancelable(true);
-
- // First button
- if (buttonLabels.length() > 0) {
- try {
- dlg.setNegativeButton(buttonLabels.getString(0),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 1));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on first button.");
- }
- }
-
- // Second button
- if (buttonLabels.length() > 1) {
- try {
- dlg.setNeutralButton(buttonLabels.getString(1),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 2));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on second button.");
- }
- }
-
- // Third button
- if (buttonLabels.length() > 2) {
- try {
- dlg.setPositiveButton(buttonLabels.getString(2),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 3));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on third button.");
- }
- }
- dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
- public void onCancel(DialogInterface dialog)
- {
- dialog.dismiss();
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, 0));
- }
- });
-
- changeTextDirection(dlg);
- };
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- }
-
- /**
- * Builds and shows a native Android prompt dialog with given title, message, buttons.
- * This dialog only shows up to 3 buttons. Any labels after that will be ignored.
- * The following results are returned to the JavaScript callback identified by callbackId:
- * buttonIndex Index number of the button selected
- * input1 The text entered in the prompt dialog box
- *
- * @param message The message the dialog should display
- * @param title The title of the dialog
- * @param buttonLabels A comma separated list of button labels (Up to 3 buttons)
- * @param callbackContext The callback context.
- */
- public synchronized void prompt(final String message, final String title, final JSONArray buttonLabels, final String defaultText, final CallbackContext callbackContext) {
-
- final CordovaInterface cordova = this.cordova;
-
- Runnable runnable = new Runnable() {
- public void run() {
- final EditText promptInput = new EditText(cordova.getActivity());
-
- /* CB-11677 - By default, prompt input text color is set according current theme.
- But for some android versions is not visible (for example 5.1.1).
- android.R.color.primary_text_light will make text visible on all versions. */
- Resources resources = cordova.getActivity().getResources();
- int promptInputTextColor = resources.getColor(android.R.color.primary_text_light);
- promptInput.setTextColor(promptInputTextColor);
- promptInput.setText(defaultText);
- AlertDialog.Builder dlg = createDialog(cordova); // new AlertDialog.Builder(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- dlg.setMessage(message);
- dlg.setTitle(title);
- dlg.setCancelable(true);
-
- dlg.setView(promptInput);
-
- final JSONObject result = new JSONObject();
-
- // First button
- if (buttonLabels.length() > 0) {
- try {
- dlg.setNegativeButton(buttonLabels.getString(0),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- try {
- result.put("buttonIndex",1);
- result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on first button.", e);
- }
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on first button.");
- }
- }
-
- // Second button
- if (buttonLabels.length() > 1) {
- try {
- dlg.setNeutralButton(buttonLabels.getString(1),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- try {
- result.put("buttonIndex",2);
- result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on second button.", e);
- }
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on second button.");
- }
- }
-
- // Third button
- if (buttonLabels.length() > 2) {
- try {
- dlg.setPositiveButton(buttonLabels.getString(2),
- new AlertDialog.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- try {
- result.put("buttonIndex",3);
- result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on third button.", e);
- }
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
- }
- });
- } catch (JSONException e) {
- LOG.d(LOG_TAG,"JSONException on third button.");
- }
- }
- dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
- public void onCancel(DialogInterface dialog){
- dialog.dismiss();
- try {
- result.put("buttonIndex",0);
- result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
- } catch (JSONException e) { e.printStackTrace(); }
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
- }
- });
-
- changeTextDirection(dlg);
- };
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- }
-
- /**
- * Show the spinner.
- *
- * @param title Title of the dialog
- * @param message The message of the dialog
- */
- public synchronized void activityStart(final String title, final String message) {
- if (this.spinnerDialog != null) {
- this.spinnerDialog.dismiss();
- this.spinnerDialog = null;
- }
- final Notification notification = this;
- final CordovaInterface cordova = this.cordova;
- Runnable runnable = new Runnable() {
- public void run() {
- notification.spinnerDialog = createProgressDialog(cordova); // new ProgressDialog(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- notification.spinnerDialog.setTitle(title);
- notification.spinnerDialog.setMessage(message);
- notification.spinnerDialog.setCancelable(true);
- notification.spinnerDialog.setIndeterminate(true);
- notification.spinnerDialog.setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- notification.spinnerDialog = null;
- }
- });
- notification.spinnerDialog.show();
- }
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- }
-
- /**
- * Stop spinner.
- */
- public synchronized void activityStop() {
- if (this.spinnerDialog != null) {
- this.spinnerDialog.dismiss();
- this.spinnerDialog = null;
- }
- }
-
- /**
- * Show the progress dialog.
- *
- * @param title Title of the dialog
- * @param message The message of the dialog
- */
- public synchronized void progressStart(final String title, final String message) {
- if (this.progressDialog != null) {
- this.progressDialog.dismiss();
- this.progressDialog = null;
- }
- final Notification notification = this;
- final CordovaInterface cordova = this.cordova;
- Runnable runnable = new Runnable() {
- public void run() {
- notification.progressDialog = createProgressDialog(cordova); // new ProgressDialog(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- notification.progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
- notification.progressDialog.setTitle(title);
- notification.progressDialog.setMessage(message);
- notification.progressDialog.setCancelable(true);
- notification.progressDialog.setMax(100);
- notification.progressDialog.setProgress(0);
- notification.progressDialog.setOnCancelListener(
- new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- notification.progressDialog = null;
- }
- });
- notification.progressDialog.show();
- }
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- }
-
- /**
- * Set value of progress bar.
- *
- * @param value 0-100
- */
- public synchronized void progressValue(int value) {
- if (this.progressDialog != null) {
- this.progressDialog.setProgress(value);
- }
- }
-
- /**
- * Stop progress dialog.
- */
- public synchronized void progressStop() {
- if (this.progressDialog != null) {
- this.progressDialog.dismiss();
- this.progressDialog = null;
- }
- }
-
- @SuppressLint("NewApi")
- private AlertDialog.Builder createDialog(CordovaInterface cordova) {
- int currentapiVersion = android.os.Build.VERSION.SDK_INT;
- if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB) {
- return new AlertDialog.Builder(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- } else {
- return new AlertDialog.Builder(cordova.getActivity());
- }
- }
-
- @SuppressLint("InlinedApi")
- private ProgressDialog createProgressDialog(CordovaInterface cordova) {
- int currentapiVersion = android.os.Build.VERSION.SDK_INT;
- if (currentapiVersion >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- return new ProgressDialog(cordova.getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
- } else {
- return new ProgressDialog(cordova.getActivity());
- }
- }
-
- @SuppressLint("NewApi")
- private void changeTextDirection(Builder dlg){
- int currentapiVersion = android.os.Build.VERSION.SDK_INT;
- dlg.create();
- AlertDialog dialog = dlg.show();
- if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
- TextView messageview = (TextView)dialog.findViewById(android.R.id.message);
- messageview.setTextDirection(android.view.View.TEXT_DIRECTION_LOCALE);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/geolocation/Geolocation.java b/StoneIsland/platforms/android/src/org/apache/cordova/geolocation/Geolocation.java
deleted file mode 100644
index 6452170a..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/geolocation/Geolocation.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
-
-package org.apache.cordova.geolocation;
-
-import android.content.pm.PackageManager;
-import android.Manifest;
-import android.os.Build;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaArgs;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.PermissionHelper;
-import org.apache.cordova.PluginResult;
-import org.apache.cordova.LOG;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import javax.security.auth.callback.Callback;
-
-public class Geolocation extends CordovaPlugin {
-
- String TAG = "GeolocationPlugin";
- CallbackContext context;
-
- String [] permissions = { Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION };
-
-
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- LOG.d(TAG, "We are entering execute");
- context = callbackContext;
- if(action.equals("getPermission"))
- {
- if(hasPermisssion())
- {
- PluginResult r = new PluginResult(PluginResult.Status.OK);
- context.sendPluginResult(r);
- return true;
- }
- else {
- PermissionHelper.requestPermissions(this, 0, permissions);
- }
- return true;
- }
- return false;
- }
-
-
- public void onRequestPermissionResult(int requestCode, String[] permissions,
- int[] grantResults) throws JSONException
- {
- PluginResult result;
- //This is important if we're using Cordova without using Cordova, but we have the geolocation plugin installed
- if(context != null) {
- for (int r : grantResults) {
- if (r == PackageManager.PERMISSION_DENIED) {
- LOG.d(TAG, "Permission Denied!");
- result = new PluginResult(PluginResult.Status.ILLEGAL_ACCESS_EXCEPTION);
- context.sendPluginResult(result);
- return;
- }
-
- }
- result = new PluginResult(PluginResult.Status.OK);
- context.sendPluginResult(result);
- }
- }
-
- public boolean hasPermisssion() {
- for(String p : permissions)
- {
- if(!PermissionHelper.hasPermission(this, p))
- {
- return false;
- }
- }
- return true;
- }
-
- /*
- * We override this so that we can access the permissions variable, which no longer exists in
- * the parent class, since we can't initialize it reliably in the constructor!
- */
-
- public void requestPermissions(int requestCode)
- {
- PermissionHelper.requestPermissions(this, requestCode, permissions);
- }
-
-
-
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java b/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java
deleted file mode 100644
index 8f4f3d97..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowser.java
+++ /dev/null
@@ -1,1005 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.inappbrowser;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.content.Intent;
-import android.provider.Browser;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.text.InputType;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.KeyEvent;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-import android.view.WindowManager.LayoutParams;
-import android.view.inputmethod.EditorInfo;
-import android.view.inputmethod.InputMethodManager;
-import android.webkit.CookieManager;
-import android.webkit.CookieSyncManager;
-import android.webkit.HttpAuthHandler;
-import android.webkit.WebSettings;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-import android.widget.EditText;
-import android.widget.ImageButton;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.RelativeLayout;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.Config;
-import org.apache.cordova.CordovaArgs;
-import org.apache.cordova.CordovaHttpAuthHandler;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginManager;
-import org.apache.cordova.PluginResult;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.HashMap;
-import java.util.StringTokenizer;
-
-@SuppressLint("SetJavaScriptEnabled")
-public class InAppBrowser extends CordovaPlugin {
-
- private static final String NULL = "null";
- protected static final String LOG_TAG = "InAppBrowser";
- private static final String SELF = "_self";
- private static final String SYSTEM = "_system";
- private static final String EXIT_EVENT = "exit";
- private static final String LOCATION = "location";
- private static final String ZOOM = "zoom";
- private static final String HIDDEN = "hidden";
- private static final String LOAD_START_EVENT = "loadstart";
- private static final String LOAD_STOP_EVENT = "loadstop";
- private static final String LOAD_ERROR_EVENT = "loaderror";
- private static final String CLEAR_ALL_CACHE = "clearcache";
- private static final String CLEAR_SESSION_CACHE = "clearsessioncache";
- private static final String HARDWARE_BACK_BUTTON = "hardwareback";
- private static final String MEDIA_PLAYBACK_REQUIRES_USER_ACTION = "mediaPlaybackRequiresUserAction";
- private static final String SHOULD_PAUSE = "shouldPauseOnSuspend";
-
- private InAppBrowserDialog dialog;
- private WebView inAppWebView;
- private EditText edittext;
- private CallbackContext callbackContext;
- private boolean showLocationBar = true;
- private boolean showZoomControls = true;
- private boolean openWindowHidden = false;
- private boolean clearAllCache = false;
- private boolean clearSessionCache = false;
- private boolean hadwareBackButton = true;
- private boolean mediaPlaybackRequiresUserGesture = false;
- private boolean shouldPauseInAppBrowser = false;
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action the action to execute.
- * @param args JSONArry of arguments for the plugin.
- * @param callbackContext the callbackContext used when calling back into JavaScript.
- * @return A PluginResult object with a status and message.
- */
- public boolean execute(String action, CordovaArgs args, final CallbackContext callbackContext) throws JSONException {
- if (action.equals("open")) {
- this.callbackContext = callbackContext;
- final String url = args.getString(0);
- String t = args.optString(1);
- if (t == null || t.equals("") || t.equals(NULL)) {
- t = SELF;
- }
- final String target = t;
- final HashMap<String, Boolean> features = parseFeature(args.optString(2));
-
- LOG.d(LOG_TAG, "target = " + target);
-
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- String result = "";
- // SELF
- if (SELF.equals(target)) {
- LOG.d(LOG_TAG, "in self");
- /* This code exists for compatibility between 3.x and 4.x versions of Cordova.
- * Previously the Config class had a static method, isUrlWhitelisted(). That
- * responsibility has been moved to the plugins, with an aggregating method in
- * PluginManager.
- */
- Boolean shouldAllowNavigation = null;
- if (url.startsWith("javascript:")) {
- shouldAllowNavigation = true;
- }
- if (shouldAllowNavigation == null) {
- try {
- Method iuw = Config.class.getMethod("isUrlWhiteListed", String.class);
- shouldAllowNavigation = (Boolean)iuw.invoke(null, url);
- } catch (NoSuchMethodException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (IllegalAccessException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (InvocationTargetException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
- }
- if (shouldAllowNavigation == null) {
- try {
- Method gpm = webView.getClass().getMethod("getPluginManager");
- PluginManager pm = (PluginManager)gpm.invoke(webView);
- Method san = pm.getClass().getMethod("shouldAllowNavigation", String.class);
- shouldAllowNavigation = (Boolean)san.invoke(pm, url);
- } catch (NoSuchMethodException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (IllegalAccessException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (InvocationTargetException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
- }
- // load in webview
- if (Boolean.TRUE.equals(shouldAllowNavigation)) {
- LOG.d(LOG_TAG, "loading in webview");
- webView.loadUrl(url);
- }
- //Load the dialer
- else if (url.startsWith(WebView.SCHEME_TEL))
- {
- try {
- LOG.d(LOG_TAG, "loading in dialer");
- Intent intent = new Intent(Intent.ACTION_DIAL);
- intent.setData(Uri.parse(url));
- cordova.getActivity().startActivity(intent);
- } catch (android.content.ActivityNotFoundException e) {
- LOG.e(LOG_TAG, "Error dialing " + url + ": " + e.toString());
- }
- }
- // load in InAppBrowser
- else {
- LOG.d(LOG_TAG, "loading in InAppBrowser");
- result = showWebPage(url, features);
- }
- }
- // SYSTEM
- else if (SYSTEM.equals(target)) {
- LOG.d(LOG_TAG, "in system");
- result = openExternal(url);
- }
- // BLANK - or anything else
- else {
- LOG.d(LOG_TAG, "in blank");
- result = showWebPage(url, features);
- }
-
- PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, result);
- pluginResult.setKeepCallback(true);
- callbackContext.sendPluginResult(pluginResult);
- }
- });
- }
- else if (action.equals("close")) {
- closeDialog();
- }
- else if (action.equals("injectScriptCode")) {
- String jsWrapper = null;
- if (args.getBoolean(1)) {
- jsWrapper = String.format("(function(){prompt(JSON.stringify([eval(%%s)]), 'gap-iab://%s')})()", callbackContext.getCallbackId());
- }
- injectDeferredObject(args.getString(0), jsWrapper);
- }
- else if (action.equals("injectScriptFile")) {
- String jsWrapper;
- if (args.getBoolean(1)) {
- jsWrapper = String.format("(function(d) { var c = d.createElement('script'); c.src = %%s; c.onload = function() { prompt('', 'gap-iab://%s'); }; d.body.appendChild(c); })(document)", callbackContext.getCallbackId());
- } else {
- jsWrapper = "(function(d) { var c = d.createElement('script'); c.src = %s; d.body.appendChild(c); })(document)";
- }
- injectDeferredObject(args.getString(0), jsWrapper);
- }
- else if (action.equals("injectStyleCode")) {
- String jsWrapper;
- if (args.getBoolean(1)) {
- jsWrapper = String.format("(function(d) { var c = d.createElement('style'); c.innerHTML = %%s; d.body.appendChild(c); prompt('', 'gap-iab://%s');})(document)", callbackContext.getCallbackId());
- } else {
- jsWrapper = "(function(d) { var c = d.createElement('style'); c.innerHTML = %s; d.body.appendChild(c); })(document)";
- }
- injectDeferredObject(args.getString(0), jsWrapper);
- }
- else if (action.equals("injectStyleFile")) {
- String jsWrapper;
- if (args.getBoolean(1)) {
- jsWrapper = String.format("(function(d) { var c = d.createElement('link'); c.rel='stylesheet'; c.type='text/css'; c.href = %%s; d.head.appendChild(c); prompt('', 'gap-iab://%s');})(document)", callbackContext.getCallbackId());
- } else {
- jsWrapper = "(function(d) { var c = d.createElement('link'); c.rel='stylesheet'; c.type='text/css'; c.href = %s; d.head.appendChild(c); })(document)";
- }
- injectDeferredObject(args.getString(0), jsWrapper);
- }
- else if (action.equals("show")) {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- dialog.show();
- }
- });
- PluginResult pluginResult = new PluginResult(PluginResult.Status.OK);
- pluginResult.setKeepCallback(true);
- this.callbackContext.sendPluginResult(pluginResult);
- }
- else {
- return false;
- }
- return true;
- }
-
- /**
- * Called when the view navigates.
- */
- @Override
- public void onReset() {
- closeDialog();
- }
-
- /**
- * Called when the system is about to start resuming a previous activity.
- */
- @Override
- public void onPause(boolean multitasking) {
- if (shouldPauseInAppBrowser) {
- inAppWebView.onPause();
- }
- }
-
- /**
- * Called when the activity will start interacting with the user.
- */
- @Override
- public void onResume(boolean multitasking) {
- if (shouldPauseInAppBrowser) {
- inAppWebView.onResume();
- }
- }
-
- /**
- * Called by AccelBroker when listener is to be shut down.
- * Stop listener.
- */
- public void onDestroy() {
- closeDialog();
- }
-
- /**
- * Inject an object (script or style) into the InAppBrowser WebView.
- *
- * This is a helper method for the inject{Script|Style}{Code|File} API calls, which
- * provides a consistent method for injecting JavaScript code into the document.
- *
- * If a wrapper string is supplied, then the source string will be JSON-encoded (adding
- * quotes) and wrapped using string formatting. (The wrapper string should have a single
- * '%s' marker)
- *
- * @param source The source object (filename or script/style text) to inject into
- * the document.
- * @param jsWrapper A JavaScript string to wrap the source string in, so that the object
- * is properly injected, or null if the source string is JavaScript text
- * which should be executed directly.
- */
- private void injectDeferredObject(String source, String jsWrapper) {
- String scriptToInject;
- if (jsWrapper != null) {
- org.json.JSONArray jsonEsc = new org.json.JSONArray();
- jsonEsc.put(source);
- String jsonRepr = jsonEsc.toString();
- String jsonSourceString = jsonRepr.substring(1, jsonRepr.length()-1);
- scriptToInject = String.format(jsWrapper, jsonSourceString);
- } else {
- scriptToInject = source;
- }
- final String finalScriptToInject = scriptToInject;
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @SuppressLint("NewApi")
- @Override
- public void run() {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
- // This action will have the side-effect of blurring the currently focused element
- inAppWebView.loadUrl("javascript:" + finalScriptToInject);
- } else {
- inAppWebView.evaluateJavascript(finalScriptToInject, null);
- }
- }
- });
- }
-
- /**
- * Put the list of features into a hash map
- *
- * @param optString
- * @return
- */
- private HashMap<String, Boolean> parseFeature(String optString) {
- if (optString.equals(NULL)) {
- return null;
- } else {
- HashMap<String, Boolean> map = new HashMap<String, Boolean>();
- StringTokenizer features = new StringTokenizer(optString, ",");
- StringTokenizer option;
- while(features.hasMoreElements()) {
- option = new StringTokenizer(features.nextToken(), "=");
- if (option.hasMoreElements()) {
- String key = option.nextToken();
- Boolean value = option.nextToken().equals("no") ? Boolean.FALSE : Boolean.TRUE;
- map.put(key, value);
- }
- }
- return map;
- }
- }
-
- /**
- * Display a new browser with the specified URL.
- *
- * @param url the url to load.
- * @return "" if ok, or error message.
- */
- public String openExternal(String url) {
- try {
- Intent intent = null;
- intent = new Intent(Intent.ACTION_VIEW);
- // Omitting the MIME type for file: URLs causes "No Activity found to handle Intent".
- // Adding the MIME type to http: URLs causes them to not be handled by the downloader.
- Uri uri = Uri.parse(url);
- if ("file".equals(uri.getScheme())) {
- intent.setDataAndType(uri, webView.getResourceApi().getMimeType(uri));
- } else {
- intent.setData(uri);
- }
- intent.putExtra(Browser.EXTRA_APPLICATION_ID, cordova.getActivity().getPackageName());
- this.cordova.getActivity().startActivity(intent);
- return "";
- } catch (android.content.ActivityNotFoundException e) {
- LOG.d(LOG_TAG, "InAppBrowser: Error loading url "+url+":"+ e.toString());
- return e.toString();
- }
- }
-
- /**
- * Closes the dialog
- */
- public void closeDialog() {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- final WebView childView = inAppWebView;
- // The JS protects against multiple calls, so this should happen only when
- // closeDialog() is called by other native code.
- if (childView == null) {
- return;
- }
-
- childView.setWebViewClient(new WebViewClient() {
- // NB: wait for about:blank before dismissing
- public void onPageFinished(WebView view, String url) {
- if (dialog != null) {
- dialog.dismiss();
- dialog = null;
- }
- }
- });
- // NB: From SDK 19: "If you call methods on WebView from any thread
- // other than your app's UI thread, it can cause unexpected results."
- // http://developer.android.com/guide/webapps/migrating.html#Threads
- childView.loadUrl("about:blank");
-
- try {
- JSONObject obj = new JSONObject();
- obj.put("type", EXIT_EVENT);
- sendUpdate(obj, false);
- } catch (JSONException ex) {
- LOG.d(LOG_TAG, "Should never happen");
- }
- }
- });
- }
-
- /**
- * Checks to see if it is possible to go back one page in history, then does so.
- */
- public void goBack() {
- if (this.inAppWebView.canGoBack()) {
- this.inAppWebView.goBack();
- }
- }
-
- /**
- * Can the web browser go back?
- * @return boolean
- */
- public boolean canGoBack() {
- return this.inAppWebView.canGoBack();
- }
-
- /**
- * Has the user set the hardware back button to go back
- * @return boolean
- */
- public boolean hardwareBack() {
- return hadwareBackButton;
- }
-
- /**
- * Checks to see if it is possible to go forward one page in history, then does so.
- */
- private void goForward() {
- if (this.inAppWebView.canGoForward()) {
- this.inAppWebView.goForward();
- }
- }
-
- /**
- * Navigate to the new page
- *
- * @param url to load
- */
- private void navigate(String url) {
- InputMethodManager imm = (InputMethodManager)this.cordova.getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
- imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
-
- if (!url.startsWith("http") && !url.startsWith("file:")) {
- this.inAppWebView.loadUrl("http://" + url);
- } else {
- this.inAppWebView.loadUrl(url);
- }
- this.inAppWebView.requestFocus();
- }
-
-
- /**
- * Should we show the location bar?
- *
- * @return boolean
- */
- private boolean getShowLocationBar() {
- return this.showLocationBar;
- }
-
- private InAppBrowser getInAppBrowser(){
- return this;
- }
-
- /**
- * Display a new browser with the specified URL.
- *
- * @param url the url to load.
- * @param features jsonObject
- */
- public String showWebPage(final String url, HashMap<String, Boolean> features) {
- // Determine if we should hide the location bar.
- showLocationBar = true;
- showZoomControls = true;
- openWindowHidden = false;
- mediaPlaybackRequiresUserGesture = false;
-
- if (features != null) {
- Boolean show = features.get(LOCATION);
- if (show != null) {
- showLocationBar = show.booleanValue();
- }
- Boolean zoom = features.get(ZOOM);
- if (zoom != null) {
- showZoomControls = zoom.booleanValue();
- }
- Boolean hidden = features.get(HIDDEN);
- if (hidden != null) {
- openWindowHidden = hidden.booleanValue();
- }
- Boolean hardwareBack = features.get(HARDWARE_BACK_BUTTON);
- if (hardwareBack != null) {
- hadwareBackButton = hardwareBack.booleanValue();
- }
- Boolean mediaPlayback = features.get(MEDIA_PLAYBACK_REQUIRES_USER_ACTION);
- if (mediaPlayback != null) {
- mediaPlaybackRequiresUserGesture = mediaPlayback.booleanValue();
- }
- Boolean cache = features.get(CLEAR_ALL_CACHE);
- if (cache != null) {
- clearAllCache = cache.booleanValue();
- } else {
- cache = features.get(CLEAR_SESSION_CACHE);
- if (cache != null) {
- clearSessionCache = cache.booleanValue();
- }
- }
- Boolean shouldPause = features.get(SHOULD_PAUSE);
- if (shouldPause != null) {
- shouldPauseInAppBrowser = shouldPause.booleanValue();
- }
- }
-
- final CordovaWebView thatWebView = this.webView;
-
- // Create dialog in new thread
- Runnable runnable = new Runnable() {
- /**
- * Convert our DIP units to Pixels
- *
- * @return int
- */
- private int dpToPixels(int dipValue) {
- int value = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP,
- (float) dipValue,
- cordova.getActivity().getResources().getDisplayMetrics()
- );
-
- return value;
- }
-
- @SuppressLint("NewApi")
- public void run() {
-
- // CB-6702 InAppBrowser hangs when opening more than one instance
- if (dialog != null) {
- dialog.dismiss();
- };
-
- // Let's create the main dialog
- dialog = new InAppBrowserDialog(cordova.getActivity(), android.R.style.Theme_NoTitleBar);
- dialog.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
- dialog.setCancelable(true);
- dialog.setInAppBroswer(getInAppBrowser());
-
- // Main container layout
- LinearLayout main = new LinearLayout(cordova.getActivity());
- main.setOrientation(LinearLayout.VERTICAL);
-
- // Toolbar layout
- RelativeLayout toolbar = new RelativeLayout(cordova.getActivity());
- //Please, no more black!
- toolbar.setBackgroundColor(android.graphics.Color.LTGRAY);
- toolbar.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, this.dpToPixels(44)));
- toolbar.setPadding(this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2));
- toolbar.setHorizontalGravity(Gravity.LEFT);
- toolbar.setVerticalGravity(Gravity.TOP);
-
- // Action Button Container layout
- RelativeLayout actionButtonContainer = new RelativeLayout(cordova.getActivity());
- actionButtonContainer.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
- actionButtonContainer.setHorizontalGravity(Gravity.LEFT);
- actionButtonContainer.setVerticalGravity(Gravity.CENTER_VERTICAL);
- actionButtonContainer.setId(Integer.valueOf(1));
-
- // Back button
- ImageButton back = new ImageButton(cordova.getActivity());
- RelativeLayout.LayoutParams backLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
- backLayoutParams.addRule(RelativeLayout.ALIGN_LEFT);
- back.setLayoutParams(backLayoutParams);
- back.setContentDescription("Back Button");
- back.setId(Integer.valueOf(2));
- Resources activityRes = cordova.getActivity().getResources();
- int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
- Drawable backIcon = activityRes.getDrawable(backResId);
- if (Build.VERSION.SDK_INT >= 16)
- back.setBackground(null);
- else
- back.setBackgroundDrawable(null);
- back.setImageDrawable(backIcon);
- back.setScaleType(ImageView.ScaleType.FIT_CENTER);
- back.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
- if (Build.VERSION.SDK_INT >= 16)
- back.getAdjustViewBounds();
-
- back.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- goBack();
- }
- });
-
- // Forward button
- ImageButton forward = new ImageButton(cordova.getActivity());
- RelativeLayout.LayoutParams forwardLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
- forwardLayoutParams.addRule(RelativeLayout.RIGHT_OF, 2);
- forward.setLayoutParams(forwardLayoutParams);
- forward.setContentDescription("Forward Button");
- forward.setId(Integer.valueOf(3));
- int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
- Drawable fwdIcon = activityRes.getDrawable(fwdResId);
- if (Build.VERSION.SDK_INT >= 16)
- forward.setBackground(null);
- else
- forward.setBackgroundDrawable(null);
- forward.setImageDrawable(fwdIcon);
- forward.setScaleType(ImageView.ScaleType.FIT_CENTER);
- forward.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
- if (Build.VERSION.SDK_INT >= 16)
- forward.getAdjustViewBounds();
-
- forward.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- goForward();
- }
- });
-
- // Edit Text Box
- edittext = new EditText(cordova.getActivity());
- RelativeLayout.LayoutParams textLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- textLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
- textLayoutParams.addRule(RelativeLayout.LEFT_OF, 5);
- edittext.setLayoutParams(textLayoutParams);
- edittext.setId(Integer.valueOf(4));
- edittext.setSingleLine(true);
- edittext.setText(url);
- edittext.setInputType(InputType.TYPE_TEXT_VARIATION_URI);
- edittext.setImeOptions(EditorInfo.IME_ACTION_GO);
- edittext.setInputType(InputType.TYPE_NULL); // Will not except input... Makes the text NON-EDITABLE
- edittext.setOnKeyListener(new View.OnKeyListener() {
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // If the event is a key-down event on the "enter" button
- if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
- navigate(edittext.getText().toString());
- return true;
- }
- return false;
- }
- });
-
- // Close/Done button
- ImageButton close = new ImageButton(cordova.getActivity());
- RelativeLayout.LayoutParams closeLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
- closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
- close.setLayoutParams(closeLayoutParams);
- forward.setContentDescription("Close Button");
- close.setId(Integer.valueOf(5));
- int closeResId = activityRes.getIdentifier("ic_action_remove", "drawable", cordova.getActivity().getPackageName());
- Drawable closeIcon = activityRes.getDrawable(closeResId);
- if (Build.VERSION.SDK_INT >= 16)
- close.setBackground(null);
- else
- close.setBackgroundDrawable(null);
- close.setImageDrawable(closeIcon);
- close.setScaleType(ImageView.ScaleType.FIT_CENTER);
- back.setPadding(0, this.dpToPixels(10), 0, this.dpToPixels(10));
- if (Build.VERSION.SDK_INT >= 16)
- close.getAdjustViewBounds();
-
- close.setOnClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- closeDialog();
- }
- });
-
- // WebView
- inAppWebView = new WebView(cordova.getActivity());
- inAppWebView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
- inAppWebView.setId(Integer.valueOf(6));
- inAppWebView.setWebChromeClient(new InAppChromeClient(thatWebView));
- WebViewClient client = new InAppBrowserClient(thatWebView, edittext);
- inAppWebView.setWebViewClient(client);
- WebSettings settings = inAppWebView.getSettings();
- settings.setJavaScriptEnabled(true);
- settings.setJavaScriptCanOpenWindowsAutomatically(true);
- settings.setBuiltInZoomControls(showZoomControls);
- settings.setPluginState(android.webkit.WebSettings.PluginState.ON);
-
- if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
- settings.setMediaPlaybackRequiresUserGesture(mediaPlaybackRequiresUserGesture);
- }
-
- String overrideUserAgent = preferences.getString("OverrideUserAgent", null);
- String appendUserAgent = preferences.getString("AppendUserAgent", null);
-
- if (overrideUserAgent != null) {
- settings.setUserAgentString(overrideUserAgent);
- }
- if (appendUserAgent != null) {
- settings.setUserAgentString(settings.getUserAgentString() + appendUserAgent);
- }
-
- //Toggle whether this is enabled or not!
- Bundle appSettings = cordova.getActivity().getIntent().getExtras();
- boolean enableDatabase = appSettings == null ? true : appSettings.getBoolean("InAppBrowserStorageEnabled", true);
- if (enableDatabase) {
- String databasePath = cordova.getActivity().getApplicationContext().getDir("inAppBrowserDB", Context.MODE_PRIVATE).getPath();
- settings.setDatabasePath(databasePath);
- settings.setDatabaseEnabled(true);
- }
- settings.setDomStorageEnabled(true);
-
- if (clearAllCache) {
- CookieManager.getInstance().removeAllCookie();
- } else if (clearSessionCache) {
- CookieManager.getInstance().removeSessionCookie();
- }
-
- inAppWebView.loadUrl(url);
- inAppWebView.setId(Integer.valueOf(6));
- inAppWebView.getSettings().setLoadWithOverviewMode(true);
- inAppWebView.getSettings().setUseWideViewPort(true);
- inAppWebView.requestFocus();
- inAppWebView.requestFocusFromTouch();
-
- // Add the back and forward buttons to our action button container layout
- actionButtonContainer.addView(back);
- actionButtonContainer.addView(forward);
-
- // Add the views to our toolbar
- toolbar.addView(actionButtonContainer);
- toolbar.addView(edittext);
- toolbar.addView(close);
-
- // Don't add the toolbar if its been disabled
- if (getShowLocationBar()) {
- // Add our toolbar to our main view/layout
- main.addView(toolbar);
- }
-
- // Add our webview to our main view/layout
- main.addView(inAppWebView);
-
- WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
- lp.copyFrom(dialog.getWindow().getAttributes());
- lp.width = WindowManager.LayoutParams.MATCH_PARENT;
- lp.height = WindowManager.LayoutParams.MATCH_PARENT;
-
- dialog.setContentView(main);
- dialog.show();
- dialog.getWindow().setAttributes(lp);
- // the goal of openhidden is to load the url and not display it
- // Show() needs to be called to cause the URL to be loaded
- if(openWindowHidden) {
- dialog.hide();
- }
- }
- };
- this.cordova.getActivity().runOnUiThread(runnable);
- return "";
- }
-
- /**
- * Create a new plugin success result and send it back to JavaScript
- *
- * @param obj a JSONObject contain event payload information
- */
- private void sendUpdate(JSONObject obj, boolean keepCallback) {
- sendUpdate(obj, keepCallback, PluginResult.Status.OK);
- }
-
- /**
- * Create a new plugin result and send it back to JavaScript
- *
- * @param obj a JSONObject contain event payload information
- * @param status the status code to return to the JavaScript environment
- */
- private void sendUpdate(JSONObject obj, boolean keepCallback, PluginResult.Status status) {
- if (callbackContext != null) {
- PluginResult result = new PluginResult(status, obj);
- result.setKeepCallback(keepCallback);
- callbackContext.sendPluginResult(result);
- if (!keepCallback) {
- callbackContext = null;
- }
- }
- }
-
- /**
- * The webview client receives notifications about appView
- */
- public class InAppBrowserClient extends WebViewClient {
- EditText edittext;
- CordovaWebView webView;
-
- /**
- * Constructor.
- *
- * @param webView
- * @param mEditText
- */
- public InAppBrowserClient(CordovaWebView webView, EditText mEditText) {
- this.webView = webView;
- this.edittext = mEditText;
- }
-
- /**
- * Override the URL that should be loaded
- *
- * This handles a small subset of all the URIs that would be encountered.
- *
- * @param webView
- * @param url
- */
- @Override
- public boolean shouldOverrideUrlLoading(WebView webView, String url) {
- if (url.startsWith(WebView.SCHEME_TEL)) {
- try {
- Intent intent = new Intent(Intent.ACTION_DIAL);
- intent.setData(Uri.parse(url));
- cordova.getActivity().startActivity(intent);
- return true;
- } catch (android.content.ActivityNotFoundException e) {
- LOG.e(LOG_TAG, "Error dialing " + url + ": " + e.toString());
- }
- } else if (url.startsWith("geo:") || url.startsWith(WebView.SCHEME_MAILTO) || url.startsWith("market:") || url.startsWith("intent:")) {
- try {
- Intent intent = new Intent(Intent.ACTION_VIEW);
- intent.setData(Uri.parse(url));
- cordova.getActivity().startActivity(intent);
- return true;
- } catch (android.content.ActivityNotFoundException e) {
- LOG.e(LOG_TAG, "Error with " + url + ": " + e.toString());
- }
- }
- // If sms:5551212?body=This is the message
- else if (url.startsWith("sms:")) {
- try {
- Intent intent = new Intent(Intent.ACTION_VIEW);
-
- // Get address
- String address = null;
- int parmIndex = url.indexOf('?');
- if (parmIndex == -1) {
- address = url.substring(4);
- } else {
- address = url.substring(4, parmIndex);
-
- // If body, then set sms body
- Uri uri = Uri.parse(url);
- String query = uri.getQuery();
- if (query != null) {
- if (query.startsWith("body=")) {
- intent.putExtra("sms_body", query.substring(5));
- }
- }
- }
- intent.setData(Uri.parse("sms:" + address));
- intent.putExtra("address", address);
- intent.setType("vnd.android-dir/mms-sms");
- cordova.getActivity().startActivity(intent);
- return true;
- } catch (android.content.ActivityNotFoundException e) {
- LOG.e(LOG_TAG, "Error sending sms " + url + ":" + e.toString());
- }
- }
- return false;
- }
-
-
- /*
- * onPageStarted fires the LOAD_START_EVENT
- *
- * @param view
- * @param url
- * @param favicon
- */
- @Override
- public void onPageStarted(WebView view, String url, Bitmap favicon) {
- super.onPageStarted(view, url, favicon);
- String newloc = "";
- if (url.startsWith("http:") || url.startsWith("https:") || url.startsWith("file:")) {
- newloc = url;
- }
- else
- {
- // Assume that everything is HTTP at this point, because if we don't specify,
- // it really should be. Complain loudly about this!!!
- LOG.e(LOG_TAG, "Possible Uncaught/Unknown URI");
- newloc = "http://" + url;
- }
-
- // Update the UI if we haven't already
- if (!newloc.equals(edittext.getText().toString())) {
- edittext.setText(newloc);
- }
-
- try {
- JSONObject obj = new JSONObject();
- obj.put("type", LOAD_START_EVENT);
- obj.put("url", newloc);
- sendUpdate(obj, true);
- } catch (JSONException ex) {
- LOG.e(LOG_TAG, "URI passed in has caused a JSON error.");
- }
- }
-
-
-
- public void onPageFinished(WebView view, String url) {
- super.onPageFinished(view, url);
-
- // CB-10395 InAppBrowser's WebView not storing cookies reliable to local device storage
- if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
- CookieManager.getInstance().flush();
- } else {
- CookieSyncManager.getInstance().sync();
- }
-
- try {
- JSONObject obj = new JSONObject();
- obj.put("type", LOAD_STOP_EVENT);
- obj.put("url", url);
-
- sendUpdate(obj, true);
- } catch (JSONException ex) {
- LOG.d(LOG_TAG, "Should never happen");
- }
- }
-
- public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
- super.onReceivedError(view, errorCode, description, failingUrl);
-
- try {
- JSONObject obj = new JSONObject();
- obj.put("type", LOAD_ERROR_EVENT);
- obj.put("url", failingUrl);
- obj.put("code", errorCode);
- obj.put("message", description);
-
- sendUpdate(obj, true, PluginResult.Status.ERROR);
- } catch (JSONException ex) {
- LOG.d(LOG_TAG, "Should never happen");
- }
- }
-
- /**
- * On received http auth request.
- */
- @Override
- public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
-
- // Check if there is some plugin which can resolve this auth challenge
- PluginManager pluginManager = null;
- try {
- Method gpm = webView.getClass().getMethod("getPluginManager");
- pluginManager = (PluginManager)gpm.invoke(webView);
- } catch (NoSuchMethodException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (IllegalAccessException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (InvocationTargetException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
-
- if (pluginManager == null) {
- try {
- Field pmf = webView.getClass().getField("pluginManager");
- pluginManager = (PluginManager)pmf.get(webView);
- } catch (NoSuchFieldException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- } catch (IllegalAccessException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
- }
-
- if (pluginManager != null && pluginManager.onReceivedHttpAuthRequest(webView, new CordovaHttpAuthHandler(handler), host, realm)) {
- return;
- }
-
- // By default handle 401 like we'd normally do!
- super.onReceivedHttpAuthRequest(view, handler, host, realm);
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowserDialog.java b/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowserDialog.java
deleted file mode 100644
index e7b212f2..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppBrowserDialog.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.inappbrowser;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.Context;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-
-/**
- * Created by Oliver on 22/11/2013.
- */
-public class InAppBrowserDialog extends Dialog {
- Context context;
- InAppBrowser inAppBrowser = null;
-
- public InAppBrowserDialog(Context context, int theme) {
- super(context, theme);
- this.context = context;
- }
-
- public void setInAppBroswer(InAppBrowser browser) {
- this.inAppBrowser = browser;
- }
-
- public void onBackPressed () {
- if (this.inAppBrowser == null) {
- this.dismiss();
- } else {
- // better to go through the in inAppBrowser
- // because it does a clean up
- if (this.inAppBrowser.hardwareBack() && this.inAppBrowser.canGoBack()) {
- this.inAppBrowser.goBack();
- } else {
- this.inAppBrowser.closeDialog();
- }
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppChromeClient.java b/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppChromeClient.java
deleted file mode 100644
index a2145e6a..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/inappbrowser/InAppChromeClient.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.inappbrowser;
-
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginResult;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.webkit.JsPromptResult;
-import android.webkit.WebChromeClient;
-import android.webkit.WebStorage;
-import android.webkit.WebView;
-import android.webkit.WebViewClient;
-import android.webkit.GeolocationPermissions.Callback;
-
-public class InAppChromeClient extends WebChromeClient {
-
- private CordovaWebView webView;
- private String LOG_TAG = "InAppChromeClient";
- private long MAX_QUOTA = 100 * 1024 * 1024;
-
- public InAppChromeClient(CordovaWebView webView) {
- super();
- this.webView = webView;
- }
- /**
- * Handle database quota exceeded notification.
- *
- * @param url
- * @param databaseIdentifier
- * @param currentQuota
- * @param estimatedSize
- * @param totalUsedQuota
- * @param quotaUpdater
- */
- @Override
- public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota, long estimatedSize,
- long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater)
- {
- LOG.d(LOG_TAG, "onExceededDatabaseQuota estimatedSize: %d currentQuota: %d totalUsedQuota: %d", estimatedSize, currentQuota, totalUsedQuota);
- quotaUpdater.updateQuota(MAX_QUOTA);
- }
-
- /**
- * Instructs the client to show a prompt to ask the user to set the Geolocation permission state for the specified origin.
- *
- * @param origin
- * @param callback
- */
- @Override
- public void onGeolocationPermissionsShowPrompt(String origin, Callback callback) {
- super.onGeolocationPermissionsShowPrompt(origin, callback);
- callback.invoke(origin, true, false);
- }
-
- /**
- * Tell the client to display a prompt dialog to the user.
- * If the client returns true, WebView will assume that the client will
- * handle the prompt dialog and call the appropriate JsPromptResult method.
- *
- * The prompt bridge provided for the InAppBrowser is capable of executing any
- * oustanding callback belonging to the InAppBrowser plugin. Care has been
- * taken that other callbacks cannot be triggered, and that no other code
- * execution is possible.
- *
- * To trigger the bridge, the prompt default value should be of the form:
- *
- * gap-iab://<callbackId>
- *
- * where <callbackId> is the string id of the callback to trigger (something
- * like "InAppBrowser0123456789")
- *
- * If present, the prompt message is expected to be a JSON-encoded value to
- * pass to the callback. A JSON_EXCEPTION is returned if the JSON is invalid.
- *
- * @param view
- * @param url
- * @param message
- * @param defaultValue
- * @param result
- */
- @Override
- public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
- // See if the prompt string uses the 'gap-iab' protocol. If so, the remainder should be the id of a callback to execute.
- if (defaultValue != null && defaultValue.startsWith("gap")) {
- if(defaultValue.startsWith("gap-iab://")) {
- PluginResult scriptResult;
- String scriptCallbackId = defaultValue.substring(10);
- if (scriptCallbackId.startsWith("InAppBrowser")) {
- if(message == null || message.length() == 0) {
- scriptResult = new PluginResult(PluginResult.Status.OK, new JSONArray());
- } else {
- try {
- scriptResult = new PluginResult(PluginResult.Status.OK, new JSONArray(message));
- } catch(JSONException e) {
- scriptResult = new PluginResult(PluginResult.Status.JSON_EXCEPTION, e.getMessage());
- }
- }
- this.webView.sendPluginResult(scriptResult, scriptCallbackId);
- result.confirm("");
- return true;
- }
- }
- else
- {
- // Anything else with a gap: prefix should get this message
- LOG.w(LOG_TAG, "InAppBrowser does not support Cordova API calls: " + url + " " + defaultValue);
- result.cancel();
- return true;
- }
- }
- return false;
- }
-
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/networkinformation/NetworkManager.java b/StoneIsland/platforms/android/src/org/apache/cordova/networkinformation/NetworkManager.java
deleted file mode 100755
index 614b6e7b..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/networkinformation/NetworkManager.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-package org.apache.cordova.networkinformation;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginResult;
-import org.apache.cordova.CordovaWebView;
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-
-import java.util.Locale;
-
-public class NetworkManager extends CordovaPlugin {
-
- public static int NOT_REACHABLE = 0;
- public static int REACHABLE_VIA_CARRIER_DATA_NETWORK = 1;
- public static int REACHABLE_VIA_WIFI_NETWORK = 2;
-
- public static final String WIFI = "wifi";
- public static final String WIMAX = "wimax";
- // mobile
- public static final String MOBILE = "mobile";
-
- // Android L calls this Cellular, because I have no idea!
- public static final String CELLULAR = "cellular";
- // 2G network types
- public static final String TWO_G = "2g";
- public static final String GSM = "gsm";
- public static final String GPRS = "gprs";
- public static final String EDGE = "edge";
- // 3G network types
- public static final String THREE_G = "3g";
- public static final String CDMA = "cdma";
- public static final String UMTS = "umts";
- public static final String HSPA = "hspa";
- public static final String HSUPA = "hsupa";
- public static final String HSDPA = "hsdpa";
- public static final String ONEXRTT = "1xrtt";
- public static final String EHRPD = "ehrpd";
- // 4G network types
- public static final String FOUR_G = "4g";
- public static final String LTE = "lte";
- public static final String UMB = "umb";
- public static final String HSPA_PLUS = "hspa+";
- // return type
- public static final String TYPE_UNKNOWN = "unknown";
- public static final String TYPE_ETHERNET = "ethernet";
- public static final String TYPE_ETHERNET_SHORT = "eth";
- public static final String TYPE_WIFI = "wifi";
- public static final String TYPE_2G = "2g";
- public static final String TYPE_3G = "3g";
- public static final String TYPE_4G = "4g";
- public static final String TYPE_NONE = "none";
-
- private static final String LOG_TAG = "NetworkManager";
-
- private CallbackContext connectionCallbackContext;
-
- ConnectivityManager sockMan;
- BroadcastReceiver receiver;
- private JSONObject lastInfo = null;
-
- /**
- * Sets the context of the Command. This can then be used to do things like
- * get file paths associated with the Activity.
- *
- * @param cordova The context of the main Activity.
- * @param webView The CordovaWebView Cordova is running in.
- */
- public void initialize(CordovaInterface cordova, CordovaWebView webView) {
- super.initialize(cordova, webView);
- this.sockMan = (ConnectivityManager) cordova.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
- this.connectionCallbackContext = null;
-
- // We need to listen to connectivity events to update navigator.connection
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
- if (this.receiver == null) {
- this.receiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- // (The null check is for the ARM Emulator, please use Intel Emulator for better results)
- if(NetworkManager.this.webView != null)
- updateConnectionInfo(sockMan.getActiveNetworkInfo());
- }
- };
- webView.getContext().registerReceiver(this.receiver, intentFilter);
- }
-
- }
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action The action to execute.
- * @param args JSONArry of arguments for the plugin.
- * @param callbackContext The callback id used when calling back into JavaScript.
- * @return True if the action was valid, false otherwise.
- */
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
- if (action.equals("getConnectionInfo")) {
- this.connectionCallbackContext = callbackContext;
- NetworkInfo info = sockMan.getActiveNetworkInfo();
- String connectionType = "";
- try {
- connectionType = this.getConnectionInfo(info).get("type").toString();
- } catch (JSONException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
-
- PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, connectionType);
- pluginResult.setKeepCallback(true);
- callbackContext.sendPluginResult(pluginResult);
- return true;
- }
- return false;
- }
-
- /**
- * Stop network receiver.
- */
- public void onDestroy() {
- if (this.receiver != null) {
- try {
- webView.getContext().unregisterReceiver(this.receiver);
- } catch (Exception e) {
- LOG.e(LOG_TAG, "Error unregistering network receiver: " + e.getMessage(), e);
- } finally {
- receiver = null;
- }
- }
- }
-
- //--------------------------------------------------------------------------
- // LOCAL METHODS
- //--------------------------------------------------------------------------
-
- /**
- * Updates the JavaScript side whenever the connection changes
- *
- * @param info the current active network info
- * @return
- */
- private void updateConnectionInfo(NetworkInfo info) {
- // send update to javascript "navigator.network.connection"
- // Jellybean sends its own info
- JSONObject thisInfo = this.getConnectionInfo(info);
- if(!thisInfo.equals(lastInfo))
- {
- String connectionType = "";
- try {
- connectionType = thisInfo.get("type").toString();
- } catch (JSONException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
-
- sendUpdate(connectionType);
- lastInfo = thisInfo;
- }
- }
-
- /**
- * Get the latest network connection information
- *
- * @param info the current active network info
- * @return a JSONObject that represents the network info
- */
- private JSONObject getConnectionInfo(NetworkInfo info) {
- String type = TYPE_NONE;
- String extraInfo = "";
- if (info != null) {
- // If we are not connected to any network set type to none
- if (!info.isConnected()) {
- type = TYPE_NONE;
- }
- else {
- type = getType(info);
- }
- extraInfo = info.getExtraInfo();
- }
-
- LOG.d(LOG_TAG, "Connection Type: " + type);
- LOG.d(LOG_TAG, "Connection Extra Info: " + extraInfo);
-
- JSONObject connectionInfo = new JSONObject();
-
- try {
- connectionInfo.put("type", type);
- connectionInfo.put("extraInfo", extraInfo);
- } catch (JSONException e) {
- LOG.d(LOG_TAG, e.getLocalizedMessage());
- }
-
- return connectionInfo;
- }
-
- /**
- * Create a new plugin result and send it back to JavaScript
- *
- * @param connection the network info to set as navigator.connection
- */
- private void sendUpdate(String type) {
- if (connectionCallbackContext != null) {
- PluginResult result = new PluginResult(PluginResult.Status.OK, type);
- result.setKeepCallback(true);
- connectionCallbackContext.sendPluginResult(result);
- }
- webView.postMessage("networkconnection", type);
- }
-
- /**
- * Determine the type of connection
- *
- * @param info the network info so we can determine connection type.
- * @return the type of mobile network we are on
- */
- private String getType(NetworkInfo info) {
- if (info != null) {
- String type = info.getTypeName().toLowerCase(Locale.US);
-
- LOG.d(LOG_TAG, "toLower : " + type.toLowerCase());
- LOG.d(LOG_TAG, "wifi : " + WIFI);
- if (type.equals(WIFI)) {
- return TYPE_WIFI;
- }
- else if (type.toLowerCase().equals(TYPE_ETHERNET) || type.toLowerCase().startsWith(TYPE_ETHERNET_SHORT)) {
- return TYPE_ETHERNET;
- }
- else if (type.equals(MOBILE) || type.equals(CELLULAR)) {
- type = info.getSubtypeName().toLowerCase(Locale.US);
- if (type.equals(GSM) ||
- type.equals(GPRS) ||
- type.equals(EDGE) ||
- type.equals(TWO_G)) {
- return TYPE_2G;
- }
- else if (type.startsWith(CDMA) ||
- type.equals(UMTS) ||
- type.equals(ONEXRTT) ||
- type.equals(EHRPD) ||
- type.equals(HSUPA) ||
- type.equals(HSDPA) ||
- type.equals(HSPA) ||
- type.equals(THREE_G)) {
- return TYPE_3G;
- }
- else if (type.equals(LTE) ||
- type.equals(UMB) ||
- type.equals(HSPA_PLUS) ||
- type.equals(FOUR_G)) {
- return TYPE_4G;
- }
- }
- }
- else {
- return TYPE_NONE;
- }
- return TYPE_UNKNOWN;
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/splashscreen/SplashScreen.java b/StoneIsland/platforms/android/src/org/apache/cordova/splashscreen/SplashScreen.java
deleted file mode 100644
index 14b63790..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/splashscreen/SplashScreen.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova.splashscreen;
-
-import android.app.Dialog;
-import android.app.ProgressDialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.res.Configuration;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Handler;
-import android.view.Display;
-import android.view.Gravity;
-import android.view.View;
-import android.view.ViewGroup.LayoutParams;
-import android.view.WindowManager;
-import android.view.animation.Animation;
-import android.view.animation.AlphaAnimation;
-import android.view.animation.DecelerateInterpolator;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.ProgressBar;
-import android.widget.RelativeLayout;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.json.JSONArray;
-import org.json.JSONException;
-
-public class SplashScreen extends CordovaPlugin {
- private static final String LOG_TAG = "SplashScreen";
- // Cordova 3.x.x has a copy of this plugin bundled with it (SplashScreenInternal.java).
- // Enable functionality only if running on 4.x.x.
- private static final boolean HAS_BUILT_IN_SPLASH_SCREEN = Integer.valueOf(CordovaWebView.CORDOVA_VERSION.split("\\.")[0]) < 4;
- private static final int DEFAULT_SPLASHSCREEN_DURATION = 3000;
- private static final int DEFAULT_FADE_DURATION = 500;
- private static Dialog splashDialog;
- private static ProgressDialog spinnerDialog;
- private static boolean firstShow = true;
- private static boolean lastHideAfterDelay; // https://issues.apache.org/jira/browse/CB-9094
-
- /**
- * Displays the splash drawable.
- */
- private ImageView splashImageView;
-
- /**
- * Remember last device orientation to detect orientation changes.
- */
- private int orientation;
-
- // Helper to be compile-time compatible with both Cordova 3.x and 4.x.
- private View getView() {
- try {
- return (View)webView.getClass().getMethod("getView").invoke(webView);
- } catch (Exception e) {
- return (View)webView;
- }
- }
-
- @Override
- protected void pluginInitialize() {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return;
- }
- // Make WebView invisible while loading URL
- // CB-11326 Ensure we're calling this on UI thread
- cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- getView().setVisibility(View.INVISIBLE);
- }
- });
- int drawableId = preferences.getInteger("SplashDrawableId", 0);
- if (drawableId == 0) {
- String splashResource = preferences.getString("SplashScreen", "screen");
- if (splashResource != null) {
- drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getClass().getPackage().getName());
- if (drawableId == 0) {
- drawableId = cordova.getActivity().getResources().getIdentifier(splashResource, "drawable", cordova.getActivity().getPackageName());
- }
- preferences.set("SplashDrawableId", drawableId);
- }
- }
-
- // Save initial orientation.
- orientation = cordova.getActivity().getResources().getConfiguration().orientation;
-
- if (firstShow) {
- boolean autoHide = preferences.getBoolean("AutoHideSplashScreen", true);
- showSplashScreen(autoHide);
- }
-
- if (preferences.getBoolean("SplashShowOnlyFirstTime", true)) {
- firstShow = false;
- }
- }
-
- /**
- * Shorter way to check value of "SplashMaintainAspectRatio" preference.
- */
- private boolean isMaintainAspectRatio () {
- return preferences.getBoolean("SplashMaintainAspectRatio", false);
- }
-
- private int getFadeDuration () {
- int fadeSplashScreenDuration = preferences.getBoolean("FadeSplashScreen", true) ?
- preferences.getInteger("FadeSplashScreenDuration", DEFAULT_FADE_DURATION) : 0;
-
- if (fadeSplashScreenDuration < 30) {
- // [CB-9750] This value used to be in decimal seconds, so we will assume that if someone specifies 10
- // they mean 10 seconds, and not the meaningless 10ms
- fadeSplashScreenDuration *= 1000;
- }
-
- return fadeSplashScreenDuration;
- }
-
- @Override
- public void onPause(boolean multitasking) {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return;
- }
- // hide the splash screen to avoid leaking a window
- this.removeSplashScreen(true);
- }
-
- @Override
- public void onDestroy() {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return;
- }
- // hide the splash screen to avoid leaking a window
- this.removeSplashScreen(true);
- // If we set this to true onDestroy, we lose track when we go from page to page!
- //firstShow = true;
- }
-
- @Override
- public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
- if (action.equals("hide")) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.postMessage("splashscreen", "hide");
- }
- });
- } else if (action.equals("show")) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- webView.postMessage("splashscreen", "show");
- }
- });
- } else {
- return false;
- }
-
- callbackContext.success();
- return true;
- }
-
- @Override
- public Object onMessage(String id, Object data) {
- if (HAS_BUILT_IN_SPLASH_SCREEN) {
- return null;
- }
- if ("splashscreen".equals(id)) {
- if ("hide".equals(data.toString())) {
- this.removeSplashScreen(false);
- } else {
- this.showSplashScreen(false);
- }
- } else if ("spinner".equals(id)) {
- if ("stop".equals(data.toString())) {
- getView().setVisibility(View.VISIBLE);
- }
- } else if ("onReceivedError".equals(id)) {
- this.spinnerStop();
- }
- return null;
- }
-
- // Don't add @Override so that plugin still compiles on 3.x.x for a while
- public void onConfigurationChanged(Configuration newConfig) {
- if (newConfig.orientation != orientation) {
- orientation = newConfig.orientation;
-
- // Splash drawable may change with orientation, so reload it.
- if (splashImageView != null) {
- int drawableId = preferences.getInteger("SplashDrawableId", 0);
- if (drawableId != 0) {
- splashImageView.setImageDrawable(cordova.getActivity().getResources().getDrawable(drawableId));
- }
- }
- }
- }
-
- private void removeSplashScreen(final boolean forceHideImmediately) {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- if (splashDialog != null && splashDialog.isShowing()) {
- final int fadeSplashScreenDuration = getFadeDuration();
- // CB-10692 If the plugin is being paused/destroyed, skip the fading and hide it immediately
- if (fadeSplashScreenDuration > 0 && forceHideImmediately == false) {
- AlphaAnimation fadeOut = new AlphaAnimation(1, 0);
- fadeOut.setInterpolator(new DecelerateInterpolator());
- fadeOut.setDuration(fadeSplashScreenDuration);
-
- splashImageView.setAnimation(fadeOut);
- splashImageView.startAnimation(fadeOut);
-
- fadeOut.setAnimationListener(new Animation.AnimationListener() {
- @Override
- public void onAnimationStart(Animation animation) {
- spinnerStop();
- }
-
- @Override
- public void onAnimationEnd(Animation animation) {
- if (splashDialog != null && splashDialog.isShowing()) {
- splashDialog.dismiss();
- splashDialog = null;
- splashImageView = null;
- }
- }
-
- @Override
- public void onAnimationRepeat(Animation animation) {
- }
- });
- } else {
- spinnerStop();
- splashDialog.dismiss();
- splashDialog = null;
- splashImageView = null;
- }
- }
- }
- });
- }
-
- /**
- * Shows the splash screen over the full Activity
- */
- @SuppressWarnings("deprecation")
- private void showSplashScreen(final boolean hideAfterDelay) {
- final int splashscreenTime = preferences.getInteger("SplashScreenDelay", DEFAULT_SPLASHSCREEN_DURATION);
- final int drawableId = preferences.getInteger("SplashDrawableId", 0);
-
- final int fadeSplashScreenDuration = getFadeDuration();
- final int effectiveSplashDuration = Math.max(0, splashscreenTime - fadeSplashScreenDuration);
-
- lastHideAfterDelay = hideAfterDelay;
-
- // If the splash dialog is showing don't try to show it again
- if (splashDialog != null && splashDialog.isShowing()) {
- return;
- }
- if (drawableId == 0 || (splashscreenTime <= 0 && hideAfterDelay)) {
- return;
- }
-
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- // Get reference to display
- Display display = cordova.getActivity().getWindowManager().getDefaultDisplay();
- Context context = webView.getContext();
-
- // Use an ImageView to render the image because of its flexible scaling options.
- splashImageView = new ImageView(context);
- splashImageView.setImageResource(drawableId);
- LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
- splashImageView.setLayoutParams(layoutParams);
-
- splashImageView.setMinimumHeight(display.getHeight());
- splashImageView.setMinimumWidth(display.getWidth());
-
- // TODO: Use the background color of the webView's parent instead of using the preference.
- splashImageView.setBackgroundColor(preferences.getInteger("backgroundColor", Color.BLACK));
-
- if (isMaintainAspectRatio()) {
- // CENTER_CROP scale mode is equivalent to CSS "background-size:cover"
- splashImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
- }
- else {
- // FIT_XY scales image non-uniformly to fit into image view.
- splashImageView.setScaleType(ImageView.ScaleType.FIT_XY);
- }
-
- // Create and show the dialog
- splashDialog = new Dialog(context, android.R.style.Theme_Translucent_NoTitleBar);
- // check to see if the splash screen should be full screen
- if ((cordova.getActivity().getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN)
- == WindowManager.LayoutParams.FLAG_FULLSCREEN) {
- splashDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- splashDialog.setContentView(splashImageView);
- splashDialog.setCancelable(false);
- splashDialog.show();
-
- if (preferences.getBoolean("ShowSplashScreenSpinner", true)) {
- spinnerStart();
- }
-
- // Set Runnable to remove splash screen just in case
- if (hideAfterDelay) {
- final Handler handler = new Handler();
- handler.postDelayed(new Runnable() {
- public void run() {
- if (lastHideAfterDelay) {
- removeSplashScreen(false);
- }
- }
- }, effectiveSplashDuration);
- }
- }
- });
- }
-
- // Show only spinner in the center of the screen
- private void spinnerStart() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- spinnerStop();
-
- spinnerDialog = new ProgressDialog(webView.getContext());
- spinnerDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
- public void onCancel(DialogInterface dialog) {
- spinnerDialog = null;
- }
- });
-
- spinnerDialog.setCancelable(false);
- spinnerDialog.setIndeterminate(true);
-
- RelativeLayout centeredLayout = new RelativeLayout(cordova.getActivity());
- centeredLayout.setGravity(Gravity.CENTER);
- centeredLayout.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
-
- ProgressBar progressBar = new ProgressBar(webView.getContext());
- RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
- layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
- progressBar.setLayoutParams(layoutParams);
-
- centeredLayout.addView(progressBar);
-
- spinnerDialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
- spinnerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
-
- spinnerDialog.show();
- spinnerDialog.setContentView(centeredLayout);
- }
- });
- }
-
- private void spinnerStop() {
- cordova.getActivity().runOnUiThread(new Runnable() {
- public void run() {
- if (spinnerDialog != null && spinnerDialog.isShowing()) {
- spinnerDialog.dismiss();
- spinnerDialog = null;
- }
- }
- });
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/statusbar/StatusBar.java b/StoneIsland/platforms/android/src/org/apache/cordova/statusbar/StatusBar.java
deleted file mode 100644
index 7b4d946a..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/statusbar/StatusBar.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
-*/
-package org.apache.cordova.statusbar;
-
-import android.app.Activity;
-import android.graphics.Color;
-import android.os.Build;
-import android.view.View;
-import android.view.Window;
-import android.view.WindowManager;
-
-import org.apache.cordova.CallbackContext;
-import org.apache.cordova.CordovaArgs;
-import org.apache.cordova.CordovaInterface;
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.CordovaWebView;
-import org.apache.cordova.LOG;
-import org.apache.cordova.PluginResult;
-import org.json.JSONException;
-
-public class StatusBar extends CordovaPlugin {
- private static final String TAG = "StatusBar";
-
- /**
- * Sets the context of the Command. This can then be used to do things like
- * get file paths associated with the Activity.
- *
- * @param cordova The context of the main Activity.
- * @param webView The CordovaWebView Cordova is running in.
- */
- @Override
- public void initialize(final CordovaInterface cordova, CordovaWebView webView) {
- LOG.v(TAG, "StatusBar: initialization");
- super.initialize(cordova, webView);
-
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // Clear flag FLAG_FORCE_NOT_FULLSCREEN which is set initially
- // by the Cordova.
- Window window = cordova.getActivity().getWindow();
- window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
-
- // Read 'StatusBarBackgroundColor' from config.xml, default is #000000.
- setStatusBarBackgroundColor(preferences.getString("StatusBarBackgroundColor", "#000000"));
- }
- });
- }
-
- /**
- * Executes the request and returns PluginResult.
- *
- * @param action The action to execute.
- * @param args JSONArry of arguments for the plugin.
- * @param callbackContext The callback id used when calling back into JavaScript.
- * @return True if the action was valid, false otherwise.
- */
- @Override
- public boolean execute(final String action, final CordovaArgs args, final CallbackContext callbackContext) throws JSONException {
- LOG.v(TAG, "Executing action: " + action);
- final Activity activity = this.cordova.getActivity();
- final Window window = activity.getWindow();
-
- if ("_ready".equals(action)) {
- boolean statusBarVisible = (window.getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == 0;
- callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, statusBarVisible));
- return true;
- }
-
- if ("show".equals(action)) {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // SYSTEM_UI_FLAG_FULLSCREEN is available since JellyBean, but we
- // use KitKat here to be aligned with "Fullscreen" preference
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- int uiOptions = window.getDecorView().getSystemUiVisibility();
- uiOptions &= ~View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
- uiOptions &= ~View.SYSTEM_UI_FLAG_FULLSCREEN;
-
- window.getDecorView().setSystemUiVisibility(uiOptions);
- }
-
- // CB-11197 We still need to update LayoutParams to force status bar
- // to be hidden when entering e.g. text fields
- window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- });
- return true;
- }
-
- if ("hide".equals(action)) {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- // SYSTEM_UI_FLAG_FULLSCREEN is available since JellyBean, but we
- // use KitKat here to be aligned with "Fullscreen" preference
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- int uiOptions = window.getDecorView().getSystemUiVisibility()
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
- | View.SYSTEM_UI_FLAG_FULLSCREEN;
-
- window.getDecorView().setSystemUiVisibility(uiOptions);
- }
-
- // CB-11197 We still need to update LayoutParams to force status bar
- // to be hidden when entering e.g. text fields
- window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- }
- });
- return true;
- }
-
- if ("backgroundColorByHexString".equals(action)) {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- try {
- setStatusBarBackgroundColor(args.getString(0));
- } catch (JSONException ignore) {
- LOG.e(TAG, "Invalid hexString argument, use f.i. '#777777'");
- }
- }
- });
- return true;
- }
-
- if ("overlaysWebView".equals(action)) {
- if (Build.VERSION.SDK_INT >= 21) {
- this.cordova.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- try {
- setStatusBarTransparent(args.getBoolean(0));
- } catch (JSONException ignore) {
- LOG.e(TAG, "Invalid boolean argument");
- }
- }
- });
- return true;
- }
- else return args.getBoolean(0) == false;
- }
-
- return false;
- }
-
- private void setStatusBarBackgroundColor(final String colorPref) {
- if (Build.VERSION.SDK_INT >= 21) {
- if (colorPref != null && !colorPref.isEmpty()) {
- final Window window = cordova.getActivity().getWindow();
- // Method and constants not available on all SDKs but we want to be able to compile this code with any SDK
- window.clearFlags(0x04000000); // SDK 19: WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- window.addFlags(0x80000000); // SDK 21: WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- try {
- // Using reflection makes sure any 5.0+ device will work without having to compile with SDK level 21
- window.getClass().getMethod("setStatusBarColor", int.class).invoke(window, Color.parseColor(colorPref));
- } catch (IllegalArgumentException ignore) {
- LOG.e(TAG, "Invalid hexString argument, use f.i. '#999999'");
- } catch (Exception ignore) {
- // this should not happen, only in case Android removes this method in a version > 21
- LOG.w(TAG, "Method window.setStatusBarColor not found for SDK level " + Build.VERSION.SDK_INT);
- }
- }
- }
- }
-
- private void setStatusBarTransparent(final boolean transparent) {
- if (Build.VERSION.SDK_INT >= 21) {
- final Window window = cordova.getActivity().getWindow();
- if (transparent) {
- window.getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
- window.setStatusBarColor(Color.TRANSPARENT);
- }
- else {
- window.getDecorView().setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
- | View.SYSTEM_UI_FLAG_VISIBLE);
- }
- }
- }
-}
diff --git a/StoneIsland/platforms/android/src/org/apache/cordova/whitelist/WhitelistPlugin.java b/StoneIsland/platforms/android/src/org/apache/cordova/whitelist/WhitelistPlugin.java
deleted file mode 100644
index 36567886..00000000
--- a/StoneIsland/platforms/android/src/org/apache/cordova/whitelist/WhitelistPlugin.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-*/
-
-package org.apache.cordova.whitelist;
-
-import org.apache.cordova.CordovaPlugin;
-import org.apache.cordova.ConfigXmlParser;
-import org.apache.cordova.LOG;
-import org.apache.cordova.Whitelist;
-import org.xmlpull.v1.XmlPullParser;
-
-import android.content.Context;
-
-public class WhitelistPlugin extends CordovaPlugin {
- private static final String LOG_TAG = "WhitelistPlugin";
- private Whitelist allowedNavigations;
- private Whitelist allowedIntents;
- private Whitelist allowedRequests;
-
- // Used when instantiated via reflection by PluginManager
- public WhitelistPlugin() {
- }
- // These can be used by embedders to allow Java-configuration of whitelists.
- public WhitelistPlugin(Context context) {
- this(new Whitelist(), new Whitelist(), null);
- new CustomConfigXmlParser().parse(context);
- }
- public WhitelistPlugin(XmlPullParser xmlParser) {
- this(new Whitelist(), new Whitelist(), null);
- new CustomConfigXmlParser().parse(xmlParser);
- }
- public WhitelistPlugin(Whitelist allowedNavigations, Whitelist allowedIntents, Whitelist allowedRequests) {
- if (allowedRequests == null) {
- allowedRequests = new Whitelist();
- allowedRequests.addWhiteListEntry("file:///*", false);
- allowedRequests.addWhiteListEntry("data:*", false);
- }
- this.allowedNavigations = allowedNavigations;
- this.allowedIntents = allowedIntents;
- this.allowedRequests = allowedRequests;
- }
- @Override
- public void pluginInitialize() {
- if (allowedNavigations == null) {
- allowedNavigations = new Whitelist();
- allowedIntents = new Whitelist();
- allowedRequests = new Whitelist();
- new CustomConfigXmlParser().parse(webView.getContext());
- }
- }
-
- private class CustomConfigXmlParser extends ConfigXmlParser {
- @Override
- public void handleStartTag(XmlPullParser xml) {
- String strNode = xml.getName();
- if (strNode.equals("content")) {
- String startPage = xml.getAttributeValue(null, "src");
- allowedNavigations.addWhiteListEntry(startPage, false);
- } else if (strNode.equals("allow-navigation")) {
- String origin = xml.getAttributeValue(null, "href");
- if ("*".equals(origin)) {
- allowedNavigations.addWhiteListEntry("http://*/*", false);
- allowedNavigations.addWhiteListEntry("https://*/*", false);
- allowedNavigations.addWhiteListEntry("data:*", false);
- } else {
- allowedNavigations.addWhiteListEntry(origin, false);
- }
- } else if (strNode.equals("allow-intent")) {
- String origin = xml.getAttributeValue(null, "href");
- allowedIntents.addWhiteListEntry(origin, false);
- } else if (strNode.equals("access")) {
- String origin = xml.getAttributeValue(null, "origin");
- String subdomains = xml.getAttributeValue(null, "subdomains");
- boolean external = (xml.getAttributeValue(null, "launch-external") != null);
- if (origin != null) {
- if (external) {
- LOG.w(LOG_TAG, "Found <access launch-external> within config.xml. Please use <allow-intent> instead.");
- allowedIntents.addWhiteListEntry(origin, (subdomains != null) && (subdomains.compareToIgnoreCase("true") == 0));
- } else {
- if ("*".equals(origin)) {
- allowedRequests.addWhiteListEntry("http://*/*", false);
- allowedRequests.addWhiteListEntry("https://*/*", false);
- } else {
- allowedRequests.addWhiteListEntry(origin, (subdomains != null) && (subdomains.compareToIgnoreCase("true") == 0));
- }
- }
- }
- }
- }
- @Override
- public void handleEndTag(XmlPullParser xml) {
- }
- }
-
- @Override
- public Boolean shouldAllowNavigation(String url) {
- if (allowedNavigations.isUrlWhiteListed(url)) {
- return true;
- }
- return null; // Default policy
- }
-
- @Override
- public Boolean shouldAllowRequest(String url) {
- if (Boolean.TRUE == shouldAllowNavigation(url)) {
- return true;
- }
- if (allowedRequests.isUrlWhiteListed(url)) {
- return true;
- }
- return null; // Default policy
- }
-
- @Override
- public Boolean shouldOpenExternalUrl(String url) {
- if (allowedIntents.isUrlWhiteListed(url)) {
- return true;
- }
- return null; // Default policy
- }
-
- public Whitelist getAllowedNavigations() {
- return allowedNavigations;
- }
-
- public void setAllowedNavigations(Whitelist allowedNavigations) {
- this.allowedNavigations = allowedNavigations;
- }
-
- public Whitelist getAllowedIntents() {
- return allowedIntents;
- }
-
- public void setAllowedIntents(Whitelist allowedIntents) {
- this.allowedIntents = allowedIntents;
- }
-
- public Whitelist getAllowedRequests() {
- return allowedRequests;
- }
-
- public void setAllowedRequests(Whitelist allowedRequests) {
- this.allowedRequests = allowedRequests;
- }
-}
diff --git a/StoneIsland/platforms/android/src/us/okfoc/stoneisland/MainActivity.java b/StoneIsland/platforms/android/src/us/okfoc/stoneisland/MainActivity.java
deleted file mode 100755
index f7a7bc56..00000000
--- a/StoneIsland/platforms/android/src/us/okfoc/stoneisland/MainActivity.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- */
-
-package us.okfoc.stoneisland;
-
-import android.os.Bundle;
-import org.apache.cordova.*;
-
-public class MainActivity extends CordovaActivity
-{
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- // Set by <content src="index.html" /> in config.xml
- loadUrl(launchUrl);
- }
-}
diff --git a/StoneIsland/platforms/android/wrapper.gradle b/StoneIsland/platforms/android/wrapper.gradle
deleted file mode 100644
index d7ebabd7..00000000
--- a/StoneIsland/platforms/android/wrapper.gradle
+++ /dev/null
@@ -1 +0,0 @@
-//This file is intentionally just a comment