You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by jo...@apache.org on 2026/07/01 15:10:23 UTC
(zeppelin-site) branch asf-site updated: Remove external resource loads from site docs (#73)
This is an automated email from the ASF dual-hosted git repository.
jongyoul pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/zeppelin-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new f77d66cf3 Remove external resource loads from site docs (#73)
f77d66cf3 is described below
commit f77d66cf3e6f0cbc558f6255ae459492b6f9766c
Author: Jongyoul Lee <jo...@gmail.com>
AuthorDate: Thu Jul 2 00:10:18 2026 +0900
Remove external resource loads from site docs (#73)
---
_includes/themes/zeppelin/default.html | 17 +-
assets/themes/fonts/fontawesome-webfont.woff2 | Bin 0 -> 77160 bytes
assets/themes/fonts/material-icons.ttf | Bin 0 -> 356840 bytes
assets/themes/zeppelin/angular.min.js | 251 +
.../themes/zeppelin/css/fonts/PatuaOne-Regular.ttf | Bin 0 -> 33876 bytes
assets/themes/zeppelin/css/style.css | 10 +-
assets/themes/zeppelin/font-awesome.min.css | 4 +
assets/themes/zeppelin/icon.css | 20 +
assets/themes/zeppelin/jquery-1.10.2.min.js | 6 +
assets/themes/zeppelin/js/medium.controller.js | 8 +-
assets/themes/zeppelin/ui-bootstrap-tpls-2.5.0.js | 7776 ++++++++++++++++++++
docs/0.10.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.10.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.10.0/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.10.0/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.10.0/index.html | 10 +-
docs/0.10.0/interpreter/alluxio.html | 10 +-
docs/0.10.0/interpreter/beam.html | 10 +-
docs/0.10.0/interpreter/bigquery.html | 10 +-
docs/0.10.0/interpreter/cassandra.html | 10 +-
docs/0.10.0/interpreter/elasticsearch.html | 10 +-
docs/0.10.0/interpreter/flink.html | 10 +-
docs/0.10.0/interpreter/geode.html | 12 +-
docs/0.10.0/interpreter/groovy.html | 10 +-
docs/0.10.0/interpreter/hazelcastjet.html | 10 +-
docs/0.10.0/interpreter/hbase.html | 10 +-
docs/0.10.0/interpreter/hdfs.html | 10 +-
docs/0.10.0/interpreter/hive.html | 10 +-
docs/0.10.0/interpreter/ignite.html | 10 +-
docs/0.10.0/interpreter/influxdb.html | 10 +-
docs/0.10.0/interpreter/java.html | 10 +-
docs/0.10.0/interpreter/jdbc.html | 10 +-
docs/0.10.0/interpreter/jupyter.html | 10 +-
docs/0.10.0/interpreter/kotlin.html | 10 +-
docs/0.10.0/interpreter/ksql.html | 10 +-
docs/0.10.0/interpreter/kylin.html | 10 +-
docs/0.10.0/interpreter/lens.html | 10 +-
docs/0.10.0/interpreter/livy.html | 10 +-
docs/0.10.0/interpreter/mahout.html | 10 +-
docs/0.10.0/interpreter/markdown.html | 10 +-
docs/0.10.0/interpreter/mongodb.html | 10 +-
docs/0.10.0/interpreter/neo4j.html | 10 +-
docs/0.10.0/interpreter/pig.html | 10 +-
docs/0.10.0/interpreter/postgresql.html | 10 +-
docs/0.10.0/interpreter/python.html | 10 +-
docs/0.10.0/interpreter/r.html | 10 +-
docs/0.10.0/interpreter/sap.html | 10 +-
docs/0.10.0/interpreter/scalding.html | 10 +-
docs/0.10.0/interpreter/scio.html | 10 +-
docs/0.10.0/interpreter/shell.html | 10 +-
docs/0.10.0/interpreter/spark.html | 10 +-
docs/0.10.0/interpreter/sparql.html | 10 +-
docs/0.10.0/interpreter/submarine.html | 10 +-
docs/0.10.0/pleasecontribute.html | 10 +-
docs/0.10.0/quickstart/docker.html | 10 +-
docs/0.10.0/quickstart/explore_ui.html | 10 +-
docs/0.10.0/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.10.0/quickstart/install.html | 10 +-
docs/0.10.0/quickstart/kubernetes.html | 10 +-
docs/0.10.0/quickstart/python_with_zeppelin.html | 10 +-
docs/0.10.0/quickstart/r_with_zeppelin.html | 10 +-
docs/0.10.0/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.10.0/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.10.0/quickstart/tutorial.html | 10 +-
docs/0.10.0/quickstart/yarn.html | 10 +-
docs/0.10.0/screenshots.html | 10 +-
docs/0.10.0/search.html | 10 +-
docs/0.10.0/setup/basics/hadoop_integration.html | 10 +-
docs/0.10.0/setup/basics/how_to_build.html | 11 +-
docs/0.10.0/setup/basics/multi_user_support.html | 10 +-
docs/0.10.0/setup/basics/systemd.html | 10 +-
docs/0.10.0/setup/deployment/cdh.html | 10 +-
docs/0.10.0/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.10.0/setup/deployment/virtual_machine.html | 10 +-
docs/0.10.0/setup/deployment/yarn_install.html | 10 +-
docs/0.10.0/setup/operation/configuration.html | 10 +-
docs/0.10.0/setup/operation/monitoring.html | 10 +-
docs/0.10.0/setup/operation/proxy_setting.html | 10 +-
docs/0.10.0/setup/operation/trouble_shooting.html | 10 +-
docs/0.10.0/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
docs/0.10.0/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.10.0/usage/display_system/basic.html | 14 +-
docs/0.10.0/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.10.0/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.10.0/usage/interpreter/execution_hooks.html | 10 +-
docs/0.10.0/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.10.0/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.10.0/usage/rest_api/configuration.html | 10 +-
docs/0.10.0/usage/rest_api/credential.html | 10 +-
docs/0.10.0/usage/rest_api/helium.html | 10 +-
docs/0.10.0/usage/rest_api/interpreter.html | 10 +-
docs/0.10.0/usage/rest_api/notebook.html | 10 +-
.../0.10.0/usage/rest_api/notebook_repository.html | 10 +-
docs/0.10.0/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.10.0/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.10.0/usage/zeppelin_sdk/session_api.html | 10 +-
docs/0.10.1/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.10.1/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.10.1/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.10.1/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.10.1/index.html | 10 +-
docs/0.10.1/interpreter/alluxio.html | 10 +-
docs/0.10.1/interpreter/beam.html | 10 +-
docs/0.10.1/interpreter/bigquery.html | 10 +-
docs/0.10.1/interpreter/cassandra.html | 10 +-
docs/0.10.1/interpreter/elasticsearch.html | 10 +-
docs/0.10.1/interpreter/flink.html | 10 +-
docs/0.10.1/interpreter/geode.html | 12 +-
docs/0.10.1/interpreter/groovy.html | 10 +-
docs/0.10.1/interpreter/hazelcastjet.html | 10 +-
docs/0.10.1/interpreter/hbase.html | 10 +-
docs/0.10.1/interpreter/hdfs.html | 10 +-
docs/0.10.1/interpreter/hive.html | 10 +-
docs/0.10.1/interpreter/ignite.html | 10 +-
docs/0.10.1/interpreter/influxdb.html | 10 +-
docs/0.10.1/interpreter/java.html | 10 +-
docs/0.10.1/interpreter/jdbc.html | 10 +-
docs/0.10.1/interpreter/jupyter.html | 10 +-
docs/0.10.1/interpreter/kotlin.html | 10 +-
docs/0.10.1/interpreter/ksql.html | 10 +-
docs/0.10.1/interpreter/kylin.html | 10 +-
docs/0.10.1/interpreter/lens.html | 10 +-
docs/0.10.1/interpreter/livy.html | 10 +-
docs/0.10.1/interpreter/mahout.html | 10 +-
docs/0.10.1/interpreter/markdown.html | 10 +-
docs/0.10.1/interpreter/mongodb.html | 10 +-
docs/0.10.1/interpreter/neo4j.html | 10 +-
docs/0.10.1/interpreter/pig.html | 10 +-
docs/0.10.1/interpreter/postgresql.html | 10 +-
docs/0.10.1/interpreter/python.html | 10 +-
docs/0.10.1/interpreter/r.html | 10 +-
docs/0.10.1/interpreter/sap.html | 10 +-
docs/0.10.1/interpreter/scalding.html | 10 +-
docs/0.10.1/interpreter/scio.html | 10 +-
docs/0.10.1/interpreter/shell.html | 10 +-
docs/0.10.1/interpreter/spark.html | 10 +-
docs/0.10.1/interpreter/sparql.html | 10 +-
docs/0.10.1/interpreter/submarine.html | 10 +-
docs/0.10.1/pleasecontribute.html | 10 +-
docs/0.10.1/quickstart/docker.html | 10 +-
docs/0.10.1/quickstart/explore_ui.html | 10 +-
docs/0.10.1/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.10.1/quickstart/install.html | 10 +-
docs/0.10.1/quickstart/kubernetes.html | 10 +-
docs/0.10.1/quickstart/python_with_zeppelin.html | 10 +-
docs/0.10.1/quickstart/r_with_zeppelin.html | 10 +-
docs/0.10.1/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.10.1/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.10.1/quickstart/tutorial.html | 10 +-
docs/0.10.1/quickstart/yarn.html | 10 +-
docs/0.10.1/screenshots.html | 10 +-
docs/0.10.1/search.html | 10 +-
docs/0.10.1/setup/basics/hadoop_integration.html | 10 +-
docs/0.10.1/setup/basics/how_to_build.html | 11 +-
docs/0.10.1/setup/basics/multi_user_support.html | 10 +-
docs/0.10.1/setup/basics/systemd.html | 10 +-
docs/0.10.1/setup/deployment/cdh.html | 10 +-
docs/0.10.1/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.10.1/setup/deployment/virtual_machine.html | 10 +-
docs/0.10.1/setup/deployment/yarn_install.html | 10 +-
docs/0.10.1/setup/operation/configuration.html | 10 +-
docs/0.10.1/setup/operation/monitoring.html | 10 +-
docs/0.10.1/setup/operation/proxy_setting.html | 10 +-
docs/0.10.1/setup/operation/trouble_shooting.html | 10 +-
docs/0.10.1/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
docs/0.10.1/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.10.1/usage/display_system/basic.html | 14 +-
docs/0.10.1/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.10.1/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.10.1/usage/interpreter/execution_hooks.html | 10 +-
docs/0.10.1/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.10.1/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.10.1/usage/rest_api/configuration.html | 10 +-
docs/0.10.1/usage/rest_api/credential.html | 10 +-
docs/0.10.1/usage/rest_api/helium.html | 10 +-
docs/0.10.1/usage/rest_api/interpreter.html | 10 +-
docs/0.10.1/usage/rest_api/notebook.html | 10 +-
.../0.10.1/usage/rest_api/notebook_repository.html | 10 +-
docs/0.10.1/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.10.1/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.10.1/usage/zeppelin_sdk/session_api.html | 10 +-
docs/0.11.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.11.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.11.0/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.11.0/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.11.0/index.html | 10 +-
docs/0.11.0/interpreter/alluxio.html | 10 +-
docs/0.11.0/interpreter/bigquery.html | 10 +-
docs/0.11.0/interpreter/cassandra.html | 10 +-
docs/0.11.0/interpreter/elasticsearch.html | 10 +-
docs/0.11.0/interpreter/flink.html | 10 +-
docs/0.11.0/interpreter/groovy.html | 10 +-
docs/0.11.0/interpreter/hbase.html | 10 +-
docs/0.11.0/interpreter/hdfs.html | 10 +-
docs/0.11.0/interpreter/hive.html | 10 +-
docs/0.11.0/interpreter/influxdb.html | 10 +-
docs/0.11.0/interpreter/java.html | 10 +-
docs/0.11.0/interpreter/jdbc.html | 10 +-
docs/0.11.0/interpreter/jupyter.html | 10 +-
docs/0.11.0/interpreter/livy.html | 10 +-
docs/0.11.0/interpreter/mahout.html | 10 +-
docs/0.11.0/interpreter/markdown.html | 10 +-
docs/0.11.0/interpreter/mongodb.html | 10 +-
docs/0.11.0/interpreter/neo4j.html | 10 +-
docs/0.11.0/interpreter/postgresql.html | 10 +-
docs/0.11.0/interpreter/python.html | 10 +-
docs/0.11.0/interpreter/r.html | 10 +-
docs/0.11.0/interpreter/shell.html | 10 +-
docs/0.11.0/interpreter/spark.html | 10 +-
docs/0.11.0/interpreter/sparql.html | 10 +-
docs/0.11.0/interpreter/submarine.html | 10 +-
docs/0.11.0/pleasecontribute.html | 10 +-
docs/0.11.0/quickstart/docker.html | 10 +-
docs/0.11.0/quickstart/explore_ui.html | 10 +-
docs/0.11.0/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.11.0/quickstart/install.html | 10 +-
docs/0.11.0/quickstart/kubernetes.html | 10 +-
docs/0.11.0/quickstart/python_with_zeppelin.html | 10 +-
docs/0.11.0/quickstart/r_with_zeppelin.html | 10 +-
docs/0.11.0/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.11.0/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.11.0/quickstart/tutorial.html | 10 +-
docs/0.11.0/quickstart/yarn.html | 10 +-
docs/0.11.0/screenshots.html | 10 +-
docs/0.11.0/search.html | 10 +-
docs/0.11.0/setup/basics/hadoop_integration.html | 10 +-
docs/0.11.0/setup/basics/how_to_build.html | 11 +-
docs/0.11.0/setup/basics/multi_user_support.html | 10 +-
docs/0.11.0/setup/basics/systemd.html | 10 +-
docs/0.11.0/setup/deployment/cdh.html | 10 +-
docs/0.11.0/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.11.0/setup/deployment/virtual_machine.html | 10 +-
docs/0.11.0/setup/deployment/yarn_install.html | 10 +-
docs/0.11.0/setup/operation/configuration.html | 10 +-
docs/0.11.0/setup/operation/monitoring.html | 10 +-
docs/0.11.0/setup/operation/proxy_setting.html | 10 +-
docs/0.11.0/setup/operation/trouble_shooting.html | 10 +-
docs/0.11.0/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
.../setup/storage/configuration_storage.html | 10 +-
docs/0.11.0/setup/storage/notebook_storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.11.0/usage/display_system/basic.html | 14 +-
docs/0.11.0/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.11.0/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.11.0/usage/interpreter/execution_hooks.html | 10 +-
docs/0.11.0/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.11.0/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.11.0/usage/rest_api/configuration.html | 10 +-
docs/0.11.0/usage/rest_api/credential.html | 10 +-
docs/0.11.0/usage/rest_api/helium.html | 10 +-
docs/0.11.0/usage/rest_api/interpreter.html | 10 +-
docs/0.11.0/usage/rest_api/notebook.html | 10 +-
.../0.11.0/usage/rest_api/notebook_repository.html | 10 +-
docs/0.11.0/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.11.0/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.11.0/usage/zeppelin_sdk/session_api.html | 10 +-
docs/0.11.1/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.11.1/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.11.1/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.11.1/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.11.1/index.html | 10 +-
docs/0.11.1/interpreter/alluxio.html | 10 +-
docs/0.11.1/interpreter/bigquery.html | 10 +-
docs/0.11.1/interpreter/cassandra.html | 10 +-
docs/0.11.1/interpreter/elasticsearch.html | 10 +-
docs/0.11.1/interpreter/flink.html | 10 +-
docs/0.11.1/interpreter/groovy.html | 10 +-
docs/0.11.1/interpreter/hbase.html | 10 +-
docs/0.11.1/interpreter/hdfs.html | 10 +-
docs/0.11.1/interpreter/hive.html | 10 +-
docs/0.11.1/interpreter/influxdb.html | 10 +-
docs/0.11.1/interpreter/java.html | 10 +-
docs/0.11.1/interpreter/jdbc.html | 10 +-
docs/0.11.1/interpreter/jupyter.html | 10 +-
docs/0.11.1/interpreter/livy.html | 10 +-
docs/0.11.1/interpreter/mahout.html | 10 +-
docs/0.11.1/interpreter/markdown.html | 10 +-
docs/0.11.1/interpreter/mongodb.html | 10 +-
docs/0.11.1/interpreter/neo4j.html | 10 +-
docs/0.11.1/interpreter/postgresql.html | 10 +-
docs/0.11.1/interpreter/python.html | 10 +-
docs/0.11.1/interpreter/r.html | 10 +-
docs/0.11.1/interpreter/shell.html | 10 +-
docs/0.11.1/interpreter/spark.html | 10 +-
docs/0.11.1/interpreter/sparql.html | 10 +-
docs/0.11.1/interpreter/submarine.html | 10 +-
docs/0.11.1/pleasecontribute.html | 10 +-
docs/0.11.1/quickstart/docker.html | 10 +-
docs/0.11.1/quickstart/explore_ui.html | 10 +-
docs/0.11.1/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.11.1/quickstart/install.html | 10 +-
docs/0.11.1/quickstart/kubernetes.html | 10 +-
docs/0.11.1/quickstart/python_with_zeppelin.html | 10 +-
docs/0.11.1/quickstart/r_with_zeppelin.html | 10 +-
docs/0.11.1/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.11.1/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.11.1/quickstart/tutorial.html | 10 +-
docs/0.11.1/quickstart/yarn.html | 10 +-
docs/0.11.1/screenshots.html | 10 +-
docs/0.11.1/search.html | 10 +-
docs/0.11.1/setup/basics/hadoop_integration.html | 10 +-
docs/0.11.1/setup/basics/how_to_build.html | 11 +-
docs/0.11.1/setup/basics/multi_user_support.html | 10 +-
docs/0.11.1/setup/basics/systemd.html | 10 +-
docs/0.11.1/setup/deployment/cdh.html | 10 +-
docs/0.11.1/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.11.1/setup/deployment/virtual_machine.html | 10 +-
docs/0.11.1/setup/deployment/yarn_install.html | 10 +-
docs/0.11.1/setup/operation/configuration.html | 10 +-
docs/0.11.1/setup/operation/monitoring.html | 10 +-
docs/0.11.1/setup/operation/proxy_setting.html | 10 +-
docs/0.11.1/setup/operation/trouble_shooting.html | 10 +-
docs/0.11.1/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
.../setup/storage/configuration_storage.html | 10 +-
docs/0.11.1/setup/storage/notebook_storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.11.1/usage/display_system/basic.html | 14 +-
docs/0.11.1/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.11.1/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.11.1/usage/interpreter/execution_hooks.html | 10 +-
docs/0.11.1/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.11.1/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.11.1/usage/rest_api/configuration.html | 10 +-
docs/0.11.1/usage/rest_api/credential.html | 10 +-
docs/0.11.1/usage/rest_api/helium.html | 10 +-
docs/0.11.1/usage/rest_api/interpreter.html | 10 +-
docs/0.11.1/usage/rest_api/notebook.html | 10 +-
.../0.11.1/usage/rest_api/notebook_repository.html | 10 +-
docs/0.11.1/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.11.1/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.11.1/usage/zeppelin_sdk/session_api.html | 10 +-
docs/0.11.2/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.11.2/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.11.2/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.11.2/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.11.2/index.html | 10 +-
docs/0.11.2/interpreter/alluxio.html | 10 +-
docs/0.11.2/interpreter/bigquery.html | 10 +-
docs/0.11.2/interpreter/cassandra.html | 10 +-
docs/0.11.2/interpreter/elasticsearch.html | 10 +-
docs/0.11.2/interpreter/flink.html | 10 +-
docs/0.11.2/interpreter/groovy.html | 10 +-
docs/0.11.2/interpreter/hbase.html | 10 +-
docs/0.11.2/interpreter/hdfs.html | 10 +-
docs/0.11.2/interpreter/hive.html | 10 +-
docs/0.11.2/interpreter/influxdb.html | 10 +-
docs/0.11.2/interpreter/java.html | 10 +-
docs/0.11.2/interpreter/jdbc.html | 10 +-
docs/0.11.2/interpreter/jupyter.html | 10 +-
docs/0.11.2/interpreter/livy.html | 10 +-
docs/0.11.2/interpreter/mahout.html | 10 +-
docs/0.11.2/interpreter/markdown.html | 10 +-
docs/0.11.2/interpreter/mongodb.html | 10 +-
docs/0.11.2/interpreter/neo4j.html | 10 +-
docs/0.11.2/interpreter/postgresql.html | 10 +-
docs/0.11.2/interpreter/python.html | 10 +-
docs/0.11.2/interpreter/r.html | 10 +-
docs/0.11.2/interpreter/shell.html | 10 +-
docs/0.11.2/interpreter/spark.html | 10 +-
docs/0.11.2/interpreter/sparql.html | 10 +-
docs/0.11.2/interpreter/submarine.html | 10 +-
docs/0.11.2/pleasecontribute.html | 10 +-
docs/0.11.2/quickstart/docker.html | 10 +-
docs/0.11.2/quickstart/explore_ui.html | 10 +-
docs/0.11.2/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.11.2/quickstart/install.html | 10 +-
docs/0.11.2/quickstart/kubernetes.html | 10 +-
docs/0.11.2/quickstart/python_with_zeppelin.html | 10 +-
docs/0.11.2/quickstart/r_with_zeppelin.html | 10 +-
docs/0.11.2/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.11.2/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.11.2/quickstart/tutorial.html | 10 +-
docs/0.11.2/quickstart/yarn.html | 10 +-
docs/0.11.2/screenshots.html | 10 +-
docs/0.11.2/search.html | 10 +-
docs/0.11.2/setup/basics/hadoop_integration.html | 10 +-
docs/0.11.2/setup/basics/how_to_build.html | 11 +-
docs/0.11.2/setup/basics/multi_user_support.html | 10 +-
docs/0.11.2/setup/basics/systemd.html | 10 +-
docs/0.11.2/setup/deployment/cdh.html | 10 +-
docs/0.11.2/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.11.2/setup/deployment/virtual_machine.html | 10 +-
docs/0.11.2/setup/deployment/yarn_install.html | 10 +-
docs/0.11.2/setup/operation/configuration.html | 10 +-
docs/0.11.2/setup/operation/monitoring.html | 10 +-
docs/0.11.2/setup/operation/proxy_setting.html | 10 +-
docs/0.11.2/setup/operation/trouble_shooting.html | 10 +-
docs/0.11.2/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
.../setup/storage/configuration_storage.html | 10 +-
docs/0.11.2/setup/storage/notebook_storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.11.2/usage/display_system/basic.html | 14 +-
docs/0.11.2/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.11.2/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.11.2/usage/interpreter/execution_hooks.html | 10 +-
docs/0.11.2/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.11.2/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.11.2/usage/rest_api/configuration.html | 10 +-
docs/0.11.2/usage/rest_api/credential.html | 10 +-
docs/0.11.2/usage/rest_api/helium.html | 10 +-
docs/0.11.2/usage/rest_api/interpreter.html | 10 +-
docs/0.11.2/usage/rest_api/notebook.html | 10 +-
.../0.11.2/usage/rest_api/notebook_repository.html | 10 +-
docs/0.11.2/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.11.2/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.11.2/usage/zeppelin_sdk/session_api.html | 10 +-
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.12.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.12.0/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.12.0/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.12.0/index.html | 6 -
docs/0.12.0/interpreter/alluxio.html | 10 +-
docs/0.12.0/interpreter/bigquery.html | 10 +-
docs/0.12.0/interpreter/cassandra.html | 10 +-
docs/0.12.0/interpreter/elasticsearch.html | 10 +-
docs/0.12.0/interpreter/flink.html | 10 +-
docs/0.12.0/interpreter/groovy.html | 10 +-
docs/0.12.0/interpreter/hbase.html | 10 +-
docs/0.12.0/interpreter/hdfs.html | 10 +-
docs/0.12.0/interpreter/hive.html | 10 +-
docs/0.12.0/interpreter/influxdb.html | 10 +-
docs/0.12.0/interpreter/java.html | 10 +-
docs/0.12.0/interpreter/jdbc.html | 10 +-
docs/0.12.0/interpreter/jupyter.html | 10 +-
docs/0.12.0/interpreter/livy.html | 10 +-
docs/0.12.0/interpreter/mahout.html | 10 +-
docs/0.12.0/interpreter/markdown.html | 10 +-
docs/0.12.0/interpreter/mongodb.html | 10 +-
docs/0.12.0/interpreter/neo4j.html | 10 +-
docs/0.12.0/interpreter/postgresql.html | 10 +-
docs/0.12.0/interpreter/python.html | 10 +-
docs/0.12.0/interpreter/r.html | 10 +-
docs/0.12.0/interpreter/shell.html | 10 +-
docs/0.12.0/interpreter/spark.html | 10 +-
docs/0.12.0/interpreter/sparql.html | 10 +-
docs/0.12.0/pleasecontribute.html | 10 +-
docs/0.12.0/quickstart/docker.html | 10 +-
docs/0.12.0/quickstart/explore_ui.html | 10 +-
docs/0.12.0/quickstart/flink_with_zeppelin.html | 10 +-
docs/0.12.0/quickstart/install.html | 10 +-
docs/0.12.0/quickstart/kubernetes.html | 10 +-
docs/0.12.0/quickstart/python_with_zeppelin.html | 10 +-
docs/0.12.0/quickstart/r_with_zeppelin.html | 10 +-
docs/0.12.0/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.12.0/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.12.0/quickstart/tutorial.html | 10 +-
docs/0.12.0/quickstart/yarn.html | 10 +-
docs/0.12.0/screenshots.html | 10 +-
docs/0.12.0/search.html | 10 +-
docs/0.12.0/setup/basics/hadoop_integration.html | 10 +-
docs/0.12.0/setup/basics/how_to_build.html | 10 +-
docs/0.12.0/setup/basics/multi_user_support.html | 10 +-
docs/0.12.0/setup/basics/systemd.html | 10 +-
docs/0.12.0/setup/deployment/cdh.html | 10 +-
docs/0.12.0/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.12.0/setup/deployment/virtual_machine.html | 10 +-
docs/0.12.0/setup/deployment/yarn_install.html | 10 +-
docs/0.12.0/setup/operation/configuration.html | 10 +-
docs/0.12.0/setup/operation/monitoring.html | 10 +-
docs/0.12.0/setup/operation/proxy_setting.html | 10 +-
docs/0.12.0/setup/operation/trouble_shooting.html | 10 +-
docs/0.12.0/setup/operation/upgrading.html | 10 +-
.../setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../setup/security/shiro_authentication.html | 10 +-
.../setup/storage/configuration_storage.html | 10 +-
docs/0.12.0/setup/storage/notebook_storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.12.0/usage/display_system/basic.html | 14 +-
docs/0.12.0/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.12.0/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.12.0/usage/interpreter/execution_hooks.html | 10 +-
docs/0.12.0/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.12.0/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.12.0/usage/rest_api/configuration.html | 10 +-
docs/0.12.0/usage/rest_api/credential.html | 10 +-
docs/0.12.0/usage/rest_api/helium.html | 10 +-
docs/0.12.0/usage/rest_api/interpreter.html | 10 +-
docs/0.12.0/usage/rest_api/notebook.html | 10 +-
.../0.12.0/usage/rest_api/notebook_repository.html | 10 +-
docs/0.12.0/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.12.0/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.12.0/usage/zeppelin_sdk/session_api.html | 10 +-
docs/0.5.0-incubating/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/css/style.css | 1 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 8 +-
.../development/howtocontributewebsite.html | 8 +-
.../development/writingzeppelininterpreter.html | 8 +-
docs/0.5.0-incubating/displaysystem/angular.html | 8 +-
docs/0.5.0-incubating/displaysystem/display.html | 8 +-
docs/0.5.0-incubating/displaysystem/table.html | 8 +-
docs/0.5.0-incubating/docs.html | 8 +-
docs/0.5.0-incubating/index.html | 8 +-
docs/0.5.0-incubating/install/install.html | 8 +-
docs/0.5.0-incubating/install/yarn_install.html | 8 +-
docs/0.5.0-incubating/interpreter/cassandra.html | 8 +-
docs/0.5.0-incubating/interpreter/flink.html | 8 +-
docs/0.5.0-incubating/interpreter/geode.html | 10 +-
docs/0.5.0-incubating/interpreter/ignite.html | 8 +-
docs/0.5.0-incubating/interpreter/lens.html | 8 +-
docs/0.5.0-incubating/interpreter/postgresql.html | 10 +-
docs/0.5.0-incubating/interpreter/spark.html | 8 +-
docs/0.5.0-incubating/manual/dynamicform.html | 8 +-
docs/0.5.0-incubating/manual/interpreters.html | 8 +-
.../manual/notebookashomepage.html | 8 +-
docs/0.5.0-incubating/pleasecontribute.html | 8 +-
.../rest-api/rest-interpreter.html | 8 +-
docs/0.5.0-incubating/rest-api/rest-notebook.html | 8 +-
docs/0.5.0-incubating/screenshots.html | 8 +-
docs/0.5.0-incubating/storage/storage.html | 8 +-
docs/0.5.0-incubating/tutorial/tutorial.html | 8 +-
docs/0.5.5-incubating/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/css/style.css | 1 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 8 +-
.../development/howtocontributewebsite.html | 8 +-
.../development/writingzeppelininterpreter.html | 8 +-
docs/0.5.5-incubating/displaysystem/angular.html | 8 +-
docs/0.5.5-incubating/displaysystem/display.html | 8 +-
docs/0.5.5-incubating/displaysystem/table.html | 8 +-
docs/0.5.5-incubating/docs.html | 8 +-
docs/0.5.5-incubating/index.html | 8 +-
docs/0.5.5-incubating/install/install.html | 8 +-
docs/0.5.5-incubating/install/yarn_install.html | 8 +-
docs/0.5.5-incubating/interpreter/cassandra.html | 8 +-
docs/0.5.5-incubating/interpreter/flink.html | 8 +-
docs/0.5.5-incubating/interpreter/geode.html | 10 +-
docs/0.5.5-incubating/interpreter/ignite.html | 8 +-
docs/0.5.5-incubating/interpreter/lens.html | 8 +-
docs/0.5.5-incubating/interpreter/postgresql.html | 10 +-
docs/0.5.5-incubating/interpreter/spark.html | 8 +-
docs/0.5.5-incubating/manual/dynamicform.html | 8 +-
docs/0.5.5-incubating/manual/interpreters.html | 8 +-
.../manual/notebookashomepage.html | 8 +-
docs/0.5.5-incubating/pleasecontribute.html | 8 +-
.../rest-api/rest-interpreter.html | 8 +-
docs/0.5.5-incubating/rest-api/rest-notebook.html | 8 +-
docs/0.5.5-incubating/screenshots.html | 8 +-
docs/0.5.5-incubating/storage/storage.html | 8 +-
docs/0.5.5-incubating/tutorial/tutorial.html | 8 +-
docs/0.5.6-incubating/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/css/style.css | 1 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 8 +-
.../development/howtocontributewebsite.html | 8 +-
.../development/writingzeppelininterpreter.html | 8 +-
docs/0.5.6-incubating/displaysystem/angular.html | 8 +-
docs/0.5.6-incubating/displaysystem/display.html | 8 +-
docs/0.5.6-incubating/displaysystem/table.html | 8 +-
docs/0.5.6-incubating/index.html | 8 +-
docs/0.5.6-incubating/install/install.html | 8 +-
docs/0.5.6-incubating/install/virtual_machine.html | 8 +-
docs/0.5.6-incubating/install/yarn_install.html | 8 +-
docs/0.5.6-incubating/interpreter/cassandra.html | 8 +-
.../interpreter/elasticsearch.html | 8 +-
docs/0.5.6-incubating/interpreter/flink.html | 8 +-
docs/0.5.6-incubating/interpreter/geode.html | 10 +-
docs/0.5.6-incubating/interpreter/hive.html | 8 +-
docs/0.5.6-incubating/interpreter/ignite.html | 8 +-
docs/0.5.6-incubating/interpreter/lens.html | 8 +-
docs/0.5.6-incubating/interpreter/markdown.html | 8 +-
docs/0.5.6-incubating/interpreter/postgresql.html | 10 +-
docs/0.5.6-incubating/interpreter/scalding.html | 8 +-
docs/0.5.6-incubating/interpreter/spark.html | 8 +-
docs/0.5.6-incubating/manual/dynamicform.html | 8 +-
docs/0.5.6-incubating/manual/interpreters.html | 8 +-
.../manual/notebookashomepage.html | 8 +-
docs/0.5.6-incubating/pleasecontribute.html | 8 +-
.../rest-api/rest-interpreter.html | 8 +-
docs/0.5.6-incubating/rest-api/rest-notebook.html | 8 +-
docs/0.5.6-incubating/screenshots.html | 8 +-
docs/0.5.6-incubating/storage/storage.html | 8 +-
docs/0.5.6-incubating/tutorial/tutorial.html | 8 +-
docs/0.6.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.6.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.6.0/development/howtocontribute.html | 10 +-
docs/0.6.0/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
docs/0.6.0/displaysystem/back-end-angular.html | 10 +-
docs/0.6.0/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.6.0/displaysystem/front-end-angular.html | 10 +-
docs/0.6.0/index.html | 10 +-
docs/0.6.0/install/install.html | 10 +-
docs/0.6.0/install/upgrade.html | 10 +-
docs/0.6.0/install/virtual_machine.html | 10 +-
docs/0.6.0/install/yarn_install.html | 10 +-
docs/0.6.0/interpreter/alluxio.html | 10 +-
docs/0.6.0/interpreter/cassandra.html | 10 +-
docs/0.6.0/interpreter/elasticsearch.html | 10 +-
docs/0.6.0/interpreter/flink.html | 10 +-
docs/0.6.0/interpreter/geode.html | 12 +-
docs/0.6.0/interpreter/hbase.html | 10 +-
docs/0.6.0/interpreter/hdfs.html | 10 +-
docs/0.6.0/interpreter/hive.html | 10 +-
docs/0.6.0/interpreter/ignite.html | 10 +-
docs/0.6.0/interpreter/jdbc.html | 10 +-
docs/0.6.0/interpreter/lens.html | 10 +-
docs/0.6.0/interpreter/livy.html | 10 +-
docs/0.6.0/interpreter/markdown.html | 10 +-
docs/0.6.0/interpreter/postgresql.html | 12 +-
docs/0.6.0/interpreter/python.html | 10 +-
docs/0.6.0/interpreter/r.html | 10 +-
docs/0.6.0/interpreter/scalding.html | 10 +-
docs/0.6.0/interpreter/spark.html | 10 +-
docs/0.6.0/manual/dependencymanagement.html | 10 +-
docs/0.6.0/manual/dynamicform.html | 10 +-
docs/0.6.0/manual/dynamicinterpreterload.html | 10 +-
docs/0.6.0/manual/interpreterinstallation.html | 10 +-
docs/0.6.0/manual/interpreters.html | 10 +-
docs/0.6.0/manual/notebookashomepage.html | 10 +-
docs/0.6.0/manual/publish.html | 10 +-
docs/0.6.0/pleasecontribute.html | 10 +-
docs/0.6.0/quickstart/explorezeppelinui.html | 10 +-
docs/0.6.0/quickstart/tutorial.html | 10 +-
docs/0.6.0/rest-api/rest-configuration.html | 10 +-
docs/0.6.0/rest-api/rest-interpreter.html | 10 +-
docs/0.6.0/rest-api/rest-notebook.html | 10 +-
docs/0.6.0/screenshots.html | 10 +-
docs/0.6.0/security/authentication.html | 10 +-
docs/0.6.0/security/interpreter_authorization.html | 10 +-
docs/0.6.0/security/notebook_authorization.html | 10 +-
docs/0.6.0/security/shiroauthentication.html | 10 +-
docs/0.6.0/storage/storage.html | 10 +-
docs/0.6.1/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.6.1/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.6.1/development/howtocontribute.html | 10 +-
docs/0.6.1/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
docs/0.6.1/displaysystem/back-end-angular.html | 10 +-
docs/0.6.1/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.6.1/displaysystem/front-end-angular.html | 10 +-
docs/0.6.1/index.html | 10 +-
docs/0.6.1/install/install.html | 10 +-
docs/0.6.1/install/upgrade.html | 10 +-
docs/0.6.1/install/virtual_machine.html | 10 +-
docs/0.6.1/install/yarn_install.html | 10 +-
docs/0.6.1/interpreter/alluxio.html | 10 +-
docs/0.6.1/interpreter/bigquery.html | 10 +-
docs/0.6.1/interpreter/cassandra.html | 10 +-
docs/0.6.1/interpreter/elasticsearch.html | 10 +-
docs/0.6.1/interpreter/flink.html | 10 +-
docs/0.6.1/interpreter/geode.html | 12 +-
docs/0.6.1/interpreter/hbase.html | 10 +-
docs/0.6.1/interpreter/hdfs.html | 10 +-
docs/0.6.1/interpreter/hive.html | 10 +-
docs/0.6.1/interpreter/ignite.html | 10 +-
docs/0.6.1/interpreter/jdbc.html | 10 +-
docs/0.6.1/interpreter/lens.html | 10 +-
docs/0.6.1/interpreter/livy.html | 10 +-
docs/0.6.1/interpreter/markdown.html | 10 +-
docs/0.6.1/interpreter/postgresql.html | 12 +-
docs/0.6.1/interpreter/python.html | 10 +-
docs/0.6.1/interpreter/r.html | 10 +-
docs/0.6.1/interpreter/scalding.html | 10 +-
docs/0.6.1/interpreter/spark.html | 10 +-
docs/0.6.1/manual/dependencymanagement.html | 10 +-
docs/0.6.1/manual/dynamicform.html | 10 +-
docs/0.6.1/manual/dynamicinterpreterload.html | 10 +-
docs/0.6.1/manual/interpreterinstallation.html | 10 +-
docs/0.6.1/manual/interpreters.html | 10 +-
docs/0.6.1/manual/notebookashomepage.html | 10 +-
docs/0.6.1/manual/publish.html | 10 +-
docs/0.6.1/pleasecontribute.html | 10 +-
docs/0.6.1/quickstart/explorezeppelinui.html | 10 +-
docs/0.6.1/quickstart/tutorial.html | 10 +-
docs/0.6.1/rest-api/rest-configuration.html | 10 +-
docs/0.6.1/rest-api/rest-interpreter.html | 10 +-
docs/0.6.1/rest-api/rest-notebook.html | 10 +-
docs/0.6.1/screenshots.html | 10 +-
docs/0.6.1/security/authentication.html | 10 +-
docs/0.6.1/security/interpreter_authorization.html | 10 +-
docs/0.6.1/security/notebook_authorization.html | 10 +-
docs/0.6.1/security/shiroauthentication.html | 10 +-
docs/0.6.1/storage/storage.html | 10 +-
docs/0.6.2/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.6.2/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.6.2/development/howtocontribute.html | 10 +-
docs/0.6.2/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
docs/0.6.2/displaysystem/back-end-angular.html | 10 +-
docs/0.6.2/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.6.2/displaysystem/front-end-angular.html | 10 +-
docs/0.6.2/index.html | 10 +-
docs/0.6.2/install/install.html | 10 +-
docs/0.6.2/install/upgrade.html | 10 +-
docs/0.6.2/install/virtual_machine.html | 10 +-
docs/0.6.2/install/yarn_install.html | 10 +-
docs/0.6.2/interpreter/alluxio.html | 10 +-
docs/0.6.2/interpreter/bigquery.html | 10 +-
docs/0.6.2/interpreter/cassandra.html | 10 +-
docs/0.6.2/interpreter/elasticsearch.html | 10 +-
docs/0.6.2/interpreter/flink.html | 10 +-
docs/0.6.2/interpreter/geode.html | 12 +-
docs/0.6.2/interpreter/hbase.html | 10 +-
docs/0.6.2/interpreter/hdfs.html | 10 +-
docs/0.6.2/interpreter/hive.html | 10 +-
docs/0.6.2/interpreter/ignite.html | 10 +-
docs/0.6.2/interpreter/jdbc.html | 10 +-
docs/0.6.2/interpreter/lens.html | 10 +-
docs/0.6.2/interpreter/livy.html | 10 +-
docs/0.6.2/interpreter/markdown.html | 10 +-
docs/0.6.2/interpreter/postgresql.html | 12 +-
docs/0.6.2/interpreter/python.html | 10 +-
docs/0.6.2/interpreter/r.html | 10 +-
docs/0.6.2/interpreter/scalding.html | 10 +-
docs/0.6.2/interpreter/spark.html | 10 +-
docs/0.6.2/manual/dependencymanagement.html | 10 +-
docs/0.6.2/manual/dynamicform.html | 10 +-
docs/0.6.2/manual/dynamicinterpreterload.html | 10 +-
docs/0.6.2/manual/interpreterinstallation.html | 10 +-
docs/0.6.2/manual/interpreters.html | 10 +-
docs/0.6.2/manual/notebookashomepage.html | 10 +-
docs/0.6.2/manual/publish.html | 10 +-
docs/0.6.2/pleasecontribute.html | 10 +-
docs/0.6.2/quickstart/explorezeppelinui.html | 10 +-
docs/0.6.2/quickstart/tutorial.html | 10 +-
docs/0.6.2/rest-api/rest-configuration.html | 10 +-
docs/0.6.2/rest-api/rest-interpreter.html | 10 +-
docs/0.6.2/rest-api/rest-notebook.html | 10 +-
docs/0.6.2/screenshots.html | 10 +-
docs/0.6.2/security/authentication.html | 10 +-
docs/0.6.2/security/interpreter_authorization.html | 10 +-
docs/0.6.2/security/notebook_authorization.html | 10 +-
docs/0.6.2/security/shiroauthentication.html | 10 +-
docs/0.6.2/storage/storage.html | 10 +-
docs/0.7.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.7.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.7.0/development/howtocontribute.html | 10 +-
docs/0.7.0/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelinapplication.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
.../development/writingzeppelinvisualization.html | 10 +-
docs/0.7.0/displaysystem/back-end-angular.html | 10 +-
docs/0.7.0/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.7.0/displaysystem/front-end-angular.html | 10 +-
docs/0.7.0/index.html | 10 +-
docs/0.7.0/install/build.html | 11 +-
docs/0.7.0/install/cdh.html | 10 +-
docs/0.7.0/install/configuration.html | 10 +-
docs/0.7.0/install/docker.html | 10 +-
docs/0.7.0/install/install.html | 10 +-
docs/0.7.0/install/spark_cluster_mode.html | 10 +-
docs/0.7.0/install/upgrade.html | 10 +-
docs/0.7.0/install/virtual_machine.html | 10 +-
docs/0.7.0/install/yarn_install.html | 10 +-
docs/0.7.0/interpreter/alluxio.html | 10 +-
docs/0.7.0/interpreter/beam.html | 10 +-
docs/0.7.0/interpreter/bigquery.html | 10 +-
docs/0.7.0/interpreter/cassandra.html | 10 +-
docs/0.7.0/interpreter/elasticsearch.html | 10 +-
docs/0.7.0/interpreter/flink.html | 10 +-
docs/0.7.0/interpreter/geode.html | 12 +-
docs/0.7.0/interpreter/hbase.html | 10 +-
docs/0.7.0/interpreter/hdfs.html | 10 +-
docs/0.7.0/interpreter/hive.html | 10 +-
docs/0.7.0/interpreter/ignite.html | 10 +-
docs/0.7.0/interpreter/jdbc.html | 10 +-
docs/0.7.0/interpreter/kylin.html | 10 +-
docs/0.7.0/interpreter/lens.html | 10 +-
docs/0.7.0/interpreter/livy.html | 10 +-
docs/0.7.0/interpreter/mahout.html | 10 +-
docs/0.7.0/interpreter/markdown.html | 10 +-
docs/0.7.0/interpreter/pig.html | 10 +-
docs/0.7.0/interpreter/postgresql.html | 12 +-
docs/0.7.0/interpreter/python.html | 10 +-
docs/0.7.0/interpreter/r.html | 10 +-
docs/0.7.0/interpreter/scalding.html | 10 +-
docs/0.7.0/interpreter/scio.html | 10 +-
docs/0.7.0/interpreter/shell.html | 10 +-
docs/0.7.0/interpreter/spark.html | 10 +-
docs/0.7.0/manual/dependencymanagement.html | 10 +-
docs/0.7.0/manual/dynamicform.html | 10 +-
docs/0.7.0/manual/dynamicinterpreterload.html | 10 +-
docs/0.7.0/manual/interpreterexechooks.html | 10 +-
docs/0.7.0/manual/interpreterinstallation.html | 10 +-
docs/0.7.0/manual/interpreters.html | 10 +-
docs/0.7.0/manual/notebookashomepage.html | 10 +-
docs/0.7.0/manual/publish.html | 10 +-
docs/0.7.0/manual/userimpersonation.html | 10 +-
docs/0.7.0/pleasecontribute.html | 10 +-
docs/0.7.0/quickstart/explorezeppelinui.html | 10 +-
.../install_with_flink_and_spark_cluster.html | 10 +-
docs/0.7.0/quickstart/tutorial.html | 10 +-
docs/0.7.0/rest-api/rest-configuration.html | 10 +-
docs/0.7.0/rest-api/rest-credential.html | 10 +-
docs/0.7.0/rest-api/rest-helium.html | 10 +-
docs/0.7.0/rest-api/rest-interpreter.html | 10 +-
docs/0.7.0/rest-api/rest-notebook.html | 10 +-
docs/0.7.0/screenshots.html | 10 +-
docs/0.7.0/search.html | 10 +-
docs/0.7.0/security/authentication.html | 10 +-
docs/0.7.0/security/datasource_authorization.html | 10 +-
docs/0.7.0/security/notebook_authorization.html | 10 +-
docs/0.7.0/security/shiroauthentication.html | 10 +-
docs/0.7.0/storage/storage.html | 10 +-
docs/0.7.1/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.7.1/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.7.1/development/howtocontribute.html | 10 +-
docs/0.7.1/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelinapplication.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
.../development/writingzeppelinvisualization.html | 10 +-
docs/0.7.1/displaysystem/back-end-angular.html | 10 +-
docs/0.7.1/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.7.1/displaysystem/front-end-angular.html | 10 +-
docs/0.7.1/index.html | 10 +-
docs/0.7.1/install/build.html | 11 +-
docs/0.7.1/install/cdh.html | 10 +-
docs/0.7.1/install/configuration.html | 10 +-
docs/0.7.1/install/docker.html | 10 +-
docs/0.7.1/install/install.html | 10 +-
docs/0.7.1/install/spark_cluster_mode.html | 10 +-
docs/0.7.1/install/upgrade.html | 10 +-
docs/0.7.1/install/virtual_machine.html | 10 +-
docs/0.7.1/install/yarn_install.html | 10 +-
docs/0.7.1/interpreter/alluxio.html | 10 +-
docs/0.7.1/interpreter/beam.html | 10 +-
docs/0.7.1/interpreter/bigquery.html | 10 +-
docs/0.7.1/interpreter/cassandra.html | 10 +-
docs/0.7.1/interpreter/elasticsearch.html | 10 +-
docs/0.7.1/interpreter/flink.html | 10 +-
docs/0.7.1/interpreter/geode.html | 12 +-
docs/0.7.1/interpreter/hbase.html | 10 +-
docs/0.7.1/interpreter/hdfs.html | 10 +-
docs/0.7.1/interpreter/hive.html | 10 +-
docs/0.7.1/interpreter/ignite.html | 10 +-
docs/0.7.1/interpreter/jdbc.html | 10 +-
docs/0.7.1/interpreter/kylin.html | 10 +-
docs/0.7.1/interpreter/lens.html | 10 +-
docs/0.7.1/interpreter/livy.html | 10 +-
docs/0.7.1/interpreter/mahout.html | 10 +-
docs/0.7.1/interpreter/markdown.html | 10 +-
docs/0.7.1/interpreter/pig.html | 10 +-
docs/0.7.1/interpreter/postgresql.html | 12 +-
docs/0.7.1/interpreter/python.html | 10 +-
docs/0.7.1/interpreter/r.html | 10 +-
docs/0.7.1/interpreter/scalding.html | 10 +-
docs/0.7.1/interpreter/scio.html | 10 +-
docs/0.7.1/interpreter/shell.html | 10 +-
docs/0.7.1/interpreter/spark.html | 10 +-
docs/0.7.1/manual/dependencymanagement.html | 10 +-
docs/0.7.1/manual/dynamicform.html | 10 +-
docs/0.7.1/manual/dynamicinterpreterload.html | 10 +-
docs/0.7.1/manual/interpreterexechooks.html | 10 +-
docs/0.7.1/manual/interpreterinstallation.html | 10 +-
docs/0.7.1/manual/interpreters.html | 10 +-
docs/0.7.1/manual/notebookashomepage.html | 10 +-
docs/0.7.1/manual/publish.html | 10 +-
docs/0.7.1/manual/userimpersonation.html | 10 +-
docs/0.7.1/pleasecontribute.html | 10 +-
docs/0.7.1/quickstart/explorezeppelinui.html | 10 +-
.../install_with_flink_and_spark_cluster.html | 10 +-
docs/0.7.1/quickstart/tutorial.html | 10 +-
docs/0.7.1/rest-api/rest-configuration.html | 10 +-
docs/0.7.1/rest-api/rest-credential.html | 10 +-
docs/0.7.1/rest-api/rest-helium.html | 10 +-
docs/0.7.1/rest-api/rest-interpreter.html | 10 +-
docs/0.7.1/rest-api/rest-notebook.html | 10 +-
docs/0.7.1/rest-api/rest-notebookRepo.html | 10 +-
docs/0.7.1/screenshots.html | 10 +-
docs/0.7.1/search.html | 10 +-
docs/0.7.1/security/authentication.html | 10 +-
docs/0.7.1/security/datasource_authorization.html | 10 +-
docs/0.7.1/security/notebook_authorization.html | 10 +-
docs/0.7.1/security/shiroauthentication.html | 10 +-
docs/0.7.1/storage/storage.html | 10 +-
docs/0.7.2/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.7.2/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.7.2/development/howtocontribute.html | 10 +-
docs/0.7.2/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelinapplication.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
.../development/writingzeppelinvisualization.html | 10 +-
docs/0.7.2/displaysystem/back-end-angular.html | 10 +-
docs/0.7.2/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.7.2/displaysystem/front-end-angular.html | 10 +-
docs/0.7.2/index.html | 10 +-
docs/0.7.2/install/build.html | 11 +-
docs/0.7.2/install/cdh.html | 10 +-
docs/0.7.2/install/configuration.html | 10 +-
docs/0.7.2/install/docker.html | 10 +-
docs/0.7.2/install/install.html | 10 +-
docs/0.7.2/install/spark_cluster_mode.html | 10 +-
docs/0.7.2/install/upgrade.html | 10 +-
docs/0.7.2/install/virtual_machine.html | 10 +-
docs/0.7.2/install/yarn_install.html | 10 +-
docs/0.7.2/interpreter/alluxio.html | 10 +-
docs/0.7.2/interpreter/beam.html | 10 +-
docs/0.7.2/interpreter/bigquery.html | 10 +-
docs/0.7.2/interpreter/cassandra.html | 10 +-
docs/0.7.2/interpreter/elasticsearch.html | 10 +-
docs/0.7.2/interpreter/flink.html | 10 +-
docs/0.7.2/interpreter/geode.html | 12 +-
docs/0.7.2/interpreter/hbase.html | 10 +-
docs/0.7.2/interpreter/hdfs.html | 10 +-
docs/0.7.2/interpreter/hive.html | 10 +-
docs/0.7.2/interpreter/ignite.html | 10 +-
docs/0.7.2/interpreter/jdbc.html | 10 +-
docs/0.7.2/interpreter/kylin.html | 10 +-
docs/0.7.2/interpreter/lens.html | 10 +-
docs/0.7.2/interpreter/livy.html | 10 +-
docs/0.7.2/interpreter/mahout.html | 10 +-
docs/0.7.2/interpreter/markdown.html | 10 +-
docs/0.7.2/interpreter/pig.html | 10 +-
docs/0.7.2/interpreter/postgresql.html | 12 +-
docs/0.7.2/interpreter/python.html | 10 +-
docs/0.7.2/interpreter/r.html | 10 +-
docs/0.7.2/interpreter/scalding.html | 10 +-
docs/0.7.2/interpreter/scio.html | 10 +-
docs/0.7.2/interpreter/shell.html | 10 +-
docs/0.7.2/interpreter/spark.html | 10 +-
docs/0.7.2/manual/dependencymanagement.html | 10 +-
docs/0.7.2/manual/dynamicform.html | 10 +-
docs/0.7.2/manual/dynamicinterpreterload.html | 10 +-
docs/0.7.2/manual/interpreterexechooks.html | 10 +-
docs/0.7.2/manual/interpreterinstallation.html | 10 +-
docs/0.7.2/manual/interpreters.html | 10 +-
docs/0.7.2/manual/notebookashomepage.html | 10 +-
docs/0.7.2/manual/publish.html | 10 +-
docs/0.7.2/manual/userimpersonation.html | 10 +-
docs/0.7.2/pleasecontribute.html | 10 +-
docs/0.7.2/quickstart/explorezeppelinui.html | 10 +-
.../install_with_flink_and_spark_cluster.html | 10 +-
docs/0.7.2/quickstart/tutorial.html | 10 +-
docs/0.7.2/rest-api/rest-configuration.html | 10 +-
docs/0.7.2/rest-api/rest-credential.html | 10 +-
docs/0.7.2/rest-api/rest-helium.html | 10 +-
docs/0.7.2/rest-api/rest-interpreter.html | 10 +-
docs/0.7.2/rest-api/rest-notebook.html | 10 +-
docs/0.7.2/rest-api/rest-notebookRepo.html | 10 +-
docs/0.7.2/screenshots.html | 10 +-
docs/0.7.2/search.html | 10 +-
docs/0.7.2/security/authentication.html | 10 +-
docs/0.7.2/security/datasource_authorization.html | 10 +-
docs/0.7.2/security/helium_authorization.html | 10 +-
docs/0.7.2/security/notebook_authorization.html | 10 +-
docs/0.7.2/security/shiroauthentication.html | 10 +-
docs/0.7.2/storage/storage.html | 10 +-
docs/0.7.3/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.7.3/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
docs/0.7.3/development/howtocontribute.html | 10 +-
docs/0.7.3/development/howtocontributewebsite.html | 10 +-
.../development/writingzeppelinapplication.html | 10 +-
.../development/writingzeppelininterpreter.html | 10 +-
.../development/writingzeppelinvisualization.html | 10 +-
docs/0.7.3/displaysystem/back-end-angular.html | 10 +-
docs/0.7.3/displaysystem/basicdisplaysystem.html | 10 +-
docs/0.7.3/displaysystem/front-end-angular.html | 10 +-
docs/0.7.3/index.html | 10 +-
docs/0.7.3/install/build.html | 11 +-
docs/0.7.3/install/cdh.html | 10 +-
docs/0.7.3/install/configuration.html | 10 +-
docs/0.7.3/install/docker.html | 10 +-
docs/0.7.3/install/install.html | 10 +-
docs/0.7.3/install/spark_cluster_mode.html | 10 +-
docs/0.7.3/install/upgrade.html | 10 +-
docs/0.7.3/install/virtual_machine.html | 10 +-
docs/0.7.3/install/yarn_install.html | 10 +-
docs/0.7.3/interpreter/alluxio.html | 10 +-
docs/0.7.3/interpreter/beam.html | 10 +-
docs/0.7.3/interpreter/bigquery.html | 10 +-
docs/0.7.3/interpreter/cassandra.html | 10 +-
docs/0.7.3/interpreter/elasticsearch.html | 10 +-
docs/0.7.3/interpreter/flink.html | 10 +-
docs/0.7.3/interpreter/geode.html | 12 +-
docs/0.7.3/interpreter/hbase.html | 10 +-
docs/0.7.3/interpreter/hdfs.html | 10 +-
docs/0.7.3/interpreter/hive.html | 10 +-
docs/0.7.3/interpreter/ignite.html | 10 +-
docs/0.7.3/interpreter/jdbc.html | 10 +-
docs/0.7.3/interpreter/kylin.html | 10 +-
docs/0.7.3/interpreter/lens.html | 10 +-
docs/0.7.3/interpreter/livy.html | 10 +-
docs/0.7.3/interpreter/mahout.html | 10 +-
docs/0.7.3/interpreter/markdown.html | 10 +-
docs/0.7.3/interpreter/pig.html | 10 +-
docs/0.7.3/interpreter/postgresql.html | 12 +-
docs/0.7.3/interpreter/python.html | 10 +-
docs/0.7.3/interpreter/r.html | 10 +-
docs/0.7.3/interpreter/scalding.html | 10 +-
docs/0.7.3/interpreter/scio.html | 10 +-
docs/0.7.3/interpreter/shell.html | 10 +-
docs/0.7.3/interpreter/spark.html | 10 +-
docs/0.7.3/manual/dependencymanagement.html | 10 +-
docs/0.7.3/manual/dynamicform.html | 10 +-
docs/0.7.3/manual/dynamicinterpreterload.html | 10 +-
docs/0.7.3/manual/interpreterexechooks.html | 10 +-
docs/0.7.3/manual/interpreterinstallation.html | 10 +-
docs/0.7.3/manual/interpreters.html | 10 +-
docs/0.7.3/manual/notebookashomepage.html | 10 +-
docs/0.7.3/manual/publish.html | 10 +-
docs/0.7.3/manual/userimpersonation.html | 10 +-
docs/0.7.3/pleasecontribute.html | 10 +-
docs/0.7.3/quickstart/explorezeppelinui.html | 10 +-
.../install_with_flink_and_spark_cluster.html | 10 +-
docs/0.7.3/quickstart/tutorial.html | 10 +-
docs/0.7.3/rest-api/rest-configuration.html | 10 +-
docs/0.7.3/rest-api/rest-credential.html | 10 +-
docs/0.7.3/rest-api/rest-helium.html | 10 +-
docs/0.7.3/rest-api/rest-interpreter.html | 10 +-
docs/0.7.3/rest-api/rest-notebook.html | 10 +-
docs/0.7.3/rest-api/rest-notebookRepo.html | 10 +-
docs/0.7.3/screenshots.html | 10 +-
docs/0.7.3/search.html | 10 +-
docs/0.7.3/security/authentication.html | 10 +-
docs/0.7.3/security/datasource_authorization.html | 10 +-
docs/0.7.3/security/helium_authorization.html | 10 +-
docs/0.7.3/security/http_security_headers.html | 10 +-
docs/0.7.3/security/notebook_authorization.html | 10 +-
docs/0.7.3/security/shiroauthentication.html | 10 +-
docs/0.7.3/storage/storage.html | 10 +-
docs/0.8.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.8.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.8.0/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.8.0/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.8.0/index.html | 10 +-
docs/0.8.0/interpreter/alluxio.html | 10 +-
docs/0.8.0/interpreter/beam.html | 10 +-
docs/0.8.0/interpreter/bigquery.html | 10 +-
docs/0.8.0/interpreter/cassandra.html | 10 +-
docs/0.8.0/interpreter/elasticsearch.html | 10 +-
docs/0.8.0/interpreter/flink.html | 10 +-
docs/0.8.0/interpreter/geode.html | 12 +-
docs/0.8.0/interpreter/groovy.html | 10 +-
docs/0.8.0/interpreter/hbase.html | 10 +-
docs/0.8.0/interpreter/hdfs.html | 10 +-
docs/0.8.0/interpreter/hive.html | 10 +-
docs/0.8.0/interpreter/ignite.html | 10 +-
docs/0.8.0/interpreter/jdbc.html | 10 +-
docs/0.8.0/interpreter/kylin.html | 10 +-
docs/0.8.0/interpreter/lens.html | 10 +-
docs/0.8.0/interpreter/livy.html | 10 +-
docs/0.8.0/interpreter/mahout.html | 10 +-
docs/0.8.0/interpreter/markdown.html | 10 +-
docs/0.8.0/interpreter/neo4j.html | 10 +-
docs/0.8.0/interpreter/pig.html | 10 +-
docs/0.8.0/interpreter/postgresql.html | 10 +-
docs/0.8.0/interpreter/python.html | 10 +-
docs/0.8.0/interpreter/r.html | 10 +-
docs/0.8.0/interpreter/sap.html | 10 +-
docs/0.8.0/interpreter/scalding.html | 10 +-
docs/0.8.0/interpreter/scio.html | 10 +-
docs/0.8.0/interpreter/shell.html | 10 +-
docs/0.8.0/interpreter/spark.html | 10 +-
docs/0.8.0/pleasecontribute.html | 10 +-
docs/0.8.0/quickstart/explore_ui.html | 10 +-
docs/0.8.0/quickstart/install.html | 10 +-
docs/0.8.0/quickstart/python_with_zeppelin.html | 10 +-
docs/0.8.0/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.8.0/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.8.0/quickstart/tutorial.html | 10 +-
docs/0.8.0/screenshots.html | 10 +-
docs/0.8.0/search.html | 10 +-
docs/0.8.0/setup/basics/how_to_build.html | 11 +-
docs/0.8.0/setup/basics/multi_user_support.html | 10 +-
docs/0.8.0/setup/deployment/cdh.html | 10 +-
docs/0.8.0/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../0.8.0/setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.8.0/setup/deployment/virtual_machine.html | 10 +-
docs/0.8.0/setup/deployment/yarn_install.html | 10 +-
docs/0.8.0/setup/operation/configuration.html | 10 +-
docs/0.8.0/setup/operation/proxy_setting.html | 10 +-
docs/0.8.0/setup/operation/trouble_shooting.html | 10 +-
docs/0.8.0/setup/operation/upgrading.html | 10 +-
.../0.8.0/setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../0.8.0/setup/security/shiro_authentication.html | 10 +-
docs/0.8.0/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.8.0/usage/display_system/basic.html | 14 +-
docs/0.8.0/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.8.0/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.8.0/usage/interpreter/execution_hooks.html | 10 +-
docs/0.8.0/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.8.0/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../0.8.0/usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.8.0/usage/rest_api/configuration.html | 10 +-
docs/0.8.0/usage/rest_api/credential.html | 10 +-
docs/0.8.0/usage/rest_api/helium.html | 10 +-
docs/0.8.0/usage/rest_api/interpreter.html | 10 +-
docs/0.8.0/usage/rest_api/notebook.html | 10 +-
docs/0.8.0/usage/rest_api/notebook_repository.html | 10 +-
docs/0.8.0/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.8.1/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.8.1/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.8.1/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.8.1/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.8.1/index.html | 10 +-
docs/0.8.1/interpreter/alluxio.html | 10 +-
docs/0.8.1/interpreter/beam.html | 10 +-
docs/0.8.1/interpreter/bigquery.html | 10 +-
docs/0.8.1/interpreter/cassandra.html | 10 +-
docs/0.8.1/interpreter/elasticsearch.html | 10 +-
docs/0.8.1/interpreter/flink.html | 10 +-
docs/0.8.1/interpreter/geode.html | 12 +-
docs/0.8.1/interpreter/groovy.html | 10 +-
docs/0.8.1/interpreter/hbase.html | 10 +-
docs/0.8.1/interpreter/hdfs.html | 10 +-
docs/0.8.1/interpreter/hive.html | 10 +-
docs/0.8.1/interpreter/ignite.html | 10 +-
docs/0.8.1/interpreter/jdbc.html | 10 +-
docs/0.8.1/interpreter/kylin.html | 10 +-
docs/0.8.1/interpreter/lens.html | 10 +-
docs/0.8.1/interpreter/livy.html | 10 +-
docs/0.8.1/interpreter/mahout.html | 10 +-
docs/0.8.1/interpreter/markdown.html | 10 +-
docs/0.8.1/interpreter/neo4j.html | 10 +-
docs/0.8.1/interpreter/pig.html | 10 +-
docs/0.8.1/interpreter/postgresql.html | 10 +-
docs/0.8.1/interpreter/python.html | 10 +-
docs/0.8.1/interpreter/r.html | 10 +-
docs/0.8.1/interpreter/sap.html | 10 +-
docs/0.8.1/interpreter/scalding.html | 10 +-
docs/0.8.1/interpreter/scio.html | 10 +-
docs/0.8.1/interpreter/shell.html | 10 +-
docs/0.8.1/interpreter/spark.html | 10 +-
docs/0.8.1/pleasecontribute.html | 10 +-
docs/0.8.1/quickstart/explore_ui.html | 10 +-
docs/0.8.1/quickstart/install.html | 10 +-
docs/0.8.1/quickstart/python_with_zeppelin.html | 10 +-
docs/0.8.1/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.8.1/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.8.1/quickstart/tutorial.html | 10 +-
docs/0.8.1/screenshots.html | 10 +-
docs/0.8.1/search.html | 10 +-
docs/0.8.1/setup/basics/how_to_build.html | 11 +-
docs/0.8.1/setup/basics/multi_user_support.html | 10 +-
docs/0.8.1/setup/deployment/cdh.html | 10 +-
docs/0.8.1/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../0.8.1/setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.8.1/setup/deployment/virtual_machine.html | 10 +-
docs/0.8.1/setup/deployment/yarn_install.html | 10 +-
docs/0.8.1/setup/operation/configuration.html | 10 +-
docs/0.8.1/setup/operation/proxy_setting.html | 10 +-
docs/0.8.1/setup/operation/trouble_shooting.html | 10 +-
docs/0.8.1/setup/operation/upgrading.html | 10 +-
.../0.8.1/setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../0.8.1/setup/security/shiro_authentication.html | 10 +-
docs/0.8.1/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.8.1/usage/display_system/basic.html | 14 +-
docs/0.8.1/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.8.1/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.8.1/usage/interpreter/execution_hooks.html | 10 +-
docs/0.8.1/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.8.1/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../0.8.1/usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.8.1/usage/rest_api/configuration.html | 10 +-
docs/0.8.1/usage/rest_api/credential.html | 10 +-
docs/0.8.1/usage/rest_api/helium.html | 10 +-
docs/0.8.1/usage/rest_api/interpreter.html | 10 +-
docs/0.8.1/usage/rest_api/notebook.html | 10 +-
docs/0.8.1/usage/rest_api/notebook_repository.html | 10 +-
docs/0.8.1/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.8.2/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.8.2/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.8.2/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.8.2/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.8.2/index.html | 10 +-
docs/0.8.2/interpreter/alluxio.html | 10 +-
docs/0.8.2/interpreter/beam.html | 10 +-
docs/0.8.2/interpreter/bigquery.html | 10 +-
docs/0.8.2/interpreter/cassandra.html | 10 +-
docs/0.8.2/interpreter/elasticsearch.html | 10 +-
docs/0.8.2/interpreter/flink.html | 10 +-
docs/0.8.2/interpreter/geode.html | 12 +-
docs/0.8.2/interpreter/groovy.html | 10 +-
docs/0.8.2/interpreter/hbase.html | 10 +-
docs/0.8.2/interpreter/hdfs.html | 10 +-
docs/0.8.2/interpreter/hive.html | 10 +-
docs/0.8.2/interpreter/ignite.html | 10 +-
docs/0.8.2/interpreter/jdbc.html | 10 +-
docs/0.8.2/interpreter/kylin.html | 10 +-
docs/0.8.2/interpreter/lens.html | 10 +-
docs/0.8.2/interpreter/livy.html | 10 +-
docs/0.8.2/interpreter/mahout.html | 10 +-
docs/0.8.2/interpreter/markdown.html | 10 +-
docs/0.8.2/interpreter/neo4j.html | 10 +-
docs/0.8.2/interpreter/pig.html | 10 +-
docs/0.8.2/interpreter/postgresql.html | 10 +-
docs/0.8.2/interpreter/python.html | 10 +-
docs/0.8.2/interpreter/r.html | 10 +-
docs/0.8.2/interpreter/sap.html | 10 +-
docs/0.8.2/interpreter/scalding.html | 10 +-
docs/0.8.2/interpreter/scio.html | 10 +-
docs/0.8.2/interpreter/shell.html | 10 +-
docs/0.8.2/interpreter/spark.html | 10 +-
docs/0.8.2/pleasecontribute.html | 10 +-
docs/0.8.2/quickstart/explore_ui.html | 10 +-
docs/0.8.2/quickstart/install.html | 10 +-
docs/0.8.2/quickstart/python_with_zeppelin.html | 10 +-
docs/0.8.2/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.8.2/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.8.2/quickstart/tutorial.html | 10 +-
docs/0.8.2/screenshots.html | 10 +-
docs/0.8.2/search.html | 10 +-
docs/0.8.2/setup/basics/how_to_build.html | 11 +-
docs/0.8.2/setup/basics/multi_user_support.html | 10 +-
docs/0.8.2/setup/deployment/cdh.html | 10 +-
docs/0.8.2/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../0.8.2/setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.8.2/setup/deployment/virtual_machine.html | 10 +-
docs/0.8.2/setup/deployment/yarn_install.html | 10 +-
docs/0.8.2/setup/operation/configuration.html | 10 +-
docs/0.8.2/setup/operation/proxy_setting.html | 10 +-
docs/0.8.2/setup/operation/trouble_shooting.html | 10 +-
docs/0.8.2/setup/operation/upgrading.html | 10 +-
.../0.8.2/setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../0.8.2/setup/security/shiro_authentication.html | 10 +-
docs/0.8.2/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.8.2/usage/display_system/basic.html | 14 +-
docs/0.8.2/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.8.2/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.8.2/usage/interpreter/execution_hooks.html | 10 +-
docs/0.8.2/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.8.2/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../0.8.2/usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.8.2/usage/rest_api/configuration.html | 10 +-
docs/0.8.2/usage/rest_api/credential.html | 10 +-
docs/0.8.2/usage/rest_api/helium.html | 10 +-
docs/0.8.2/usage/rest_api/interpreter.html | 10 +-
docs/0.8.2/usage/rest_api/notebook.html | 10 +-
docs/0.8.2/usage/rest_api/notebook_repository.html | 10 +-
docs/0.8.2/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.9.0/assets/jquery-1.10.2.min.js | 6 +
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
docs/0.9.0/assets/themes/zeppelin/css/style.css | 2 -
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 10 +-
.../contribution/how_to_contribute_website.html | 10 +-
.../contribution/useful_developer_tools.html | 10 +-
docs/0.9.0/development/helium/overview.html | 10 +-
.../development/helium/writing_application.html | 10 +-
docs/0.9.0/development/helium/writing_spell.html | 10 +-
.../helium/writing_visualization_basic.html | 10 +-
.../writing_visualization_transformation.html | 10 +-
.../development/writing_zeppelin_interpreter.html | 10 +-
docs/0.9.0/index.html | 10 +-
docs/0.9.0/interpreter/alluxio.html | 10 +-
docs/0.9.0/interpreter/beam.html | 10 +-
docs/0.9.0/interpreter/bigquery.html | 10 +-
docs/0.9.0/interpreter/cassandra.html | 10 +-
docs/0.9.0/interpreter/elasticsearch.html | 10 +-
docs/0.9.0/interpreter/flink.html | 10 +-
docs/0.9.0/interpreter/geode.html | 12 +-
docs/0.9.0/interpreter/groovy.html | 10 +-
docs/0.9.0/interpreter/hazelcastjet.html | 10 +-
docs/0.9.0/interpreter/hbase.html | 10 +-
docs/0.9.0/interpreter/hdfs.html | 10 +-
docs/0.9.0/interpreter/hive.html | 10 +-
docs/0.9.0/interpreter/ignite.html | 10 +-
docs/0.9.0/interpreter/influxdb.html | 10 +-
docs/0.9.0/interpreter/java.html | 10 +-
docs/0.9.0/interpreter/jdbc.html | 10 +-
docs/0.9.0/interpreter/jupyter.html | 10 +-
docs/0.9.0/interpreter/kotlin.html | 10 +-
docs/0.9.0/interpreter/ksql.html | 10 +-
docs/0.9.0/interpreter/kylin.html | 10 +-
docs/0.9.0/interpreter/lens.html | 10 +-
docs/0.9.0/interpreter/livy.html | 10 +-
docs/0.9.0/interpreter/mahout.html | 10 +-
docs/0.9.0/interpreter/markdown.html | 10 +-
docs/0.9.0/interpreter/mongodb.html | 10 +-
docs/0.9.0/interpreter/neo4j.html | 10 +-
docs/0.9.0/interpreter/pig.html | 10 +-
docs/0.9.0/interpreter/postgresql.html | 10 +-
docs/0.9.0/interpreter/python.html | 10 +-
docs/0.9.0/interpreter/r.html | 10 +-
docs/0.9.0/interpreter/sap.html | 10 +-
docs/0.9.0/interpreter/scalding.html | 10 +-
docs/0.9.0/interpreter/scio.html | 10 +-
docs/0.9.0/interpreter/shell.html | 10 +-
docs/0.9.0/interpreter/spark.html | 10 +-
docs/0.9.0/interpreter/sparql.html | 10 +-
docs/0.9.0/interpreter/submarine.html | 10 +-
docs/0.9.0/pleasecontribute.html | 10 +-
docs/0.9.0/quickstart/docker.html | 10 +-
docs/0.9.0/quickstart/explore_ui.html | 10 +-
docs/0.9.0/quickstart/install.html | 10 +-
docs/0.9.0/quickstart/kubernetes.html | 10 +-
docs/0.9.0/quickstart/python_with_zeppelin.html | 10 +-
docs/0.9.0/quickstart/spark_with_zeppelin.html | 10 +-
docs/0.9.0/quickstart/sql_with_zeppelin.html | 10 +-
docs/0.9.0/quickstart/tutorial.html | 10 +-
docs/0.9.0/quickstart/yarn.html | 10 +-
docs/0.9.0/screenshots.html | 10 +-
docs/0.9.0/search.html | 10 +-
docs/0.9.0/setup/basics/hadoop_integration.html | 10 +-
docs/0.9.0/setup/basics/how_to_build.html | 11 +-
docs/0.9.0/setup/basics/multi_user_support.html | 10 +-
docs/0.9.0/setup/basics/systemd.html | 10 +-
docs/0.9.0/setup/deployment/cdh.html | 10 +-
docs/0.9.0/setup/deployment/docker.html | 10 +-
.../setup/deployment/flink_and_spark_cluster.html | 10 +-
.../0.9.0/setup/deployment/spark_cluster_mode.html | 10 +-
docs/0.9.0/setup/deployment/virtual_machine.html | 10 +-
docs/0.9.0/setup/deployment/yarn_install.html | 10 +-
docs/0.9.0/setup/operation/configuration.html | 10 +-
docs/0.9.0/setup/operation/monitoring.html | 10 +-
docs/0.9.0/setup/operation/proxy_setting.html | 10 +-
docs/0.9.0/setup/operation/trouble_shooting.html | 10 +-
docs/0.9.0/setup/operation/upgrading.html | 10 +-
.../0.9.0/setup/security/authentication_nginx.html | 10 +-
.../setup/security/datasource_authorization.html | 10 +-
.../setup/security/http_security_headers.html | 10 +-
.../setup/security/notebook_authorization.html | 10 +-
.../0.9.0/setup/security/shiro_authentication.html | 10 +-
docs/0.9.0/setup/storage/storage.html | 10 +-
.../usage/display_system/angular_backend.html | 10 +-
.../usage/display_system/angular_frontend.html | 10 +-
docs/0.9.0/usage/display_system/basic.html | 14 +-
docs/0.9.0/usage/dynamic_form/intro.html | 10 +-
.../usage/interpreter/dependency_management.html | 10 +-
docs/0.9.0/usage/interpreter/dynamic_loading.html | 10 +-
docs/0.9.0/usage/interpreter/execution_hooks.html | 10 +-
docs/0.9.0/usage/interpreter/installation.html | 10 +-
.../interpreter/interpreter_binding_mode.html | 10 +-
docs/0.9.0/usage/interpreter/overview.html | 10 +-
.../usage/interpreter/user_impersonation.html | 10 +-
.../0.9.0/usage/other_features/cron_scheduler.html | 10 +-
.../usage/other_features/customizing_homepage.html | 10 +-
.../usage/other_features/notebook_actions.html | 10 +-
.../usage/other_features/personalized_mode.html | 10 +-
.../other_features/publishing_paragraphs.html | 10 +-
.../usage/other_features/zeppelin_context.html | 10 +-
docs/0.9.0/usage/rest_api/configuration.html | 10 +-
docs/0.9.0/usage/rest_api/credential.html | 10 +-
docs/0.9.0/usage/rest_api/helium.html | 10 +-
docs/0.9.0/usage/rest_api/interpreter.html | 10 +-
docs/0.9.0/usage/rest_api/notebook.html | 10 +-
docs/0.9.0/usage/rest_api/notebook_repository.html | 10 +-
docs/0.9.0/usage/rest_api/zeppelin_server.html | 10 +-
docs/0.9.0/usage/zeppelin_sdk/client_api.html | 10 +-
docs/0.9.0/usage/zeppelin_sdk/session_api.html | 10 +-
output/assets.html | 9 +-
output/assets/themes/zeppelin/css/style.css | 3 -
.../assets/themes/zeppelin/js/medium.controller.js | 8 +-
output/community.html | 9 +-
output/contribution/contributions.html | 9 +-
output/contribution/documentation.html | 9 +-
output/contribution/webapplication.html | 9 +-
.../zeppelinweb/goodPracticeGuide01.html | 9 +-
.../zeppelinweb/goodPracticeGuide02.html | 9 +-
.../zeppelinweb/goodPracticeGuide03.html | 9 +-
.../zeppelinweb/goodPracticeGuide04.html | 9 +-
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.10.0/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.10.0/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.10.0/index.html | 6 -
output/docs/0.10.0/interpreter/alluxio.html | 6 -
output/docs/0.10.0/interpreter/beam.html | 6 -
output/docs/0.10.0/interpreter/bigquery.html | 6 -
output/docs/0.10.0/interpreter/cassandra.html | 6 -
output/docs/0.10.0/interpreter/elasticsearch.html | 6 -
output/docs/0.10.0/interpreter/flink.html | 6 -
output/docs/0.10.0/interpreter/geode.html | 8 +-
output/docs/0.10.0/interpreter/groovy.html | 6 -
output/docs/0.10.0/interpreter/hazelcastjet.html | 6 -
output/docs/0.10.0/interpreter/hbase.html | 6 -
output/docs/0.10.0/interpreter/hdfs.html | 6 -
output/docs/0.10.0/interpreter/hive.html | 6 -
output/docs/0.10.0/interpreter/ignite.html | 6 -
output/docs/0.10.0/interpreter/influxdb.html | 6 -
output/docs/0.10.0/interpreter/java.html | 6 -
output/docs/0.10.0/interpreter/jdbc.html | 6 -
output/docs/0.10.0/interpreter/jupyter.html | 6 -
output/docs/0.10.0/interpreter/kotlin.html | 6 -
output/docs/0.10.0/interpreter/ksql.html | 6 -
output/docs/0.10.0/interpreter/kylin.html | 6 -
output/docs/0.10.0/interpreter/lens.html | 6 -
output/docs/0.10.0/interpreter/livy.html | 6 -
output/docs/0.10.0/interpreter/mahout.html | 6 -
output/docs/0.10.0/interpreter/markdown.html | 6 -
output/docs/0.10.0/interpreter/mongodb.html | 6 -
output/docs/0.10.0/interpreter/neo4j.html | 6 -
output/docs/0.10.0/interpreter/pig.html | 6 -
output/docs/0.10.0/interpreter/postgresql.html | 6 -
output/docs/0.10.0/interpreter/python.html | 6 -
output/docs/0.10.0/interpreter/r.html | 6 -
output/docs/0.10.0/interpreter/sap.html | 6 -
output/docs/0.10.0/interpreter/scalding.html | 6 -
output/docs/0.10.0/interpreter/scio.html | 6 -
output/docs/0.10.0/interpreter/shell.html | 6 -
output/docs/0.10.0/interpreter/spark.html | 6 -
output/docs/0.10.0/interpreter/sparql.html | 6 -
output/docs/0.10.0/interpreter/submarine.html | 6 -
output/docs/0.10.0/pleasecontribute.html | 6 -
output/docs/0.10.0/quickstart/docker.html | 6 -
output/docs/0.10.0/quickstart/explore_ui.html | 6 -
.../0.10.0/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.10.0/quickstart/install.html | 6 -
output/docs/0.10.0/quickstart/kubernetes.html | 6 -
.../0.10.0/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.10.0/quickstart/r_with_zeppelin.html | 6 -
.../0.10.0/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.10.0/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.10.0/quickstart/tutorial.html | 6 -
output/docs/0.10.0/quickstart/yarn.html | 6 -
output/docs/0.10.0/screenshots.html | 6 -
output/docs/0.10.0/search.html | 6 -
.../0.10.0/setup/basics/hadoop_integration.html | 6 -
output/docs/0.10.0/setup/basics/how_to_build.html | 7 -
.../0.10.0/setup/basics/multi_user_support.html | 6 -
output/docs/0.10.0/setup/basics/systemd.html | 6 -
output/docs/0.10.0/setup/deployment/cdh.html | 6 -
output/docs/0.10.0/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.10.0/setup/deployment/virtual_machine.html | 6 -
.../docs/0.10.0/setup/deployment/yarn_install.html | 6 -
.../docs/0.10.0/setup/operation/configuration.html | 6 -
output/docs/0.10.0/setup/operation/monitoring.html | 6 -
.../docs/0.10.0/setup/operation/proxy_setting.html | 6 -
.../0.10.0/setup/operation/trouble_shooting.html | 6 -
output/docs/0.10.0/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
output/docs/0.10.0/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.10.0/usage/display_system/basic.html | 10 +-
output/docs/0.10.0/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.10.0/usage/interpreter/dynamic_loading.html | 6 -
.../0.10.0/usage/interpreter/execution_hooks.html | 6 -
.../0.10.0/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.10.0/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.10.0/usage/rest_api/configuration.html | 6 -
output/docs/0.10.0/usage/rest_api/credential.html | 6 -
output/docs/0.10.0/usage/rest_api/helium.html | 6 -
output/docs/0.10.0/usage/rest_api/interpreter.html | 6 -
output/docs/0.10.0/usage/rest_api/notebook.html | 6 -
.../0.10.0/usage/rest_api/notebook_repository.html | 6 -
.../0.10.0/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.10.0/usage/zeppelin_sdk/client_api.html | 6 -
.../0.10.0/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.10.1/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.10.1/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.10.1/index.html | 6 -
output/docs/0.10.1/interpreter/alluxio.html | 6 -
output/docs/0.10.1/interpreter/beam.html | 6 -
output/docs/0.10.1/interpreter/bigquery.html | 6 -
output/docs/0.10.1/interpreter/cassandra.html | 6 -
output/docs/0.10.1/interpreter/elasticsearch.html | 6 -
output/docs/0.10.1/interpreter/flink.html | 6 -
output/docs/0.10.1/interpreter/geode.html | 8 +-
output/docs/0.10.1/interpreter/groovy.html | 6 -
output/docs/0.10.1/interpreter/hazelcastjet.html | 6 -
output/docs/0.10.1/interpreter/hbase.html | 6 -
output/docs/0.10.1/interpreter/hdfs.html | 6 -
output/docs/0.10.1/interpreter/hive.html | 6 -
output/docs/0.10.1/interpreter/ignite.html | 6 -
output/docs/0.10.1/interpreter/influxdb.html | 6 -
output/docs/0.10.1/interpreter/java.html | 6 -
output/docs/0.10.1/interpreter/jdbc.html | 6 -
output/docs/0.10.1/interpreter/jupyter.html | 6 -
output/docs/0.10.1/interpreter/kotlin.html | 6 -
output/docs/0.10.1/interpreter/ksql.html | 6 -
output/docs/0.10.1/interpreter/kylin.html | 6 -
output/docs/0.10.1/interpreter/lens.html | 6 -
output/docs/0.10.1/interpreter/livy.html | 6 -
output/docs/0.10.1/interpreter/mahout.html | 6 -
output/docs/0.10.1/interpreter/markdown.html | 6 -
output/docs/0.10.1/interpreter/mongodb.html | 6 -
output/docs/0.10.1/interpreter/neo4j.html | 6 -
output/docs/0.10.1/interpreter/pig.html | 6 -
output/docs/0.10.1/interpreter/postgresql.html | 6 -
output/docs/0.10.1/interpreter/python.html | 6 -
output/docs/0.10.1/interpreter/r.html | 6 -
output/docs/0.10.1/interpreter/sap.html | 6 -
output/docs/0.10.1/interpreter/scalding.html | 6 -
output/docs/0.10.1/interpreter/scio.html | 6 -
output/docs/0.10.1/interpreter/shell.html | 6 -
output/docs/0.10.1/interpreter/spark.html | 6 -
output/docs/0.10.1/interpreter/sparql.html | 6 -
output/docs/0.10.1/interpreter/submarine.html | 6 -
output/docs/0.10.1/pleasecontribute.html | 6 -
output/docs/0.10.1/quickstart/docker.html | 6 -
output/docs/0.10.1/quickstart/explore_ui.html | 6 -
.../0.10.1/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.10.1/quickstart/install.html | 6 -
output/docs/0.10.1/quickstart/kubernetes.html | 6 -
.../0.10.1/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.10.1/quickstart/r_with_zeppelin.html | 6 -
.../0.10.1/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.10.1/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.10.1/quickstart/tutorial.html | 6 -
output/docs/0.10.1/quickstart/yarn.html | 6 -
output/docs/0.10.1/screenshots.html | 6 -
output/docs/0.10.1/search.html | 6 -
.../0.10.1/setup/basics/hadoop_integration.html | 6 -
output/docs/0.10.1/setup/basics/how_to_build.html | 7 -
.../0.10.1/setup/basics/multi_user_support.html | 6 -
output/docs/0.10.1/setup/basics/systemd.html | 6 -
output/docs/0.10.1/setup/deployment/cdh.html | 6 -
output/docs/0.10.1/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.10.1/setup/deployment/virtual_machine.html | 6 -
.../docs/0.10.1/setup/deployment/yarn_install.html | 6 -
.../docs/0.10.1/setup/operation/configuration.html | 6 -
output/docs/0.10.1/setup/operation/monitoring.html | 6 -
.../docs/0.10.1/setup/operation/proxy_setting.html | 6 -
.../0.10.1/setup/operation/trouble_shooting.html | 6 -
output/docs/0.10.1/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
output/docs/0.10.1/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.10.1/usage/display_system/basic.html | 10 +-
output/docs/0.10.1/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.10.1/usage/interpreter/dynamic_loading.html | 6 -
.../0.10.1/usage/interpreter/execution_hooks.html | 6 -
.../0.10.1/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.10.1/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.10.1/usage/rest_api/configuration.html | 6 -
output/docs/0.10.1/usage/rest_api/credential.html | 6 -
output/docs/0.10.1/usage/rest_api/helium.html | 6 -
output/docs/0.10.1/usage/rest_api/interpreter.html | 6 -
output/docs/0.10.1/usage/rest_api/notebook.html | 6 -
.../0.10.1/usage/rest_api/notebook_repository.html | 6 -
.../0.10.1/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.10.1/usage/zeppelin_sdk/client_api.html | 6 -
.../0.10.1/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.11.0/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.11.0/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.11.0/index.html | 6 -
output/docs/0.11.0/interpreter/alluxio.html | 6 -
output/docs/0.11.0/interpreter/bigquery.html | 6 -
output/docs/0.11.0/interpreter/cassandra.html | 6 -
output/docs/0.11.0/interpreter/elasticsearch.html | 6 -
output/docs/0.11.0/interpreter/flink.html | 6 -
output/docs/0.11.0/interpreter/groovy.html | 6 -
output/docs/0.11.0/interpreter/hbase.html | 6 -
output/docs/0.11.0/interpreter/hdfs.html | 6 -
output/docs/0.11.0/interpreter/hive.html | 6 -
output/docs/0.11.0/interpreter/influxdb.html | 6 -
output/docs/0.11.0/interpreter/java.html | 6 -
output/docs/0.11.0/interpreter/jdbc.html | 6 -
output/docs/0.11.0/interpreter/jupyter.html | 6 -
output/docs/0.11.0/interpreter/livy.html | 6 -
output/docs/0.11.0/interpreter/mahout.html | 6 -
output/docs/0.11.0/interpreter/markdown.html | 6 -
output/docs/0.11.0/interpreter/mongodb.html | 6 -
output/docs/0.11.0/interpreter/neo4j.html | 6 -
output/docs/0.11.0/interpreter/postgresql.html | 6 -
output/docs/0.11.0/interpreter/python.html | 6 -
output/docs/0.11.0/interpreter/r.html | 6 -
output/docs/0.11.0/interpreter/shell.html | 6 -
output/docs/0.11.0/interpreter/spark.html | 6 -
output/docs/0.11.0/interpreter/sparql.html | 6 -
output/docs/0.11.0/interpreter/submarine.html | 6 -
output/docs/0.11.0/pleasecontribute.html | 6 -
output/docs/0.11.0/quickstart/docker.html | 6 -
output/docs/0.11.0/quickstart/explore_ui.html | 6 -
.../0.11.0/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.11.0/quickstart/install.html | 6 -
output/docs/0.11.0/quickstart/kubernetes.html | 6 -
.../0.11.0/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.11.0/quickstart/r_with_zeppelin.html | 6 -
.../0.11.0/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.11.0/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.11.0/quickstart/tutorial.html | 6 -
output/docs/0.11.0/quickstart/yarn.html | 6 -
output/docs/0.11.0/screenshots.html | 6 -
output/docs/0.11.0/search.html | 6 -
.../0.11.0/setup/basics/hadoop_integration.html | 6 -
output/docs/0.11.0/setup/basics/how_to_build.html | 7 -
.../0.11.0/setup/basics/multi_user_support.html | 6 -
output/docs/0.11.0/setup/basics/systemd.html | 6 -
output/docs/0.11.0/setup/deployment/cdh.html | 6 -
output/docs/0.11.0/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.11.0/setup/deployment/virtual_machine.html | 6 -
.../docs/0.11.0/setup/deployment/yarn_install.html | 6 -
.../docs/0.11.0/setup/operation/configuration.html | 6 -
output/docs/0.11.0/setup/operation/monitoring.html | 6 -
.../docs/0.11.0/setup/operation/proxy_setting.html | 6 -
.../0.11.0/setup/operation/trouble_shooting.html | 6 -
output/docs/0.11.0/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
.../setup/storage/configuration_storage.html | 6 -
.../0.11.0/setup/storage/notebook_storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.11.0/usage/display_system/basic.html | 10 +-
output/docs/0.11.0/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.11.0/usage/interpreter/dynamic_loading.html | 6 -
.../0.11.0/usage/interpreter/execution_hooks.html | 6 -
.../0.11.0/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.11.0/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.11.0/usage/rest_api/configuration.html | 6 -
output/docs/0.11.0/usage/rest_api/credential.html | 6 -
output/docs/0.11.0/usage/rest_api/helium.html | 6 -
output/docs/0.11.0/usage/rest_api/interpreter.html | 6 -
output/docs/0.11.0/usage/rest_api/notebook.html | 6 -
.../0.11.0/usage/rest_api/notebook_repository.html | 6 -
.../0.11.0/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.11.0/usage/zeppelin_sdk/client_api.html | 6 -
.../0.11.0/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.11.1/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.11.1/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.11.1/index.html | 6 -
output/docs/0.11.1/interpreter/alluxio.html | 6 -
output/docs/0.11.1/interpreter/bigquery.html | 6 -
output/docs/0.11.1/interpreter/cassandra.html | 6 -
output/docs/0.11.1/interpreter/elasticsearch.html | 6 -
output/docs/0.11.1/interpreter/flink.html | 6 -
output/docs/0.11.1/interpreter/groovy.html | 6 -
output/docs/0.11.1/interpreter/hbase.html | 6 -
output/docs/0.11.1/interpreter/hdfs.html | 6 -
output/docs/0.11.1/interpreter/hive.html | 6 -
output/docs/0.11.1/interpreter/influxdb.html | 6 -
output/docs/0.11.1/interpreter/java.html | 6 -
output/docs/0.11.1/interpreter/jdbc.html | 6 -
output/docs/0.11.1/interpreter/jupyter.html | 6 -
output/docs/0.11.1/interpreter/livy.html | 6 -
output/docs/0.11.1/interpreter/mahout.html | 6 -
output/docs/0.11.1/interpreter/markdown.html | 6 -
output/docs/0.11.1/interpreter/mongodb.html | 6 -
output/docs/0.11.1/interpreter/neo4j.html | 6 -
output/docs/0.11.1/interpreter/postgresql.html | 6 -
output/docs/0.11.1/interpreter/python.html | 6 -
output/docs/0.11.1/interpreter/r.html | 6 -
output/docs/0.11.1/interpreter/shell.html | 6 -
output/docs/0.11.1/interpreter/spark.html | 6 -
output/docs/0.11.1/interpreter/sparql.html | 6 -
output/docs/0.11.1/interpreter/submarine.html | 6 -
output/docs/0.11.1/pleasecontribute.html | 6 -
output/docs/0.11.1/quickstart/docker.html | 6 -
output/docs/0.11.1/quickstart/explore_ui.html | 6 -
.../0.11.1/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.11.1/quickstart/install.html | 6 -
output/docs/0.11.1/quickstart/kubernetes.html | 6 -
.../0.11.1/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.11.1/quickstart/r_with_zeppelin.html | 6 -
.../0.11.1/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.11.1/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.11.1/quickstart/tutorial.html | 6 -
output/docs/0.11.1/quickstart/yarn.html | 6 -
output/docs/0.11.1/screenshots.html | 6 -
output/docs/0.11.1/search.html | 6 -
.../0.11.1/setup/basics/hadoop_integration.html | 6 -
output/docs/0.11.1/setup/basics/how_to_build.html | 7 -
.../0.11.1/setup/basics/multi_user_support.html | 6 -
output/docs/0.11.1/setup/basics/systemd.html | 6 -
output/docs/0.11.1/setup/deployment/cdh.html | 6 -
output/docs/0.11.1/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.11.1/setup/deployment/virtual_machine.html | 6 -
.../docs/0.11.1/setup/deployment/yarn_install.html | 6 -
.../docs/0.11.1/setup/operation/configuration.html | 6 -
output/docs/0.11.1/setup/operation/monitoring.html | 6 -
.../docs/0.11.1/setup/operation/proxy_setting.html | 6 -
.../0.11.1/setup/operation/trouble_shooting.html | 6 -
output/docs/0.11.1/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
.../setup/storage/configuration_storage.html | 6 -
.../0.11.1/setup/storage/notebook_storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.11.1/usage/display_system/basic.html | 10 +-
output/docs/0.11.1/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.11.1/usage/interpreter/dynamic_loading.html | 6 -
.../0.11.1/usage/interpreter/execution_hooks.html | 6 -
.../0.11.1/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.11.1/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.11.1/usage/rest_api/configuration.html | 6 -
output/docs/0.11.1/usage/rest_api/credential.html | 6 -
output/docs/0.11.1/usage/rest_api/helium.html | 6 -
output/docs/0.11.1/usage/rest_api/interpreter.html | 6 -
output/docs/0.11.1/usage/rest_api/notebook.html | 6 -
.../0.11.1/usage/rest_api/notebook_repository.html | 6 -
.../0.11.1/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.11.1/usage/zeppelin_sdk/client_api.html | 6 -
.../0.11.1/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.11.2/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.11.2/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.11.2/index.html | 6 -
output/docs/0.11.2/interpreter/alluxio.html | 6 -
output/docs/0.11.2/interpreter/bigquery.html | 6 -
output/docs/0.11.2/interpreter/cassandra.html | 6 -
output/docs/0.11.2/interpreter/elasticsearch.html | 6 -
output/docs/0.11.2/interpreter/flink.html | 6 -
output/docs/0.11.2/interpreter/groovy.html | 6 -
output/docs/0.11.2/interpreter/hbase.html | 6 -
output/docs/0.11.2/interpreter/hdfs.html | 6 -
output/docs/0.11.2/interpreter/hive.html | 6 -
output/docs/0.11.2/interpreter/influxdb.html | 6 -
output/docs/0.11.2/interpreter/java.html | 6 -
output/docs/0.11.2/interpreter/jdbc.html | 6 -
output/docs/0.11.2/interpreter/jupyter.html | 6 -
output/docs/0.11.2/interpreter/livy.html | 6 -
output/docs/0.11.2/interpreter/mahout.html | 6 -
output/docs/0.11.2/interpreter/markdown.html | 6 -
output/docs/0.11.2/interpreter/mongodb.html | 6 -
output/docs/0.11.2/interpreter/neo4j.html | 6 -
output/docs/0.11.2/interpreter/postgresql.html | 6 -
output/docs/0.11.2/interpreter/python.html | 6 -
output/docs/0.11.2/interpreter/r.html | 6 -
output/docs/0.11.2/interpreter/shell.html | 6 -
output/docs/0.11.2/interpreter/spark.html | 6 -
output/docs/0.11.2/interpreter/sparql.html | 6 -
output/docs/0.11.2/interpreter/submarine.html | 6 -
output/docs/0.11.2/pleasecontribute.html | 6 -
output/docs/0.11.2/quickstart/docker.html | 6 -
output/docs/0.11.2/quickstart/explore_ui.html | 6 -
.../0.11.2/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.11.2/quickstart/install.html | 6 -
output/docs/0.11.2/quickstart/kubernetes.html | 6 -
.../0.11.2/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.11.2/quickstart/r_with_zeppelin.html | 6 -
.../0.11.2/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.11.2/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.11.2/quickstart/tutorial.html | 6 -
output/docs/0.11.2/quickstart/yarn.html | 6 -
output/docs/0.11.2/screenshots.html | 6 -
output/docs/0.11.2/search.html | 6 -
.../0.11.2/setup/basics/hadoop_integration.html | 6 -
output/docs/0.11.2/setup/basics/how_to_build.html | 7 -
.../0.11.2/setup/basics/multi_user_support.html | 6 -
output/docs/0.11.2/setup/basics/systemd.html | 6 -
output/docs/0.11.2/setup/deployment/cdh.html | 6 -
output/docs/0.11.2/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.11.2/setup/deployment/virtual_machine.html | 6 -
.../docs/0.11.2/setup/deployment/yarn_install.html | 6 -
.../docs/0.11.2/setup/operation/configuration.html | 6 -
output/docs/0.11.2/setup/operation/monitoring.html | 6 -
.../docs/0.11.2/setup/operation/proxy_setting.html | 6 -
.../0.11.2/setup/operation/trouble_shooting.html | 6 -
output/docs/0.11.2/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
.../setup/storage/configuration_storage.html | 6 -
.../0.11.2/setup/storage/notebook_storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.11.2/usage/display_system/basic.html | 10 +-
output/docs/0.11.2/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.11.2/usage/interpreter/dynamic_loading.html | 6 -
.../0.11.2/usage/interpreter/execution_hooks.html | 6 -
.../0.11.2/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.11.2/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.11.2/usage/rest_api/configuration.html | 6 -
output/docs/0.11.2/usage/rest_api/credential.html | 6 -
output/docs/0.11.2/usage/rest_api/helium.html | 6 -
output/docs/0.11.2/usage/rest_api/interpreter.html | 6 -
output/docs/0.11.2/usage/rest_api/notebook.html | 6 -
.../0.11.2/usage/rest_api/notebook_repository.html | 6 -
.../0.11.2/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.11.2/usage/zeppelin_sdk/client_api.html | 6 -
.../0.11.2/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
.../docs/0.12.0/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.12.0/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.12.0/index.html | 6 -
output/docs/0.12.0/interpreter/alluxio.html | 6 -
output/docs/0.12.0/interpreter/bigquery.html | 6 -
output/docs/0.12.0/interpreter/cassandra.html | 6 -
output/docs/0.12.0/interpreter/elasticsearch.html | 6 -
output/docs/0.12.0/interpreter/flink.html | 6 -
output/docs/0.12.0/interpreter/groovy.html | 6 -
output/docs/0.12.0/interpreter/hbase.html | 6 -
output/docs/0.12.0/interpreter/hdfs.html | 6 -
output/docs/0.12.0/interpreter/hive.html | 6 -
output/docs/0.12.0/interpreter/influxdb.html | 6 -
output/docs/0.12.0/interpreter/java.html | 6 -
output/docs/0.12.0/interpreter/jdbc.html | 6 -
output/docs/0.12.0/interpreter/jupyter.html | 6 -
output/docs/0.12.0/interpreter/livy.html | 6 -
output/docs/0.12.0/interpreter/mahout.html | 6 -
output/docs/0.12.0/interpreter/markdown.html | 6 -
output/docs/0.12.0/interpreter/mongodb.html | 6 -
output/docs/0.12.0/interpreter/neo4j.html | 6 -
output/docs/0.12.0/interpreter/postgresql.html | 6 -
output/docs/0.12.0/interpreter/python.html | 6 -
output/docs/0.12.0/interpreter/r.html | 6 -
output/docs/0.12.0/interpreter/shell.html | 6 -
output/docs/0.12.0/interpreter/spark.html | 6 -
output/docs/0.12.0/interpreter/sparql.html | 6 -
output/docs/0.12.0/pleasecontribute.html | 6 -
output/docs/0.12.0/quickstart/docker.html | 6 -
output/docs/0.12.0/quickstart/explore_ui.html | 6 -
.../0.12.0/quickstart/flink_with_zeppelin.html | 6 -
output/docs/0.12.0/quickstart/install.html | 6 -
output/docs/0.12.0/quickstart/kubernetes.html | 6 -
.../0.12.0/quickstart/python_with_zeppelin.html | 6 -
output/docs/0.12.0/quickstart/r_with_zeppelin.html | 6 -
.../0.12.0/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.12.0/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.12.0/quickstart/tutorial.html | 6 -
output/docs/0.12.0/quickstart/yarn.html | 6 -
output/docs/0.12.0/screenshots.html | 6 -
output/docs/0.12.0/search.html | 6 -
.../0.12.0/setup/basics/hadoop_integration.html | 6 -
output/docs/0.12.0/setup/basics/how_to_build.html | 6 -
.../0.12.0/setup/basics/multi_user_support.html | 6 -
output/docs/0.12.0/setup/basics/systemd.html | 6 -
output/docs/0.12.0/setup/deployment/cdh.html | 6 -
output/docs/0.12.0/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../setup/deployment/spark_cluster_mode.html | 6 -
.../0.12.0/setup/deployment/virtual_machine.html | 6 -
.../docs/0.12.0/setup/deployment/yarn_install.html | 6 -
.../docs/0.12.0/setup/operation/configuration.html | 6 -
output/docs/0.12.0/setup/operation/monitoring.html | 6 -
.../docs/0.12.0/setup/operation/proxy_setting.html | 6 -
.../0.12.0/setup/operation/trouble_shooting.html | 6 -
output/docs/0.12.0/setup/operation/upgrading.html | 6 -
.../setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../setup/security/shiro_authentication.html | 6 -
.../setup/storage/configuration_storage.html | 6 -
.../0.12.0/setup/storage/notebook_storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.12.0/usage/display_system/basic.html | 10 +-
output/docs/0.12.0/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.12.0/usage/interpreter/dynamic_loading.html | 6 -
.../0.12.0/usage/interpreter/execution_hooks.html | 6 -
.../0.12.0/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.12.0/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.12.0/usage/rest_api/configuration.html | 6 -
output/docs/0.12.0/usage/rest_api/credential.html | 6 -
output/docs/0.12.0/usage/rest_api/helium.html | 6 -
output/docs/0.12.0/usage/rest_api/interpreter.html | 6 -
output/docs/0.12.0/usage/rest_api/notebook.html | 6 -
.../0.12.0/usage/rest_api/notebook_repository.html | 6 -
.../0.12.0/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.12.0/usage/zeppelin_sdk/client_api.html | 6 -
.../0.12.0/usage/zeppelin_sdk/session_api.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../contribution/how_to_contribute_code.html | 26 +-
.../contribution/how_to_contribute_website.html | 26 +-
.../contribution/useful_developer_tools.html | 26 +-
.../docs/0.12.1/development/helium/overview.html | 26 +-
.../development/helium/writing_application.html | 26 +-
.../0.12.1/development/helium/writing_spell.html | 26 +-
.../helium/writing_visualization_basic.html | 26 +-
.../writing_visualization_transformation.html | 26 +-
.../development/writing_zeppelin_interpreter.html | 26 +-
output/docs/0.12.1/index.html | 26 +-
output/docs/0.12.1/interpreter/alluxio.html | 26 +-
output/docs/0.12.1/interpreter/bigquery.html | 26 +-
output/docs/0.12.1/interpreter/cassandra.html | 26 +-
output/docs/0.12.1/interpreter/elasticsearch.html | 26 +-
output/docs/0.12.1/interpreter/flink.html | 26 +-
output/docs/0.12.1/interpreter/groovy.html | 26 +-
output/docs/0.12.1/interpreter/hbase.html | 26 +-
output/docs/0.12.1/interpreter/hdfs.html | 26 +-
output/docs/0.12.1/interpreter/hive.html | 26 +-
output/docs/0.12.1/interpreter/influxdb.html | 26 +-
output/docs/0.12.1/interpreter/java.html | 26 +-
output/docs/0.12.1/interpreter/jdbc.html | 26 +-
output/docs/0.12.1/interpreter/jupyter.html | 26 +-
output/docs/0.12.1/interpreter/livy.html | 26 +-
output/docs/0.12.1/interpreter/mahout.html | 26 +-
output/docs/0.12.1/interpreter/markdown.html | 26 +-
output/docs/0.12.1/interpreter/mongodb.html | 26 +-
output/docs/0.12.1/interpreter/neo4j.html | 26 +-
output/docs/0.12.1/interpreter/postgresql.html | 26 +-
output/docs/0.12.1/interpreter/python.html | 26 +-
output/docs/0.12.1/interpreter/r.html | 26 +-
output/docs/0.12.1/interpreter/shell.html | 26 +-
output/docs/0.12.1/interpreter/spark.html | 26 +-
output/docs/0.12.1/interpreter/sparql.html | 26 +-
output/docs/0.12.1/pleasecontribute.html | 26 +-
output/docs/0.12.1/quickstart/docker.html | 26 +-
output/docs/0.12.1/quickstart/explore_ui.html | 26 +-
.../0.12.1/quickstart/flink_with_zeppelin.html | 26 +-
output/docs/0.12.1/quickstart/install.html | 26 +-
output/docs/0.12.1/quickstart/kubernetes.html | 26 +-
.../0.12.1/quickstart/python_with_zeppelin.html | 26 +-
output/docs/0.12.1/quickstart/r_with_zeppelin.html | 26 +-
.../0.12.1/quickstart/spark_with_zeppelin.html | 26 +-
.../docs/0.12.1/quickstart/sql_with_zeppelin.html | 26 +-
output/docs/0.12.1/quickstart/tutorial.html | 26 +-
output/docs/0.12.1/quickstart/yarn.html | 26 +-
output/docs/0.12.1/screenshots.html | 26 +-
output/docs/0.12.1/search.html | 26 +-
.../0.12.1/setup/basics/hadoop_integration.html | 26 +-
output/docs/0.12.1/setup/basics/how_to_build.html | 26 +-
.../0.12.1/setup/basics/multi_user_support.html | 26 +-
output/docs/0.12.1/setup/basics/systemd.html | 26 +-
output/docs/0.12.1/setup/deployment/cdh.html | 26 +-
output/docs/0.12.1/setup/deployment/docker.html | 26 +-
.../setup/deployment/flink_and_spark_cluster.html | 26 +-
.../setup/deployment/spark_cluster_mode.html | 26 +-
.../0.12.1/setup/deployment/virtual_machine.html | 26 +-
.../docs/0.12.1/setup/deployment/yarn_install.html | 26 +-
.../docs/0.12.1/setup/operation/configuration.html | 26 +-
output/docs/0.12.1/setup/operation/monitoring.html | 26 +-
.../docs/0.12.1/setup/operation/proxy_setting.html | 26 +-
.../0.12.1/setup/operation/trouble_shooting.html | 26 +-
output/docs/0.12.1/setup/operation/upgrading.html | 26 +-
.../setup/security/authentication_nginx.html | 26 +-
.../setup/security/datasource_authorization.html | 26 +-
.../setup/security/http_security_headers.html | 26 +-
.../setup/security/notebook_authorization.html | 26 +-
.../setup/security/shiro_authentication.html | 26 +-
.../setup/storage/configuration_storage.html | 26 +-
.../0.12.1/setup/storage/notebook_storage.html | 26 +-
.../usage/display_system/angular_backend.html | 26 +-
.../usage/display_system/angular_frontend.html | 26 +-
output/docs/0.12.1/usage/display_system/basic.html | 30 +-
output/docs/0.12.1/usage/dynamic_form/intro.html | 26 +-
.../usage/interpreter/dependency_management.html | 26 +-
.../0.12.1/usage/interpreter/dynamic_loading.html | 26 +-
.../0.12.1/usage/interpreter/execution_hooks.html | 26 +-
.../0.12.1/usage/interpreter/installation.html | 26 +-
.../interpreter/interpreter_binding_mode.html | 26 +-
output/docs/0.12.1/usage/interpreter/overview.html | 26 +-
.../usage/interpreter/user_impersonation.html | 26 +-
.../usage/other_features/cron_scheduler.html | 26 +-
.../usage/other_features/customizing_homepage.html | 26 +-
.../usage/other_features/notebook_actions.html | 26 +-
.../usage/other_features/personalized_mode.html | 26 +-
.../other_features/publishing_paragraphs.html | 26 +-
.../usage/other_features/zeppelin_context.html | 26 +-
.../docs/0.12.1/usage/rest_api/configuration.html | 26 +-
output/docs/0.12.1/usage/rest_api/credential.html | 26 +-
output/docs/0.12.1/usage/rest_api/helium.html | 26 +-
output/docs/0.12.1/usage/rest_api/interpreter.html | 26 +-
output/docs/0.12.1/usage/rest_api/notebook.html | 26 +-
.../0.12.1/usage/rest_api/notebook_repository.html | 26 +-
.../0.12.1/usage/rest_api/zeppelin_server.html | 26 +-
.../docs/0.12.1/usage/zeppelin_sdk/client_api.html | 26 +-
.../0.12.1/usage/zeppelin_sdk/session_api.html | 26 +-
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 6 -
.../development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../0.5.0-incubating/displaysystem/angular.html | 6 -
.../0.5.0-incubating/displaysystem/display.html | 6 -
.../docs/0.5.0-incubating/displaysystem/table.html | 6 -
output/docs/0.5.0-incubating/docs.html | 6 -
output/docs/0.5.0-incubating/index.html | 6 -
output/docs/0.5.0-incubating/install/install.html | 6 -
.../0.5.0-incubating/install/yarn_install.html | 6 -
.../0.5.0-incubating/interpreter/cassandra.html | 6 -
.../docs/0.5.0-incubating/interpreter/flink.html | 6 -
.../docs/0.5.0-incubating/interpreter/geode.html | 8 +-
.../docs/0.5.0-incubating/interpreter/ignite.html | 6 -
output/docs/0.5.0-incubating/interpreter/lens.html | 6 -
.../0.5.0-incubating/interpreter/postgresql.html | 8 +-
.../docs/0.5.0-incubating/interpreter/spark.html | 6 -
.../docs/0.5.0-incubating/manual/dynamicform.html | 6 -
.../docs/0.5.0-incubating/manual/interpreters.html | 6 -
.../manual/notebookashomepage.html | 6 -
output/docs/0.5.0-incubating/pleasecontribute.html | 6 -
.../rest-api/rest-interpreter.html | 6 -
.../0.5.0-incubating/rest-api/rest-notebook.html | 6 -
output/docs/0.5.0-incubating/screenshots.html | 6 -
output/docs/0.5.0-incubating/storage/storage.html | 6 -
.../docs/0.5.0-incubating/tutorial/tutorial.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 6 -
.../development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../0.5.5-incubating/displaysystem/angular.html | 6 -
.../0.5.5-incubating/displaysystem/display.html | 6 -
.../docs/0.5.5-incubating/displaysystem/table.html | 6 -
output/docs/0.5.5-incubating/docs.html | 6 -
output/docs/0.5.5-incubating/index.html | 6 -
output/docs/0.5.5-incubating/install/install.html | 6 -
.../0.5.5-incubating/install/yarn_install.html | 6 -
.../0.5.5-incubating/interpreter/cassandra.html | 6 -
.../docs/0.5.5-incubating/interpreter/flink.html | 6 -
.../docs/0.5.5-incubating/interpreter/geode.html | 8 +-
.../docs/0.5.5-incubating/interpreter/ignite.html | 6 -
output/docs/0.5.5-incubating/interpreter/lens.html | 6 -
.../0.5.5-incubating/interpreter/postgresql.html | 8 +-
.../docs/0.5.5-incubating/interpreter/spark.html | 6 -
.../docs/0.5.5-incubating/manual/dynamicform.html | 6 -
.../docs/0.5.5-incubating/manual/interpreters.html | 6 -
.../manual/notebookashomepage.html | 6 -
output/docs/0.5.5-incubating/pleasecontribute.html | 6 -
.../rest-api/rest-interpreter.html | 6 -
.../0.5.5-incubating/rest-api/rest-notebook.html | 6 -
output/docs/0.5.5-incubating/screenshots.html | 6 -
output/docs/0.5.5-incubating/storage/storage.html | 6 -
.../docs/0.5.5-incubating/tutorial/tutorial.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.eot | Bin 0 -> 56006 bytes
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../assets/themes/fonts/fontawesome-webfont.ttf | Bin 0 -> 112160 bytes
.../assets/themes/fonts/fontawesome-webfont.woff | Bin 0 -> 65452 bytes
.../assets/themes/zeppelin/font-awesome.min.css | 4 +
.../development/howtocontribute.html | 6 -
.../development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../0.5.6-incubating/displaysystem/angular.html | 6 -
.../0.5.6-incubating/displaysystem/display.html | 6 -
.../docs/0.5.6-incubating/displaysystem/table.html | 6 -
output/docs/0.5.6-incubating/index.html | 6 -
output/docs/0.5.6-incubating/install/install.html | 6 -
.../0.5.6-incubating/install/virtual_machine.html | 6 -
.../0.5.6-incubating/install/yarn_install.html | 6 -
.../0.5.6-incubating/interpreter/cassandra.html | 6 -
.../interpreter/elasticsearch.html | 6 -
.../docs/0.5.6-incubating/interpreter/flink.html | 6 -
.../docs/0.5.6-incubating/interpreter/geode.html | 8 +-
output/docs/0.5.6-incubating/interpreter/hive.html | 6 -
.../docs/0.5.6-incubating/interpreter/ignite.html | 6 -
output/docs/0.5.6-incubating/interpreter/lens.html | 6 -
.../0.5.6-incubating/interpreter/markdown.html | 6 -
.../0.5.6-incubating/interpreter/postgresql.html | 8 +-
.../0.5.6-incubating/interpreter/scalding.html | 6 -
.../docs/0.5.6-incubating/interpreter/spark.html | 6 -
.../docs/0.5.6-incubating/manual/dynamicform.html | 6 -
.../docs/0.5.6-incubating/manual/interpreters.html | 6 -
.../manual/notebookashomepage.html | 6 -
output/docs/0.5.6-incubating/pleasecontribute.html | 6 -
.../rest-api/rest-interpreter.html | 6 -
.../0.5.6-incubating/rest-api/rest-notebook.html | 6 -
output/docs/0.5.6-incubating/screenshots.html | 6 -
output/docs/0.5.6-incubating/storage/storage.html | 6 -
.../docs/0.5.6-incubating/tutorial/tutorial.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.6.0/development/howtocontribute.html | 6 -
.../0.6.0/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../docs/0.6.0/displaysystem/back-end-angular.html | 6 -
.../0.6.0/displaysystem/basicdisplaysystem.html | 6 -
.../0.6.0/displaysystem/front-end-angular.html | 6 -
output/docs/0.6.0/index.html | 6 -
output/docs/0.6.0/install/install.html | 6 -
output/docs/0.6.0/install/upgrade.html | 6 -
output/docs/0.6.0/install/virtual_machine.html | 6 -
output/docs/0.6.0/install/yarn_install.html | 6 -
output/docs/0.6.0/interpreter/alluxio.html | 6 -
output/docs/0.6.0/interpreter/cassandra.html | 6 -
output/docs/0.6.0/interpreter/elasticsearch.html | 6 -
output/docs/0.6.0/interpreter/flink.html | 6 -
output/docs/0.6.0/interpreter/geode.html | 8 +-
output/docs/0.6.0/interpreter/hbase.html | 6 -
output/docs/0.6.0/interpreter/hdfs.html | 6 -
output/docs/0.6.0/interpreter/hive.html | 6 -
output/docs/0.6.0/interpreter/ignite.html | 6 -
output/docs/0.6.0/interpreter/jdbc.html | 6 -
output/docs/0.6.0/interpreter/lens.html | 6 -
output/docs/0.6.0/interpreter/livy.html | 6 -
output/docs/0.6.0/interpreter/markdown.html | 6 -
output/docs/0.6.0/interpreter/postgresql.html | 8 +-
output/docs/0.6.0/interpreter/python.html | 6 -
output/docs/0.6.0/interpreter/r.html | 6 -
output/docs/0.6.0/interpreter/scalding.html | 6 -
output/docs/0.6.0/interpreter/spark.html | 6 -
output/docs/0.6.0/manual/dependencymanagement.html | 6 -
output/docs/0.6.0/manual/dynamicform.html | 6 -
.../docs/0.6.0/manual/dynamicinterpreterload.html | 6 -
.../docs/0.6.0/manual/interpreterinstallation.html | 6 -
output/docs/0.6.0/manual/interpreters.html | 6 -
output/docs/0.6.0/manual/notebookashomepage.html | 6 -
output/docs/0.6.0/manual/publish.html | 6 -
output/docs/0.6.0/pleasecontribute.html | 6 -
.../docs/0.6.0/quickstart/explorezeppelinui.html | 6 -
output/docs/0.6.0/quickstart/tutorial.html | 6 -
output/docs/0.6.0/rest-api/rest-configuration.html | 6 -
output/docs/0.6.0/rest-api/rest-interpreter.html | 6 -
output/docs/0.6.0/rest-api/rest-notebook.html | 6 -
output/docs/0.6.0/screenshots.html | 6 -
output/docs/0.6.0/security/authentication.html | 6 -
.../0.6.0/security/interpreter_authorization.html | 6 -
.../0.6.0/security/notebook_authorization.html | 6 -
.../docs/0.6.0/security/shiroauthentication.html | 6 -
output/docs/0.6.0/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.6.1/development/howtocontribute.html | 6 -
.../0.6.1/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../docs/0.6.1/displaysystem/back-end-angular.html | 6 -
.../0.6.1/displaysystem/basicdisplaysystem.html | 6 -
.../0.6.1/displaysystem/front-end-angular.html | 6 -
output/docs/0.6.1/index.html | 6 -
output/docs/0.6.1/install/install.html | 6 -
output/docs/0.6.1/install/upgrade.html | 6 -
output/docs/0.6.1/install/virtual_machine.html | 6 -
output/docs/0.6.1/install/yarn_install.html | 6 -
output/docs/0.6.1/interpreter/alluxio.html | 6 -
output/docs/0.6.1/interpreter/bigquery.html | 6 -
output/docs/0.6.1/interpreter/cassandra.html | 6 -
output/docs/0.6.1/interpreter/elasticsearch.html | 6 -
output/docs/0.6.1/interpreter/flink.html | 6 -
output/docs/0.6.1/interpreter/geode.html | 8 +-
output/docs/0.6.1/interpreter/hbase.html | 6 -
output/docs/0.6.1/interpreter/hdfs.html | 6 -
output/docs/0.6.1/interpreter/hive.html | 6 -
output/docs/0.6.1/interpreter/ignite.html | 6 -
output/docs/0.6.1/interpreter/jdbc.html | 6 -
output/docs/0.6.1/interpreter/lens.html | 6 -
output/docs/0.6.1/interpreter/livy.html | 6 -
output/docs/0.6.1/interpreter/markdown.html | 6 -
output/docs/0.6.1/interpreter/postgresql.html | 8 +-
output/docs/0.6.1/interpreter/python.html | 6 -
output/docs/0.6.1/interpreter/r.html | 6 -
output/docs/0.6.1/interpreter/scalding.html | 6 -
output/docs/0.6.1/interpreter/spark.html | 6 -
output/docs/0.6.1/manual/dependencymanagement.html | 6 -
output/docs/0.6.1/manual/dynamicform.html | 6 -
.../docs/0.6.1/manual/dynamicinterpreterload.html | 6 -
.../docs/0.6.1/manual/interpreterinstallation.html | 6 -
output/docs/0.6.1/manual/interpreters.html | 6 -
output/docs/0.6.1/manual/notebookashomepage.html | 6 -
output/docs/0.6.1/manual/publish.html | 6 -
output/docs/0.6.1/pleasecontribute.html | 6 -
.../docs/0.6.1/quickstart/explorezeppelinui.html | 6 -
output/docs/0.6.1/quickstart/tutorial.html | 6 -
output/docs/0.6.1/rest-api/rest-configuration.html | 6 -
output/docs/0.6.1/rest-api/rest-interpreter.html | 6 -
output/docs/0.6.1/rest-api/rest-notebook.html | 6 -
output/docs/0.6.1/screenshots.html | 6 -
output/docs/0.6.1/security/authentication.html | 6 -
.../0.6.1/security/interpreter_authorization.html | 6 -
.../0.6.1/security/notebook_authorization.html | 6 -
.../docs/0.6.1/security/shiroauthentication.html | 6 -
output/docs/0.6.1/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.6.2/development/howtocontribute.html | 6 -
.../0.6.2/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../docs/0.6.2/displaysystem/back-end-angular.html | 6 -
.../0.6.2/displaysystem/basicdisplaysystem.html | 6 -
.../0.6.2/displaysystem/front-end-angular.html | 6 -
output/docs/0.6.2/index.html | 6 -
output/docs/0.6.2/install/install.html | 6 -
output/docs/0.6.2/install/upgrade.html | 6 -
output/docs/0.6.2/install/virtual_machine.html | 6 -
output/docs/0.6.2/install/yarn_install.html | 6 -
output/docs/0.6.2/interpreter/alluxio.html | 6 -
output/docs/0.6.2/interpreter/bigquery.html | 6 -
output/docs/0.6.2/interpreter/cassandra.html | 6 -
output/docs/0.6.2/interpreter/elasticsearch.html | 6 -
output/docs/0.6.2/interpreter/flink.html | 6 -
output/docs/0.6.2/interpreter/geode.html | 8 +-
output/docs/0.6.2/interpreter/hbase.html | 6 -
output/docs/0.6.2/interpreter/hdfs.html | 6 -
output/docs/0.6.2/interpreter/hive.html | 6 -
output/docs/0.6.2/interpreter/ignite.html | 6 -
output/docs/0.6.2/interpreter/jdbc.html | 6 -
output/docs/0.6.2/interpreter/lens.html | 6 -
output/docs/0.6.2/interpreter/livy.html | 6 -
output/docs/0.6.2/interpreter/markdown.html | 6 -
output/docs/0.6.2/interpreter/postgresql.html | 8 +-
output/docs/0.6.2/interpreter/python.html | 6 -
output/docs/0.6.2/interpreter/r.html | 6 -
output/docs/0.6.2/interpreter/scalding.html | 6 -
output/docs/0.6.2/interpreter/spark.html | 6 -
output/docs/0.6.2/manual/dependencymanagement.html | 6 -
output/docs/0.6.2/manual/dynamicform.html | 6 -
.../docs/0.6.2/manual/dynamicinterpreterload.html | 6 -
.../docs/0.6.2/manual/interpreterinstallation.html | 6 -
output/docs/0.6.2/manual/interpreters.html | 6 -
output/docs/0.6.2/manual/notebookashomepage.html | 6 -
output/docs/0.6.2/manual/publish.html | 6 -
output/docs/0.6.2/pleasecontribute.html | 6 -
.../docs/0.6.2/quickstart/explorezeppelinui.html | 6 -
output/docs/0.6.2/quickstart/tutorial.html | 6 -
output/docs/0.6.2/rest-api/rest-configuration.html | 6 -
output/docs/0.6.2/rest-api/rest-interpreter.html | 6 -
output/docs/0.6.2/rest-api/rest-notebook.html | 6 -
output/docs/0.6.2/screenshots.html | 6 -
output/docs/0.6.2/security/authentication.html | 6 -
.../0.6.2/security/interpreter_authorization.html | 6 -
.../0.6.2/security/notebook_authorization.html | 6 -
.../docs/0.6.2/security/shiroauthentication.html | 6 -
output/docs/0.6.2/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.7.0/development/howtocontribute.html | 6 -
.../0.7.0/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelinapplication.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../development/writingzeppelinvisualization.html | 6 -
.../docs/0.7.0/displaysystem/back-end-angular.html | 6 -
.../0.7.0/displaysystem/basicdisplaysystem.html | 6 -
.../0.7.0/displaysystem/front-end-angular.html | 6 -
output/docs/0.7.0/index.html | 6 -
output/docs/0.7.0/install/build.html | 7 -
output/docs/0.7.0/install/cdh.html | 6 -
output/docs/0.7.0/install/configuration.html | 6 -
output/docs/0.7.0/install/docker.html | 6 -
output/docs/0.7.0/install/install.html | 6 -
output/docs/0.7.0/install/spark_cluster_mode.html | 6 -
output/docs/0.7.0/install/upgrade.html | 6 -
output/docs/0.7.0/install/virtual_machine.html | 6 -
output/docs/0.7.0/install/yarn_install.html | 6 -
output/docs/0.7.0/interpreter/alluxio.html | 6 -
output/docs/0.7.0/interpreter/beam.html | 6 -
output/docs/0.7.0/interpreter/bigquery.html | 6 -
output/docs/0.7.0/interpreter/cassandra.html | 6 -
output/docs/0.7.0/interpreter/elasticsearch.html | 6 -
output/docs/0.7.0/interpreter/flink.html | 6 -
output/docs/0.7.0/interpreter/geode.html | 8 +-
output/docs/0.7.0/interpreter/hbase.html | 6 -
output/docs/0.7.0/interpreter/hdfs.html | 6 -
output/docs/0.7.0/interpreter/hive.html | 6 -
output/docs/0.7.0/interpreter/ignite.html | 6 -
output/docs/0.7.0/interpreter/jdbc.html | 6 -
output/docs/0.7.0/interpreter/kylin.html | 6 -
output/docs/0.7.0/interpreter/lens.html | 6 -
output/docs/0.7.0/interpreter/livy.html | 6 -
output/docs/0.7.0/interpreter/mahout.html | 6 -
output/docs/0.7.0/interpreter/markdown.html | 6 -
output/docs/0.7.0/interpreter/pig.html | 6 -
output/docs/0.7.0/interpreter/postgresql.html | 8 +-
output/docs/0.7.0/interpreter/python.html | 6 -
output/docs/0.7.0/interpreter/r.html | 6 -
output/docs/0.7.0/interpreter/scalding.html | 6 -
output/docs/0.7.0/interpreter/scio.html | 6 -
output/docs/0.7.0/interpreter/shell.html | 6 -
output/docs/0.7.0/interpreter/spark.html | 6 -
output/docs/0.7.0/manual/dependencymanagement.html | 6 -
output/docs/0.7.0/manual/dynamicform.html | 6 -
.../docs/0.7.0/manual/dynamicinterpreterload.html | 6 -
output/docs/0.7.0/manual/interpreterexechooks.html | 6 -
.../docs/0.7.0/manual/interpreterinstallation.html | 6 -
output/docs/0.7.0/manual/interpreters.html | 6 -
output/docs/0.7.0/manual/notebookashomepage.html | 6 -
output/docs/0.7.0/manual/publish.html | 6 -
output/docs/0.7.0/manual/userimpersonation.html | 6 -
output/docs/0.7.0/pleasecontribute.html | 6 -
.../docs/0.7.0/quickstart/explorezeppelinui.html | 6 -
.../install_with_flink_and_spark_cluster.html | 6 -
output/docs/0.7.0/quickstart/tutorial.html | 6 -
output/docs/0.7.0/rest-api/rest-configuration.html | 6 -
output/docs/0.7.0/rest-api/rest-credential.html | 6 -
output/docs/0.7.0/rest-api/rest-helium.html | 6 -
output/docs/0.7.0/rest-api/rest-interpreter.html | 6 -
output/docs/0.7.0/rest-api/rest-notebook.html | 6 -
output/docs/0.7.0/screenshots.html | 6 -
output/docs/0.7.0/search.html | 6 -
output/docs/0.7.0/security/authentication.html | 6 -
.../0.7.0/security/datasource_authorization.html | 6 -
.../0.7.0/security/notebook_authorization.html | 6 -
.../docs/0.7.0/security/shiroauthentication.html | 6 -
output/docs/0.7.0/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.7.1/development/howtocontribute.html | 6 -
.../0.7.1/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelinapplication.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../development/writingzeppelinvisualization.html | 6 -
.../docs/0.7.1/displaysystem/back-end-angular.html | 6 -
.../0.7.1/displaysystem/basicdisplaysystem.html | 6 -
.../0.7.1/displaysystem/front-end-angular.html | 6 -
output/docs/0.7.1/index.html | 6 -
output/docs/0.7.1/install/build.html | 7 -
output/docs/0.7.1/install/cdh.html | 6 -
output/docs/0.7.1/install/configuration.html | 6 -
output/docs/0.7.1/install/docker.html | 6 -
output/docs/0.7.1/install/install.html | 6 -
output/docs/0.7.1/install/spark_cluster_mode.html | 6 -
output/docs/0.7.1/install/upgrade.html | 6 -
output/docs/0.7.1/install/virtual_machine.html | 6 -
output/docs/0.7.1/install/yarn_install.html | 6 -
output/docs/0.7.1/interpreter/alluxio.html | 6 -
output/docs/0.7.1/interpreter/beam.html | 6 -
output/docs/0.7.1/interpreter/bigquery.html | 6 -
output/docs/0.7.1/interpreter/cassandra.html | 6 -
output/docs/0.7.1/interpreter/elasticsearch.html | 6 -
output/docs/0.7.1/interpreter/flink.html | 6 -
output/docs/0.7.1/interpreter/geode.html | 8 +-
output/docs/0.7.1/interpreter/hbase.html | 6 -
output/docs/0.7.1/interpreter/hdfs.html | 6 -
output/docs/0.7.1/interpreter/hive.html | 6 -
output/docs/0.7.1/interpreter/ignite.html | 6 -
output/docs/0.7.1/interpreter/jdbc.html | 6 -
output/docs/0.7.1/interpreter/kylin.html | 6 -
output/docs/0.7.1/interpreter/lens.html | 6 -
output/docs/0.7.1/interpreter/livy.html | 6 -
output/docs/0.7.1/interpreter/mahout.html | 6 -
output/docs/0.7.1/interpreter/markdown.html | 6 -
output/docs/0.7.1/interpreter/pig.html | 6 -
output/docs/0.7.1/interpreter/postgresql.html | 8 +-
output/docs/0.7.1/interpreter/python.html | 6 -
output/docs/0.7.1/interpreter/r.html | 6 -
output/docs/0.7.1/interpreter/scalding.html | 6 -
output/docs/0.7.1/interpreter/scio.html | 6 -
output/docs/0.7.1/interpreter/shell.html | 6 -
output/docs/0.7.1/interpreter/spark.html | 6 -
output/docs/0.7.1/manual/dependencymanagement.html | 6 -
output/docs/0.7.1/manual/dynamicform.html | 6 -
.../docs/0.7.1/manual/dynamicinterpreterload.html | 6 -
output/docs/0.7.1/manual/interpreterexechooks.html | 6 -
.../docs/0.7.1/manual/interpreterinstallation.html | 6 -
output/docs/0.7.1/manual/interpreters.html | 6 -
output/docs/0.7.1/manual/notebookashomepage.html | 6 -
output/docs/0.7.1/manual/publish.html | 6 -
output/docs/0.7.1/manual/userimpersonation.html | 6 -
output/docs/0.7.1/pleasecontribute.html | 6 -
.../docs/0.7.1/quickstart/explorezeppelinui.html | 6 -
.../install_with_flink_and_spark_cluster.html | 6 -
output/docs/0.7.1/quickstart/tutorial.html | 6 -
output/docs/0.7.1/rest-api/rest-configuration.html | 6 -
output/docs/0.7.1/rest-api/rest-credential.html | 6 -
output/docs/0.7.1/rest-api/rest-helium.html | 6 -
output/docs/0.7.1/rest-api/rest-interpreter.html | 6 -
output/docs/0.7.1/rest-api/rest-notebook.html | 6 -
output/docs/0.7.1/rest-api/rest-notebookRepo.html | 6 -
output/docs/0.7.1/screenshots.html | 6 -
output/docs/0.7.1/search.html | 6 -
output/docs/0.7.1/security/authentication.html | 6 -
.../0.7.1/security/datasource_authorization.html | 6 -
.../0.7.1/security/notebook_authorization.html | 6 -
.../docs/0.7.1/security/shiroauthentication.html | 6 -
output/docs/0.7.1/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.7.2/development/howtocontribute.html | 6 -
.../0.7.2/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelinapplication.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../development/writingzeppelinvisualization.html | 6 -
.../docs/0.7.2/displaysystem/back-end-angular.html | 6 -
.../0.7.2/displaysystem/basicdisplaysystem.html | 6 -
.../0.7.2/displaysystem/front-end-angular.html | 6 -
output/docs/0.7.2/index.html | 6 -
output/docs/0.7.2/install/build.html | 7 -
output/docs/0.7.2/install/cdh.html | 6 -
output/docs/0.7.2/install/configuration.html | 6 -
output/docs/0.7.2/install/docker.html | 6 -
output/docs/0.7.2/install/install.html | 6 -
output/docs/0.7.2/install/spark_cluster_mode.html | 6 -
output/docs/0.7.2/install/upgrade.html | 6 -
output/docs/0.7.2/install/virtual_machine.html | 6 -
output/docs/0.7.2/install/yarn_install.html | 6 -
output/docs/0.7.2/interpreter/alluxio.html | 6 -
output/docs/0.7.2/interpreter/beam.html | 6 -
output/docs/0.7.2/interpreter/bigquery.html | 6 -
output/docs/0.7.2/interpreter/cassandra.html | 6 -
output/docs/0.7.2/interpreter/elasticsearch.html | 6 -
output/docs/0.7.2/interpreter/flink.html | 6 -
output/docs/0.7.2/interpreter/geode.html | 8 +-
output/docs/0.7.2/interpreter/hbase.html | 6 -
output/docs/0.7.2/interpreter/hdfs.html | 6 -
output/docs/0.7.2/interpreter/hive.html | 6 -
output/docs/0.7.2/interpreter/ignite.html | 6 -
output/docs/0.7.2/interpreter/jdbc.html | 6 -
output/docs/0.7.2/interpreter/kylin.html | 6 -
output/docs/0.7.2/interpreter/lens.html | 6 -
output/docs/0.7.2/interpreter/livy.html | 6 -
output/docs/0.7.2/interpreter/mahout.html | 6 -
output/docs/0.7.2/interpreter/markdown.html | 6 -
output/docs/0.7.2/interpreter/pig.html | 6 -
output/docs/0.7.2/interpreter/postgresql.html | 8 +-
output/docs/0.7.2/interpreter/python.html | 6 -
output/docs/0.7.2/interpreter/r.html | 6 -
output/docs/0.7.2/interpreter/scalding.html | 6 -
output/docs/0.7.2/interpreter/scio.html | 6 -
output/docs/0.7.2/interpreter/shell.html | 6 -
output/docs/0.7.2/interpreter/spark.html | 6 -
output/docs/0.7.2/manual/dependencymanagement.html | 6 -
output/docs/0.7.2/manual/dynamicform.html | 6 -
.../docs/0.7.2/manual/dynamicinterpreterload.html | 6 -
output/docs/0.7.2/manual/interpreterexechooks.html | 6 -
.../docs/0.7.2/manual/interpreterinstallation.html | 6 -
output/docs/0.7.2/manual/interpreters.html | 6 -
output/docs/0.7.2/manual/notebookashomepage.html | 6 -
output/docs/0.7.2/manual/publish.html | 6 -
output/docs/0.7.2/manual/userimpersonation.html | 6 -
output/docs/0.7.2/pleasecontribute.html | 6 -
.../docs/0.7.2/quickstart/explorezeppelinui.html | 6 -
.../install_with_flink_and_spark_cluster.html | 6 -
output/docs/0.7.2/quickstart/tutorial.html | 6 -
output/docs/0.7.2/rest-api/rest-configuration.html | 6 -
output/docs/0.7.2/rest-api/rest-credential.html | 6 -
output/docs/0.7.2/rest-api/rest-helium.html | 6 -
output/docs/0.7.2/rest-api/rest-interpreter.html | 6 -
output/docs/0.7.2/rest-api/rest-notebook.html | 6 -
output/docs/0.7.2/rest-api/rest-notebookRepo.html | 6 -
output/docs/0.7.2/screenshots.html | 6 -
output/docs/0.7.2/search.html | 6 -
output/docs/0.7.2/security/authentication.html | 6 -
.../0.7.2/security/datasource_authorization.html | 6 -
.../docs/0.7.2/security/helium_authorization.html | 6 -
.../0.7.2/security/notebook_authorization.html | 6 -
.../docs/0.7.2/security/shiroauthentication.html | 6 -
output/docs/0.7.2/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
output/docs/0.7.3/development/howtocontribute.html | 6 -
.../0.7.3/development/howtocontributewebsite.html | 6 -
.../development/writingzeppelinapplication.html | 6 -
.../development/writingzeppelininterpreter.html | 6 -
.../development/writingzeppelinvisualization.html | 6 -
.../docs/0.7.3/displaysystem/back-end-angular.html | 6 -
.../0.7.3/displaysystem/basicdisplaysystem.html | 6 -
.../0.7.3/displaysystem/front-end-angular.html | 6 -
output/docs/0.7.3/index.html | 6 -
output/docs/0.7.3/install/build.html | 7 -
output/docs/0.7.3/install/cdh.html | 6 -
output/docs/0.7.3/install/configuration.html | 6 -
output/docs/0.7.3/install/docker.html | 6 -
output/docs/0.7.3/install/install.html | 6 -
output/docs/0.7.3/install/spark_cluster_mode.html | 6 -
output/docs/0.7.3/install/upgrade.html | 6 -
output/docs/0.7.3/install/virtual_machine.html | 6 -
output/docs/0.7.3/install/yarn_install.html | 6 -
output/docs/0.7.3/interpreter/alluxio.html | 6 -
output/docs/0.7.3/interpreter/beam.html | 6 -
output/docs/0.7.3/interpreter/bigquery.html | 6 -
output/docs/0.7.3/interpreter/cassandra.html | 6 -
output/docs/0.7.3/interpreter/elasticsearch.html | 6 -
output/docs/0.7.3/interpreter/flink.html | 6 -
output/docs/0.7.3/interpreter/geode.html | 8 +-
output/docs/0.7.3/interpreter/hbase.html | 6 -
output/docs/0.7.3/interpreter/hdfs.html | 6 -
output/docs/0.7.3/interpreter/hive.html | 6 -
output/docs/0.7.3/interpreter/ignite.html | 6 -
output/docs/0.7.3/interpreter/jdbc.html | 6 -
output/docs/0.7.3/interpreter/kylin.html | 6 -
output/docs/0.7.3/interpreter/lens.html | 6 -
output/docs/0.7.3/interpreter/livy.html | 6 -
output/docs/0.7.3/interpreter/mahout.html | 6 -
output/docs/0.7.3/interpreter/markdown.html | 6 -
output/docs/0.7.3/interpreter/pig.html | 6 -
output/docs/0.7.3/interpreter/postgresql.html | 8 +-
output/docs/0.7.3/interpreter/python.html | 6 -
output/docs/0.7.3/interpreter/r.html | 6 -
output/docs/0.7.3/interpreter/scalding.html | 6 -
output/docs/0.7.3/interpreter/scio.html | 6 -
output/docs/0.7.3/interpreter/shell.html | 6 -
output/docs/0.7.3/interpreter/spark.html | 6 -
output/docs/0.7.3/manual/dependencymanagement.html | 6 -
output/docs/0.7.3/manual/dynamicform.html | 6 -
.../docs/0.7.3/manual/dynamicinterpreterload.html | 6 -
output/docs/0.7.3/manual/interpreterexechooks.html | 6 -
.../docs/0.7.3/manual/interpreterinstallation.html | 6 -
output/docs/0.7.3/manual/interpreters.html | 6 -
output/docs/0.7.3/manual/notebookashomepage.html | 6 -
output/docs/0.7.3/manual/publish.html | 6 -
output/docs/0.7.3/manual/userimpersonation.html | 6 -
output/docs/0.7.3/pleasecontribute.html | 6 -
.../docs/0.7.3/quickstart/explorezeppelinui.html | 6 -
.../install_with_flink_and_spark_cluster.html | 6 -
output/docs/0.7.3/quickstart/tutorial.html | 6 -
output/docs/0.7.3/rest-api/rest-configuration.html | 6 -
output/docs/0.7.3/rest-api/rest-credential.html | 6 -
output/docs/0.7.3/rest-api/rest-helium.html | 6 -
output/docs/0.7.3/rest-api/rest-interpreter.html | 6 -
output/docs/0.7.3/rest-api/rest-notebook.html | 6 -
output/docs/0.7.3/rest-api/rest-notebookRepo.html | 6 -
output/docs/0.7.3/screenshots.html | 6 -
output/docs/0.7.3/search.html | 6 -
output/docs/0.7.3/security/authentication.html | 6 -
.../0.7.3/security/datasource_authorization.html | 6 -
.../docs/0.7.3/security/helium_authorization.html | 6 -
.../docs/0.7.3/security/http_security_headers.html | 6 -
.../0.7.3/security/notebook_authorization.html | 6 -
.../docs/0.7.3/security/shiroauthentication.html | 6 -
output/docs/0.7.3/storage/storage.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
output/docs/0.8.0/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.8.0/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.8.0/index.html | 6 -
output/docs/0.8.0/interpreter/alluxio.html | 6 -
output/docs/0.8.0/interpreter/beam.html | 6 -
output/docs/0.8.0/interpreter/bigquery.html | 6 -
output/docs/0.8.0/interpreter/cassandra.html | 6 -
output/docs/0.8.0/interpreter/elasticsearch.html | 6 -
output/docs/0.8.0/interpreter/flink.html | 6 -
output/docs/0.8.0/interpreter/geode.html | 8 +-
output/docs/0.8.0/interpreter/groovy.html | 6 -
output/docs/0.8.0/interpreter/hbase.html | 6 -
output/docs/0.8.0/interpreter/hdfs.html | 6 -
output/docs/0.8.0/interpreter/hive.html | 6 -
output/docs/0.8.0/interpreter/ignite.html | 6 -
output/docs/0.8.0/interpreter/jdbc.html | 6 -
output/docs/0.8.0/interpreter/kylin.html | 6 -
output/docs/0.8.0/interpreter/lens.html | 6 -
output/docs/0.8.0/interpreter/livy.html | 6 -
output/docs/0.8.0/interpreter/mahout.html | 6 -
output/docs/0.8.0/interpreter/markdown.html | 6 -
output/docs/0.8.0/interpreter/neo4j.html | 6 -
output/docs/0.8.0/interpreter/pig.html | 6 -
output/docs/0.8.0/interpreter/postgresql.html | 6 -
output/docs/0.8.0/interpreter/python.html | 6 -
output/docs/0.8.0/interpreter/r.html | 6 -
output/docs/0.8.0/interpreter/sap.html | 6 -
output/docs/0.8.0/interpreter/scalding.html | 6 -
output/docs/0.8.0/interpreter/scio.html | 6 -
output/docs/0.8.0/interpreter/shell.html | 6 -
output/docs/0.8.0/interpreter/spark.html | 6 -
output/docs/0.8.0/pleasecontribute.html | 6 -
output/docs/0.8.0/quickstart/explore_ui.html | 6 -
output/docs/0.8.0/quickstart/install.html | 6 -
.../0.8.0/quickstart/python_with_zeppelin.html | 6 -
.../docs/0.8.0/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.8.0/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.8.0/quickstart/tutorial.html | 6 -
output/docs/0.8.0/screenshots.html | 6 -
output/docs/0.8.0/search.html | 6 -
output/docs/0.8.0/setup/basics/how_to_build.html | 7 -
.../0.8.0/setup/basics/multi_user_support.html | 6 -
output/docs/0.8.0/setup/deployment/cdh.html | 6 -
output/docs/0.8.0/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../0.8.0/setup/deployment/spark_cluster_mode.html | 6 -
.../0.8.0/setup/deployment/virtual_machine.html | 6 -
.../docs/0.8.0/setup/deployment/yarn_install.html | 6 -
.../docs/0.8.0/setup/operation/configuration.html | 6 -
.../docs/0.8.0/setup/operation/proxy_setting.html | 6 -
.../0.8.0/setup/operation/trouble_shooting.html | 6 -
output/docs/0.8.0/setup/operation/upgrading.html | 6 -
.../0.8.0/setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../0.8.0/setup/security/shiro_authentication.html | 6 -
output/docs/0.8.0/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.8.0/usage/display_system/basic.html | 10 +-
output/docs/0.8.0/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.8.0/usage/interpreter/dynamic_loading.html | 6 -
.../0.8.0/usage/interpreter/execution_hooks.html | 6 -
.../docs/0.8.0/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.8.0/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../0.8.0/usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.8.0/usage/rest_api/configuration.html | 6 -
output/docs/0.8.0/usage/rest_api/credential.html | 6 -
output/docs/0.8.0/usage/rest_api/helium.html | 6 -
output/docs/0.8.0/usage/rest_api/interpreter.html | 6 -
output/docs/0.8.0/usage/rest_api/notebook.html | 6 -
.../0.8.0/usage/rest_api/notebook_repository.html | 6 -
.../docs/0.8.0/usage/rest_api/zeppelin_server.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
output/docs/0.8.1/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.8.1/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.8.1/index.html | 6 -
output/docs/0.8.1/interpreter/alluxio.html | 6 -
output/docs/0.8.1/interpreter/beam.html | 6 -
output/docs/0.8.1/interpreter/bigquery.html | 6 -
output/docs/0.8.1/interpreter/cassandra.html | 6 -
output/docs/0.8.1/interpreter/elasticsearch.html | 6 -
output/docs/0.8.1/interpreter/flink.html | 6 -
output/docs/0.8.1/interpreter/geode.html | 8 +-
output/docs/0.8.1/interpreter/groovy.html | 6 -
output/docs/0.8.1/interpreter/hbase.html | 6 -
output/docs/0.8.1/interpreter/hdfs.html | 6 -
output/docs/0.8.1/interpreter/hive.html | 6 -
output/docs/0.8.1/interpreter/ignite.html | 6 -
output/docs/0.8.1/interpreter/jdbc.html | 6 -
output/docs/0.8.1/interpreter/kylin.html | 6 -
output/docs/0.8.1/interpreter/lens.html | 6 -
output/docs/0.8.1/interpreter/livy.html | 6 -
output/docs/0.8.1/interpreter/mahout.html | 6 -
output/docs/0.8.1/interpreter/markdown.html | 6 -
output/docs/0.8.1/interpreter/neo4j.html | 6 -
output/docs/0.8.1/interpreter/pig.html | 6 -
output/docs/0.8.1/interpreter/postgresql.html | 6 -
output/docs/0.8.1/interpreter/python.html | 6 -
output/docs/0.8.1/interpreter/r.html | 6 -
output/docs/0.8.1/interpreter/sap.html | 6 -
output/docs/0.8.1/interpreter/scalding.html | 6 -
output/docs/0.8.1/interpreter/scio.html | 6 -
output/docs/0.8.1/interpreter/shell.html | 6 -
output/docs/0.8.1/interpreter/spark.html | 6 -
output/docs/0.8.1/pleasecontribute.html | 6 -
output/docs/0.8.1/quickstart/explore_ui.html | 6 -
output/docs/0.8.1/quickstart/install.html | 6 -
.../0.8.1/quickstart/python_with_zeppelin.html | 6 -
.../docs/0.8.1/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.8.1/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.8.1/quickstart/tutorial.html | 6 -
output/docs/0.8.1/screenshots.html | 6 -
output/docs/0.8.1/search.html | 6 -
output/docs/0.8.1/setup/basics/how_to_build.html | 7 -
.../0.8.1/setup/basics/multi_user_support.html | 6 -
output/docs/0.8.1/setup/deployment/cdh.html | 6 -
output/docs/0.8.1/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../0.8.1/setup/deployment/spark_cluster_mode.html | 6 -
.../0.8.1/setup/deployment/virtual_machine.html | 6 -
.../docs/0.8.1/setup/deployment/yarn_install.html | 6 -
.../docs/0.8.1/setup/operation/configuration.html | 6 -
.../docs/0.8.1/setup/operation/proxy_setting.html | 6 -
.../0.8.1/setup/operation/trouble_shooting.html | 6 -
output/docs/0.8.1/setup/operation/upgrading.html | 6 -
.../0.8.1/setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../0.8.1/setup/security/shiro_authentication.html | 6 -
output/docs/0.8.1/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.8.1/usage/display_system/basic.html | 10 +-
output/docs/0.8.1/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.8.1/usage/interpreter/dynamic_loading.html | 6 -
.../0.8.1/usage/interpreter/execution_hooks.html | 6 -
.../docs/0.8.1/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.8.1/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../0.8.1/usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.8.1/usage/rest_api/configuration.html | 6 -
output/docs/0.8.1/usage/rest_api/credential.html | 6 -
output/docs/0.8.1/usage/rest_api/helium.html | 6 -
output/docs/0.8.1/usage/rest_api/interpreter.html | 6 -
output/docs/0.8.1/usage/rest_api/notebook.html | 6 -
.../0.8.1/usage/rest_api/notebook_repository.html | 6 -
.../docs/0.8.1/usage/rest_api/zeppelin_server.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
output/docs/0.8.2/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.8.2/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.8.2/index.html | 6 -
output/docs/0.8.2/interpreter/alluxio.html | 6 -
output/docs/0.8.2/interpreter/beam.html | 6 -
output/docs/0.8.2/interpreter/bigquery.html | 6 -
output/docs/0.8.2/interpreter/cassandra.html | 6 -
output/docs/0.8.2/interpreter/elasticsearch.html | 6 -
output/docs/0.8.2/interpreter/flink.html | 6 -
output/docs/0.8.2/interpreter/geode.html | 8 +-
output/docs/0.8.2/interpreter/groovy.html | 6 -
output/docs/0.8.2/interpreter/hbase.html | 6 -
output/docs/0.8.2/interpreter/hdfs.html | 6 -
output/docs/0.8.2/interpreter/hive.html | 6 -
output/docs/0.8.2/interpreter/ignite.html | 6 -
output/docs/0.8.2/interpreter/jdbc.html | 6 -
output/docs/0.8.2/interpreter/kylin.html | 6 -
output/docs/0.8.2/interpreter/lens.html | 6 -
output/docs/0.8.2/interpreter/livy.html | 6 -
output/docs/0.8.2/interpreter/mahout.html | 6 -
output/docs/0.8.2/interpreter/markdown.html | 6 -
output/docs/0.8.2/interpreter/neo4j.html | 6 -
output/docs/0.8.2/interpreter/pig.html | 6 -
output/docs/0.8.2/interpreter/postgresql.html | 6 -
output/docs/0.8.2/interpreter/python.html | 6 -
output/docs/0.8.2/interpreter/r.html | 6 -
output/docs/0.8.2/interpreter/sap.html | 6 -
output/docs/0.8.2/interpreter/scalding.html | 6 -
output/docs/0.8.2/interpreter/scio.html | 6 -
output/docs/0.8.2/interpreter/shell.html | 6 -
output/docs/0.8.2/interpreter/spark.html | 6 -
output/docs/0.8.2/pleasecontribute.html | 6 -
output/docs/0.8.2/quickstart/explore_ui.html | 6 -
output/docs/0.8.2/quickstart/install.html | 6 -
.../0.8.2/quickstart/python_with_zeppelin.html | 6 -
.../docs/0.8.2/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.8.2/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.8.2/quickstart/tutorial.html | 6 -
output/docs/0.8.2/screenshots.html | 6 -
output/docs/0.8.2/search.html | 6 -
output/docs/0.8.2/setup/basics/how_to_build.html | 7 -
.../0.8.2/setup/basics/multi_user_support.html | 6 -
output/docs/0.8.2/setup/deployment/cdh.html | 6 -
output/docs/0.8.2/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../0.8.2/setup/deployment/spark_cluster_mode.html | 6 -
.../0.8.2/setup/deployment/virtual_machine.html | 6 -
.../docs/0.8.2/setup/deployment/yarn_install.html | 6 -
.../docs/0.8.2/setup/operation/configuration.html | 6 -
.../docs/0.8.2/setup/operation/proxy_setting.html | 6 -
.../0.8.2/setup/operation/trouble_shooting.html | 6 -
output/docs/0.8.2/setup/operation/upgrading.html | 6 -
.../0.8.2/setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../0.8.2/setup/security/shiro_authentication.html | 6 -
output/docs/0.8.2/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.8.2/usage/display_system/basic.html | 10 +-
output/docs/0.8.2/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.8.2/usage/interpreter/dynamic_loading.html | 6 -
.../0.8.2/usage/interpreter/execution_hooks.html | 6 -
.../docs/0.8.2/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.8.2/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../0.8.2/usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.8.2/usage/rest_api/configuration.html | 6 -
output/docs/0.8.2/usage/rest_api/credential.html | 6 -
output/docs/0.8.2/usage/rest_api/helium.html | 6 -
output/docs/0.8.2/usage/rest_api/interpreter.html | 6 -
output/docs/0.8.2/usage/rest_api/notebook.html | 6 -
.../0.8.2/usage/rest_api/notebook_repository.html | 6 -
.../docs/0.8.2/usage/rest_api/zeppelin_server.html | 6 -
.../assets/themes/fonts/fontawesome-webfont.svg | 2 +-
.../contribution/how_to_contribute_code.html | 6 -
.../contribution/how_to_contribute_website.html | 6 -
.../contribution/useful_developer_tools.html | 6 -
output/docs/0.9.0/development/helium/overview.html | 6 -
.../development/helium/writing_application.html | 6 -
.../0.9.0/development/helium/writing_spell.html | 6 -
.../helium/writing_visualization_basic.html | 6 -
.../writing_visualization_transformation.html | 6 -
.../development/writing_zeppelin_interpreter.html | 6 -
output/docs/0.9.0/index.html | 6 -
output/docs/0.9.0/interpreter/alluxio.html | 6 -
output/docs/0.9.0/interpreter/beam.html | 6 -
output/docs/0.9.0/interpreter/bigquery.html | 6 -
output/docs/0.9.0/interpreter/cassandra.html | 6 -
output/docs/0.9.0/interpreter/elasticsearch.html | 6 -
output/docs/0.9.0/interpreter/flink.html | 6 -
output/docs/0.9.0/interpreter/geode.html | 8 +-
output/docs/0.9.0/interpreter/groovy.html | 6 -
output/docs/0.9.0/interpreter/hazelcastjet.html | 6 -
output/docs/0.9.0/interpreter/hbase.html | 6 -
output/docs/0.9.0/interpreter/hdfs.html | 6 -
output/docs/0.9.0/interpreter/hive.html | 6 -
output/docs/0.9.0/interpreter/ignite.html | 6 -
output/docs/0.9.0/interpreter/influxdb.html | 6 -
output/docs/0.9.0/interpreter/java.html | 6 -
output/docs/0.9.0/interpreter/jdbc.html | 6 -
output/docs/0.9.0/interpreter/jupyter.html | 6 -
output/docs/0.9.0/interpreter/kotlin.html | 6 -
output/docs/0.9.0/interpreter/ksql.html | 6 -
output/docs/0.9.0/interpreter/kylin.html | 6 -
output/docs/0.9.0/interpreter/lens.html | 6 -
output/docs/0.9.0/interpreter/livy.html | 6 -
output/docs/0.9.0/interpreter/mahout.html | 6 -
output/docs/0.9.0/interpreter/markdown.html | 6 -
output/docs/0.9.0/interpreter/mongodb.html | 6 -
output/docs/0.9.0/interpreter/neo4j.html | 6 -
output/docs/0.9.0/interpreter/pig.html | 6 -
output/docs/0.9.0/interpreter/postgresql.html | 6 -
output/docs/0.9.0/interpreter/python.html | 6 -
output/docs/0.9.0/interpreter/r.html | 6 -
output/docs/0.9.0/interpreter/sap.html | 6 -
output/docs/0.9.0/interpreter/scalding.html | 6 -
output/docs/0.9.0/interpreter/scio.html | 6 -
output/docs/0.9.0/interpreter/shell.html | 6 -
output/docs/0.9.0/interpreter/spark.html | 6 -
output/docs/0.9.0/interpreter/sparql.html | 6 -
output/docs/0.9.0/interpreter/submarine.html | 6 -
output/docs/0.9.0/pleasecontribute.html | 6 -
output/docs/0.9.0/quickstart/docker.html | 6 -
output/docs/0.9.0/quickstart/explore_ui.html | 6 -
output/docs/0.9.0/quickstart/install.html | 6 -
output/docs/0.9.0/quickstart/kubernetes.html | 6 -
.../0.9.0/quickstart/python_with_zeppelin.html | 6 -
.../docs/0.9.0/quickstart/spark_with_zeppelin.html | 6 -
.../docs/0.9.0/quickstart/sql_with_zeppelin.html | 6 -
output/docs/0.9.0/quickstart/tutorial.html | 6 -
output/docs/0.9.0/quickstart/yarn.html | 6 -
output/docs/0.9.0/screenshots.html | 6 -
output/docs/0.9.0/search.html | 6 -
.../0.9.0/setup/basics/hadoop_integration.html | 6 -
output/docs/0.9.0/setup/basics/how_to_build.html | 7 -
.../0.9.0/setup/basics/multi_user_support.html | 6 -
output/docs/0.9.0/setup/basics/systemd.html | 6 -
output/docs/0.9.0/setup/deployment/cdh.html | 6 -
output/docs/0.9.0/setup/deployment/docker.html | 6 -
.../setup/deployment/flink_and_spark_cluster.html | 6 -
.../0.9.0/setup/deployment/spark_cluster_mode.html | 6 -
.../0.9.0/setup/deployment/virtual_machine.html | 6 -
.../docs/0.9.0/setup/deployment/yarn_install.html | 6 -
.../docs/0.9.0/setup/operation/configuration.html | 6 -
output/docs/0.9.0/setup/operation/monitoring.html | 6 -
.../docs/0.9.0/setup/operation/proxy_setting.html | 6 -
.../0.9.0/setup/operation/trouble_shooting.html | 6 -
output/docs/0.9.0/setup/operation/upgrading.html | 6 -
.../0.9.0/setup/security/authentication_nginx.html | 6 -
.../setup/security/datasource_authorization.html | 6 -
.../setup/security/http_security_headers.html | 6 -
.../setup/security/notebook_authorization.html | 6 -
.../0.9.0/setup/security/shiro_authentication.html | 6 -
output/docs/0.9.0/setup/storage/storage.html | 6 -
.../usage/display_system/angular_backend.html | 6 -
.../usage/display_system/angular_frontend.html | 6 -
output/docs/0.9.0/usage/display_system/basic.html | 10 +-
output/docs/0.9.0/usage/dynamic_form/intro.html | 6 -
.../usage/interpreter/dependency_management.html | 6 -
.../0.9.0/usage/interpreter/dynamic_loading.html | 6 -
.../0.9.0/usage/interpreter/execution_hooks.html | 6 -
.../docs/0.9.0/usage/interpreter/installation.html | 6 -
.../interpreter/interpreter_binding_mode.html | 6 -
output/docs/0.9.0/usage/interpreter/overview.html | 6 -
.../usage/interpreter/user_impersonation.html | 6 -
.../0.9.0/usage/other_features/cron_scheduler.html | 6 -
.../usage/other_features/customizing_homepage.html | 6 -
.../usage/other_features/notebook_actions.html | 6 -
.../usage/other_features/personalized_mode.html | 6 -
.../other_features/publishing_paragraphs.html | 6 -
.../usage/other_features/zeppelin_context.html | 6 -
.../docs/0.9.0/usage/rest_api/configuration.html | 6 -
output/docs/0.9.0/usage/rest_api/credential.html | 6 -
output/docs/0.9.0/usage/rest_api/helium.html | 6 -
output/docs/0.9.0/usage/rest_api/interpreter.html | 6 -
output/docs/0.9.0/usage/rest_api/notebook.html | 6 -
.../0.9.0/usage/rest_api/notebook_repository.html | 6 -
.../docs/0.9.0/usage/rest_api/zeppelin_server.html | 6 -
.../docs/0.9.0/usage/zeppelin_sdk/client_api.html | 6 -
.../docs/0.9.0/usage/zeppelin_sdk/session_api.html | 6 -
output/documentation.html | 9 +-
output/download.html | 9 +-
output/helium_packages.html | 9 +-
output/index.html | 9 +-
output/releases/zeppelin-release-0.10.1.html | 9 +-
output/releases/zeppelin-release-0.11.0.html | 9 +-
output/releases/zeppelin-release-0.11.1.html | 9 +-
output/releases/zeppelin-release-0.11.2.html | 9 +-
output/releases/zeppelin-release-0.12.0.html | 9 +-
output/releases/zeppelin-release-0.12.1.html | 9 +-
.../zeppelin-release-0.5.0-incubating.html | 9 +-
.../zeppelin-release-0.5.5-incubating.html | 9 +-
.../zeppelin-release-0.5.6-incubating.html | 9 +-
output/releases/zeppelin-release-0.6.0.html | 9 +-
output/releases/zeppelin-release-0.6.1.html | 9 +-
output/releases/zeppelin-release-0.6.2.html | 9 +-
output/releases/zeppelin-release-0.7.0.html | 9 +-
output/releases/zeppelin-release-0.7.1.html | 9 +-
output/releases/zeppelin-release-0.7.2.html | 9 +-
output/releases/zeppelin-release-0.7.3.html | 9 +-
output/releases/zeppelin-release-0.8.0.html | 9 +-
output/releases/zeppelin-release-0.8.1.html | 9 +-
output/releases/zeppelin-release-0.8.2.html | 9 +-
output/releases/zeppelin-release-0.9.0.html | 9 +-
output/screenshots.html | 9 +-
output/security.html | 9 +-
output/supported_interpreters.html | 9 +-
3285 files changed, 11435 insertions(+), 23575 deletions(-)
diff --git a/_includes/themes/zeppelin/default.html b/_includes/themes/zeppelin/default.html
index 26358d465..2a904bb8a 100644
--- a/_includes/themes/zeppelin/default.html
+++ b/_includes/themes/zeppelin/default.html
@@ -8,15 +8,9 @@
<!-- Enable responsive viewport -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
-
- <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
- <!--[if lt IE 9]>
- <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
- <![endif]-->
-
<!-- Le styles -->
- <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
- <link href="https://fonts.googleapis.com/icon?family=Material+Icons">
+ <link href="{{ ASSET_PATH }}/font-awesome.min.css" rel="stylesheet">
+ <link href="{{ ASSET_PATH }}/icon.css" rel="stylesheet" type="text/css"/>
<link href="{{ ASSET_PATH }}/bootstrap/css/bootstrap.css" rel="stylesheet">
<link href="{{ ASSET_PATH }}/css/style.css?body=1" rel="stylesheet" type="text/css">
<link href="{{ ASSET_PATH }}/css/syntax.css" rel="stylesheet" type="text/css" media="screen" />
@@ -36,10 +30,9 @@
<meta name="theme-color" content="#ffffff">
<!-- Js -->
- <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
- <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
-<!-- <script src="https://s3.amazonaws.com/apache-zeppelin/post/medium.js"></script>-->
- <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
+ <script src="{{ ASSET_PATH }}/jquery-1.10.2.min.js"></script>
+ <script src="{{ ASSET_PATH }}/angular.min.js"></script>
+ <script src="{{ ASSET_PATH }}/ui-bootstrap-tpls-2.5.0.js"></script>
<script src="{{ ASSET_PATH }}/bootstrap/js/bootstrap.min.js"></script>
<script src="{{ ASSET_PATH }}/js/docs.js"></script>
<script src="{{ ASSET_PATH }}/js/anchor.min.js"></script>
diff --git a/assets/themes/fonts/fontawesome-webfont.woff2 b/assets/themes/fonts/fontawesome-webfont.woff2
new file mode 100644
index 000000000..4d13fc604
Binary files /dev/null and b/assets/themes/fonts/fontawesome-webfont.woff2 differ
diff --git a/assets/themes/fonts/material-icons.ttf b/assets/themes/fonts/material-icons.ttf
new file mode 100644
index 000000000..9d09b0feb
Binary files /dev/null and b/assets/themes/fonts/material-icons.ttf differ
diff --git a/assets/themes/zeppelin/angular.min.js b/assets/themes/zeppelin/angular.min.js
new file mode 100644
index 000000000..0fb8002f9
--- /dev/null
+++ b/assets/themes/zeppelin/angular.min.js
@@ -0,0 +1,251 @@
+/*
+ AngularJS v1.3.15
+ (c) 2010-2014 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(Q,W,t){'use strict';function R(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.3.15/"+(b?b+"/":"")+a;for(a=1;a<arguments.length;a++){c=c+(1==a?"?":"&")+"p"+(a-1)+"=";var d=encodeURIComponent,e;e=arguments[a];e="function"==typeof e?e.toString().replace(/ \{[\s\S]*$/,""):"undefined"==typeof e?"undefined":"string"!=typeof e?JSON.stringify(e):e;c+=d(e)}return Error(c)}}function Sa(b){if(null==b||Ta(b))return!1;var a=b.length;return b. [...]
+qa&&a?!0:C(b)||H(b)||0===a||"number"===typeof a&&0<a&&a-1 in b}function r(b,a,c){var d,e;if(b)if(G(b))for(d in b)"prototype"==d||"length"==d||"name"==d||b.hasOwnProperty&&!b.hasOwnProperty(d)||a.call(c,b[d],d,b);else if(H(b)||Sa(b)){var f="object"!==typeof b;d=0;for(e=b.length;d<e;d++)(f||d in b)&&a.call(c,b[d],d,b)}else if(b.forEach&&b.forEach!==r)b.forEach(a,c,b);else for(d in b)b.hasOwnProperty(d)&&a.call(c,b[d],d,b);return b}function Ed(b,a,c){for(var d=Object.keys(b).sort(),e=0;e<d. [...]
+b[d[e]],d[e]);return d}function mc(b){return function(a,c){b(c,a)}}function Fd(){return++ob}function nc(b,a){a?b.$$hashKey=a:delete b.$$hashKey}function w(b){for(var a=b.$$hashKey,c=1,d=arguments.length;c<d;c++){var e=arguments[c];if(e)for(var f=Object.keys(e),g=0,h=f.length;g<h;g++){var l=f[g];b[l]=e[l]}}nc(b,a);return b}function aa(b){return parseInt(b,10)}function Ob(b,a){return w(Object.create(b),a)}function E(){}function ra(b){return b}function ea(b){return function(){return b}}func [...]
+typeof b}function y(b){return"undefined"!==typeof b}function J(b){return null!==b&&"object"===typeof b}function C(b){return"string"===typeof b}function Y(b){return"number"===typeof b}function ga(b){return"[object Date]"===Ca.call(b)}function G(b){return"function"===typeof b}function Ua(b){return"[object RegExp]"===Ca.call(b)}function Ta(b){return b&&b.window===b}function Va(b){return b&&b.$evalAsync&&b.$watch}function Wa(b){return"boolean"===typeof b}function oc(b){return!(!b||!(b.nodeNa [...]
+b.attr&&b.find))}function Gd(b){var a={};b=b.split(",");var c;for(c=0;c<b.length;c++)a[b[c]]=!0;return a}function va(b){return z(b.nodeName||b[0]&&b[0].nodeName)}function Xa(b,a){var c=b.indexOf(a);0<=c&&b.splice(c,1);return a}function Da(b,a,c,d){if(Ta(b)||Va(b))throw Ja("cpws");if(a){if(b===a)throw Ja("cpi");c=c||[];d=d||[];if(J(b)){var e=c.indexOf(b);if(-1!==e)return d[e];c.push(b);d.push(a)}if(H(b))for(var f=a.length=0;f<b.length;f++)e=Da(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push( [...]
+else{var g=a.$$hashKey;H(a)?a.length=0:r(a,function(b,c){delete a[c]});for(f in b)b.hasOwnProperty(f)&&(e=Da(b[f],null,c,d),J(b[f])&&(c.push(b[f]),d.push(e)),a[f]=e);nc(a,g)}}else if(a=b)H(b)?a=Da(b,[],c,d):ga(b)?a=new Date(b.getTime()):Ua(b)?(a=new RegExp(b.source,b.toString().match(/[^\/]*$/)[0]),a.lastIndex=b.lastIndex):J(b)&&(e=Object.create(Object.getPrototypeOf(b)),a=Da(b,e,c,d));return a}function sa(b,a){if(H(b)){a=a||[];for(var c=0,d=b.length;c<d;c++)a[c]=b[c]}else if(J(b))for(c [...]
+b)if("$"!==c.charAt(0)||"$"!==c.charAt(1))a[c]=b[c];return a||b}function ha(b,a){if(b===a)return!0;if(null===b||null===a)return!1;if(b!==b&&a!==a)return!0;var c=typeof b,d;if(c==typeof a&&"object"==c)if(H(b)){if(!H(a))return!1;if((c=b.length)==a.length){for(d=0;d<c;d++)if(!ha(b[d],a[d]))return!1;return!0}}else{if(ga(b))return ga(a)?ha(b.getTime(),a.getTime()):!1;if(Ua(b))return Ua(a)?b.toString()==a.toString():!1;if(Va(b)||Va(a)||Ta(b)||Ta(a)||H(a)||ga(a)||Ua(a))return!1;c={};for(d in b) [...]
+d.charAt(0)&&!G(b[d])){if(!ha(b[d],a[d]))return!1;c[d]=!0}for(d in a)if(!c.hasOwnProperty(d)&&"$"!==d.charAt(0)&&a[d]!==t&&!G(a[d]))return!1;return!0}return!1}function Ya(b,a,c){return b.concat(Za.call(a,c))}function pc(b,a){var c=2<arguments.length?Za.call(arguments,2):[];return!G(a)||a instanceof RegExp?a:c.length?function(){return arguments.length?a.apply(b,Ya(c,arguments,0)):a.apply(b,c)}:function(){return arguments.length?a.apply(b,arguments):a.call(b)}}function Hd(b,a){var c=a;"str [...]
+"$"===b.charAt(0)&&"$"===b.charAt(1)?c=t:Ta(a)?c="$WINDOW":a&&W===a?c="$DOCUMENT":Va(a)&&(c="$SCOPE");return c}function $a(b,a){if("undefined"===typeof b)return t;Y(a)||(a=a?2:null);return JSON.stringify(b,Hd,a)}function qc(b){return C(b)?JSON.parse(b):b}function wa(b){b=A(b).clone();try{b.empty()}catch(a){}var c=A("<div>").append(b).html();try{return b[0].nodeType===pb?z(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+z(b)})}catch(d){return z(c)}}function rc(b) [...]
+function sc(b){var a={},c,d;r((b||"").split("&"),function(b){b&&(c=b.replace(/\+/g,"%20").split("="),d=rc(c[0]),y(d)&&(b=y(c[1])?rc(c[1]):!0,tc.call(a,d)?H(a[d])?a[d].push(b):a[d]=[a[d],b]:a[d]=b))});return a}function Pb(b){var a=[];r(b,function(b,d){H(b)?r(b,function(b){a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))}):a.push(Ea(d,!0)+(!0===b?"":"="+Ea(b,!0)))});return a.length?a.join("&"):""}function qb(b){return Ea(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}functio [...]
+"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Id(b,a){var c,d,e=rb.length;b=A(b);for(d=0;d<e;++d)if(c=rb[d]+a,C(c=b.attr(c)))return c;return null}function Jd(b,a){var c,d,e={};r(rb,function(a){a+="app";!c&&b.hasAttribute&&b.hasAttribute(a)&&(c=b,d=b.getAttribute(a))});r(rb,function(a){a+="app";var e;!c&&(e=b.querySelector("["+a.replace(":","\\:")+"]"))&&(c=e,d=e.getAttribute(a))});c&&(e.strictDi=null!==Id(c,"s [...]
+a(c,d?[d]:[],e))}function uc(b,a,c){J(c)||(c={});c=w({strictDi:!1},c);var d=function(){b=A(b);if(b.injector()){var d=b[0]===W?"document":wa(b);throw Ja("btstrpd",d.replace(/</,"<").replace(/>/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=ab(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(functio [...]
+d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;Q&&e.test(Q.name)&&(c.debugInfoEnabled=!0,Q.name=Q.name.replace(e,""));if(Q&&!f.test(Q.name))return d();Q.name=Q.name.replace(f,"");ca.resumeBootstrap=function(b){r(b,function(b){a.push(b)});return d()};G(ca.resumeDeferredBootstrap)&&ca.resumeDeferredBootstrap()}function Kd(){Q.name="NG_ENABLE_DEBUG_INFO!"+Q.name;Q.location.reload()}function Ld(b){b=ca.element(b).injector();if(!b)throw Ja("test");return b.get(" [...]
+function vc(b,a){a=a||"_";return b.replace(Md,function(b,d){return(d?a:"")+b.toLowerCase()})}function Nd(){var b;wc||((ta=Q.jQuery)&&ta.fn.on?(A=ta,w(ta.fn,{scope:Ka.scope,isolateScope:Ka.isolateScope,controller:Ka.controller,injector:Ka.injector,inheritedData:Ka.inheritedData}),b=ta.cleanData,ta.cleanData=function(a){var c;if(Qb)Qb=!1;else for(var d=0,e;null!=(e=a[d]);d++)(c=ta._data(e,"events"))&&c.$destroy&&ta(e).triggerHandler("$destroy");b(a)}):A=T,ca.element=A,wc=!0)}function Rb(b, [...]
+a||"?",c||"required");return b}function sb(b,a,c){c&&H(b)&&(b=b[b.length-1]);Rb(G(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function La(b,a){if("hasOwnProperty"===b)throw Ja("badname",a);}function xc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g<f;g++)d=a[g],b&&(b=(e=b)[d]);return!c&&G(b)?pc(e,b):b}function tb(b){var a=b[0];b=b[b.length-1];var c=[a];do{a=a.nextSibling;if(!a)break;c.push(a)}while(a!==b);retur [...]
+function Od(b){function a(a,b,c){return a[b]||(a[b]=c())}var c=R("$injector"),d=R("ng");b=a(b,"angular",Object);b.$$minErr=b.$$minErr||R;return a(b,"module",function(){var b={};return function(f,g,h){if("hasOwnProperty"===f)throw d("badname","module");g&&b.hasOwnProperty(f)&&(b[f]=null);return a(b,f,function(){function a(c,d,e,f){f||(f=b);return function(){f[e||"push"]([c,d,arguments]);return u}}if(!g)throw c("nomod",f);var b=[],d=[],e=[],q=a("$injector","invoke","push",d),u={_invokeQueu [...]
+_runBlocks:e,requires:g,name:f,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"),value:a("$provide","value"),constant:a("$provide","constant","unshift"),animation:a("$animateProvider","register"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:q,run:function(a){e.push(a);return this}};h&&q(h);return u})}})}function Pd(b){w(b,{bootstrap:uc,copy:Da,extend [...]
+element:A,forEach:r,injector:ab,noop:E,bind:pc,toJson:$a,fromJson:qc,identity:ra,isUndefined:x,isDefined:y,isString:C,isFunction:G,isObject:J,isNumber:Y,isElement:oc,isArray:H,version:Qd,isDate:ga,lowercase:z,uppercase:ub,callbacks:{counter:0},getTestability:Ld,$$minErr:R,$$csp:bb,reloadWithDebugInfo:Kd});cb=Od(Q);try{cb("ngLocale")}catch(a){cb("ngLocale",[]).provider("$locale",Rd)}cb("ng",["ngLocale"],["$provide",function(a){a.provider({$$sanitizeUri:Sd});a.provider("$compile",yc).direc [...]
+input:zc,textarea:zc,form:Ud,script:Vd,select:Wd,style:Xd,option:Yd,ngBind:Zd,ngBindHtml:$d,ngBindTemplate:ae,ngClass:be,ngClassEven:ce,ngClassOdd:de,ngCloak:ee,ngController:fe,ngForm:ge,ngHide:he,ngIf:ie,ngInclude:je,ngInit:ke,ngNonBindable:le,ngPluralize:me,ngRepeat:ne,ngShow:oe,ngStyle:pe,ngSwitch:qe,ngSwitchWhen:re,ngSwitchDefault:se,ngOptions:te,ngTransclude:ue,ngModel:ve,ngList:we,ngChange:xe,pattern:Ac,ngPattern:Ac,required:Bc,ngRequired:Bc,minlength:Cc,ngMinlength:Cc,maxlength:Dc [...]
+ngValue:ye,ngModelOptions:ze}).directive({ngInclude:Ae}).directive(vb).directive(Ec);a.provider({$anchorScroll:Be,$animate:Ce,$browser:De,$cacheFactory:Ee,$controller:Fe,$document:Ge,$exceptionHandler:He,$filter:Fc,$interpolate:Ie,$interval:Je,$http:Ke,$httpBackend:Le,$location:Me,$log:Ne,$parse:Oe,$rootScope:Pe,$q:Qe,$$q:Re,$sce:Se,$sceDelegate:Te,$sniffer:Ue,$templateCache:Ve,$templateRequest:We,$$testability:Xe,$timeout:Ye,$window:Ze,$$rAF:$e,$$asyncCallback:af,$$jqLite:bf})}])}functi [...]
+function(a,b,d,e){return e?d.toUpperCase():d}).replace(df,"Moz$1")}function Gc(b){b=b.nodeType;return b===qa||!b||9===b}function Hc(b,a){var c,d,e=a.createDocumentFragment(),f=[];if(Sb.test(b)){c=c||e.appendChild(a.createElement("div"));d=(ef.exec(b)||["",""])[1].toLowerCase();d=ja[d]||ja._default;c.innerHTML=d[1]+b.replace(ff,"<$1></$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=Ya(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML= [...]
+return e}function T(b){if(b instanceof T)return b;var a;C(b)&&(b=N(b),a=!0);if(!(this instanceof T)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new T(b)}if(a){a=W;var c;b=(c=gf.exec(b))?[a.createElement(c[1])]:(c=Hc(b,a))?c.childNodes:[]}Ic(this,b)}function Ub(b){return b.cloneNode(!0)}function wb(b,a){a||xb(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;d<e;d++)xb(c[d])}function Jc(b,a,c,d){if(y(d))throw Tb("offargs");var e=(d=yb(b))&&d.events,f=d&&d.hand [...]
+function(a){if(y(c)){var d=e[a];Xa(d||[],c);if(d&&0<d.length)return}b.removeEventListener(a,f,!1);delete e[a]});else for(a in e)"$destroy"!==a&&b.removeEventListener(a,f,!1),delete e[a]}function xb(b,a){var c=b.ng339,d=c&&zb[c];d&&(a?delete d.data[a]:(d.handle&&(d.events.$destroy&&d.handle({},"$destroy"),Jc(b)),delete zb[c],b.ng339=t))}function yb(b,a){var c=b.ng339,c=c&&zb[c];a&&!c&&(b.ng339=c=++hf,c=zb[c]={events:{},data:{},handle:t});return c}function Vb(b,a,c){if(Gc(b)){var d=y(c),e= [...]
+f=!a;b=(b=yb(b,!e))&&b.data;if(d)b[a]=c;else{if(f)return b;if(e)return b&&b[a];w(b,a)}}}function Ab(b,a){return b.getAttribute?-1<(" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+a+" "):!1}function Bb(b,a){a&&b.setAttribute&&r(a.split(" "),function(a){b.setAttribute("class",N((" "+(b.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").replace(" "+N(a)+" "," ")))})}function Cb(b,a){if(a&&b.setAttribute){var c=(" "+(b.getAttribute("class")||"")+" ").replace(/[\ [...]
+r(a.split(" "),function(a){a=N(a);-1===c.indexOf(" "+a+" ")&&(c+=a+" ")});b.setAttribute("class",N(c))}}function Ic(b,a){if(a)if(a.nodeType)b[b.length++]=a;else{var c=a.length;if("number"===typeof c&&a.window!==a){if(c)for(var d=0;d<c;d++)b[b.length++]=a[d]}else b[b.length++]=a}}function Kc(b,a){return Db(b,"$"+(a||"ngController")+"Controller")}function Db(b,a,c){9==b.nodeType&&(b=b.documentElement);for(a=H(a)?a:[a];b;){for(var d=0,e=a.length;d<e;d++)if((c=A.data(b,a[d]))!==t)return c;b= [...]
+11===b.nodeType&&b.host}}function Lc(b){for(wb(b,!0);b.firstChild;)b.removeChild(b.firstChild)}function Mc(b,a){a||wb(b);var c=b.parentNode;c&&c.removeChild(b)}function jf(b,a){a=a||Q;if("complete"===a.document.readyState)a.setTimeout(b);else A(a).on("load",b)}function Nc(b,a){var c=Eb[a.toLowerCase()];return c&&Oc[va(b)]&&c}function kf(b,a){var c=b.nodeName;return("INPUT"===c||"TEXTAREA"===c)&&Pc[a]}function lf(b,a){var c=function(c,e){c.isDefaultPrevented=function(){return c.defaultPre [...]
+a[e||c.type],g=f?f.length:0;if(g){if(x(c.immediatePropagationStopped)){var h=c.stopImmediatePropagation;c.stopImmediatePropagation=function(){c.immediatePropagationStopped=!0;c.stopPropagation&&c.stopPropagation();h&&h.call(c)}}c.isImmediatePropagationStopped=function(){return!0===c.immediatePropagationStopped};1<g&&(f=sa(f));for(var l=0;l<g;l++)c.isImmediatePropagationStopped()||f[l].call(b,c)}};c.elem=b;return c}function bf(){this.$get=function(){return w(T,{hasClass:function(b,a){b.at [...]
+return Ab(b,a)},addClass:function(b,a){b.attr&&(b=b[0]);return Cb(b,a)},removeClass:function(b,a){b.attr&&(b=b[0]);return Bb(b,a)}})}}function Ma(b,a){var c=b&&b.$$hashKey;if(c)return"function"===typeof c&&(c=b.$$hashKey()),c;c=typeof b;return c="function"==c||"object"==c&&null!==b?b.$$hashKey=c+":"+(a||Fd)():c+":"+b}function eb(b,a){if(a){var c=0;this.nextUid=function(){return++c}}r(b,this.put,this)}function mf(b){return(b=b.toString().replace(Qc,"").match(Rc))?"function("+(b[1]||"").re [...]
+" ")+")":"fn"}function ab(b,a){function c(a){return function(b,c){if(J(b))r(b,mc(a));else return a(b,c)}}function d(a,b){La(a,"service");if(G(b)||H(b))b=q.instantiate(b);if(!b.$get)throw Fa("pget",a);return p[a+"Provider"]=b}function e(a,b){return function(){var c=s.invoke(b,this);if(x(c))throw Fa("undef",a);return c}}function f(a,b,c){return d(a,{$get:!1!==c?e(a,b):b})}function g(a){var b=[],c;r(a,function(a){function d(a){var b,c;b=0;for(c=a.length;b<c;b++){var e=a[b],f=q.get(e[0]);f[e [...]
+e[2])}}if(!n.get(a)){n.put(a,!0);try{C(a)?(c=cb(a),b=b.concat(g(c.requires)).concat(c._runBlocks),d(c._invokeQueue),d(c._configBlocks)):G(a)?b.push(q.invoke(a)):H(a)?b.push(q.invoke(a)):sb(a,"module")}catch(e){throw H(a)&&(a=a[a.length-1]),e.message&&e.stack&&-1==e.stack.indexOf(e.message)&&(e=e.message+"\n"+e.stack),Fa("modulerr",a,e.stack||e.message||e);}}});return b}function h(b,c){function d(a,e){if(b.hasOwnProperty(a)){if(b[a]===l)throw Fa("cdep",a+" <- "+k.join(" <- "));return b[a] [...]
+b[a]=l,b[a]=c(a,e)}catch(f){throw b[a]===l&&delete b[a],f;}finally{k.shift()}}function e(b,c,f,g){"string"===typeof f&&(g=f,f=null);var k=[],h=ab.$$annotate(b,a,g),l,q,p;q=0;for(l=h.length;q<l;q++){p=h[q];if("string"!==typeof p)throw Fa("itkn",p);k.push(f&&f.hasOwnProperty(p)?f[p]:d(p,g))}H(b)&&(b=b[l]);return b.apply(c,k)}return{invoke:e,instantiate:function(a,b,c){var d=Object.create((H(a)?a[a.length-1]:a).prototype||null);a=e(a,d,b,c);return J(a)||G(a)?a:d},get:d,annotate:ab.$$annotat [...]
+"Provider")||b.hasOwnProperty(a)}}}a=!0===a;var l={},k=[],n=new eb([],!0),p={$provide:{provider:c(d),factory:c(f),service:c(function(a,b){return f(a,["$injector",function(a){return a.instantiate(b)}])}),value:c(function(a,b){return f(a,ea(b),!1)}),constant:c(function(a,b){La(a,"constant");p[a]=b;u[a]=b}),decorator:function(a,b){var c=q.get(a+"Provider"),d=c.$get;c.$get=function(){var a=s.invoke(d,c);return s.invoke(b,null,{$delegate:a})}}}},q=p.$injector=h(p,function(a,b){ca.isString(b)& [...]
+throw Fa("unpr",k.join(" <- "));}),u={},s=u.$injector=h(u,function(a,b){var c=q.get(a+"Provider",b);return s.invoke(c.$get,c,t,a)});r(g(b),function(a){s.invoke(a||E)});return s}function Be(){var b=!0;this.disableAutoScrolling=function(){b=!1};this.$get=["$window","$location","$rootScope",function(a,c,d){function e(a){var b=null;Array.prototype.some.call(a,function(a){if("a"===va(a))return b=a,!0});return b}function f(b){if(b){b.scrollIntoView();var c;c=g.yOffset;G(c)?c=c():oc(c)?(c=c[0], [...]
+a.getComputedStyle(c).position?0:c.getBoundingClientRect().bottom):Y(c)||(c=0);c&&(b=b.getBoundingClientRect().top,a.scrollBy(0,b-c))}else a.scrollTo(0,0)}function g(){var a=c.hash(),b;a?(b=h.getElementById(a))?f(b):(b=e(h.getElementsByName(a)))?f(b):"top"===a&&f(null):f(null)}var h=a.document;b&&d.$watch(function(){return c.hash()},function(a,b){a===b&&""===a||jf(function(){d.$evalAsync(g)})});return g}]}function af(){this.$get=["$$rAF","$timeout",function(b,a){return b.supported?functi [...]
+function(b){return a(b,0,!1)}}]}function nf(b,a,c,d){function e(a){try{a.apply(null,Za.call(arguments,1))}finally{if(m--,0===m)for(;F.length;)try{F.pop()()}catch(b){c.error(b)}}}function f(a,b){(function da(){r(Z,function(a){a()});L=b(da,a)})()}function g(){h();l()}function h(){a:{try{B=u.state;break a}catch(a){}B=void 0}B=x(B)?null:B;ha(B,O)&&(B=O);O=B}function l(){if(D!==n.url()||I!==B)D=n.url(),I=B,r(X,function(a){a(n.url(),B)})}function k(a){try{return decodeURIComponent(a)}catch(b){ [...]
+var n=this,p=a[0],q=b.location,u=b.history,s=b.setTimeout,M=b.clearTimeout,v={};n.isMock=!1;var m=0,F=[];n.$$completeOutstandingRequest=e;n.$$incOutstandingRequestCount=function(){m++};n.notifyWhenNoOutstandingRequests=function(a){r(Z,function(a){a()});0===m?a():F.push(a)};var Z=[],L;n.addPollFn=function(a){x(L)&&f(100,s);Z.push(a);return a};var B,I,D=q.href,S=a.find("base"),P=null;h();I=B;n.url=function(a,c,e){x(e)&&(e=null);q!==b.location&&(q=b.location);u!==b.history&&(u=b.history);if [...]
+I===e;if(D===a&&(!d.history||f))return n;var g=D&&Ga(D)===Ga(a);D=a;I=e;!d.history||g&&f?(g||(P=a),c?q.replace(a):g?(c=q,e=a.indexOf("#"),a=-1===e?"":a.substr(e+1),c.hash=a):q.href=a):(u[c?"replaceState":"pushState"](e,"",a),h(),I=B);return n}return P||q.href.replace(/%27/g,"'")};n.state=function(){return B};var X=[],ba=!1,O=null;n.onUrlChange=function(a){if(!ba){if(d.history)A(b).on("popstate",g);A(b).on("hashchange",g);ba=!0}X.push(a);return a};n.$$checkUrlChange=l;n.baseHref=function( [...]
+return a?a.replace(/^(https?\:)?\/\/[^\/]*/,""):""};var fa={},y="",ka=n.baseHref();n.cookies=function(a,b){var d,e,f,g;if(a)b===t?p.cookie=encodeURIComponent(a)+"=;path="+ka+";expires=Thu, 01 Jan 1970 00:00:00 GMT":C(b)&&(d=(p.cookie=encodeURIComponent(a)+"="+encodeURIComponent(b)+";path="+ka).length+1,4096<d&&c.warn("Cookie '"+a+"' possibly not set or overflowed because it was too large ("+d+" > 4096 bytes)!"));else{if(p.cookie!==y)for(y=p.cookie,d=y.split("; "),fa={},f=0;f<d.length;f++ [...]
+e.indexOf("="),0<g&&(a=k(e.substring(0,g)),fa[a]===t&&(fa[a]=k(e.substring(g+1))));return fa}};n.defer=function(a,b){var c;m++;c=s(function(){delete v[c];e(a)},b||0);v[c]=!0;return c};n.defer.cancel=function(a){return v[a]?(delete v[a],M(a),e(E),!0):!1}}function De(){this.$get=["$window","$log","$sniffer","$document",function(b,a,c,d){return new nf(b,d,a,c)}]}function Ee(){this.$get=function(){function b(b,d){function e(a){a!=p&&(q?q==a&&(q=a.n):q=a,f(a.n,a.p),f(a,p),p=a,p.n=null)}functi [...]
+b&&(a&&(a.p=b),b&&(b.n=a))}if(b in a)throw R("$cacheFactory")("iid",b);var g=0,h=w({},d,{id:b}),l={},k=d&&d.capacity||Number.MAX_VALUE,n={},p=null,q=null;return a[b]={put:function(a,b){if(k<Number.MAX_VALUE){var c=n[a]||(n[a]={key:a});e(c)}if(!x(b))return a in l||g++,l[a]=b,g>k&&this.remove(q.key),b},get:function(a){if(k<Number.MAX_VALUE){var b=n[a];if(!b)return;e(b)}return l[a]},remove:function(a){if(k<Number.MAX_VALUE){var b=n[a];if(!b)return;b==p&&(p=b.p);b==q&&(q=b.n);f(b.n,b.p);dele [...]
+g--},removeAll:function(){l={};g=0;n={};p=q=null},destroy:function(){n=h=l=null;delete a[b]},info:function(){return w({},h,{size:g})}}}var a={};b.info=function(){var b={};r(a,function(a,e){b[e]=a.info()});return b};b.get=function(b){return a[b]};return b}}function Ve(){this.$get=["$cacheFactory",function(b){return b("templates")}]}function yc(b,a){function c(a,b){var c=/^\s*([@&]|=(\*?))(\??)\s*(\w*)\s*$/,d={};r(a,function(a,e){var f=a.match(c);if(!f)throw la("iscp",b,e,a);d[e]={mode:f[1 [...]
+f[2],optional:"?"===f[3],attrName:f[4]||e}});return d}var d={},e=/^\s*directive\:\s*([\w\-]+)\s+(.*)$/,f=/(([\w\-]+)(?:\:([^;]+))?;?)/,g=Gd("ngSrc,ngSrcset,src,srcset"),h=/^(?:(\^\^?)?(\?)?(\^\^?)?)?/,l=/^(on[a-z]+|formaction)$/;this.directive=function p(a,e){La(a,"directive");C(a)?(Rb(e,"directiveFactory"),d.hasOwnProperty(a)||(d[a]=[],b.factory(a+"Directive",["$injector","$exceptionHandler",function(b,e){var f=[];r(d[a],function(d,g){try{var h=b.invoke(d);G(h)?h={compile:ea(h)}:!h.comp [...]
+(h.compile=ea(h.link));h.priority=h.priority||0;h.index=g;h.name=h.name||a;h.require=h.require||h.controller&&h.name;h.restrict=h.restrict||"EA";J(h.scope)&&(h.$$isolateBindings=c(h.scope,h.name));f.push(h)}catch(k){e(k)}});return f}])),d[a].push(e)):r(a,mc(p));return this};this.aHrefSanitizationWhitelist=function(b){return y(b)?(a.aHrefSanitizationWhitelist(b),this):a.aHrefSanitizationWhitelist()};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a.imgSrcSanitizationWhitelist(b) [...]
+var k=!0;this.debugInfoEnabled=function(a){return y(a)?(k=a,this):k};this.$get=["$injector","$interpolate","$exceptionHandler","$templateRequest","$parse","$controller","$rootScope","$document","$sce","$animate","$$sanitizeUri",function(a,b,c,s,M,v,m,F,Z,L,B){function I(a,b){try{a.addClass(b)}catch(c){}}function D(a,b,c,d,e){a instanceof A||(a=A(a));r(a,function(b,c){b.nodeType==pb&&b.nodeValue.match(/\S+/)&&(a[c]=A(b).wrap("<span></span>").parent()[0])});var f=S(a,b,a,c,d,e);D.$$addScop [...]
+var g=null;return function(b,c,d){Rb(b,"scope");d=d||{};var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==va(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?A(Xb(g,A("<div>").append(a).html())):c?Ka.clone.call(a):a;if(h)for(var k in h)d.data("$"+k+"Controller",h[k].instance);D.$$addScopeInfo(d,b);c&&c(d,b);f&&f(b,d,d,e);return d}}function S(a,b,c,d,e,f){func [...]
+c,d,e){var f,k,l,q,p,s,M;if(m)for(M=Array(c.length),q=0;q<h.length;q+=3)f=h[q],M[f]=c[f];else M=c;q=0;for(p=h.length;q<p;)k=M[h[q++]],c=h[q++],f=h[q++],c?(c.scope?(l=a.$new(),D.$$addScopeInfo(A(k),l)):l=a,s=c.transcludeOnThisElement?P(a,c.transclude,e,c.elementTranscludeOnThisElement):!c.templateOnThisElement&&e?e:!e&&b?P(a,b):null,c(f,l,k,d,s)):f&&f(a,k.childNodes,t,e)}for(var h=[],k,l,q,p,m,s=0;s<a.length;s++){k=new Yb;l=X(a[s],[],k,0===s?d:t,e);(f=l.length?fa(l,a[s],k,b,c,null,[],[],f [...]
+f.scope&&D.$$addScopeClass(k.$$element);k=f&&f.terminal||!(q=a[s].childNodes)||!q.length?null:S(q,f?(f.transcludeOnThisElement||!f.templateOnThisElement)&&f.transclude:b);if(f||k)h.push(s,f,k),p=!0,m=m||f;f=null}return p?g:null}function P(a,b,c,d){return function(d,e,f,g,h){d||(d=a.$new(!1,h),d.$$transcluded=!0);return b(d,e,{parentBoundTranscludeFn:c,transcludeControllers:f,futureParentElement:g})}}function X(a,b,c,d,g){var h=c.$attr,k;switch(a.nodeType){case qa:ka(b,xa(va(a)),"E",d,g); [...]
+q,p,m=a.attributes,s=0,M=m&&m.length;s<M;s++){var u=!1,L=!1;l=m[s];k=l.name;q=N(l.value);l=xa(k);if(p=U.test(l))k=k.replace(Sc,"").substr(8).replace(/_(.)/g,function(a,b){return b.toUpperCase()});var B=l.replace(/(Start|End)$/,"");x(B)&&l===B+"Start"&&(u=k,L=k.substr(0,k.length-5)+"end",k=k.substr(0,k.length-6));l=xa(k.toLowerCase());h[l]=k;if(p||!c.hasOwnProperty(l))c[l]=q,Nc(a,l)&&(c[l]=!0);Oa(a,b,q,l,p);ka(b,l,"A",d,g,u,L)}a=a.className;J(a)&&(a=a.animVal);if(C(a)&&""!==a)for(;k=f.exe [...]
+ka(b,l,"C",d,g)&&(c[l]=N(k[3])),a=a.substr(k.index+k[0].length);break;case pb:za(b,a.nodeValue);break;case 8:try{if(k=e.exec(a.nodeValue))l=xa(k[1]),ka(b,l,"M",d,g)&&(c[l]=N(k[2]))}catch(v){}}b.sort(da);return b}function ba(a,b,c){var d=[],e=0;if(b&&a.hasAttribute&&a.hasAttribute(b)){do{if(!a)throw la("uterdir",b,c);a.nodeType==qa&&(a.hasAttribute(b)&&e++,a.hasAttribute(c)&&e--);d.push(a);a=a.nextSibling}while(0<e)}else d.push(a);return A(d)}function O(a,b,c){return function(d,e,f,g,h){e [...]
+b,c);return a(d,e,f,g,h)}}function fa(a,d,e,f,g,k,l,p,m){function s(a,b,c,d){if(a){c&&(a=O(a,c,d));a.require=K.require;a.directiveName=da;if(P===K||K.$$isolateScope)a=Y(a,{isolateScope:!0});l.push(a)}if(b){c&&(b=O(b,c,d));b.require=K.require;b.directiveName=da;if(P===K||K.$$isolateScope)b=Y(b,{isolateScope:!0});p.push(b)}}function L(a,b,c,d){var e,f="data",g=!1,k=c,l;if(C(b)){l=b.match(h);b=b.substring(l[0].length);l[3]&&(l[1]?l[3]=null:l[1]=l[3]);"^"===l[1]?f="inheritedData":"^^"===l[1] [...]
+k=c.parent());"?"===l[2]&&(g=!0);e=null;d&&"data"===f&&(e=d[b])&&(e=e.instance);e=e||k[f]("$"+b+"Controller");if(!e&&!g)throw la("ctreq",b,a);return e||null}H(b)&&(e=[],r(b,function(b){e.push(L(a,b,c,d))}));return e}function B(a,c,f,g,h){function k(a,b,c){var d;Va(a)||(c=b,b=a,a=t);E&&(d=F);c||(c=E?X.parent():X);return h(a,b,d,c,Wb)}var m,s,u,I,F,gb,X,O;d===f?(O=e,X=e.$$element):(X=A(f),O=new Yb(X,e));P&&(I=c.$new(!0));h&&(gb=k,gb.$$boundTransclude=h);S&&(Z={},F={},r(S,function(a){var b= [...]
+P||a.$$isolateScope?I:c,$element:X,$attrs:O,$transclude:gb};u=a.controller;"@"==u&&(u=O[a.name]);b=v(u,b,!0,a.controllerAs);F[a.name]=b;E||X.data("$"+a.name+"Controller",b.instance);Z[a.name]=b}));if(P){D.$$addScopeInfo(X,I,!0,!(ma&&(ma===P||ma===P.$$originalDirective)));D.$$addScopeClass(X,!0);g=Z&&Z[P.name];var ba=I;g&&g.identifier&&!0===P.bindToController&&(ba=g.instance);r(I.$$isolateBindings=P.$$isolateBindings,function(a,d){var e=a.attrName,f=a.optional,g,h,k,l;switch(a.mode){case [...]
+function(a){ba[d]=a});O.$$observers[e].$$scope=c;O[e]&&(ba[d]=b(O[e])(c));break;case "=":if(f&&!O[e])break;h=M(O[e]);l=h.literal?ha:function(a,b){return a===b||a!==a&&b!==b};k=h.assign||function(){g=ba[d]=h(c);throw la("nonassign",O[e],P.name);};g=ba[d]=h(c);f=function(a){l(a,ba[d])||(l(a,g)?k(c,a=ba[d]):ba[d]=a);return g=a};f.$stateful=!0;f=a.collection?c.$watchCollection(O[e],f):c.$watch(M(O[e],f),null,h.literal);I.$on("$destroy",f);break;case "&":h=M(O[e]),ba[d]=function(a){return h(c [...]
+(r(Z,function(a){a()}),Z=null);g=0;for(m=l.length;g<m;g++)s=l[g],$(s,s.isolateScope?I:c,X,O,s.require&&L(s.directiveName,s.require,X,F),gb);var Wb=c;P&&(P.template||null===P.templateUrl)&&(Wb=I);a&&a(Wb,f.childNodes,t,h);for(g=p.length-1;0<=g;g--)s=p[g],$(s,s.isolateScope?I:c,X,O,s.require&&L(s.directiveName,s.require,X,F),gb)}m=m||{};for(var I=-Number.MAX_VALUE,F,S=m.controllerDirectives,Z,P=m.newIsolateScopeDirective,ma=m.templateDirective,fa=m.nonTlbTranscludeDirective,ka=!1,x=!1,E=m. [...]
+w=e.$$element=A(d),K,da,V,fb=f,za,z=0,Q=a.length;z<Q;z++){K=a[z];var Oa=K.$$start,U=K.$$end;Oa&&(w=ba(d,Oa,U));V=t;if(I>K.priority)break;if(V=K.scope)K.templateUrl||(J(V)?(Na("new/isolated scope",P||F,K,w),P=K):Na("new/isolated scope",P,K,w)),F=F||K;da=K.name;!K.templateUrl&&K.controller&&(V=K.controller,S=S||{},Na("'"+da+"' controller",S[da],K,w),S[da]=K);if(V=K.transclude)ka=!0,K.$$tlb||(Na("transclusion",fa,K,w),fa=K),"element"==V?(E=!0,I=K.priority,V=w,w=e.$$element=A(W.createComment [...]
+e[da]+" ")),d=w[0],T(g,Za.call(V,0),d),fb=D(V,f,I,k&&k.name,{nonTlbTranscludeDirective:fa})):(V=A(Ub(d)).contents(),w.empty(),fb=D(V,f));if(K.template)if(x=!0,Na("template",ma,K,w),ma=K,V=G(K.template)?K.template(w,e):K.template,V=Tc(V),K.replace){k=K;V=Sb.test(V)?Uc(Xb(K.templateNamespace,N(V))):[];d=V[0];if(1!=V.length||d.nodeType!==qa)throw la("tplrt",da,"");T(g,w,d);Q={$attr:{}};V=X(d,[],Q);var aa=a.splice(z+1,a.length-(z+1));P&&y(V);a=a.concat(V).concat(aa);R(e,Q);Q=a.length}else w. [...]
+!0,Na("template",ma,K,w),ma=K,K.replace&&(k=K),B=of(a.splice(z,a.length-z),w,e,g,ka&&fb,l,p,{controllerDirectives:S,newIsolateScopeDirective:P,templateDirective:ma,nonTlbTranscludeDirective:fa}),Q=a.length;else if(K.compile)try{za=K.compile(w,e,fb),G(za)?s(null,za,Oa,U):za&&s(za.pre,za.post,Oa,U)}catch(pf){c(pf,wa(w))}K.terminal&&(B.terminal=!0,I=Math.max(I,K.priority))}B.scope=F&&!0===F.scope;B.transcludeOnThisElement=ka;B.elementTranscludeOnThisElement=E;B.templateOnThisElement=x;B.tra [...]
+m.hasElementTranscludeDirective=E;return B}function y(a){for(var b=0,c=a.length;b<c;b++)a[b]=Ob(a[b],{$$isolateScope:!0})}function ka(b,e,f,g,h,k,l){if(e===h)return null;h=null;if(d.hasOwnProperty(e)){var q;e=a.get(e+"Directive");for(var m=0,s=e.length;m<s;m++)try{q=e[m],(g===t||g>q.priority)&&-1!=q.restrict.indexOf(f)&&(k&&(q=Ob(q,{$$start:k,$$end:l})),b.push(q),h=q)}catch(M){c(M)}}return h}function x(b){if(d.hasOwnProperty(b))for(var c=a.get(b+"Directive"),e=0,f=c.length;e<f;e++)if(b=c [...]
+return!1}function R(a,b){var c=b.$attr,d=a.$attr,e=a.$$element;r(a,function(d,e){"$"!=e.charAt(0)&&(b[e]&&b[e]!==d&&(d+=("style"===e?";":" ")+b[e]),a.$set(e,d,!0,c[e]))});r(b,function(b,f){"class"==f?(I(e,b),a["class"]=(a["class"]?a["class"]+" ":"")+b):"style"==f?(e.attr("style",e.attr("style")+";"+b),a.style=(a.style?a.style+";":"")+b):"$"==f.charAt(0)||a.hasOwnProperty(f)||(a[f]=b,d[f]=c[f])})}function of(a,b,c,d,e,f,g,h){var k=[],l,q,p=b[0],m=a.shift(),M=Ob(m,{templateUrl:null,transcl [...]
+replace:null,$$originalDirective:m}),u=G(m.templateUrl)?m.templateUrl(b,c):m.templateUrl,L=m.templateNamespace;b.empty();s(Z.getTrustedResourceUrl(u)).then(function(s){var B,v;s=Tc(s);if(m.replace){s=Sb.test(s)?Uc(Xb(L,N(s))):[];B=s[0];if(1!=s.length||B.nodeType!==qa)throw la("tplrt",m.name,u);s={$attr:{}};T(d,b,B);var D=X(B,[],s);J(m.scope)&&y(D);a=D.concat(a);R(c,s)}else B=p,b.html(s);a.unshift(M);l=fa(a,B,c,e,b,m,f,g,h);r(d,function(a,c){a==B&&(d[c]=b[0])});for(q=S(b[0].childNodes,e); [...]
+k.shift();v=k.shift();var F=k.shift(),O=k.shift(),D=b[0];if(!s.$$destroyed){if(v!==p){var Z=v.className;h.hasElementTranscludeDirective&&m.replace||(D=Ub(B));T(F,A(v),D);I(A(D),Z)}v=l.transcludeOnThisElement?P(s,l.transclude,O):O;l(q,s,D,d,v)}}k=null});return function(a,b,c,d,e){a=e;b.$$destroyed||(k?k.push(b,c,d,a):(l.transcludeOnThisElement&&(a=P(b,l.transclude,e)),l(q,b,c,d,a)))}}function da(a,b){var c=b.priority-a.priority;return 0!==c?c:a.name!==b.name?a.name<b.name?-1:1:a.index-b.i [...]
+b,c,d){if(b)throw la("multidir",b.name,c.name,a,wa(d));}function za(a,c){var d=b(c,!0);d&&a.push({priority:0,compile:function(a){a=a.parent();var b=!!a.length;b&&D.$$addBindingClass(a);return function(a,c){var e=c.parent();b||D.$$addBindingClass(e);D.$$addBindingInfo(e,d.expressions);a.$watch(d,function(a){c[0].nodeValue=a})}}})}function Xb(a,b){a=z(a||"html");switch(a){case "svg":case "math":var c=W.createElement("div");c.innerHTML="<"+a+">"+b+"</"+a+">";return c.childNodes[0].childNode [...]
+function Q(a,b){if("srcdoc"==b)return Z.HTML;var c=va(a);if("xlinkHref"==b||"form"==c&&"action"==b||"img"!=c&&("src"==b||"ngSrc"==b))return Z.RESOURCE_URL}function Oa(a,c,d,e,f){var h=Q(a,e);f=g[e]||f;var k=b(d,!0,h,f);if(k){if("multiple"===e&&"select"===va(a))throw la("selmulti",wa(a));c.push({priority:100,compile:function(){return{pre:function(a,c,g){c=g.$$observers||(g.$$observers={});if(l.test(e))throw la("nodomevents");var m=g[e];m!==d&&(k=m&&b(m,!0,h,f),d=m);k&&(g[e]=k(a),(c[e]||(c [...]
+!0,(g.$$observers&&g.$$observers[e].$$scope||a).$watch(k,function(a,b){"class"===e&&a!=b?g.$updateClass(a,b):g.$set(e,a)}))}}}})}}function T(a,b,c){var d=b[0],e=b.length,f=d.parentNode,g,h;if(a)for(g=0,h=a.length;g<h;g++)if(a[g]==d){a[g++]=c;h=g+e-1;for(var k=a.length;g<k;g++,h++)h<k?a[g]=a[h]:delete a[g];a.length-=e-1;a.context===d&&(a.context=c);break}f&&f.replaceChild(c,d);a=W.createDocumentFragment();a.appendChild(d);A(c).data(A(d).data());ta?(Qb=!0,ta.cleanData([d])):delete A.cache[ [...]
+d=1;for(e=b.length;d<e;d++)f=b[d],A(f).remove(),a.appendChild(f),delete b[d];b[0]=c;b.length=1}function Y(a,b){return w(function(){return a.apply(null,arguments)},a,b)}function $(a,b,d,e,f,g){try{a(b,d,e,f,g)}catch(h){c(h,wa(d))}}var Yb=function(a,b){if(b){var c=Object.keys(b),d,e,f;d=0;for(e=c.length;d<e;d++)f=c[d],this[f]=b[f]}else this.$attr={};this.$$element=a};Yb.prototype={$normalize:xa,$addClass:function(a){a&&0<a.length&&L.addClass(this.$$element,a)},$removeClass:function(a){a&&0 [...]
+L.removeClass(this.$$element,a)},$updateClass:function(a,b){var c=Vc(a,b);c&&c.length&&L.addClass(this.$$element,c);(c=Vc(b,a))&&c.length&&L.removeClass(this.$$element,c)},$set:function(a,b,d,e){var f=this.$$element[0],g=Nc(f,a),h=kf(f,a),f=a;g?(this.$$element.prop(a,b),e=g):h&&(this[h]=b,f=h);this[a]=b;e?this.$attr[a]=e:(e=this.$attr[a])||(this.$attr[a]=e=vc(a,"-"));g=va(this.$$element);if("a"===g&&"href"===a||"img"===g&&"src"===a)this[a]=b=B(b,"src"===a);else if("img"===g&&"srcset"===a [...]
+"",h=N(b),k=/(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/,k=/\s/.test(h)?k:/(,)/,h=h.split(k),k=Math.floor(h.length/2),l=0;l<k;l++)var q=2*l,g=g+B(N(h[q]),!0),g=g+(" "+N(h[q+1]));h=N(h[2*l]).split(/\s/);g+=B(N(h[0]),!0);2===h.length&&(g+=" "+N(h[1]));this[a]=b=g}!1!==d&&(null===b||b===t?this.$$element.removeAttr(e):this.$$element.attr(e,b));(a=this.$$observers)&&r(a[f],function(a){try{a(b)}catch(d){c(d)}})},$observe:function(a,b){var c=this,d=c.$$observers||(c.$$observers=ia()),e=d[a]||(d[a]=[]) [...]
+m.$evalAsync(function(){!e.$$inter&&c.hasOwnProperty(a)&&b(c[a])});return function(){Xa(e,b)}}};var V=b.startSymbol(),ma=b.endSymbol(),Tc="{{"==V||"}}"==ma?ra:function(a){return a.replace(/\{\{/g,V).replace(/}}/g,ma)},U=/^ngAttr[A-Z]/;D.$$addBindingInfo=k?function(a,b){var c=a.data("$binding")||[];H(b)?c=c.concat(b):c.push(b);a.data("$binding",c)}:E;D.$$addBindingClass=k?function(a){I(a,"ng-binding")}:E;D.$$addScopeInfo=k?function(a,b,c,d){a.data(c?d?"$isolateScopeNoTemplate":"$isolateSc [...]
+b)}:E;D.$$addScopeClass=k?function(a,b){I(a,b?"ng-isolate-scope":"ng-scope")}:E;return D}]}function xa(b){return db(b.replace(Sc,""))}function Vc(b,a){var c="",d=b.split(/\s+/),e=a.split(/\s+/),f=0;a:for(;f<d.length;f++){for(var g=d[f],h=0;h<e.length;h++)if(g==e[h])continue a;c+=(0<c.length?" ":"")+g}return c}function Uc(b){b=A(b);var a=b.length;if(1>=a)return b;for(;a--;)8===b[a].nodeType&&qf.call(b,a,1);return b}function Fe(){var b={},a=!1,c=/^(\S+)(\s+as\s+(\w+))?$/;this.register=func [...]
+"controller");J(a)?w(b,a):b[a]=c};this.allowGlobals=function(){a=!0};this.$get=["$injector","$window",function(d,e){function f(a,b,c,d){if(!a||!J(a.$scope))throw R("$controller")("noscp",d,b);a.$scope[b]=c}return function(g,h,l,k){var n,p,q;l=!0===l;k&&C(k)&&(q=k);if(C(g)){k=g.match(c);if(!k)throw rf("ctrlfmt",g);p=k[1];q=q||k[3];g=b.hasOwnProperty(p)?b[p]:xc(h.$scope,p,!0)||(a?xc(e,p,!0):t);sb(g,p,!0)}if(l)return l=(H(g)?g[g.length-1]:g).prototype,n=Object.create(l||null),q&&f(h,q,n,p|| [...]
+n,h,p);return n},{instance:n,identifier:q});n=d.instantiate(g,h,p);q&&f(h,q,n,p||g.name);return n}}]}function Ge(){this.$get=["$window",function(b){return A(b.document)}]}function He(){this.$get=["$log",function(b){return function(a,c){b.error.apply(b,arguments)}}]}function Zb(b,a){if(C(b)){var c=b.replace(sf,"").trim();if(c){var d=a("Content-Type");(d=d&&0===d.indexOf(Wc))||(d=(d=c.match(tf))&&uf[d[0]].test(c));d&&(b=qc(c))}}return b}function Xc(b){var a=ia(),c,d,e;if(!b)return a;r(b.sp [...]
+function(b){e=b.indexOf(":");c=z(N(b.substr(0,e)));d=N(b.substr(e+1));c&&(a[c]=a[c]?a[c]+", "+d:d)});return a}function Yc(b){var a=J(b)?b:t;return function(c){a||(a=Xc(b));return c?(c=a[z(c)],void 0===c&&(c=null),c):a}}function Zc(b,a,c,d){if(G(d))return d(b,a,c);r(d,function(d){b=d(b,a,c)});return b}function Ke(){var b=this.defaults={transformResponse:[Zb],transformRequest:[function(a){return J(a)&&"[object File]"!==Ca.call(a)&&"[object Blob]"!==Ca.call(a)&&"[object FormData]"!==Ca.call [...]
+a}],headers:{common:{Accept:"application/json, text/plain, */*"},post:sa($b),put:sa($b),patch:sa($b)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN"},a=!1;this.useApplyAsync=function(b){return y(b)?(a=!!b,this):a};var c=this.interceptors=[];this.$get=["$httpBackend","$browser","$cacheFactory","$rootScope","$q","$injector",function(d,e,f,g,h,l){function k(a){function c(a){var b=w({},a);b.data=a.data?Zc(a.data,a.headers,a.status,e.transformResponse):a.data;a=a.status;return 200< [...]
+b:h.reject(b)}function d(a){var b,c={};r(a,function(a,d){G(a)?(b=a(),null!=b&&(c[d]=b)):c[d]=a});return c}if(!ca.isObject(a))throw R("$http")("badreq",a);var e=w({method:"get",transformRequest:b.transformRequest,transformResponse:b.transformResponse},a);e.headers=function(a){var c=b.headers,e=w({},a.headers),f,g,c=w({},c.common,c[z(a.method)]);a:for(f in c){a=z(f);for(g in e)if(z(g)===a)continue a;e[f]=c[f]}return d(e)}(a);e.method=ub(e.method);var f=[function(a){var d=a.headers,e=Zc(a.d [...]
+t,a.transformRequest);x(e)&&r(d,function(a,b){"content-type"===z(b)&&delete d[b]});x(a.withCredentials)&&!x(b.withCredentials)&&(a.withCredentials=b.withCredentials);return n(a,e).then(c,c)},t],g=h.when(e);for(r(u,function(a){(a.request||a.requestError)&&f.unshift(a.request,a.requestError);(a.response||a.responseError)&&f.push(a.response,a.responseError)});f.length;){a=f.shift();var k=f.shift(),g=g.then(a,k)}g.success=function(a){g.then(function(b){a(b.data,b.status,b.headers,e)});return [...]
+function(a){g.then(null,function(b){a(b.data,b.status,b.headers,e)});return g};return g}function n(c,f){function l(b,c,d,e){function f(){m(c,b,d,e)}I&&(200<=b&&300>b?I.put(P,[b,c,Xc(d),e]):I.remove(P));a?g.$applyAsync(f):(f(),g.$$phase||g.$apply())}function m(a,b,d,e){b=Math.max(b,0);(200<=b&&300>b?L.resolve:L.reject)({data:a,status:b,headers:Yc(d),config:c,statusText:e})}function n(a){m(a.data,a.status,sa(a.headers()),a.statusText)}function u(){var a=k.pendingRequests.indexOf(c);-1!==a& [...]
+1)}var L=h.defer(),B=L.promise,I,D,S=c.headers,P=p(c.url,c.params);k.pendingRequests.push(c);B.then(u,u);!c.cache&&!b.cache||!1===c.cache||"GET"!==c.method&&"JSONP"!==c.method||(I=J(c.cache)?c.cache:J(b.cache)?b.cache:q);I&&(D=I.get(P),y(D)?D&&G(D.then)?D.then(n,n):H(D)?m(D[1],D[0],sa(D[2]),D[3]):m(D,200,{},"OK"):I.put(P,B));x(D)&&((D=$c(c.url)?e.cookies()[c.xsrfCookieName||b.xsrfCookieName]:t)&&(S[c.xsrfHeaderName||b.xsrfHeaderName]=D),d(c.method,P,f,l,S,c.timeout,c.withCredentials,c.re [...]
+return B}function p(a,b){if(!b)return a;var c=[];Ed(b,function(a,b){null===a||x(a)||(H(a)||(a=[a]),r(a,function(a){J(a)&&(a=ga(a)?a.toISOString():$a(a));c.push(Ea(b)+"="+Ea(a))}))});0<c.length&&(a+=(-1==a.indexOf("?")?"?":"&")+c.join("&"));return a}var q=f("$http"),u=[];r(c,function(a){u.unshift(C(a)?l.get(a):l.invoke(a))});k.pendingRequests=[];(function(a){r(arguments,function(a){k[a]=function(b,c){return k(w(c||{},{method:a,url:b}))}})})("get","delete","head","jsonp");(function(a){r(ar [...]
+function(b,c,d){return k(w(d||{},{method:a,url:b,data:c}))}})})("post","put","patch");k.defaults=b;return k}]}function vf(){return new Q.XMLHttpRequest}function Le(){this.$get=["$browser","$window","$document",function(b,a,c){return wf(b,vf,b.defer,a.angular.callbacks,c[0])}]}function wf(b,a,c,d,e){function f(a,b,c){var f=e.createElement("script"),n=null;f.type="text/javascript";f.src=a;f.async=!0;n=function(a){f.removeEventListener("load",n,!1);f.removeEventListener("error",n,!1);e.body [...]
+f=null;var g=-1,u="unknown";a&&("load"!==a.type||d[b].called||(a={type:"error"}),u=a.type,g="error"===a.type?404:200);c&&c(g,u)};f.addEventListener("load",n,!1);f.addEventListener("error",n,!1);e.body.appendChild(f);return n}return function(e,h,l,k,n,p,q,u){function s(){m&&m();F&&F.abort()}function M(a,d,e,f,g){L!==t&&c.cancel(L);m=F=null;a(d,e,f,g);b.$$completeOutstandingRequest(E)}b.$$incOutstandingRequestCount();h=h||b.url();if("jsonp"==z(e)){var v="_"+(d.counter++).toString(36);d[v]= [...]
+a;d[v].called=!0};var m=f(h.replace("JSON_CALLBACK","angular.callbacks."+v),v,function(a,b){M(k,a,d[v].data,"",b);d[v]=E})}else{var F=a();F.open(e,h,!0);r(n,function(a,b){y(a)&&F.setRequestHeader(b,a)});F.onload=function(){var a=F.statusText||"",b="response"in F?F.response:F.responseText,c=1223===F.status?204:F.status;0===c&&(c=b?200:"file"==Aa(h).protocol?404:0);M(k,c,b,F.getAllResponseHeaders(),a)};e=function(){M(k,-1,null,null,"")};F.onerror=e;F.onabort=e;q&&(F.withCredentials=!0);if( [...]
+u}catch(Z){if("json"!==u)throw Z;}F.send(l||null)}if(0<p)var L=c(s,p);else p&&G(p.then)&&p.then(s)}}function Ie(){var b="{{",a="}}";this.startSymbol=function(a){return a?(b=a,this):b};this.endSymbol=function(b){return b?(a=b,this):a};this.$get=["$parse","$exceptionHandler","$sce",function(c,d,e){function f(a){return"\\\\\\"+a}function g(f,g,u,s){function M(c){return c.replace(k,b).replace(n,a)}function v(a){try{var b=a;a=u?e.getTrusted(u,b):e.valueOf(b);var c;if(s&&!y(a))c=a;else if(null [...]
+else{switch(typeof a){case "string":break;case "number":a=""+a;break;default:a=$a(a)}c=a}return c}catch(g){c=ac("interr",f,g.toString()),d(c)}}s=!!s;for(var m,F,r=0,L=[],B=[],I=f.length,D=[],S=[];r<I;)if(-1!=(m=f.indexOf(b,r))&&-1!=(F=f.indexOf(a,m+h)))r!==m&&D.push(M(f.substring(r,m))),r=f.substring(m+h,F),L.push(r),B.push(c(r,v)),r=F+l,S.push(D.length),D.push("");else{r!==I&&D.push(M(f.substring(r)));break}if(u&&1<D.length)throw ac("noconcat",f);if(!g||L.length){var P=function(a){for(v [...]
+L.length;b<c;b++){if(s&&x(a[b]))return;D[S[b]]=a[b]}return D.join("")};return w(function(a){var b=0,c=L.length,e=Array(c);try{for(;b<c;b++)e[b]=B[b](a);return P(e)}catch(g){a=ac("interr",f,g.toString()),d(a)}},{exp:f,expressions:L,$$watchDelegate:function(a,b,c){var d;return a.$watchGroup(B,function(c,e){var f=P(c);G(b)&&b.call(this,f,c!==e?d:f,a);d=f},c)}})}}var h=b.length,l=a.length,k=new RegExp(b.replace(/./g,f),"g"),n=new RegExp(a.replace(/./g,f),"g");g.startSymbol=function(){return [...]
+function(){return a};return g}]}function Je(){this.$get=["$rootScope","$window","$q","$$q",function(b,a,c,d){function e(e,h,l,k){var n=a.setInterval,p=a.clearInterval,q=0,u=y(k)&&!k,s=(u?d:c).defer(),M=s.promise;l=y(l)?l:0;M.then(null,null,e);M.$$intervalId=n(function(){s.notify(q++);0<l&&q>=l&&(s.resolve(q),p(M.$$intervalId),delete f[M.$$intervalId]);u||b.$apply()},h);f[M.$$intervalId]=s;return M}var f={};e.cancel=function(b){return b&&b.$$intervalId in f?(f[b.$$intervalId].reject("canc [...]
+delete f[b.$$intervalId],!0):!1};return e}]}function Rd(){this.$get=function(){return{id:"en-us",NUMBER_FORMATS:{DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{minInt:1,minFrac:0,maxFrac:3,posPre:"",posSuf:"",negPre:"-",negSuf:"",gSize:3,lgSize:3},{minInt:1,minFrac:2,maxFrac:2,posPre:"\u00a4",posSuf:"",negPre:"(\u00a4",negSuf:")",gSize:3,lgSize:3}],CURRENCY_SYM:"$"},DATETIME_FORMATS:{MONTH:"January February March April May June July August September October November December".split(" "),SHORTM [...]
+DAY:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),SHORTDAY:"Sun Mon Tue Wed Thu Fri Sat".split(" "),AMPMS:["AM","PM"],medium:"MMM d, y h:mm:ss a","short":"M/d/yy h:mm a",fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",mediumDate:"MMM d, y",shortDate:"M/d/yy",mediumTime:"h:mm:ss a",shortTime:"h:mm a",ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"]},pluralCat:function(b){return 1===b?"one":"other"}}}}function bc(b){b=b.split("/");for(var a=b.length;a--;)b[ [...]
+return b.join("/")}function ad(b,a){var c=Aa(b);a.$$protocol=c.protocol;a.$$host=c.hostname;a.$$port=aa(c.port)||xf[c.protocol]||null}function bd(b,a){var c="/"!==b.charAt(0);c&&(b="/"+b);var d=Aa(b);a.$$path=decodeURIComponent(c&&"/"===d.pathname.charAt(0)?d.pathname.substring(1):d.pathname);a.$$search=sc(d.search);a.$$hash=decodeURIComponent(d.hash);a.$$path&&"/"!=a.$$path.charAt(0)&&(a.$$path="/"+a.$$path)}function ya(b,a){if(0===a.indexOf(b))return a.substr(b.length)}function Ga(b){v [...]
+return-1==a?b:b.substr(0,a)}function Fb(b){return b.replace(/(#.+)|#$/,"$1")}function cc(b){return b.substr(0,Ga(b).lastIndexOf("/")+1)}function dc(b,a){this.$$html5=!0;a=a||"";var c=cc(b);ad(b,this);this.$$parse=function(a){var b=ya(c,a);if(!C(b))throw Gb("ipthprfx",a,c);bd(b,this);this.$$path||(this.$$path="/");this.$$compose()};this.$$compose=function(){var a=Pb(this.$$search),b=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(a?"?"+a:"")+b;this.$$absUrl=c+this.$$url.sub [...]
+function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;(f=ya(b,d))!==t?(g=f,g=(f=ya(a,f))!==t?c+(ya("/",f)||f):b+g):(f=ya(c,d))!==t?g=c+f:c==d+"/"&&(g=c);g&&this.$$parse(g);return!!g}}function ec(b,a){var c=cc(b);ad(b,this);this.$$parse=function(d){d=ya(b,d)||ya(c,d);var e;"#"===d.charAt(0)?(e=ya(a,d),x(e)&&(e=d)):e=this.$$html5?d:"";bd(e,this);d=this.$$path;var f=/^\/[A-Z]:(\/.*)/;0===e.indexOf(b)&&(e=e.replace(b,""));f.exec(e)||(d=(e=f.exec(d))?e[1]:d);this.$$path=d;thi [...]
+this.$$compose=function(){var c=Pb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+(this.$$url?a+this.$$url:"")};this.$$parseLinkUrl=function(a,c){return Ga(b)==Ga(a)?(this.$$parse(a),!0):!1}}function cd(b,a){this.$$html5=!0;ec.apply(this,arguments);var c=cc(b);this.$$parseLinkUrl=function(d,e){if(e&&"#"===e[0])return this.hash(e.slice(1)),!0;var f,g;b==Ga(d)?f=d:(g=ya(c,d))?f=b+a+g:c===d+"/"&&(f=c);f&&this.$$parse(f);return!! [...]
+function(){var c=Pb(this.$$search),e=this.$$hash?"#"+qb(this.$$hash):"";this.$$url=bc(this.$$path)+(c?"?"+c:"")+e;this.$$absUrl=b+a+this.$$url}}function Hb(b){return function(){return this[b]}}function dd(b,a){return function(c){if(x(c))return this[b];this[b]=a(c);this.$$compose();return this}}function Me(){var b="",a={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(a){return y(a)?(b=a,this):b};this.html5Mode=function(b){return Wa(b)?(a.enabled=b,this):J(b)?(Wa(b.enab [...]
+b.enabled),Wa(b.requireBase)&&(a.requireBase=b.requireBase),Wa(b.rewriteLinks)&&(a.rewriteLinks=b.rewriteLinks),this):a};this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(c,d,e,f,g){function h(a,b,c){var e=k.url(),f=k.$$state;try{d.url(a,b,c),k.$$state=d.state()}catch(g){throw k.url(e),k.$$state=f,g;}}function l(a,b){c.$broadcast("$locationChangeSuccess",k.absUrl(),a,k.$$state,b)}var k,n;n=d.baseHref();var p=d.url(),q;if(a.enabled){if(!n&&a.requireBase)throw [...]
+q=p.substring(0,p.indexOf("/",p.indexOf("//")+2))+(n||"/");n=e.history?dc:cd}else q=Ga(p),n=ec;k=new n(q,"#"+b);k.$$parseLinkUrl(p,p);k.$$state=d.state();var u=/^\s*(javascript|mailto):/i;f.on("click",function(b){if(a.rewriteLinks&&!b.ctrlKey&&!b.metaKey&&!b.shiftKey&&2!=b.which&&2!=b.button){for(var e=A(b.target);"a"!==va(e[0]);)if(e[0]===f[0]||!(e=e.parent())[0])return;var h=e.prop("href"),l=e.attr("href")||e.attr("xlink:href");J(h)&&"[object SVGAnimatedString]"===h.toString()&&(h=Aa(h [...]
+u.test(h)||!h||e.attr("target")||b.isDefaultPrevented()||!k.$$parseLinkUrl(h,l)||(b.preventDefault(),k.absUrl()!=d.url()&&(c.$apply(),g.angular["ff-684208-preventDefault"]=!0))}});Fb(k.absUrl())!=Fb(p)&&d.url(k.absUrl(),!0);var s=!0;d.onUrlChange(function(a,b){c.$evalAsync(function(){var d=k.absUrl(),e=k.$$state,f;k.$$parse(a);k.$$state=b;f=c.$broadcast("$locationChangeStart",a,d,b,e).defaultPrevented;k.absUrl()===a&&(f?(k.$$parse(d),k.$$state=e,h(d,!1,e)):(s=!1,l(d,e)))});c.$$phase||c.$ [...]
+c.$watch(function(){var a=Fb(d.url()),b=Fb(k.absUrl()),f=d.state(),g=k.$$replace,q=a!==b||k.$$html5&&e.history&&f!==k.$$state;if(s||q)s=!1,c.$evalAsync(function(){var b=k.absUrl(),d=c.$broadcast("$locationChangeStart",b,a,k.$$state,f).defaultPrevented;k.absUrl()===b&&(d?(k.$$parse(a),k.$$state=f):(q&&h(b,g,f===k.$$state?null:k.$$state),l(a,f)))});k.$$replace=!1});return k}]}function Ne(){var b=!0,a=this;this.debugEnabled=function(a){return y(a)?(b=a,this):b};this.$get=["$window",function [...]
+Error&&(a.stack?a=a.message&&-1===a.stack.indexOf(a.message)?"Error: "+a.message+"\n"+a.stack:a.stack:a.sourceURL&&(a=a.message+"\n"+a.sourceURL+":"+a.line));return a}function e(a){var b=c.console||{},e=b[a]||b.log||E;a=!1;try{a=!!e.apply}catch(l){}return a?function(){var a=[];r(arguments,function(b){a.push(d(b))});return e.apply(b,a)}:function(a,b){e(a,null==b?"":b)}}return{log:e("log"),info:e("info"),warn:e("warn"),error:e("error"),debug:function(){var c=e("debug");return function(){b& [...]
+arguments)}}()}}]}function ua(b,a){if("__defineGetter__"===b||"__defineSetter__"===b||"__lookupGetter__"===b||"__lookupSetter__"===b||"__proto__"===b)throw na("isecfld",a);return b}function oa(b,a){if(b){if(b.constructor===b)throw na("isecfn",a);if(b.window===b)throw na("isecwindow",a);if(b.children&&(b.nodeName||b.prop&&b.attr&&b.find))throw na("isecdom",a);if(b===Object)throw na("isecobj",a);}return b}function fc(b){return b.constant}function hb(b,a,c,d,e){oa(b,e);oa(a,e);c=c.split("." [...]
+g=0;1<c.length;g++){f=ua(c.shift(),e);var h=0===g&&a&&a[f]||b[f];h||(h={},b[f]=h);b=oa(h,e)}f=ua(c.shift(),e);oa(b[f],e);return b[f]=d}function Pa(b){return"constructor"==b}function ed(b,a,c,d,e,f,g){ua(b,f);ua(a,f);ua(c,f);ua(d,f);ua(e,f);var h=function(a){return oa(a,f)},l=g||Pa(b)?h:ra,k=g||Pa(a)?h:ra,n=g||Pa(c)?h:ra,p=g||Pa(d)?h:ra,q=g||Pa(e)?h:ra;return function(f,g){var h=g&&g.hasOwnProperty(b)?g:f;if(null==h)return h;h=l(h[b]);if(!a)return h;if(null==h)return t;h=k(h[a]);if(!c)ret [...]
+h)return t;h=n(h[c]);if(!d)return h;if(null==h)return t;h=p(h[d]);return e?null==h?t:h=q(h[e]):h}}function yf(b,a){return function(c,d){return b(c,d,oa,a)}}function zf(b,a,c){var d=a.expensiveChecks,e=d?Af:Bf,f=e[b];if(f)return f;var g=b.split("."),h=g.length;if(a.csp)f=6>h?ed(g[0],g[1],g[2],g[3],g[4],c,d):function(a,b){var e=0,f;do f=ed(g[e++],g[e++],g[e++],g[e++],g[e++],c,d)(a,b),b=t,a=f;while(e<h);return f};else{var l="";d&&(l+="s = eso(s, fe);\nl = eso(l, fe);\n");var k=d;r(g,functio [...]
+c);var e=(b?"s":'((l&&l.hasOwnProperty("'+a+'"))?l:s)')+"."+a;if(d||Pa(a))e="eso("+e+", fe)",k=!0;l+="if(s == null) return undefined;\ns="+e+";\n"});l+="return s;";a=new Function("s","l","eso","fe",l);a.toString=ea(l);k&&(a=yf(a,c));f=a}f.sharedGetter=!0;f.assign=function(a,c,d){return hb(a,d,b,c,b)};return e[b]=f}function gc(b){return G(b.valueOf)?b.valueOf():Cf.call(b)}function Oe(){var b=ia(),a=ia();this.$get=["$filter","$sniffer",function(c,d){function e(a){var b=a;a.sharedGetter&&(b [...]
+c){return a(b,c)},b.literal=a.literal,b.constant=a.constant,b.assign=a.assign);return b}function f(a,b){for(var c=0,d=a.length;c<d;c++){var e=a[c];e.constant||(e.inputs?f(e.inputs,b):-1===b.indexOf(e)&&b.push(e))}return b}function g(a,b){return null==a||null==b?a===b:"object"===typeof a&&(a=gc(a),"object"===typeof a)?!1:a===b||a!==a&&b!==b}function h(a,b,c,d){var e=d.$$inputs||(d.$$inputs=f(d.inputs,[])),h;if(1===e.length){var k=g,e=e[0];return a.$watch(function(a){var b=e(a);g(b,k)||(h= [...]
+gc(b));return h},b,c)}for(var l=[],q=0,p=e.length;q<p;q++)l[q]=g;return a.$watch(function(a){for(var b=!1,c=0,f=e.length;c<f;c++){var k=e[c](a);if(b||(b=!g(k,l[c])))l[c]=k&&gc(k)}b&&(h=d(a));return h},b,c)}function l(a,b,c,d){var e,f;return e=a.$watch(function(a){return d(a)},function(a,c,d){f=a;G(b)&&b.apply(this,arguments);y(a)&&d.$$postDigest(function(){y(f)&&e()})},c)}function k(a,b,c,d){function e(a){var b=!0;r(a,function(a){y(a)||(b=!1)});return b}var f,g;return f=a.$watch(function [...]
+function(a,c,d){g=a;G(b)&&b.call(this,a,c,d);e(a)&&d.$$postDigest(function(){e(g)&&f()})},c)}function n(a,b,c,d){var e;return e=a.$watch(function(a){return d(a)},function(a,c,d){G(b)&&b.apply(this,arguments);e()},c)}function p(a,b){if(!b)return a;var c=a.$$watchDelegate,c=c!==k&&c!==l?function(c,d){var e=a(c,d);return b(e,c,d)}:function(c,d){var e=a(c,d),f=b(e,c,d);return y(e)?f:e};a.$$watchDelegate&&a.$$watchDelegate!==h?c.$$watchDelegate=a.$$watchDelegate:b.$stateful||(c.$$watchDelegat [...]
+[a]);return c}var q={csp:d.csp,expensiveChecks:!1},u={csp:d.csp,expensiveChecks:!0};return function(d,f,g){var m,r,t;switch(typeof d){case "string":t=d=d.trim();var L=g?a:b;m=L[t];m||(":"===d.charAt(0)&&":"===d.charAt(1)&&(r=!0,d=d.substring(2)),g=g?u:q,m=new hc(g),m=(new ib(m,c,g)).parse(d),m.constant?m.$$watchDelegate=n:r?(m=e(m),m.$$watchDelegate=m.literal?k:l):m.inputs&&(m.$$watchDelegate=h),L[t]=m);return p(m,f);case "function":return p(d,f);default:return p(E,f)}}}]}function Qe(){t [...]
+["$rootScope","$exceptionHandler",function(b,a){return fd(function(a){b.$evalAsync(a)},a)}]}function Re(){this.$get=["$browser","$exceptionHandler",function(b,a){return fd(function(a){b.defer(a)},a)}]}function fd(b,a){function c(a,b,c){function d(b){return function(c){e||(e=!0,b.call(a,c))}}var e=!1;return[d(b),d(c)]}function d(){this.$$state={status:0}}function e(a,b){return function(c){b.call(a,c)}}function f(c){!c.processScheduled&&c.pending&&(c.processScheduled=!0,b(function(){var b, [...]
+c.processScheduled=!1;c.pending=t;for(var f=0,g=e.length;f<g;++f){d=e[f][0];b=e[f][c.status];try{G(b)?d.resolve(b(c.value)):1===c.status?d.resolve(c.value):d.reject(c.value)}catch(h){d.reject(h),a(h)}}}))}function g(){this.promise=new d;this.resolve=e(this,this.resolve);this.reject=e(this,this.reject);this.notify=e(this,this.notify)}var h=R("$q",TypeError);d.prototype={then:function(a,b,c){var d=new g;this.$$state.pending=this.$$state.pending||[];this.$$state.pending.push([d,a,b,c]);0<th [...]
+f(this.$$state);return d.promise},"catch":function(a){return this.then(null,a)},"finally":function(a,b){return this.then(function(b){return k(b,!0,a)},function(b){return k(b,!1,a)},b)}};g.prototype={resolve:function(a){this.promise.$$state.status||(a===this.promise?this.$$reject(h("qcycle",a)):this.$$resolve(a))},$$resolve:function(b){var d,e;e=c(this,this.$$resolve,this.$$reject);try{if(J(b)||G(b))d=b&&b.then;G(d)?(this.promise.$$state.status=-1,d.call(b,e[0],e[1],this.notify)):(this.pr [...]
+b,this.promise.$$state.status=1,f(this.promise.$$state))}catch(g){e[1](g),a(g)}},reject:function(a){this.promise.$$state.status||this.$$reject(a)},$$reject:function(a){this.promise.$$state.value=a;this.promise.$$state.status=2;f(this.promise.$$state)},notify:function(c){var d=this.promise.$$state.pending;0>=this.promise.$$state.status&&d&&d.length&&b(function(){for(var b,e,f=0,g=d.length;f<g;f++){e=d[f][0];b=d[f][3];try{e.notify(G(b)?b(c):c)}catch(h){a(h)}}})}};var l=function(a,b){var c= [...]
+c.reject(a);return c.promise},k=function(a,b,c){var d=null;try{G(c)&&(d=c())}catch(e){return l(e,!1)}return d&&G(d.then)?d.then(function(){return l(a,b)},function(a){return l(a,!1)}):l(a,b)},n=function(a,b,c,d){var e=new g;e.resolve(a);return e.promise.then(b,c,d)},p=function u(a){if(!G(a))throw h("norslvr",a);if(!(this instanceof u))return new u(a);var b=new g;a(function(a){b.resolve(a)},function(a){b.reject(a)});return b.promise};p.defer=function(){return new g};p.reject=function(a){va [...]
+b.reject(a);return b.promise};p.when=n;p.all=function(a){var b=new g,c=0,d=H(a)?[]:{};r(a,function(a,e){c++;n(a).then(function(a){d.hasOwnProperty(e)||(d[e]=a,--c||b.resolve(d))},function(a){d.hasOwnProperty(e)||b.reject(a)})});0===c&&b.resolve(d);return b.promise};return p}function $e(){this.$get=["$window","$timeout",function(b,a){var c=b.requestAnimationFrame||b.webkitRequestAnimationFrame,d=b.cancelAnimationFrame||b.webkitCancelAnimationFrame||b.webkitCancelRequestAnimationFrame,e=!! [...]
+c(a);return function(){d(b)}}:function(b){var c=a(b,16.66,!1);return function(){a.cancel(c)}};f.supported=e;return f}]}function Pe(){function b(a){function b(){this.$$watchers=this.$$nextSibling=this.$$childHead=this.$$childTail=null;this.$$listeners={};this.$$listenerCount={};this.$$watchersCount=0;this.$id=++ob;this.$$ChildScope=null}b.prototype=a;return b}var a=10,c=R("$rootScope"),d=null,e=null;this.digestTtl=function(b){arguments.length&&(a=b);return a};this.$get=["$injector","$exce [...]
+"$parse","$browser",function(f,g,h,l){function k(a){a.currentScope.$$destroyed=!0}function n(){this.$id=++ob;this.$$phase=this.$parent=this.$$watchers=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=null;this.$root=this;this.$$destroyed=!1;this.$$listeners={};this.$$listenerCount={};this.$$isolateBindings=null}function p(a){if(v.$$phase)throw c("inprog",v.$$phase);v.$$phase=a}function q(a,b,c){do a.$$listenerCount[c]-=b,0===a.$$listenerCount[c]&&delete a.$$listene [...]
+while(a=a.$parent)}function u(){}function s(){for(;t.length;)try{t.shift()()}catch(a){g(a)}e=null}function M(){null===e&&(e=l.defer(function(){v.$apply(s)}))}n.prototype={constructor:n,$new:function(a,c){var d;c=c||this;a?(d=new n,d.$root=this.$root):(this.$$ChildScope||(this.$$ChildScope=b(this)),d=new this.$$ChildScope);d.$parent=c;d.$$prevSibling=c.$$childTail;c.$$childHead?(c.$$childTail.$$nextSibling=d,c.$$childTail=d):c.$$childHead=c.$$childTail=d;(a||c!=this)&&d.$on("$destroy",k); [...]
+$watch:function(a,b,c){var e=h(a);if(e.$$watchDelegate)return e.$$watchDelegate(this,b,c,e);var f=this.$$watchers,g={fn:b,last:u,get:e,exp:a,eq:!!c};d=null;G(b)||(g.fn=E);f||(f=this.$$watchers=[]);f.unshift(g);return function(){Xa(f,g);d=null}},$watchGroup:function(a,b){function c(){h=!1;k?(k=!1,b(e,e,g)):b(e,d,g)}var d=Array(a.length),e=Array(a.length),f=[],g=this,h=!1,k=!0;if(!a.length){var l=!0;g.$evalAsync(function(){l&&b(e,e,g)});return function(){l=!1}}if(1===a.length)return this.$ [...]
+function(a,c,f){e[0]=a;d[0]=c;b(e,a===c?e:d,f)});r(a,function(a,b){var k=g.$watch(a,function(a,f){e[b]=a;d[b]=f;h||(h=!0,g.$evalAsync(c))});f.push(k)});return function(){for(;f.length;)f.shift()()}},$watchCollection:function(a,b){function c(a){e=a;var b,d,g,h;if(!x(e)){if(J(e))if(Sa(e))for(f!==p&&(f=p,u=f.length=0,l++),a=e.length,u!==a&&(l++,f.length=u=a),b=0;b<a;b++)h=f[b],g=e[b],d=h!==h&&g!==g,d||h===g||(l++,f[b]=g);else{f!==n&&(f=n={},u=0,l++);a=0;for(b in e)e.hasOwnProperty(b)&&(a++, [...]
+f[b],b in f?(d=h!==h&&g!==g,d||h===g||(l++,f[b]=g)):(u++,f[b]=g,l++));if(u>a)for(b in l++,f)e.hasOwnProperty(b)||(u--,delete f[b])}else f!==e&&(f=e,l++);return l}}c.$stateful=!0;var d=this,e,f,g,k=1<b.length,l=0,q=h(a,c),p=[],n={},m=!0,u=0;return this.$watch(q,function(){m?(m=!1,b(e,e,d)):b(e,g,d);if(k)if(J(e))if(Sa(e)){g=Array(e.length);for(var a=0;a<e.length;a++)g[a]=e[a]}else for(a in g={},e)tc.call(e,a)&&(g[a]=e[a]);else g=e})},$digest:function(){var b,f,h,k,q,n,r=a,t,O=[],M,y;p("$di [...]
+this===v&&null!==e&&(l.defer.cancel(e),s());d=null;do{n=!1;for(t=this;m.length;){try{y=m.shift(),y.scope.$eval(y.expression,y.locals)}catch(w){g(w)}d=null}a:do{if(k=t.$$watchers)for(q=k.length;q--;)try{if(b=k[q])if((f=b.get(t))!==(h=b.last)&&!(b.eq?ha(f,h):"number"===typeof f&&"number"===typeof h&&isNaN(f)&&isNaN(h)))n=!0,d=b,b.last=b.eq?Da(f,null):f,b.fn(f,h===u?f:h,t),5>r&&(M=4-r,O[M]||(O[M]=[]),O[M].push({msg:G(b.exp)?"fn: "+(b.exp.name||b.exp.toString()):b.exp,newVal:f,oldVal:h}));el [...]
+d){n=!1;break a}}catch(A){g(A)}if(!(k=t.$$childHead||t!==this&&t.$$nextSibling))for(;t!==this&&!(k=t.$$nextSibling);)t=t.$parent}while(t=k);if((n||m.length)&&!r--)throw v.$$phase=null,c("infdig",a,O);}while(n||m.length);for(v.$$phase=null;F.length;)try{F.shift()()}catch(x){g(x)}},$destroy:function(){if(!this.$$destroyed){var a=this.$parent;this.$broadcast("$destroy");this.$$destroyed=!0;if(this!==v){for(var b in this.$$listenerCount)q(this,this.$$listenerCount[b],b);a.$$childHead==this&& [...]
+this.$$nextSibling);a.$$childTail==this&&(a.$$childTail=this.$$prevSibling);this.$$prevSibling&&(this.$$prevSibling.$$nextSibling=this.$$nextSibling);this.$$nextSibling&&(this.$$nextSibling.$$prevSibling=this.$$prevSibling);this.$destroy=this.$digest=this.$apply=this.$evalAsync=this.$applyAsync=E;this.$on=this.$watch=this.$watchGroup=function(){return E};this.$$listeners={};this.$parent=this.$$nextSibling=this.$$prevSibling=this.$$childHead=this.$$childTail=this.$root=this.$$watchers=nul [...]
+b){return h(a)(this,b)},$evalAsync:function(a,b){v.$$phase||m.length||l.defer(function(){m.length&&v.$digest()});m.push({scope:this,expression:a,locals:b})},$$postDigest:function(a){F.push(a)},$apply:function(a){try{return p("$apply"),this.$eval(a)}catch(b){g(b)}finally{v.$$phase=null;try{v.$digest()}catch(c){throw g(c),c;}}},$applyAsync:function(a){function b(){c.$eval(a)}var c=this;a&&t.push(b);M()},$on:function(a,b){var c=this.$$listeners[a];c||(this.$$listeners[a]=c=[]);c.push(b);var [...]
+(d.$$listenerCount[a]=0),d.$$listenerCount[a]++;while(d=d.$parent);var e=this;return function(){var d=c.indexOf(b);-1!==d&&(c[d]=null,q(e,1,a))}},$emit:function(a,b){var c=[],d,e=this,f=!1,h={name:a,targetScope:e,stopPropagation:function(){f=!0},preventDefault:function(){h.defaultPrevented=!0},defaultPrevented:!1},k=Ya([h],arguments,1),l,q;do{d=e.$$listeners[a]||c;h.currentScope=e;l=0;for(q=d.length;l<q;l++)if(d[l])try{d[l].apply(null,k)}catch(p){g(p)}else d.splice(l,1),l--,q--;if(f)retu [...]
+null,h;e=e.$parent}while(e);h.currentScope=null;return h},$broadcast:function(a,b){var c=this,d=this,e={name:a,targetScope:this,preventDefault:function(){e.defaultPrevented=!0},defaultPrevented:!1};if(!this.$$listenerCount[a])return e;for(var f=Ya([e],arguments,1),h,l;c=d;){e.currentScope=c;d=c.$$listeners[a]||[];h=0;for(l=d.length;h<l;h++)if(d[h])try{d[h].apply(null,f)}catch(k){g(k)}else d.splice(h,1),h--,l--;if(!(d=c.$$listenerCount[a]&&c.$$childHead||c!==this&&c.$$nextSibling))for(;c! [...]
+c.$$nextSibling);)c=c.$parent}e.currentScope=null;return e}};var v=new n,m=v.$$asyncQueue=[],F=v.$$postDigestQueue=[],t=v.$$applyAsyncQueue=[];return v}]}function Sd(){var b=/^\s*(https?|ftp|mailto|tel|file):/,a=/^\s*((https?|ftp|file|blob):|data:image\/)/;this.aHrefSanitizationWhitelist=function(a){return y(a)?(b=a,this):b};this.imgSrcSanitizationWhitelist=function(b){return y(b)?(a=b,this):a};this.$get=function(){return function(c,d){var e=d?a:b,f;f=Aa(c).href;return""===f||f.match(e)? [...]
+f}}}function Df(b){if("self"===b)return b;if(C(b)){if(-1<b.indexOf("***"))throw Ba("iwcard",b);b=gd(b).replace("\\*\\*",".*").replace("\\*","[^:/.?&;]*");return new RegExp("^"+b+"$")}if(Ua(b))return new RegExp("^"+b.source+"$");throw Ba("imatcher");}function hd(b){var a=[];y(b)&&r(b,function(b){a.push(Df(b))});return a}function Te(){this.SCE_CONTEXTS=pa;var b=["self"],a=[];this.resourceUrlWhitelist=function(a){arguments.length&&(b=hd(a));return b};this.resourceUrlBlacklist=function(b){ar [...]
+(a=hd(b));return a};this.$get=["$injector",function(c){function d(a,b){return"self"===a?$c(b):!!a.exec(b.href)}function e(a){var b=function(a){this.$$unwrapTrustedValue=function(){return a}};a&&(b.prototype=new a);b.prototype.valueOf=function(){return this.$$unwrapTrustedValue()};b.prototype.toString=function(){return this.$$unwrapTrustedValue().toString()};return b}var f=function(a){throw Ba("unsafe");};c.has("$sanitize")&&(f=c.get("$sanitize"));var g=e(),h={};h[pa.HTML]=e(g);h[pa.CSS]= [...]
+e(g);h[pa.JS]=e(g);h[pa.RESOURCE_URL]=e(h[pa.URL]);return{trustAs:function(a,b){var c=h.hasOwnProperty(a)?h[a]:null;if(!c)throw Ba("icontext",a,b);if(null===b||b===t||""===b)return b;if("string"!==typeof b)throw Ba("itype",a);return new c(b)},getTrusted:function(c,e){if(null===e||e===t||""===e)return e;var g=h.hasOwnProperty(c)?h[c]:null;if(g&&e instanceof g)return e.$$unwrapTrustedValue();if(c===pa.RESOURCE_URL){var g=Aa(e.toString()),p,q,u=!1;p=0;for(q=b.length;p<q;p++)if(d(b[p],g)){u= [...]
+0,q=a.length;p<q;p++)if(d(a[p],g)){u=!1;break}if(u)return e;throw Ba("insecurl",e.toString());}if(c===pa.HTML)return f(e);throw Ba("unsafe");},valueOf:function(a){return a instanceof g?a.$$unwrapTrustedValue():a}}}]}function Se(){var b=!0;this.enabled=function(a){arguments.length&&(b=!!a);return b};this.$get=["$parse","$sceDelegate",function(a,c){if(b&&8>Qa)throw Ba("iequirks");var d=sa(pa);d.isEnabled=function(){return b};d.trustAs=c.trustAs;d.getTrusted=c.getTrusted;d.valueOf=c.valueOf [...]
+d.getTrusted=function(a,b){return b},d.valueOf=ra);d.parseAs=function(b,c){var e=a(c);return e.literal&&e.constant?e:a(c,function(a){return d.getTrusted(b,a)})};var e=d.parseAs,f=d.getTrusted,g=d.trustAs;r(pa,function(a,b){var c=z(b);d[db("parse_as_"+c)]=function(b){return e(a,b)};d[db("get_trusted_"+c)]=function(b){return f(a,b)};d[db("trust_as_"+c)]=function(b){return g(a,b)}});return d}]}function Ue(){this.$get=["$window","$document",function(b,a){var c={},d=aa((/android (\d+)/.exec(z [...]
+{}).userAgent))||[])[1]),e=/Boxee/i.test((b.navigator||{}).userAgent),f=a[0]||{},g,h=/^(Moz|webkit|ms)(?=[A-Z])/,l=f.body&&f.body.style,k=!1,n=!1;if(l){for(var p in l)if(k=h.exec(p)){g=k[0];g=g.substr(0,1).toUpperCase()+g.substr(1);break}g||(g="WebkitOpacity"in l&&"webkit");k=!!("transition"in l||g+"Transition"in l);n=!!("animation"in l||g+"Animation"in l);!d||k&&n||(k=C(f.body.style.webkitTransition),n=C(f.body.style.webkitAnimation))}return{history:!(!b.history||!b.history.pushState||4 [...]
+a&&11>=Qa)return!1;if(x(c[a])){var b=f.createElement("div");c[a]="on"+a in b}return c[a]},csp:bb(),vendorPrefix:g,transitions:k,animations:n,android:d}}]}function We(){this.$get=["$templateCache","$http","$q",function(b,a,c){function d(e,f){d.totalPendingRequests++;var g=a.defaults&&a.defaults.transformResponse;H(g)?g=g.filter(function(a){return a!==Zb}):g===Zb&&(g=null);return a.get(e,{cache:b,transformResponse:g})["finally"](function(){d.totalPendingRequests--}).then(function(a){return [...]
+function(a){if(!f)throw la("tpload",e);return c.reject(a)})}d.totalPendingRequests=0;return d}]}function Xe(){this.$get=["$rootScope","$browser","$location",function(b,a,c){return{findBindings:function(a,b,c){a=a.getElementsByClassName("ng-binding");var g=[];r(a,function(a){var d=ca.element(a).data("$binding");d&&r(d,function(d){c?(new RegExp("(^|\\s)"+gd(b)+"(\\s|\\||$)")).test(d)&&g.push(a):-1!=d.indexOf(b)&&g.push(a)})});return g},findModels:function(a,b,c){for(var g=["ng-","data-ng-" [...]
+h=0;h<g.length;++h){var l=a.querySelectorAll("["+g[h]+"model"+(c?"=":"*=")+'"'+b+'"]');if(l.length)return l}},getLocation:function(){return c.url()},setLocation:function(a){a!==c.url()&&(c.url(a),b.$digest())},whenStable:function(b){a.notifyWhenNoOutstandingRequests(b)}}}]}function Ye(){this.$get=["$rootScope","$browser","$q","$$q","$exceptionHandler",function(b,a,c,d,e){function f(f,l,k){var n=y(k)&&!k,p=(n?d:c).defer(),q=p.promise;l=a.defer(function(){try{p.resolve(f())}catch(a){p.reje [...]
+b.$apply()},l);q.$$timeoutId=l;g[l]=p;return q}var g={};f.cancel=function(b){return b&&b.$$timeoutId in g?(g[b.$$timeoutId].reject("canceled"),delete g[b.$$timeoutId],a.defer.cancel(b.$$timeoutId)):!1};return f}]}function Aa(b){Qa&&($.setAttribute("href",b),b=$.href);$.setAttribute("href",b);return{href:$.href,protocol:$.protocol?$.protocol.replace(/:$/,""):"",host:$.host,search:$.search?$.search.replace(/^\?/,""):"",hash:$.hash?$.hash.replace(/^#/,""):"",hostname:$.hostname,port:$.port, [...]
+$.pathname.charAt(0)?$.pathname:"/"+$.pathname}}function $c(b){b=C(b)?Aa(b):b;return b.protocol===id.protocol&&b.host===id.host}function Ze(){this.$get=ea(Q)}function Fc(b){function a(c,d){if(J(c)){var e={};r(c,function(b,c){e[c]=a(c,b)});return e}return b.factory(c+"Filter",d)}this.register=a;this.$get=["$injector",function(a){return function(b){return a.get(b+"Filter")}}];a("currency",jd);a("date",kd);a("filter",Ef);a("json",Ff);a("limitTo",Gf);a("lowercase",Hf);a("number",ld);a("order [...]
+If)}function Ef(){return function(b,a,c){if(!H(b))return b;var d;switch(typeof a){case "function":break;case "boolean":case "number":case "string":d=!0;case "object":a=Jf(a,c,d);break;default:return b}return b.filter(a)}}function Jf(b,a,c){var d=J(b)&&"$"in b;!0===a?a=ha:G(a)||(a=function(a,b){if(J(a)||J(b))return!1;a=z(""+a);b=z(""+b);return-1!==a.indexOf(b)});return function(e){return d&&!J(e)?Ha(e,b.$,a,!1):Ha(e,b,a,c)}}function Ha(b,a,c,d,e){var f=null!==b?typeof b:"null",g=null!==a? [...]
+"null";if("string"===g&&"!"===a.charAt(0))return!Ha(b,a.substring(1),c,d);if(H(b))return b.some(function(b){return Ha(b,a,c,d)});switch(f){case "object":var h;if(d){for(h in b)if("$"!==h.charAt(0)&&Ha(b[h],a,c,!0))return!0;return e?!1:Ha(b,a,c,!1)}if("object"===g){for(h in a)if(e=a[h],!G(e)&&!x(e)&&(f="$"===h,!Ha(f?b:b[h],e,c,f,f)))return!1;return!0}return c(b,a);case "function":return!1;default:return c(b,a)}}function jd(b){var a=b.NUMBER_FORMATS;return function(b,d,e){x(d)&&(d=a.CURREN [...]
+(e=a.PATTERNS[1].maxFrac);return null==b?b:nd(b,a.PATTERNS[1],a.GROUP_SEP,a.DECIMAL_SEP,e).replace(/\u00A4/g,d)}}function ld(b){var a=b.NUMBER_FORMATS;return function(b,d){return null==b?b:nd(b,a.PATTERNS[0],a.GROUP_SEP,a.DECIMAL_SEP,d)}}function nd(b,a,c,d,e){if(!isFinite(b)||J(b))return"";var f=0>b;b=Math.abs(b);var g=b+"",h="",l=[],k=!1;if(-1!==g.indexOf("e")){var n=g.match(/([\d\.]+)e(-?)(\d+)/);n&&"-"==n[2]&&n[3]>e+1?b=0:(h=g,k=!0)}if(k)0<e&&1>b&&(h=b.toFixed(e),b=parseFloat(h));els [...]
+"").length;x(e)&&(e=Math.min(Math.max(a.minFrac,g),a.maxFrac));b=+(Math.round(+(b.toString()+"e"+e)).toString()+"e"+-e);var g=(""+b).split(od),k=g[0],g=g[1]||"",p=0,q=a.lgSize,u=a.gSize;if(k.length>=q+u)for(p=k.length-q,n=0;n<p;n++)0===(p-n)%u&&0!==n&&(h+=c),h+=k.charAt(n);for(n=p;n<k.length;n++)0===(k.length-n)%q&&0!==n&&(h+=c),h+=k.charAt(n);for(;g.length<e;)g+="0";e&&"0"!==e&&(h+=d+g.substr(0,e))}0===b&&(f=!1);l.push(f?a.negPre:a.posPre,h,f?a.negSuf:a.posSuf);return l.join("")}functio [...]
+c){var d="";0>b&&(d="-",b=-b);for(b=""+b;b.length<a;)b="0"+b;c&&(b=b.substr(b.length-a));return d+b}function U(b,a,c,d){c=c||0;return function(e){e=e["get"+b]();if(0<c||e>-c)e+=c;0===e&&-12==c&&(e=12);return Ib(e,a,d)}}function Jb(b,a){return function(c,d){var e=c["get"+b](),f=ub(a?"SHORT"+b:b);return d[f][e]}}function pd(b){var a=(new Date(b,0,1)).getDay();return new Date(b,0,(4>=a?5:12)-a)}function qd(b){return function(a){var c=pd(a.getFullYear());a=+new Date(a.getFullYear(),a.getMont [...]
+(4-a.getDay()))-+c;a=1+Math.round(a/6048E5);return Ib(a,b)}}function ic(b,a){return 0>=b.getFullYear()?a.ERAS[0]:a.ERAS[1]}function kd(b){function a(a){var b;if(b=a.match(c)){a=new Date(0);var f=0,g=0,h=b[8]?a.setUTCFullYear:a.setFullYear,l=b[8]?a.setUTCHours:a.setHours;b[9]&&(f=aa(b[9]+b[10]),g=aa(b[9]+b[11]));h.call(a,aa(b[1]),aa(b[2])-1,aa(b[3]));f=aa(b[4]||0)-f;g=aa(b[5]||0)-g;h=aa(b[6]||0);b=Math.round(1E3*parseFloat("0."+(b[7]||0)));l.call(a,f,g,h,b)}return a}var c=/^(\d{4})-?(\d\d [...]
+return function(c,e,f){var g="",h=[],l,k;e=e||"mediumDate";e=b.DATETIME_FORMATS[e]||e;C(c)&&(c=Kf.test(c)?aa(c):a(c));Y(c)&&(c=new Date(c));if(!ga(c))return c;for(;e;)(k=Lf.exec(e))?(h=Ya(h,k,1),e=h.pop()):(h.push(e),e=null);f&&"UTC"===f&&(c=new Date(c.getTime()),c.setMinutes(c.getMinutes()+c.getTimezoneOffset()));r(h,function(a){l=Mf[a];g+=l?l(c,b.DATETIME_FORMATS):a.replace(/(^'|'$)/g,"").replace(/''/g,"'")});return g}}function Ff(){return function(b,a){x(a)&&(a=2);return $a(b,a)}}func [...]
+a){Y(b)&&(b=b.toString());return H(b)||C(b)?(a=Infinity===Math.abs(Number(a))?Number(a):aa(a))?0<a?b.slice(0,a):b.slice(a):C(b)?"":[]:b}}function md(b){return function(a,c,d){function e(a,b){return b?function(b,c){return a(c,b)}:a}function f(a){switch(typeof a){case "number":case "boolean":case "string":return!0;default:return!1}}function g(a){return null===a?"null":"function"===typeof a.valueOf&&(a=a.valueOf(),f(a))||"function"===typeof a.toString&&(a=a.toString(),f(a))?a:""}function h( [...]
+typeof a,d=typeof b;c===d&&"object"===c&&(a=g(a),b=g(b));return c===d?("string"===c&&(a=a.toLowerCase(),b=b.toLowerCase()),a===b?0:a<b?-1:1):c<d?-1:1}if(!Sa(a))return a;c=H(c)?c:[c];0===c.length&&(c=["+"]);c=c.map(function(a){var c=!1,d=a||ra;if(C(a)){if("+"==a.charAt(0)||"-"==a.charAt(0))c="-"==a.charAt(0),a=a.substring(1);if(""===a)return e(h,c);d=b(a);if(d.constant){var f=d();return e(function(a,b){return h(a[f],b[f])},c)}}return e(function(a,b){return h(d(a),d(b))},c)});return Za.cal [...]
+b){for(var d=0;d<c.length;d++){var e=c[d](a,b);if(0!==e)return e}return 0},d))}}function Ia(b){G(b)&&(b={link:b});b.restrict=b.restrict||"AC";return ea(b)}function rd(b,a,c,d,e){var f=this,g=[],h=f.$$parentForm=b.parent().controller("form")||Kb;f.$error={};f.$$success={};f.$pending=t;f.$name=e(a.name||a.ngForm||"")(c);f.$dirty=!1;f.$pristine=!0;f.$valid=!0;f.$invalid=!1;f.$submitted=!1;h.$addControl(f);f.$rollbackViewValue=function(){r(g,function(a){a.$rollbackViewValue()})};f.$commitVie [...]
+function(a){a.$commitViewValue()})};f.$addControl=function(a){La(a.$name,"input");g.push(a);a.$name&&(f[a.$name]=a)};f.$$renameControl=function(a,b){var c=a.$name;f[c]===a&&delete f[c];f[b]=a;a.$name=b};f.$removeControl=function(a){a.$name&&f[a.$name]===a&&delete f[a.$name];r(f.$pending,function(b,c){f.$setValidity(c,null,a)});r(f.$error,function(b,c){f.$setValidity(c,null,a)});r(f.$$success,function(b,c){f.$setValidity(c,null,a)});Xa(g,a)};sd({ctrl:this,$element:b,set:function(a,b,c){va [...]
+d?-1===d.indexOf(c)&&d.push(c):a[b]=[c]},unset:function(a,b,c){var d=a[b];d&&(Xa(d,c),0===d.length&&delete a[b])},parentForm:h,$animate:d});f.$setDirty=function(){d.removeClass(b,Ra);d.addClass(b,Lb);f.$dirty=!0;f.$pristine=!1;h.$setDirty()};f.$setPristine=function(){d.setClass(b,Ra,Lb+" ng-submitted");f.$dirty=!1;f.$pristine=!0;f.$submitted=!1;r(g,function(a){a.$setPristine()})};f.$setUntouched=function(){r(g,function(a){a.$setUntouched()})};f.$setSubmitted=function(){d.addClass(b,"ng-s [...]
+f.$submitted=!0;h.$setSubmitted()}}function jc(b){b.$formatters.push(function(a){return b.$isEmpty(a)?a:a.toString()})}function jb(b,a,c,d,e,f){var g=z(a[0].type);if(!e.android){var h=!1;a.on("compositionstart",function(a){h=!0});a.on("compositionend",function(){h=!1;l()})}var l=function(b){k&&(f.defer.cancel(k),k=null);if(!h){var e=a.val();b=b&&b.type;"password"===g||c.ngTrim&&"false"===c.ngTrim||(e=N(e));(d.$viewValue!==e||""===e&&d.$$hasNativeValidators)&&d.$setViewValue(e,b)}};if(e.h [...]
+l);else{var k,n=function(a,b,c){k||(k=f.defer(function(){k=null;b&&b.value===c||l(a)}))};a.on("keydown",function(a){var b=a.keyCode;91===b||15<b&&19>b||37<=b&&40>=b||n(a,this,this.value)});if(e.hasEvent("paste"))a.on("paste cut",n)}a.on("change",l);d.$render=function(){a.val(d.$isEmpty(d.$viewValue)?"":d.$viewValue)}}function Mb(b,a){return function(c,d){var e,f;if(ga(c))return c;if(C(c)){'"'==c.charAt(0)&&'"'==c.charAt(c.length-1)&&(c=c.substring(1,c.length-1));if(Nf.test(c))return new [...]
+0;if(e=b.exec(c))return e.shift(),f=d?{yyyy:d.getFullYear(),MM:d.getMonth()+1,dd:d.getDate(),HH:d.getHours(),mm:d.getMinutes(),ss:d.getSeconds(),sss:d.getMilliseconds()/1E3}:{yyyy:1970,MM:1,dd:1,HH:0,mm:0,ss:0,sss:0},r(e,function(b,c){c<a.length&&(f[a[c]]=+b)}),new Date(f.yyyy,f.MM-1,f.dd,f.HH,f.mm,f.ss||0,1E3*f.sss||0)}return NaN}}function kb(b,a,c,d){return function(e,f,g,h,l,k,n){function p(a){return a&&!(a.getTime&&a.getTime()!==a.getTime())}function q(a){return y(a)?ga(a)?a:c(a):t}t [...]
+jb(e,f,g,h,l,k);var u=h&&h.$options&&h.$options.timezone,s;h.$$parserName=b;h.$parsers.push(function(b){return h.$isEmpty(b)?null:a.test(b)?(b=c(b,s),"UTC"===u&&b.setMinutes(b.getMinutes()-b.getTimezoneOffset()),b):t});h.$formatters.push(function(a){if(a&&!ga(a))throw Nb("datefmt",a);if(p(a)){if((s=a)&&"UTC"===u){var b=6E4*s.getTimezoneOffset();s=new Date(s.getTime()+b)}return n("date")(a,d,u)}s=null;return""});if(y(g.min)||g.ngMin){var r;h.$validators.min=function(a){return!p(a)||x(r)|| [...]
+g.$observe("min",function(a){r=q(a);h.$validate()})}if(y(g.max)||g.ngMax){var v;h.$validators.max=function(a){return!p(a)||x(v)||c(a)<=v};g.$observe("max",function(a){v=q(a);h.$validate()})}}}function td(b,a,c,d){(d.$$hasNativeValidators=J(a[0].validity))&&d.$parsers.push(function(b){var c=a.prop("validity")||{};return c.badInput&&!c.typeMismatch?t:b})}function ud(b,a,c,d,e){if(y(d)){b=b(d);if(!b.constant)throw R("ngModel")("constexpr",c,d);return b(a)}return e}function kc(b,a){b="ngClas [...]
+function(c){function d(a,b){var c=[],d=0;a:for(;d<a.length;d++){for(var e=a[d],n=0;n<b.length;n++)if(e==b[n])continue a;c.push(e)}return c}function e(a){if(!H(a)){if(C(a))return a.split(" ");if(J(a)){var b=[];r(a,function(a,c){a&&(b=b.concat(c.split(" ")))});return b}}return a}return{restrict:"AC",link:function(f,g,h){function l(a,b){var c=g.data("$classCounts")||{},d=[];r(a,function(a){if(0<b||c[a])c[a]=(c[a]||0)+b,c[a]===+(0<b)&&d.push(a)});g.data("$classCounts",c);return d.join(" ")}f [...]
+a||f.$index%2===a){var k=e(b||[]);if(!n){var u=l(k,1);h.$addClass(u)}else if(!ha(b,n)){var s=e(n),u=d(k,s),k=d(s,k),u=l(u,1),k=l(k,-1);u&&u.length&&c.addClass(g,u);k&&k.length&&c.removeClass(g,k)}}n=sa(b)}var n;f.$watch(h[b],k,!0);h.$observe("class",function(a){k(f.$eval(h[b]))});"ngClass"!==b&&f.$watch("$index",function(c,d){var g=c&1;if(g!==(d&1)){var k=e(f.$eval(h[b]));g===a?(g=l(k,1),h.$addClass(g)):(g=l(k,-1),h.$removeClass(g))}})}}}]}function sd(b){function a(a,b){b&&!f[a]?(k.addCl [...]
+f[a]=!0):!b&&f[a]&&(k.removeClass(e,a),f[a]=!1)}function c(b,c){b=b?"-"+vc(b,"-"):"";a(lb+b,!0===c);a(vd+b,!1===c)}var d=b.ctrl,e=b.$element,f={},g=b.set,h=b.unset,l=b.parentForm,k=b.$animate;f[vd]=!(f[lb]=e.hasClass(lb));d.$setValidity=function(b,e,f){e===t?(d.$pending||(d.$pending={}),g(d.$pending,b,f)):(d.$pending&&h(d.$pending,b,f),wd(d.$pending)&&(d.$pending=t));Wa(e)?e?(h(d.$error,b,f),g(d.$$success,b,f)):(g(d.$error,b,f),h(d.$$success,b,f)):(h(d.$error,b,f),h(d.$$success,b,f));d.$ [...]
+!0),d.$valid=d.$invalid=t,c("",null)):(a(xd,!1),d.$valid=wd(d.$error),d.$invalid=!d.$valid,c("",d.$valid));e=d.$pending&&d.$pending[b]?t:d.$error[b]?!1:d.$$success[b]?!0:null;c(b,e);l.$setValidity(b,e,d)}}function wd(b){if(b)for(var a in b)return!1;return!0}var Of=/^\/(.+)\/([a-z]*)$/,z=function(b){return C(b)?b.toLowerCase():b},tc=Object.prototype.hasOwnProperty,ub=function(b){return C(b)?b.toUpperCase():b},Qa,A,ta,Za=[].slice,qf=[].splice,Pf=[].push,Ca=Object.prototype.toString,Ja=R("n [...]
+(Q.angular={}),cb,ob=0;Qa=W.documentMode;E.$inject=[];ra.$inject=[];var H=Array.isArray,N=function(b){return C(b)?b.trim():b},gd=function(b){return b.replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08")},bb=function(){if(y(bb.isActive_))return bb.isActive_;var b=!(!W.querySelector("[ng-csp]")&&!W.querySelector("[data-ng-csp]"));if(!b)try{new Function("")}catch(a){b=!0}return bb.isActive_=b},rb=["ng-","data-ng-","ng:","x-ng-"],Md=/[A-Z]/g,wc=!1,Qb,qa=1,pb=3,Qd={full:"1 [...]
+minor:3,dot:15,codeName:"locality-filtration"};T.expando="ng339";var zb=T.cache={},hf=1;T._data=function(b){return this.cache[b[this.expando]]||{}};var cf=/([\:\-\_]+(.))/g,df=/^moz([A-Z])/,Qf={mouseleave:"mouseout",mouseenter:"mouseover"},Tb=R("jqLite"),gf=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,Sb=/<|&#?\w+;/,ef=/<([\w:]+)/,ff=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja={option:[1,'<select multiple="multiple">',"</select>"],thead:[1,"<table>","</table>"],col:[2,"< [...]
+"</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ja.optgroup=ja.option;ja.tbody=ja.tfoot=ja.colgroup=ja.caption=ja.thead;ja.th=ja.td;var Ka=T.prototype={ready:function(b){function a(){c||(c=!0,b())}var c=!1;"complete"===W.readyState?setTimeout(a):(this.on("DOMContentLoaded",a),T(Q).on("load",a))},toString:function(){var b=[];r(this,function(a){b.push(""+a)});return"["+b.join(", ")+"]"},eq:function(b) [...]
+b?A(this[b]):A(this[this.length+b])},length:0,push:Pf,sort:[].sort,splice:[].splice},Eb={};r("multiple selected checked disabled readOnly required open".split(" "),function(b){Eb[z(b)]=b});var Oc={};r("input select option textarea button form details".split(" "),function(b){Oc[b]=!0});var Pc={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern"};r({data:Vb,removeData:xb},function(b,a){T[a]=b});r({data:Vb,inheritedData:Db,scope:function(b){return A.d [...]
+Db(b.parentNode||b,["$isolateScope","$scope"])},isolateScope:function(b){return A.data(b,"$isolateScope")||A.data(b,"$isolateScopeNoTemplate")},controller:Kc,injector:function(b){return Db(b,"$injector")},removeAttr:function(b,a){b.removeAttribute(a)},hasClass:Ab,css:function(b,a,c){a=db(a);if(y(c))b.style[a]=c;else return b.style[a]},attr:function(b,a,c){var d=z(a);if(Eb[d])if(y(c))c?(b[a]=!0,b.setAttribute(a,d)):(b[a]=!1,b.removeAttribute(d));else return b[a]||(b.attributes.getNamedIte [...]
+d:t;else if(y(c))b.setAttribute(a,c);else if(b.getAttribute)return b=b.getAttribute(a,2),null===b?t:b},prop:function(b,a,c){if(y(c))b[a]=c;else return b[a]},text:function(){function b(a,b){if(x(b)){var d=a.nodeType;return d===qa||d===pb?a.textContent:""}a.textContent=b}b.$dv="";return b}(),val:function(b,a){if(x(a)){if(b.multiple&&"select"===va(b)){var c=[];r(b.options,function(a){a.selected&&c.push(a.value||a.text)});return 0===c.length?null:c}return b.value}b.value=a},html:function(b,a [...]
+wb(b,!0);b.innerHTML=a},empty:Lc},function(b,a){T.prototype[a]=function(a,d){var e,f,g=this.length;if(b!==Lc&&(2==b.length&&b!==Ab&&b!==Kc?a:d)===t){if(J(a)){for(e=0;e<g;e++)if(b===Vb)b(this[e],a);else for(f in a)b(this[e],f,a[f]);return this}e=b.$dv;g=e===t?Math.min(g,1):g;for(f=0;f<g;f++){var h=b(this[f],a,d);e=e?e+h:h}return e}for(e=0;e<g;e++)b(this[e],a,d);return this}});r({removeData:xb,on:function a(c,d,e,f){if(y(f))throw Tb("onargs");if(Gc(c)){var g=yb(c,!0);f=g.events;var h=g.han [...]
+g.handle=lf(c,f));for(var g=0<=d.indexOf(" ")?d.split(" "):[d],l=g.length;l--;){d=g[l];var k=f[d];k||(f[d]=[],"mouseenter"===d||"mouseleave"===d?a(c,Qf[d],function(a){var c=a.relatedTarget;c&&(c===this||this.contains(c))||h(a,d)}):"$destroy"!==d&&c.addEventListener(d,h,!1),k=f[d]);k.push(e)}}},off:Jc,one:function(a,c,d){a=A(a);a.on(c,function f(){a.off(c,d);a.off(c,f)});a.on(c,d)},replaceWith:function(a,c){var d,e=a.parentNode;wb(a);r(new T(c),function(c){d?e.insertBefore(c,d.nextSibling [...]
+a);d=c})},children:function(a){var c=[];r(a.childNodes,function(a){a.nodeType===qa&&c.push(a)});return c},contents:function(a){return a.contentDocument||a.childNodes||[]},append:function(a,c){var d=a.nodeType;if(d===qa||11===d){c=new T(c);for(var d=0,e=c.length;d<e;d++)a.appendChild(c[d])}},prepend:function(a,c){if(a.nodeType===qa){var d=a.firstChild;r(new T(c),function(c){a.insertBefore(c,d)})}},wrap:function(a,c){c=A(c).eq(0).clone()[0];var d=a.parentNode;d&&d.replaceChild(c,a);c.appen [...]
+remove:Mc,detach:function(a){Mc(a,!0)},after:function(a,c){var d=a,e=a.parentNode;c=new T(c);for(var f=0,g=c.length;f<g;f++){var h=c[f];e.insertBefore(h,d.nextSibling);d=h}},addClass:Cb,removeClass:Bb,toggleClass:function(a,c,d){c&&r(c.split(" "),function(c){var f=d;x(f)&&(f=!Ab(a,c));(f?Cb:Bb)(a,c)})},parent:function(a){return(a=a.parentNode)&&11!==a.nodeType?a:null},next:function(a){return a.nextElementSibling},find:function(a,c){return a.getElementsByTagName?a.getElementsByTagName(c): [...]
+triggerHandler:function(a,c,d){var e,f,g=c.type||c,h=yb(a);if(h=(h=h&&h.events)&&h[g])e={preventDefault:function(){this.defaultPrevented=!0},isDefaultPrevented:function(){return!0===this.defaultPrevented},stopImmediatePropagation:function(){this.immediatePropagationStopped=!0},isImmediatePropagationStopped:function(){return!0===this.immediatePropagationStopped},stopPropagation:E,type:g,target:a},c.type&&(e=w(e,c)),c=sa(h),f=d?[e].concat(d):[e],r(c,function(c){e.isImmediatePropagationStop [...]
+f)})}},function(a,c){T.prototype[c]=function(c,e,f){for(var g,h=0,l=this.length;h<l;h++)x(g)?(g=a(this[h],c,e,f),y(g)&&(g=A(g))):Ic(g,a(this[h],c,e,f));return y(g)?g:this};T.prototype.bind=T.prototype.on;T.prototype.unbind=T.prototype.off});eb.prototype={put:function(a,c){this[Ma(a,this.nextUid)]=c},get:function(a){return this[Ma(a,this.nextUid)]},remove:function(a){var c=this[a=Ma(a,this.nextUid)];delete this[a];return c}};var Rc=/^function\s*[^\(]*\(\s*([^\)]*)\)/m,Rf=/,/,Sf=/^\s*(_?)( [...]
+Qc=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Fa=R("$injector");ab.$$annotate=function(a,c,d){var e;if("function"===typeof a){if(!(e=a.$inject)){e=[];if(a.length){if(c)throw C(d)&&d||(d=a.name||mf(a)),Fa("strictdi",d);c=a.toString().replace(Qc,"");c=c.match(Rc);r(c[1].split(Rf),function(a){a.replace(Sf,function(a,c,d){e.push(d)})})}a.$inject=e}}else H(a)?(c=a.length-1,sb(a[c],"fn"),e=a.slice(0,c)):sb(a,"fn",!0);return e};var Tf=R("$animate"),Ce=["$provide",function(a){this.$$selectors={};this.re [...]
+d){var e=c+"-animation";if(c&&"."!=c.charAt(0))throw Tf("notcsel",c);this.$$selectors[c.substr(1)]=e;a.factory(e,d)};this.classNameFilter=function(a){1===arguments.length&&(this.$$classNameFilter=a instanceof RegExp?a:null);return this.$$classNameFilter};this.$get=["$$q","$$asyncCallback","$rootScope",function(a,d,e){function f(d){var f,g=a.defer();g.promise.$$cancelFn=function(){f&&f()};e.$$postDigest(function(){f=d(function(){g.resolve()})});return g.promise}function g(a,c){var d=[],e= [...]
+r((a.attr("class")||"").split(/\s+/),function(a){f[a]=!0});r(c,function(a,c){var g=f[c];!1===a&&g?e.push(c):!0!==a||g||d.push(c)});return 0<d.length+e.length&&[d.length?d:null,e.length?e:null]}function h(a,c,d){for(var e=0,f=c.length;e<f;++e)a[c[e]]=d}function l(){n||(n=a.defer(),d(function(){n.resolve();n=null}));return n.promise}function k(a,c){if(ca.isObject(c)){var d=w(c.from||{},c.to||{});a.css(d)}}var n;return{animate:function(a,c,d){k(a,{from:c,to:d});return l()},enter:function(a, [...]
+e);d?d.after(a):c.prepend(a);return l()},leave:function(a,c){k(a,c);a.remove();return l()},move:function(a,c,d,e){return this.enter(a,c,d,e)},addClass:function(a,c,d){return this.setClass(a,c,[],d)},$$addClassImmediately:function(a,c,d){a=A(a);c=C(c)?c:H(c)?c.join(" "):"";r(a,function(a){Cb(a,c)});k(a,d);return l()},removeClass:function(a,c,d){return this.setClass(a,[],c,d)},$$removeClassImmediately:function(a,c,d){a=A(a);c=C(c)?c:H(c)?c.join(" "):"";r(a,function(a){Bb(a,c)});k(a,d);retu [...]
+c,d,e){var k=this,l=!1;a=A(a);var m=a.data("$$animateClasses");m?e&&m.options&&(m.options=ca.extend(m.options||{},e)):(m={classes:{},options:e},l=!0);e=m.classes;c=H(c)?c:c.split(" ");d=H(d)?d:d.split(" ");h(e,c,!0);h(e,d,!1);l&&(m.promise=f(function(c){var d=a.data("$$animateClasses");a.removeData("$$animateClasses");if(d){var e=g(a,d.classes);e&&k.$$setClassImmediately(a,e[0],e[1],d.options)}c()}),a.data("$$animateClasses",m));return m.promise},$$setClassImmediately:function(a,c,d,e){c [...]
+c);d&&this.$$removeClassImmediately(a,d);k(a,e);return l()},enabled:E,cancel:E}}]}],la=R("$compile");yc.$inject=["$provide","$$sanitizeUriProvider"];var Sc=/^((?:x|data)[\:\-_])/i,rf=R("$controller"),Wc="application/json",$b={"Content-Type":Wc+";charset=utf-8"},tf=/^\[|^\{(?!\{)/,uf={"[":/]$/,"{":/}$/},sf=/^\)\]\}',?\n/,ac=R("$interpolate"),Uf=/^([^\?#]*)(\?([^#]*))?(#(.*))?$/,xf={http:80,https:443,ftp:21},Gb=R("$location"),Vf={$$html5:!1,$$replace:!1,absUrl:Hb("$$absUrl"),url:function(a [...]
+var c=Uf.exec(a);(c[1]||""===a)&&this.path(decodeURIComponent(c[1]));(c[2]||c[1]||""===a)&&this.search(c[3]||"");this.hash(c[5]||"");return this},protocol:Hb("$$protocol"),host:Hb("$$host"),port:Hb("$$port"),path:dd("$$path",function(a){a=null!==a?a.toString():"";return"/"==a.charAt(0)?a:"/"+a}),search:function(a,c){switch(arguments.length){case 0:return this.$$search;case 1:if(C(a)||Y(a))a=a.toString(),this.$$search=sc(a);else if(J(a))a=Da(a,{}),r(a,function(c,e){null==c&&delete a[e]}), [...]
+a;else throw Gb("isrcharg");break;default:x(c)||null===c?delete this.$$search[a]:this.$$search[a]=c}this.$$compose();return this},hash:dd("$$hash",function(a){return null!==a?a.toString():""}),replace:function(){this.$$replace=!0;return this}};r([cd,ec,dc],function(a){a.prototype=Object.create(Vf);a.prototype.state=function(c){if(!arguments.length)return this.$$state;if(a!==dc||!this.$$html5)throw Gb("nostate");this.$$state=x(c)?null:c;return this}});var na=R("$parse"),Wf=Function.protot [...]
+Xf=Function.prototype.apply,Yf=Function.prototype.bind,mb=ia();r({"null":function(){return null},"true":function(){return!0},"false":function(){return!1},undefined:function(){}},function(a,c){a.constant=a.literal=a.sharedGetter=!0;mb[c]=a});mb["this"]=function(a){return a};mb["this"].sharedGetter=!0;var nb=w(ia(),{"+":function(a,c,d,e){d=d(a,c);e=e(a,c);return y(d)?y(e)?d+e:d:y(e)?e:t},"-":function(a,c,d,e){d=d(a,c);e=e(a,c);return(y(d)?d:0)-(y(e)?e:0)},"*":function(a,c,d,e){return d(a,c [...]
+"/":function(a,c,d,e){return d(a,c)/e(a,c)},"%":function(a,c,d,e){return d(a,c)%e(a,c)},"===":function(a,c,d,e){return d(a,c)===e(a,c)},"!==":function(a,c,d,e){return d(a,c)!==e(a,c)},"==":function(a,c,d,e){return d(a,c)==e(a,c)},"!=":function(a,c,d,e){return d(a,c)!=e(a,c)},"<":function(a,c,d,e){return d(a,c)<e(a,c)},">":function(a,c,d,e){return d(a,c)>e(a,c)},"<=":function(a,c,d,e){return d(a,c)<=e(a,c)},">=":function(a,c,d,e){return d(a,c)>=e(a,c)},"&&":function(a,c,d,e){return d(a,c) [...]
+"||":function(a,c,d,e){return d(a,c)||e(a,c)},"!":function(a,c,d){return!d(a,c)},"=":!0,"|":!0}),Zf={n:"\n",f:"\f",r:"\r",t:"\t",v:"\v","'":"'",'"':'"'},hc=function(a){this.options=a};hc.prototype={constructor:hc,lex:function(a){this.text=a;this.index=0;for(this.tokens=[];this.index<this.text.length;)if(a=this.text.charAt(this.index),'"'===a||"'"===a)this.readString(a);else if(this.isNumber(a)||"."===a&&this.isNumber(this.peek()))this.readNumber();else if(this.isIdent(a))this.readIdent() [...]
+"(){}[].,;:?"))this.tokens.push({index:this.index,text:a}),this.index++;else if(this.isWhitespace(a))this.index++;else{var c=a+this.peek(),d=c+this.peek(2),e=nb[c],f=nb[d];nb[a]||e||f?(a=f?d:e?c:a,this.tokens.push({index:this.index,text:a,operator:!0}),this.index+=a.length):this.throwError("Unexpected next character ",this.index,this.index+1)}return this.tokens},is:function(a,c){return-1!==c.indexOf(a)},peek:function(a){a=a||1;return this.index+a<this.text.length?this.text.charAt(this.in [...]
+isNumber:function(a){return"0"<=a&&"9">=a&&"string"===typeof a},isWhitespace:function(a){return" "===a||"\r"===a||"\t"===a||"\n"===a||"\v"===a||"\u00a0"===a},isIdent:function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"_"===a||"$"===a},isExpOperator:function(a){return"-"===a||"+"===a||this.isNumber(a)},throwError:function(a,c,d){d=d||this.index;c=y(c)?"s "+c+"-"+this.index+" ["+this.text.substring(c,d)+"]":" "+d;throw na("lexerr",a,c,this.text);},readNumber:function(){for(var a="",c=this.i [...]
+this.text.length;){var d=z(this.text.charAt(this.index));if("."==d||this.isNumber(d))a+=d;else{var e=this.peek();if("e"==d&&this.isExpOperator(e))a+=d;else if(this.isExpOperator(d)&&e&&this.isNumber(e)&&"e"==a.charAt(a.length-1))a+=d;else if(!this.isExpOperator(d)||e&&this.isNumber(e)||"e"!=a.charAt(a.length-1))break;else this.throwError("Invalid exponent")}this.index++}this.tokens.push({index:c,text:a,constant:!0,value:Number(a)})},readIdent:function(){for(var a=this.index;this.index<th [...]
+this.text.charAt(this.index);if(!this.isIdent(c)&&!this.isNumber(c))break;this.index++}this.tokens.push({index:a,text:this.text.slice(a,this.index),identifier:!0})},readString:function(a){var c=this.index;this.index++;for(var d="",e=a,f=!1;this.index<this.text.length;){var g=this.text.charAt(this.index),e=e+g;if(f)"u"===g?(f=this.text.substring(this.index+1,this.index+5),f.match(/[\da-f]{4}/i)||this.throwError("Invalid unicode escape [\\u"+f+"]"),this.index+=4,d+=String.fromCharCode(pars [...]
+d+=Zf[g]||g,f=!1;else if("\\"===g)f=!0;else{if(g===a){this.index++;this.tokens.push({index:c,text:e,constant:!0,value:d});return}d+=g}this.index++}this.throwError("Unterminated quote",c)}};var ib=function(a,c,d){this.lexer=a;this.$filter=c;this.options=d};ib.ZERO=w(function(){return 0},{sharedGetter:!0,constant:!0});ib.prototype={constructor:ib,parse:function(a){this.text=a;this.tokens=this.lexer.lex(a);a=this.statements();0!==this.tokens.length&&this.throwError("is an unexpected token", [...]
+a.literal=!!a.literal;a.constant=!!a.constant;return a},primary:function(){var a;this.expect("(")?(a=this.filterChain(),this.consume(")")):this.expect("[")?a=this.arrayDeclaration():this.expect("{")?a=this.object():this.peek().identifier&&this.peek().text in mb?a=mb[this.consume().text]:this.peek().identifier?a=this.identifier():this.peek().constant?a=this.constant():this.throwError("not a primary expression",this.peek());for(var c,d;c=this.expect("(","[",".");)"("===c.text?(a=this.funct [...]
+d),d=null):"["===c.text?(d=a,a=this.objectIndex(a)):"."===c.text?(d=a,a=this.fieldAccess(a)):this.throwError("IMPOSSIBLE");return a},throwError:function(a,c){throw na("syntax",c.text,a,c.index+1,this.text,this.text.substring(c.index));},peekToken:function(){if(0===this.tokens.length)throw na("ueoe",this.text);return this.tokens[0]},peek:function(a,c,d,e){return this.peekAhead(0,a,c,d,e)},peekAhead:function(a,c,d,e,f){if(this.tokens.length>a){a=this.tokens[a];var g=a.text;if(g===c||g===d| [...]
+f||!(c||d||e||f))return a}return!1},expect:function(a,c,d,e){return(a=this.peek(a,c,d,e))?(this.tokens.shift(),a):!1},consume:function(a){if(0===this.tokens.length)throw na("ueoe",this.text);var c=this.expect(a);c||this.throwError("is unexpected, expecting ["+a+"]",this.peek());return c},unaryFn:function(a,c){var d=nb[a];return w(function(a,f){return d(a,f,c)},{constant:c.constant,inputs:[c]})},binaryFn:function(a,c,d,e){var f=nb[c];return w(function(c,e){return f(c,e,a,d)},{constant:a.c [...]
+d.constant,inputs:!e&&[a,d]})},identifier:function(){for(var a=this.consume().text;this.peek(".")&&this.peekAhead(1).identifier&&!this.peekAhead(2,"(");)a+=this.consume().text+this.consume().text;return zf(a,this.options,this.text)},constant:function(){var a=this.consume().value;return w(function(){return a},{constant:!0,literal:!0})},statements:function(){for(var a=[];;)if(0<this.tokens.length&&!this.peek("}",")",";","]")&&a.push(this.filterChain()),!this.expect(";"))return 1===a.length [...]
+d){for(var e,f=0,g=a.length;f<g;f++)e=a[f](c,d);return e}},filterChain:function(){for(var a=this.expression();this.expect("|");)a=this.filter(a);return a},filter:function(a){var c=this.$filter(this.consume().text),d,e;if(this.peek(":"))for(d=[],e=[];this.expect(":");)d.push(this.expression());var f=[a].concat(d||[]);return w(function(f,h){var l=a(f,h);if(e){e[0]=l;for(l=d.length;l--;)e[l+1]=d[l](f,h);return c.apply(t,e)}return c(l)},{constant:!c.$stateful&&f.every(fc),inputs:!c.$stateful [...]
+assignment:function(){var a=this.ternary(),c,d;return(d=this.expect("="))?(a.assign||this.throwError("implies assignment but ["+this.text.substring(0,d.index)+"] can not be assigned to",d),c=this.ternary(),w(function(d,f){return a.assign(d,c(d,f),f)},{inputs:[a,c]})):a},ternary:function(){var a=this.logicalOR(),c;if(this.expect("?")&&(c=this.assignment(),this.consume(":"))){var d=this.assignment();return w(function(e,f){return a(e,f)?c(e,f):d(e,f)},{constant:a.constant&&c.constant&&d.con [...]
+logicalOR:function(){for(var a=this.logicalAND(),c;c=this.expect("||");)a=this.binaryFn(a,c.text,this.logicalAND(),!0);return a},logicalAND:function(){for(var a=this.equality(),c;c=this.expect("&&");)a=this.binaryFn(a,c.text,this.equality(),!0);return a},equality:function(){for(var a=this.relational(),c;c=this.expect("==","!=","===","!==");)a=this.binaryFn(a,c.text,this.relational());return a},relational:function(){for(var a=this.additive(),c;c=this.expect("<",">","<=",">=");)a=this.bina [...]
+this.additive());return a},additive:function(){for(var a=this.multiplicative(),c;c=this.expect("+","-");)a=this.binaryFn(a,c.text,this.multiplicative());return a},multiplicative:function(){for(var a=this.unary(),c;c=this.expect("*","/","%");)a=this.binaryFn(a,c.text,this.unary());return a},unary:function(){var a;return this.expect("+")?this.primary():(a=this.expect("-"))?this.binaryFn(ib.ZERO,a.text,this.unary()):(a=this.expect("!"))?this.unaryFn(a.text,this.unary()):this.primary()},fiel [...]
+this.identifier();return w(function(d,e,f){d=f||a(d,e);return null==d?t:c(d)},{assign:function(d,e,f){var g=a(d,f);g||a.assign(d,g={},f);return c.assign(g,e)}})},objectIndex:function(a){var c=this.text,d=this.expression();this.consume("]");return w(function(e,f){var g=a(e,f),h=d(e,f);ua(h,c);return g?oa(g[h],c):t},{assign:function(e,f,g){var h=ua(d(e,g),c),l=oa(a(e,g),c);l||a.assign(e,l={},g);return l[h]=f}})},functionCall:function(a,c){var d=[];if(")"!==this.peekToken().text){do d.push( [...]
+while(this.expect(","))}this.consume(")");var e=this.text,f=d.length?[]:null;return function(g,h){var l=c?c(g,h):y(c)?t:g,k=a(g,h,l)||E;if(f)for(var n=d.length;n--;)f[n]=oa(d[n](g,h),e);oa(l,e);if(k){if(k.constructor===k)throw na("isecfn",e);if(k===Wf||k===Xf||k===Yf)throw na("isecff",e);}l=k.apply?k.apply(l,f):k(f[0],f[1],f[2],f[3],f[4]);f&&(f.length=0);return oa(l,e)}},arrayDeclaration:function(){var a=[];if("]"!==this.peekToken().text){do{if(this.peek("]"))break;a.push(this.expression [...]
+}this.consume("]");return w(function(c,d){for(var e=[],f=0,g=a.length;f<g;f++)e.push(a[f](c,d));return e},{literal:!0,constant:a.every(fc),inputs:a})},object:function(){var a=[],c=[];if("}"!==this.peekToken().text){do{if(this.peek("}"))break;var d=this.consume();d.constant?a.push(d.value):d.identifier?a.push(d.text):this.throwError("invalid key",d);this.consume(":");c.push(this.expression())}while(this.expect(","))}this.consume("}");return w(function(d,f){for(var g={},h=0,l=c.length;h<l; [...]
+c[h](d,f);return g},{literal:!0,constant:c.every(fc),inputs:c})}};var Bf=ia(),Af=ia(),Cf=Object.prototype.valueOf,Ba=R("$sce"),pa={HTML:"html",CSS:"css",URL:"url",RESOURCE_URL:"resourceUrl",JS:"js"},la=R("$compile"),$=W.createElement("a"),id=Aa(Q.location.href);Fc.$inject=["$provide"];jd.$inject=["$locale"];ld.$inject=["$locale"];var od=".",Mf={yyyy:U("FullYear",4),yy:U("FullYear",2,0,!0),y:U("FullYear",1),MMMM:Jb("Month"),MMM:Jb("Month",!0),MM:U("Month",2,1),M:U("Month",1,1),dd:U("Date" [...]
+1),HH:U("Hours",2),H:U("Hours",1),hh:U("Hours",2,-12),h:U("Hours",1,-12),mm:U("Minutes",2),m:U("Minutes",1),ss:U("Seconds",2),s:U("Seconds",1),sss:U("Milliseconds",3),EEEE:Jb("Day"),EEE:Jb("Day",!0),a:function(a,c){return 12>a.getHours()?c.AMPMS[0]:c.AMPMS[1]},Z:function(a){a=-1*a.getTimezoneOffset();return a=(0<=a?"+":"")+(Ib(Math[0<a?"floor":"ceil"](a/60),2)+Ib(Math.abs(a%60),2))},ww:qd(2),w:qd(1),G:ic,GG:ic,GGG:ic,GGGG:function(a,c){return 0>=a.getFullYear()?c.ERANAMES[0]:c.ERANAMES[1 [...]
+Kf=/^\-?\d+$/;kd.$inject=["$locale"];var Hf=ea(z),If=ea(ub);md.$inject=["$parse"];var Td=ea({restrict:"E",compile:function(a,c){if(!c.href&&!c.xlinkHref&&!c.name)return function(a,c){if("a"===c[0].nodeName.toLowerCase()){var f="[object SVGAnimatedString]"===Ca.call(c.prop("href"))?"xlink:href":"href";c.on("click",function(a){c.attr(f)||a.preventDefault()})}}}}),vb={};r(Eb,function(a,c){if("multiple"!=a){var d=xa("ng-"+c);vb[d]=function(){return{restrict:"A",priority:100,link:function(a,f [...]
+function(a){g.$set(c,!!a)})}}}}});r(Pc,function(a,c){vb[c]=function(){return{priority:100,link:function(a,e,f){if("ngPattern"===c&&"/"==f.ngPattern.charAt(0)&&(e=f.ngPattern.match(Of))){f.$set("ngPattern",new RegExp(e[1],e[2]));return}a.$watch(f[c],function(a){f.$set(c,a)})}}}});r(["src","srcset","href"],function(a){var c=xa("ng-"+a);vb[c]=function(){return{priority:99,link:function(d,e,f){var g=a,h=a;"href"===a&&"[object SVGAnimatedString]"===Ca.call(e.prop("href"))&&(h="xlinkHref",f.$a [...]
+g=null);f.$observe(c,function(c){c?(f.$set(h,c),Qa&&g&&e.prop(g,f[h])):"href"===a&&f.$set(h,null)})}}}});var Kb={$addControl:E,$$renameControl:function(a,c){a.$name=c},$removeControl:E,$setValidity:E,$setDirty:E,$setPristine:E,$setSubmitted:E};rd.$inject=["$element","$attrs","$scope","$animate","$interpolate"];var yd=function(a){return["$timeout",function(c){return{name:"form",restrict:a?"EAC":"E",controller:rd,compile:function(d,e){d.addClass(Ra).addClass(lb);var f=e.name?"name":a&&e.ng [...]
+!1;return{pre:function(a,d,e,k){if(!("action"in e)){var n=function(c){a.$apply(function(){k.$commitViewValue();k.$setSubmitted()});c.preventDefault()};d[0].addEventListener("submit",n,!1);d.on("$destroy",function(){c(function(){d[0].removeEventListener("submit",n,!1)},0,!1)})}var p=k.$$parentForm;f&&(hb(a,null,k.$name,k,k.$name),e.$observe(f,function(c){k.$name!==c&&(hb(a,null,k.$name,t,k.$name),p.$$renameControl(k,c),hb(a,null,k.$name,k,k.$name))}));d.on("$destroy",function(){p.$removeC [...]
+f&&hb(a,null,e[f],t,k.$name);w(k,Kb)})}}}}}]},Ud=yd(),ge=yd(!0),Nf=/\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z)/,$f=/^(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/,ag=/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,bg=/^\s*(\-|\+)?(\d+|(\d*(\.\d*)))\s*$/,zd=/^(\d{4})-(\d{2})-(\d{2})$/,Ad=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,lc=/^(\d{4})-W(\d\d) [...]
+Cd=/^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/,Dd={text:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);jc(e)},date:kb("date",zd,Mb(zd,["yyyy","MM","dd"]),"yyyy-MM-dd"),"datetime-local":kb("datetimelocal",Ad,Mb(Ad,"yyyy MM dd HH mm ss sss".split(" ")),"yyyy-MM-ddTHH:mm:ss.sss"),time:kb("time",Cd,Mb(Cd,["HH","mm","ss","sss"]),"HH:mm:ss.sss"),week:kb("week",lc,function(a,c){if(ga(a))return a;if(C(a)){lc.lastIndex=0;var d=lc.exec(a);if(d){var e=+d[1],f=+d[2],g=d=0,h=0,l=0,k=pd(e),f=7*(f-1);c&&(d=c.getH [...]
+c.getMinutes(),h=c.getSeconds(),l=c.getMilliseconds());return new Date(e,0,k.getDate()+f,d,g,h,l)}}return NaN},"yyyy-Www"),month:kb("month",Bd,Mb(Bd,["yyyy","MM"]),"yyyy-MM"),number:function(a,c,d,e,f,g){td(a,c,d,e);jb(a,c,d,e,f,g);e.$$parserName="number";e.$parsers.push(function(a){return e.$isEmpty(a)?null:bg.test(a)?parseFloat(a):t});e.$formatters.push(function(a){if(!e.$isEmpty(a)){if(!Y(a))throw Nb("numfmt",a);a=a.toString()}return a});if(y(d.min)||d.ngMin){var h;e.$validators.min=f [...]
+x(h)||a>=h};d.$observe("min",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));h=Y(a)&&!isNaN(a)?a:t;e.$validate()})}if(y(d.max)||d.ngMax){var l;e.$validators.max=function(a){return e.$isEmpty(a)||x(l)||a<=l};d.$observe("max",function(a){y(a)&&!Y(a)&&(a=parseFloat(a,10));l=Y(a)&&!isNaN(a)?a:t;e.$validate()})}},url:function(a,c,d,e,f,g){jb(a,c,d,e,f,g);jc(e);e.$$parserName="url";e.$validators.url=function(a,c){var d=a||c;return e.$isEmpty(d)||$f.test(d)}},email:function(a,c,d,e,f,g){jb(a,c,d, [...]
+e.$$parserName="email";e.$validators.email=function(a,c){var d=a||c;return e.$isEmpty(d)||ag.test(d)}},radio:function(a,c,d,e){x(d.name)&&c.attr("name",++ob);c.on("click",function(a){c[0].checked&&e.$setViewValue(d.value,a&&a.type)});e.$render=function(){c[0].checked=d.value==e.$viewValue};d.$observe("value",e.$render)},checkbox:function(a,c,d,e,f,g,h,l){var k=ud(l,a,"ngTrueValue",d.ngTrueValue,!0),n=ud(l,a,"ngFalseValue",d.ngFalseValue,!1);c.on("click",function(a){e.$setViewValue(c[0].c [...]
+a.type)});e.$render=function(){c[0].checked=e.$viewValue};e.$isEmpty=function(a){return!1===a};e.$formatters.push(function(a){return ha(a,k)});e.$parsers.push(function(a){return a?k:n})},hidden:E,button:E,submit:E,reset:E,file:E},zc=["$browser","$sniffer","$filter","$parse",function(a,c,d,e){return{restrict:"E",require:["?ngModel"],link:{pre:function(f,g,h,l){l[0]&&(Dd[z(h.type)]||Dd.text)(f,g,h,l[0],c,a,d,e)}}}}],cg=/^(true|false|\d+)$/,ye=function(){return{restrict:"A",priority:100,com [...]
+c){return cg.test(c.ngValue)?function(a,c,f){f.$set("value",a.$eval(f.ngValue))}:function(a,c,f){a.$watch(f.ngValue,function(a){f.$set("value",a)})}}}},Zd=["$compile",function(a){return{restrict:"AC",compile:function(c){a.$$addBindingClass(c);return function(c,e,f){a.$$addBindingInfo(e,f.ngBind);e=e[0];c.$watch(f.ngBind,function(a){e.textContent=a===t?"":a})}}}}],ae=["$interpolate","$compile",function(a,c){return{compile:function(d){c.$$addBindingClass(d);return function(d,f,g){d=a(f.att [...]
+c.$$addBindingInfo(f,d.expressions);f=f[0];g.$observe("ngBindTemplate",function(a){f.textContent=a===t?"":a})}}}}],$d=["$sce","$parse","$compile",function(a,c,d){return{restrict:"A",compile:function(e,f){var g=c(f.ngBindHtml),h=c(f.ngBindHtml,function(a){return(a||"").toString()});d.$$addBindingClass(e);return function(c,e,f){d.$$addBindingInfo(e,f.ngBindHtml);c.$watch(h,function(){e.html(a.getTrustedHtml(g(c))||"")})}}}}],xe=ea({restrict:"A",require:"ngModel",link:function(a,c,d,e){e.$v [...]
+be=kc("",!0),de=kc("Odd",0),ce=kc("Even",1),ee=Ia({compile:function(a,c){c.$set("ngCloak",t);a.removeClass("ng-cloak")}}),fe=[function(){return{restrict:"A",scope:!0,controller:"@",priority:500}}],Ec={},dg={blur:!0,focus:!0};r("click dblclick mousedown mouseup mouseover mouseout mousemove mouseenter mouseleave keydown keyup keypress submit focus blur copy cut paste".split(" "),function(a){var c=xa("ng-"+a);Ec[c]=["$parse","$rootScope",function(d,e){return{restrict:"A",compile:function(f, [...]
+d(g[c],null,!0);return function(c,d){d.on(a,function(d){var f=function(){h(c,{$event:d})};dg[a]&&e.$$phase?c.$evalAsync(f):c.$apply(f)})}}}}]});var ie=["$animate",function(a){return{multiElement:!0,transclude:"element",priority:600,terminal:!0,restrict:"A",$$tlb:!0,link:function(c,d,e,f,g){var h,l,k;c.$watch(e.ngIf,function(c){c?l||g(function(c,f){l=f;c[c.length++]=W.createComment(" end ngIf: "+e.ngIf+" ");h={clone:c};a.enter(c,d.parent(),d)}):(k&&(k.remove(),k=null),l&&(l.$destroy(),l=n [...]
+tb(h.clone),a.leave(k).then(function(){k=null}),h=null))})}}}],je=["$templateRequest","$anchorScroll","$animate","$sce",function(a,c,d,e){return{restrict:"ECA",priority:400,terminal:!0,transclude:"element",controller:ca.noop,compile:function(f,g){var h=g.ngInclude||g.src,l=g.onload||"",k=g.autoscroll;return function(f,g,q,r,s){var t=0,v,m,F,w=function(){m&&(m.remove(),m=null);v&&(v.$destroy(),v=null);F&&(d.leave(F).then(function(){m=null}),m=F,F=null)};f.$watch(e.parseAsResourceUrl(h),fu [...]
+function(){!y(k)||k&&!f.$eval(k)||c()},m=++t;e?(a(e,!0).then(function(a){if(m===t){var c=f.$new();r.template=a;a=s(c,function(a){w();d.enter(a,null,g).then(h)});v=c;F=a;v.$emit("$includeContentLoaded",e);f.$eval(l)}},function(){m===t&&(w(),f.$emit("$includeContentError",e))}),f.$emit("$includeContentRequested",e)):(w(),r.template=null)})}}}}],Ae=["$compile",function(a){return{restrict:"ECA",priority:-400,require:"ngInclude",link:function(c,d,e,f){/SVG/.test(d[0].toString())?(d.empty(),a( [...]
+W).childNodes)(c,function(a){d.append(a)},{futureParentElement:d})):(d.html(f.template),a(d.contents())(c))}}}],ke=Ia({priority:450,compile:function(){return{pre:function(a,c,d){a.$eval(d.ngInit)}}}}),we=function(){return{restrict:"A",priority:100,require:"ngModel",link:function(a,c,d,e){var f=c.attr(d.$attr.ngList)||", ",g="false"!==d.ngTrim,h=g?N(f):f;e.$parsers.push(function(a){if(!x(a)){var c=[];a&&r(a.split(h),function(a){a&&c.push(g?N(a):a)});return c}});e.$formatters.push(function [...]
+a.join(f):t});e.$isEmpty=function(a){return!a||!a.length}}}},lb="ng-valid",vd="ng-invalid",Ra="ng-pristine",Lb="ng-dirty",xd="ng-pending",Nb=new R("ngModel"),eg=["$scope","$exceptionHandler","$attrs","$element","$parse","$animate","$timeout","$rootScope","$q","$interpolate",function(a,c,d,e,f,g,h,l,k,n){this.$modelValue=this.$viewValue=Number.NaN;this.$$rawModelValue=t;this.$validators={};this.$asyncValidators={};this.$parsers=[];this.$formatters=[];this.$viewChangeListeners=[];this.$unt [...]
+this.$touched=!1;this.$pristine=!0;this.$dirty=!1;this.$valid=!0;this.$invalid=!1;this.$error={};this.$$success={};this.$pending=t;this.$name=n(d.name||"",!1)(a);var p=f(d.ngModel),q=p.assign,u=p,s=q,M=null,v,m=this;this.$$setOptions=function(a){if((m.$options=a)&&a.getterSetter){var c=f(d.ngModel+"()"),g=f(d.ngModel+"($$$p)");u=function(a){var d=p(a);G(d)&&(d=c(a));return d};s=function(a,c){G(p(a))?g(a,{$$$p:m.$modelValue}):q(a,m.$modelValue)}}else if(!p.assign)throw Nb("nonassign",d.ng [...]
+};this.$render=E;this.$isEmpty=function(a){return x(a)||""===a||null===a||a!==a};var F=e.inheritedData("$formController")||Kb,w=0;sd({ctrl:this,$element:e,set:function(a,c){a[c]=!0},unset:function(a,c){delete a[c]},parentForm:F,$animate:g});this.$setPristine=function(){m.$dirty=!1;m.$pristine=!0;g.removeClass(e,Lb);g.addClass(e,Ra)};this.$setDirty=function(){m.$dirty=!0;m.$pristine=!1;g.removeClass(e,Ra);g.addClass(e,Lb);F.$setDirty()};this.$setUntouched=function(){m.$touched=!1;m.$untou [...]
+"ng-untouched","ng-touched")};this.$setTouched=function(){m.$touched=!0;m.$untouched=!1;g.setClass(e,"ng-touched","ng-untouched")};this.$rollbackViewValue=function(){h.cancel(M);m.$viewValue=m.$$lastCommittedViewValue;m.$render()};this.$validate=function(){if(!Y(m.$modelValue)||!isNaN(m.$modelValue)){var a=m.$$rawModelValue,c=m.$valid,d=m.$modelValue,e=m.$options&&m.$options.allowInvalid;m.$$runValidators(a,m.$$lastCommittedViewValue,function(f){e||c===f||(m.$modelValue=f?a:t,m.$modelVal [...]
+this.$$runValidators=function(a,c,d){function e(){var d=!0;r(m.$validators,function(e,f){var h=e(a,c);d=d&&h;g(f,h)});return d?!0:(r(m.$asyncValidators,function(a,c){g(c,null)}),!1)}function f(){var d=[],e=!0;r(m.$asyncValidators,function(f,h){var k=f(a,c);if(!k||!G(k.then))throw Nb("$asyncValidators",k);g(h,t);d.push(k.then(function(){g(h,!0)},function(a){e=!1;g(h,!1)}))});d.length?k.all(d).then(function(){h(e)},E):h(!0)}function g(a,c){l===w&&m.$setValidity(a,c)}function h(a){l===w&&d( [...]
+w;(function(){var a=m.$$parserName||"parse";if(v===t)g(a,null);else return v||(r(m.$validators,function(a,c){g(c,null)}),r(m.$asyncValidators,function(a,c){g(c,null)})),g(a,v),v;return!0})()?e()?f():h(!1):h(!1)};this.$commitViewValue=function(){var a=m.$viewValue;h.cancel(M);if(m.$$lastCommittedViewValue!==a||""===a&&m.$$hasNativeValidators)m.$$lastCommittedViewValue=a,m.$pristine&&this.$setDirty(),this.$$parseAndValidate()};this.$$parseAndValidate=function(){var c=m.$$lastCommittedViewV [...]
+x(c)?t:!0)for(var d=0;d<m.$parsers.length;d++)if(c=m.$parsers[d](c),x(c)){v=!1;break}Y(m.$modelValue)&&isNaN(m.$modelValue)&&(m.$modelValue=u(a));var e=m.$modelValue,f=m.$options&&m.$options.allowInvalid;m.$$rawModelValue=c;f&&(m.$modelValue=c,m.$modelValue!==e&&m.$$writeModelToScope());m.$$runValidators(c,m.$$lastCommittedViewValue,function(a){f||(m.$modelValue=a?c:t,m.$modelValue!==e&&m.$$writeModelToScope())})};this.$$writeModelToScope=function(){s(a,m.$modelValue);r(m.$viewChangeList [...]
+this.$setViewValue=function(a,c){m.$viewValue=a;m.$options&&!m.$options.updateOnDefault||m.$$debounceViewValueCommit(c)};this.$$debounceViewValueCommit=function(c){var d=0,e=m.$options;e&&y(e.debounce)&&(e=e.debounce,Y(e)?d=e:Y(e[c])?d=e[c]:Y(e["default"])&&(d=e["default"]));h.cancel(M);d?M=h(function(){m.$commitViewValue()},d):l.$$phase?m.$commitViewValue():a.$apply(function(){m.$commitViewValue()})};a.$watch(function(){var c=u(a);if(c!==m.$modelValue){m.$modelValue=m.$$rawModelValue=c; [...]
+m.$formatters,e=d.length,f=c;e--;)f=d[e](f);m.$viewValue!==f&&(m.$viewValue=m.$$lastCommittedViewValue=f,m.$render(),m.$$runValidators(c,f,E))}return c})}],ve=["$rootScope",function(a){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:eg,priority:1,compile:function(c){c.addClass(Ra).addClass("ng-untouched").addClass(lb);return{pre:function(a,c,f,g){var h=g[0],l=g[1]||Kb;h.$$setOptions(g[2]&&g[2].$options);l.$addControl(h);f.$observe("name",function(a){h.$name [...]
+a)});a.$on("$destroy",function(){l.$removeControl(h)})},post:function(c,e,f,g){var h=g[0];if(h.$options&&h.$options.updateOn)e.on(h.$options.updateOn,function(a){h.$$debounceViewValueCommit(a&&a.type)});e.on("blur",function(e){h.$touched||(a.$$phase?c.$evalAsync(h.$setTouched):c.$apply(h.$setTouched))})}}}}}],fg=/(\s+|^)default(\s+|$)/,ze=function(){return{restrict:"A",controller:["$scope","$attrs",function(a,c){var d=this;this.$options=a.$eval(c.ngModelOptions);this.$options.updateOn!== [...]
+!1,this.$options.updateOn=N(this.$options.updateOn.replace(fg,function(){d.$options.updateOnDefault=!0;return" "}))):this.$options.updateOnDefault=!0}]}},le=Ia({terminal:!0,priority:1E3}),me=["$locale","$interpolate",function(a,c){var d=/{}/g,e=/^when(Minus)?(.+)$/;return{restrict:"EA",link:function(f,g,h){function l(a){g.text(a||"")}var k=h.count,n=h.$attr.when&&g.attr(h.$attr.when),p=h.offset||0,q=f.$eval(n)||{},u={},n=c.startSymbol(),s=c.endSymbol(),t=n+k+"-"+p+s,v=ca.noop,m;r(h,funct [...]
+e.exec(c);d&&(d=(d[1]?"-":"")+z(d[2]),q[d]=g.attr(h.$attr[c]))});r(q,function(a,e){u[e]=c(a.replace(d,t))});f.$watch(k,function(c){c=parseFloat(c);var d=isNaN(c);d||c in q||(c=a.pluralCat(c-p));c===m||d&&isNaN(m)||(v(),v=f.$watch(u[c],l),m=c)})}}}],ne=["$parse","$animate",function(a,c){var d=R("ngRepeat"),e=function(a,c,d,e,k,n,p){a[d]=e;k&&(a[k]=n);a.$index=c;a.$first=0===c;a.$last=c===p-1;a.$middle=!(a.$first||a.$last);a.$odd=!(a.$even=0===(c&1))};return{restrict:"A",multiElement:!0,tr [...]
+priority:1E3,terminal:!0,$$tlb:!0,compile:function(f,g){var h=g.ngRepeat,l=W.createComment(" end ngRepeat: "+h+" "),k=h.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!k)throw d("iexp",h);var n=k[1],p=k[2],q=k[3],u=k[4],k=n.match(/^(?:(\s*[\$\w]+)|\(\s*([\$\w]+)\s*,\s*([\$\w]+)\s*\))$/);if(!k)throw d("iidexp",n);var s=k[3]||k[1],y=k[2];if(q&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(q)||/^(null|undefined|this|\$index|\$first|\$middle|\$la [...]
+q);var v,m,w,x,E={$id:Ma};u?v=a(u):(w=function(a,c){return Ma(c)},x=function(a){return a});return function(a,f,g,k,n){v&&(m=function(c,d,e){y&&(E[y]=c);E[s]=d;E.$index=e;return v(a,E)});var u=ia();a.$watchCollection(p,function(g){var k,p,v=f[0],D,E=ia(),G,H,L,S,J,C,z;q&&(a[q]=g);if(Sa(g))J=g,p=m||w;else{p=m||x;J=[];for(z in g)g.hasOwnProperty(z)&&"$"!=z.charAt(0)&&J.push(z);J.sort()}G=J.length;z=Array(G);for(k=0;k<G;k++)if(H=g===J?k:J[k],L=g[H],S=p(H,L,k),u[S])C=u[S],delete u[S],E[S]=C,z [...]
+function(a){a&&a.scope&&(u[a.id]=a)}),d("dupes",h,S,L);z[k]={id:S,scope:t,clone:t};E[S]=!0}for(D in u){C=u[D];S=tb(C.clone);c.leave(S);if(S[0].parentNode)for(k=0,p=S.length;k<p;k++)S[k].$$NG_REMOVED=!0;C.scope.$destroy()}for(k=0;k<G;k++)if(H=g===J?k:J[k],L=g[H],C=z[k],C.scope){D=v;do D=D.nextSibling;while(D&&D.$$NG_REMOVED);C.clone[0]!=D&&c.move(tb(C.clone),null,A(v));v=C.clone[C.clone.length-1];e(C.scope,k,s,L,y,H,G)}else n(function(a,d){C.scope=d;var f=l.cloneNode(!1);a[a.length++]=f;c [...]
+null,A(v));v=f;C.clone=a;E[C.id]=C;e(C.scope,k,s,L,y,H,G)});u=E})}}}}],oe=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngShow,function(c){a[c?"removeClass":"addClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],he=["$animate",function(a){return{restrict:"A",multiElement:!0,link:function(c,d,e){c.$watch(e.ngHide,function(c){a[c?"addClass":"removeClass"](d,"ng-hide",{tempClasses:"ng-hide-animate"})})}}}],pe=Ia(function(a,c,d){a.$watchC [...]
+function(a,d){d&&a!==d&&r(d,function(a,d){c.css(d,"")});a&&c.css(a)})}),qe=["$animate",function(a){return{restrict:"EA",require:"ngSwitch",controller:["$scope",function(){this.cases={}}],link:function(c,d,e,f){var g=[],h=[],l=[],k=[],n=function(a,c){return function(){a.splice(c,1)}};c.$watch(e.ngSwitch||e.on,function(c){var d,e;d=0;for(e=l.length;d<e;++d)a.cancel(l[d]);d=l.length=0;for(e=k.length;d<e;++d){var s=tb(h[d].clone);k[d].$destroy();(l[d]=a.leave(s)).then(n(l,d))}h.length=0;k.le [...]
+f.cases["!"+c]||f.cases["?"])&&r(g,function(c){c.transclude(function(d,e){k.push(e);var f=c.element;d[d.length++]=W.createComment(" end ngSwitchWhen: ");h.push({clone:d});a.enter(d,f.parent(),f)})})})}}}],re=Ia({transclude:"element",priority:1200,require:"^ngSwitch",multiElement:!0,link:function(a,c,d,e,f){e.cases["!"+d.ngSwitchWhen]=e.cases["!"+d.ngSwitchWhen]||[];e.cases["!"+d.ngSwitchWhen].push({transclude:f,element:c})}}),se=Ia({transclude:"element",priority:1200,require:"^ngSwitch", [...]
+link:function(a,c,d,e,f){e.cases["?"]=e.cases["?"]||[];e.cases["?"].push({transclude:f,element:c})}}),ue=Ia({restrict:"EAC",link:function(a,c,d,e,f){if(!f)throw R("ngTransclude")("orphan",wa(c));f(function(a){c.empty();c.append(a)})}}),Vd=["$templateCache",function(a){return{restrict:"E",terminal:!0,compile:function(c,d){"text/ng-template"==d.type&&a.put(d.id,c[0].text)}}}],gg=R("ngOptions"),te=ea({restrict:"A",terminal:!0}),Wd=["$compile","$parse",function(a,c){var d=/^\s*([\s\S]+?)(?:\ [...]
+e={$setViewValue:E};return{restrict:"E",require:["select","?ngModel"],controller:["$element","$scope","$attrs",function(a,c,d){var l=this,k={},n=e,p;l.databound=d.ngModel;l.init=function(a,c,d){n=a;p=d};l.addOption=function(c,d){La(c,'"option value"');k[c]=!0;n.$viewValue==c&&(a.val(c),p.parent()&&p.remove());d&&d[0].hasAttribute("selected")&&(d[0].selected=!0)};l.removeOption=function(a){this.hasOption(a)&&(delete k[a],n.$viewValue===a&&this.renderUnknownOption(a))};l.renderUnknownOptio [...]
+"? "+Ma(c)+" ?";p.val(c);a.prepend(p);a.val(c);p.prop("selected",!0)};l.hasOption=function(a){return k.hasOwnProperty(a)};c.$on("$destroy",function(){l.renderUnknownOption=E})}],link:function(e,g,h,l){function k(a,c,d,e){d.$render=function(){var a=d.$viewValue;e.hasOption(a)?(C.parent()&&C.remove(),c.val(a),""===a&&v.prop("selected",!0)):x(a)&&v?c.val(""):e.renderUnknownOption(a)};c.on("change",function(){a.$apply(function(){C.parent()&&C.remove();d.$setViewValue(c.val())})})}function n( [...]
+d.$render=function(){var a=new eb(d.$viewValue);r(c.find("option"),function(c){c.selected=y(a.get(c.value))})};a.$watch(function(){ha(e,d.$viewValue)||(e=sa(d.$viewValue),d.$render())});c.on("change",function(){a.$apply(function(){var a=[];r(c.find("option"),function(c){c.selected&&a.push(c.value)});d.$setViewValue(a)})})}function p(e,f,g){function h(a,c,d){T[x]=d;G&&(T[G]=c);return a(e,T)}function k(a){var c;if(u)if(I&&H(a)){c=new eb([]);for(var d=0;d<a.length;d++)c.put(h(I,null,a[d]),! [...]
+new eb(a);else I&&(a=h(I,null,a));return function(d,e){var f;f=I?I:B?B:z;return u?y(c.remove(h(f,d,e))):a===h(f,d,e)}}function l(){m||(e.$$postDigest(p),m=!0)}function n(a,c,d){a[c]=a[c]||0;a[c]+=d?1:-1}function p(){m=!1;var a={"":[]},c=[""],d,l,s,t,v;s=g.$viewValue;t=L(e)||[];var B=G?Object.keys(t).sort():t,x,A,H,z,O={};v=k(s);var N=!1,U,W;Q={};for(z=0;H=B.length,z<H;z++){x=z;if(G&&(x=B[z],"$"===x.charAt(0)))continue;A=t[x];d=h(J,x,A)||"";(l=a[d])||(l=a[d]=[],c.push(d));d=v(x,A);N=N||d; [...]
+A=y(A)?A:"";W=I?I(e,T):G?B[z]:z;I&&(Q[W]=x);l.push({id:W,label:A,selected:d})}u||(w||null===s?a[""].unshift({id:"",label:"",selected:!N}):N||a[""].unshift({id:"?",label:"",selected:!0}));x=0;for(B=c.length;x<B;x++){d=c[x];l=a[d];R.length<=x?(s={element:E.clone().attr("label",d),label:l.label},t=[s],R.push(t),f.append(s.element)):(t=R[x],s=t[0],s.label!=d&&s.element.attr("label",s.label=d));N=null;z=0;for(H=l.length;z<H;z++)d=l[z],(v=t[z+1])?(N=v.element,v.label!==d.label&&(n(O,v.label,!1 [...]
+!0),N.text(v.label=d.label),N.prop("label",v.label)),v.id!==d.id&&N.val(v.id=d.id),N[0].selected!==d.selected&&(N.prop("selected",v.selected=d.selected),Qa&&N.prop("selected",v.selected))):(""===d.id&&w?U=w:(U=F.clone()).val(d.id).prop("selected",d.selected).attr("selected",d.selected).prop("label",d.label).text(d.label),t.push(v={element:U,label:d.label,id:d.id,selected:d.selected}),n(O,d.label,!0),N?N.after(U):s.element.append(U),N=U);for(z++;t.length>z;)d=t.pop(),n(O,d.label,!1),d.ele [...]
+x;){l=R.pop();for(z=1;z<l.length;++z)n(O,l[z].label,!1);l[0].element.remove()}r(O,function(a,c){0<a?q.addOption(c):0>a&&q.removeOption(c)})}var v;if(!(v=s.match(d)))throw gg("iexp",s,wa(f));var C=c(v[2]||v[1]),x=v[4]||v[6],A=/ as /.test(v[0])&&v[1],B=A?c(A):null,G=v[5],J=c(v[3]||""),z=c(v[2]?v[1]:x),L=c(v[7]),I=v[8]?c(v[8]):null,Q={},R=[[{element:f,label:""}]],T={};w&&(a(w)(e),w.removeClass("ng-scope"),w.remove());f.empty();f.on("change",function(){e.$apply(function(){var a=L(e)||[],c;if [...]
+function(d){d=I?Q[d]:d;c.push("?"===d?t:""===d?null:h(B?B:z,d,a[d]))});else{var d=I?Q[f.val()]:f.val();c="?"===d?t:""===d?null:h(B?B:z,d,a[d])}g.$setViewValue(c);p()})});g.$render=p;e.$watchCollection(L,l);e.$watchCollection(function(){var a=L(e),c;if(a&&H(a)){c=Array(a.length);for(var d=0,f=a.length;d<f;d++)c[d]=h(C,d,a[d])}else if(a)for(d in c={},a)a.hasOwnProperty(d)&&(c[d]=h(C,d,a[d]));return c},l);u&&e.$watchCollection(function(){return g.$modelValue},l)}if(l[1]){var q=l[0];l=l[1];v [...]
+s=h.ngOptions,w=!1,v,m=!1,F=A(W.createElement("option")),E=A(W.createElement("optgroup")),C=F.clone();h=0;for(var B=g.children(),G=B.length;h<G;h++)if(""===B[h].value){v=w=B.eq(h);break}q.init(l,w,C);u&&(l.$isEmpty=function(a){return!a||0===a.length});s?p(e,g,l):u?n(e,g,l):k(e,g,l,q)}}}}],Yd=["$interpolate",function(a){var c={addOption:E,removeOption:E};return{restrict:"E",priority:100,compile:function(d,e){if(x(e.value)){var f=a(d.text(),!0);f||e.$set("value",d.text())}return function(a [...]
+d.parent(),n=k.data("$selectController")||k.parent().data("$selectController");n&&n.databound||(n=c);f?a.$watch(f,function(a,c){e.$set("value",a);c!==a&&n.removeOption(c);n.addOption(a,d)}):n.addOption(e.value,d);d.on("$destroy",function(){n.removeOption(e.value)})}}}}],Xd=ea({restrict:"E",terminal:!1}),Bc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){e&&(d.required=!0,e.$validators.required=function(a,c){return!d.required||!e.$isEmpty(c)},d.$observe("required" [...]
+Ac=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f,g=d.ngPattern||d.pattern;d.$observe("pattern",function(a){C(a)&&0<a.length&&(a=new RegExp("^"+a+"$"));if(a&&!a.test)throw R("ngPattern")("noregexp",g,a,wa(c));f=a||t;e.$validate()});e.$validators.pattern=function(a){return e.$isEmpty(a)||x(f)||f.test(a)}}}}},Dc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=-1;d.$observe("maxlength",function(a){a=aa(a);f=isNaN(a)? [...]
+e.$validators.maxlength=function(a,c){return 0>f||e.$isEmpty(c)||c.length<=f}}}}},Cc=function(){return{restrict:"A",require:"?ngModel",link:function(a,c,d,e){if(e){var f=0;d.$observe("minlength",function(a){f=aa(a)||0;e.$validate()});e.$validators.minlength=function(a,c){return e.$isEmpty(c)||c.length>=f}}}}};Q.angular.bootstrap?console.log("WARNING: Tried to load angular more than once."):(Nd(),Pd(ca),A(W).ready(function(){Jd(W,uc)}))})(window,document);!window.angular.$$csp()&&window.a [...]
+//# sourceMappingURL=angular.min.js.map
diff --git a/assets/themes/zeppelin/css/fonts/PatuaOne-Regular.ttf b/assets/themes/zeppelin/css/fonts/PatuaOne-Regular.ttf
new file mode 100644
index 000000000..60fcc2d07
Binary files /dev/null and b/assets/themes/zeppelin/css/fonts/PatuaOne-Regular.ttf differ
diff --git a/assets/themes/zeppelin/css/style.css b/assets/themes/zeppelin/css/style.css
index 2e985b7b1..07d9a3388 100644
--- a/assets/themes/zeppelin/css/style.css
+++ b/assets/themes/zeppelin/css/style.css
@@ -1,7 +1,9 @@
/* Move down content because we have a fixed navbar that is 50px tall */
-@import url(//fonts.googleapis.com/css?family=Patua+One);
-@import url(//fonts.googleapis.com/css?family=Open+Sans);
-@import url(//fonts.googleapis.com/css?family=Raleway:300,400);
+
+@font-face {
+ font-family: 'Patua One';
+ src: url('fonts/PatuaOne-Regular.ttf') format('truetype');
+}
body {
padding-top: 50px;
@@ -1649,4 +1651,4 @@ and (max-width: 631px) {
color: #FFF;
text-decoration: none;
background-color: #0479A2;
-}
\ No newline at end of file
+}
diff --git a/assets/themes/zeppelin/font-awesome.min.css b/assets/themes/zeppelin/font-awesome.min.css
new file mode 100644
index 000000000..540440ce8
--- /dev/null
+++ b/assets/themes/zeppelin/font-awesome.min.css
@@ -0,0 +1,4 @@
+/*!
+ * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
+ * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
+ */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:norma [...]
diff --git a/assets/themes/zeppelin/icon.css b/assets/themes/zeppelin/icon.css
new file mode 100644
index 000000000..1269af123
--- /dev/null
+++ b/assets/themes/zeppelin/icon.css
@@ -0,0 +1,20 @@
+@font-face {
+ font-family: 'Material Icons';
+ font-style: normal;
+ font-weight: 400;
+ src: url('../fonts/material-icons.ttf') format('truetype');
+}
+
+.material-icons {
+ font-family: 'Material Icons';
+ font-weight: normal;
+ font-style: normal;
+ font-size: 24px;
+ line-height: 1;
+ letter-spacing: normal;
+ text-transform: none;
+ display: inline-block;
+ white-space: nowrap;
+ word-wrap: normal;
+ direction: ltr;
+}
diff --git a/assets/themes/zeppelin/jquery-1.10.2.min.js b/assets/themes/zeppelin/jquery-1.10.2.min.js
new file mode 100644
index 000000000..da4170647
--- /dev/null
+++ b/assets/themes/zeppelin/jquery-1.10.2.min.js
@@ -0,0 +1,6 @@
+/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
+//@ sourceMappingURL=jquery-1.10.2.min.map
+*/
+(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/ [...]
+}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null [...]
+u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.first [...]
diff --git a/assets/themes/zeppelin/js/medium.controller.js b/assets/themes/zeppelin/js/medium.controller.js
index f2a939527..e4926f166 100644
--- a/assets/themes/zeppelin/js/medium.controller.js
+++ b/assets/themes/zeppelin/js/medium.controller.js
@@ -1,7 +1,9 @@
angular.module("app").controller("MediumCtrl", function($scope, $window, $sce) {
- $scope.mediumPost = mediumPost
+ $scope.mediumPost = $window.mediumPost || []
- var postInfo = $scope.mediumPost[0].items
+ var postInfo = $scope.mediumPost.length && $scope.mediumPost[0].items
+ ? $scope.mediumPost[0].items
+ : []
var postInfoArray = []
var init = function () {
@@ -44,4 +46,4 @@ angular.module("app").controller("MediumCtrl", function($scope, $window, $sce) {
}
init()
-})
\ No newline at end of file
+})
diff --git a/assets/themes/zeppelin/ui-bootstrap-tpls-2.5.0.js b/assets/themes/zeppelin/ui-bootstrap-tpls-2.5.0.js
new file mode 100644
index 000000000..dff5c546f
--- /dev/null
+++ b/assets/themes/zeppelin/ui-bootstrap-tpls-2.5.0.js
@@ -0,0 +1,7776 @@
+/*
+ * angular-ui-bootstrap
+ * http://angular-ui.github.io/bootstrap/
+
+ * Version: 2.5.0 - 2017-01-28
+ * License: MIT
+ */angular.module("ui.bootstrap", ["ui.bootstrap.tpls", "ui.bootstrap.collapse","ui.bootstrap.tabindex","ui.bootstrap.accordion","ui.bootstrap.alert","ui.bootstrap.buttons","ui.bootstrap.carousel","ui.bootstrap.dateparser","ui.bootstrap.isClass","ui.bootstrap.datepicker","ui.bootstrap.position","ui.bootstrap.datepickerPopup","ui.bootstrap.debounce","ui.bootstrap.multiMap","ui.bootstrap.dropdown","ui.bootstrap.stackedMap","ui.bootstrap.modal","ui.bootstrap.paging","ui.bootstrap.pager","ui [...]
+angular.module("ui.bootstrap.tpls", ["uib/template/accordion/accordion-group.html","uib/template/accordion/accordion.html","uib/template/alert/alert.html","uib/template/carousel/carousel.html","uib/template/carousel/slide.html","uib/template/datepicker/datepicker.html","uib/template/datepicker/day.html","uib/template/datepicker/month.html","uib/template/datepicker/year.html","uib/template/datepickerPopup/popup.html","uib/template/modal/window.html","uib/template/pager/pager.html","uib/te [...]
+angular.module('ui.bootstrap.collapse', [])
+
+ .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {
+ var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;
+ return {
+ link: function(scope, element, attrs) {
+ var expandingExpr = $parse(attrs.expanding),
+ expandedExpr = $parse(attrs.expanded),
+ collapsingExpr = $parse(attrs.collapsing),
+ collapsedExpr = $parse(attrs.collapsed),
+ horizontal = false,
+ css = {},
+ cssTo = {};
+
+ init();
+
+ function init() {
+ horizontal = !!('horizontal' in attrs);
+ if (horizontal) {
+ css = {
+ width: ''
+ };
+ cssTo = {width: '0'};
+ } else {
+ css = {
+ height: ''
+ };
+ cssTo = {height: '0'};
+ }
+ if (!scope.$eval(attrs.uibCollapse)) {
+ element.addClass('in')
+ .addClass('collapse')
+ .attr('aria-expanded', true)
+ .attr('aria-hidden', false)
+ .css(css);
+ }
+ }
+
+ function getScrollFromElement(element) {
+ if (horizontal) {
+ return {width: element.scrollWidth + 'px'};
+ }
+ return {height: element.scrollHeight + 'px'};
+ }
+
+ function expand() {
+ if (element.hasClass('collapse') && element.hasClass('in')) {
+ return;
+ }
+
+ $q.resolve(expandingExpr(scope))
+ .then(function() {
+ element.removeClass('collapse')
+ .addClass('collapsing')
+ .attr('aria-expanded', true)
+ .attr('aria-hidden', false);
+
+ if ($animateCss) {
+ $animateCss(element, {
+ addClass: 'in',
+ easing: 'ease',
+ css: {
+ overflow: 'hidden'
+ },
+ to: getScrollFromElement(element[0])
+ }).start()['finally'](expandDone);
+ } else {
+ $animate.addClass(element, 'in', {
+ css: {
+ overflow: 'hidden'
+ },
+ to: getScrollFromElement(element[0])
+ }).then(expandDone);
+ }
+ }, angular.noop);
+ }
+
+ function expandDone() {
+ element.removeClass('collapsing')
+ .addClass('collapse')
+ .css(css);
+ expandedExpr(scope);
+ }
+
+ function collapse() {
+ if (!element.hasClass('collapse') && !element.hasClass('in')) {
+ return collapseDone();
+ }
+
+ $q.resolve(collapsingExpr(scope))
+ .then(function() {
+ element
+ // IMPORTANT: The width must be set before adding "collapsing" class.
+ // Otherwise, the browser attempts to animate from width 0 (in
+ // collapsing class) to the given width here.
+ .css(getScrollFromElement(element[0]))
+ // initially all panel collapse have the collapse class, this removal
+ // prevents the animation from jumping to collapsed state
+ .removeClass('collapse')
+ .addClass('collapsing')
+ .attr('aria-expanded', false)
+ .attr('aria-hidden', true);
+
+ if ($animateCss) {
+ $animateCss(element, {
+ removeClass: 'in',
+ to: cssTo
+ }).start()['finally'](collapseDone);
+ } else {
+ $animate.removeClass(element, 'in', {
+ to: cssTo
+ }).then(collapseDone);
+ }
+ }, angular.noop);
+ }
+
+ function collapseDone() {
+ element.css(cssTo); // Required so that collapse works when animation is disabled
+ element.removeClass('collapsing')
+ .addClass('collapse');
+ collapsedExpr(scope);
+ }
+
+ scope.$watch(attrs.uibCollapse, function(shouldCollapse) {
+ if (shouldCollapse) {
+ collapse();
+ } else {
+ expand();
+ }
+ });
+ }
+ };
+ }]);
+
+angular.module('ui.bootstrap.tabindex', [])
+
+.directive('uibTabindexToggle', function() {
+ return {
+ restrict: 'A',
+ link: function(scope, elem, attrs) {
+ attrs.$observe('disabled', function(disabled) {
+ attrs.$set('tabindex', disabled ? -1 : null);
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])
+
+.constant('uibAccordionConfig', {
+ closeOthers: true
+})
+
+.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {
+ // This array keeps track of the accordion groups
+ this.groups = [];
+
+ // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to
+ this.closeOthers = function(openGroup) {
+ var closeOthers = angular.isDefined($attrs.closeOthers) ?
+ $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;
+ if (closeOthers) {
+ angular.forEach(this.groups, function(group) {
+ if (group !== openGroup) {
+ group.isOpen = false;
+ }
+ });
+ }
+ };
+
+ // This is called from the accordion-group directive to add itself to the accordion
+ this.addGroup = function(groupScope) {
+ var that = this;
+ this.groups.push(groupScope);
+
+ groupScope.$on('$destroy', function(event) {
+ that.removeGroup(groupScope);
+ });
+ };
+
+ // This is called from the accordion-group directive when to remove itself
+ this.removeGroup = function(group) {
+ var index = this.groups.indexOf(group);
+ if (index !== -1) {
+ this.groups.splice(index, 1);
+ }
+ };
+}])
+
+// The accordion directive simply sets up the directive controller
+// and adds an accordion CSS class to itself element.
+.directive('uibAccordion', function() {
+ return {
+ controller: 'UibAccordionController',
+ controllerAs: 'accordion',
+ transclude: true,
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/accordion/accordion.html';
+ }
+ };
+})
+
+// The accordion-group directive indicates a block of html that will expand and collapse in an accordion
+.directive('uibAccordionGroup', function() {
+ return {
+ require: '^uibAccordion', // We need this directive to be inside an accordion
+ transclude: true, // It transcludes the contents of the directive into the template
+ restrict: 'A',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';
+ },
+ scope: {
+ heading: '@', // Interpolate the heading attribute onto this scope
+ panelClass: '@?', // Ditto with panelClass
+ isOpen: '=?',
+ isDisabled: '=?'
+ },
+ controller: function() {
+ this.setHeading = function(element) {
+ this.heading = element;
+ };
+ },
+ link: function(scope, element, attrs, accordionCtrl) {
+ element.addClass('panel');
+ accordionCtrl.addGroup(scope);
+
+ scope.openClass = attrs.openClass || 'panel-open';
+ scope.panelClass = attrs.panelClass || 'panel-default';
+ scope.$watch('isOpen', function(value) {
+ element.toggleClass(scope.openClass, !!value);
+ if (value) {
+ accordionCtrl.closeOthers(scope);
+ }
+ });
+
+ scope.toggleOpen = function($event) {
+ if (!scope.isDisabled) {
+ if (!$event || $event.which === 32) {
+ scope.isOpen = !scope.isOpen;
+ }
+ }
+ };
+
+ var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);
+ scope.headingId = id + '-tab';
+ scope.panelId = id + '-panel';
+ }
+ };
+})
+
+// Use accordion-heading below an accordion-group to provide a heading containing HTML
+.directive('uibAccordionHeading', function() {
+ return {
+ transclude: true, // Grab the contents to be used as the heading
+ template: '', // In effect remove this element!
+ replace: true,
+ require: '^uibAccordionGroup',
+ link: function(scope, element, attrs, accordionGroupCtrl, transclude) {
+ // Pass the heading to the accordion-group controller
+ // so that it can be transcluded into the right place in the template
+ // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]
+ accordionGroupCtrl.setHeading(transclude(scope, angular.noop));
+ }
+ };
+})
+
+// Use in the accordion-group template to indicate where you want the heading to be transcluded
+// You must provide the property on the accordion-group controller that will hold the transcluded element
+.directive('uibAccordionTransclude', function() {
+ return {
+ require: '^uibAccordionGroup',
+ link: function(scope, element, attrs, controller) {
+ scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {
+ if (heading) {
+ var elem = angular.element(element[0].querySelector(getHeaderSelectors()));
+ elem.html('');
+ elem.append(heading);
+ }
+ });
+ }
+ };
+
+ function getHeaderSelectors() {
+ return 'uib-accordion-header,' +
+ 'data-uib-accordion-header,' +
+ 'x-uib-accordion-header,' +
+ 'uib\\:accordion-header,' +
+ '[uib-accordion-header],' +
+ '[data-uib-accordion-header],' +
+ '[x-uib-accordion-header]';
+ }
+});
+
+angular.module('ui.bootstrap.alert', [])
+
+.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {
+ $scope.closeable = !!$attrs.close;
+ $element.addClass('alert');
+ $attrs.$set('role', 'alert');
+ if ($scope.closeable) {
+ $element.addClass('alert-dismissible');
+ }
+
+ var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?
+ $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;
+
+ if (dismissOnTimeout) {
+ $timeout(function() {
+ $scope.close();
+ }, parseInt(dismissOnTimeout, 10));
+ }
+}])
+
+.directive('uibAlert', function() {
+ return {
+ controller: 'UibAlertController',
+ controllerAs: 'alert',
+ restrict: 'A',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/alert/alert.html';
+ },
+ transclude: true,
+ scope: {
+ close: '&'
+ }
+ };
+});
+
+angular.module('ui.bootstrap.buttons', [])
+
+.constant('uibButtonConfig', {
+ activeClass: 'active',
+ toggleEvent: 'click'
+})
+
+.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {
+ this.activeClass = buttonConfig.activeClass || 'active';
+ this.toggleEvent = buttonConfig.toggleEvent || 'click';
+}])
+
+.directive('uibBtnRadio', ['$parse', function($parse) {
+ return {
+ require: ['uibBtnRadio', 'ngModel'],
+ controller: 'UibButtonsController',
+ controllerAs: 'buttons',
+ link: function(scope, element, attrs, ctrls) {
+ var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+ var uncheckableExpr = $parse(attrs.uibUncheckable);
+
+ element.find('input').css({display: 'none'});
+
+ //model -> UI
+ ngModelCtrl.$render = function() {
+ element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));
+ };
+
+ //ui->model
+ element.on(buttonsCtrl.toggleEvent, function() {
+ if (attrs.disabled) {
+ return;
+ }
+
+ var isActive = element.hasClass(buttonsCtrl.activeClass);
+
+ if (!isActive || angular.isDefined(attrs.uncheckable)) {
+ scope.$apply(function() {
+ ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));
+ ngModelCtrl.$render();
+ });
+ }
+ });
+
+ if (attrs.uibUncheckable) {
+ scope.$watch(uncheckableExpr, function(uncheckable) {
+ attrs.$set('uncheckable', uncheckable ? '' : undefined);
+ });
+ }
+ }
+ };
+}])
+
+.directive('uibBtnCheckbox', function() {
+ return {
+ require: ['uibBtnCheckbox', 'ngModel'],
+ controller: 'UibButtonsController',
+ controllerAs: 'button',
+ link: function(scope, element, attrs, ctrls) {
+ var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ element.find('input').css({display: 'none'});
+
+ function getTrueValue() {
+ return getCheckboxValue(attrs.btnCheckboxTrue, true);
+ }
+
+ function getFalseValue() {
+ return getCheckboxValue(attrs.btnCheckboxFalse, false);
+ }
+
+ function getCheckboxValue(attribute, defaultValue) {
+ return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;
+ }
+
+ //model -> UI
+ ngModelCtrl.$render = function() {
+ element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));
+ };
+
+ //ui->model
+ element.on(buttonsCtrl.toggleEvent, function() {
+ if (attrs.disabled) {
+ return;
+ }
+
+ scope.$apply(function() {
+ ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());
+ ngModelCtrl.$render();
+ });
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.carousel', [])
+
+.controller('UibCarouselController', ['$scope', '$element', '$interval', '$timeout', '$animate', function($scope, $element, $interval, $timeout, $animate) {
+ var self = this,
+ slides = self.slides = $scope.slides = [],
+ SLIDE_DIRECTION = 'uib-slideDirection',
+ currentIndex = $scope.active,
+ currentInterval, isPlaying;
+
+ var destroyed = false;
+ $element.addClass('carousel');
+
+ self.addSlide = function(slide, element) {
+ slides.push({
+ slide: slide,
+ element: element
+ });
+ slides.sort(function(a, b) {
+ return +a.slide.index - +b.slide.index;
+ });
+ //if this is the first slide or the slide is set to active, select it
+ if (slide.index === $scope.active || slides.length === 1 && !angular.isNumber($scope.active)) {
+ if ($scope.$currentTransition) {
+ $scope.$currentTransition = null;
+ }
+
+ currentIndex = slide.index;
+ $scope.active = slide.index;
+ setActive(currentIndex);
+ self.select(slides[findSlideIndex(slide)]);
+ if (slides.length === 1) {
+ $scope.play();
+ }
+ }
+ };
+
+ self.getCurrentIndex = function() {
+ for (var i = 0; i < slides.length; i++) {
+ if (slides[i].slide.index === currentIndex) {
+ return i;
+ }
+ }
+ };
+
+ self.next = $scope.next = function() {
+ var newIndex = (self.getCurrentIndex() + 1) % slides.length;
+
+ if (newIndex === 0 && $scope.noWrap()) {
+ $scope.pause();
+ return;
+ }
+
+ return self.select(slides[newIndex], 'next');
+ };
+
+ self.prev = $scope.prev = function() {
+ var newIndex = self.getCurrentIndex() - 1 < 0 ? slides.length - 1 : self.getCurrentIndex() - 1;
+
+ if ($scope.noWrap() && newIndex === slides.length - 1) {
+ $scope.pause();
+ return;
+ }
+
+ return self.select(slides[newIndex], 'prev');
+ };
+
+ self.removeSlide = function(slide) {
+ var index = findSlideIndex(slide);
+
+ //get the index of the slide inside the carousel
+ slides.splice(index, 1);
+ if (slides.length > 0 && currentIndex === index) {
+ if (index >= slides.length) {
+ currentIndex = slides.length - 1;
+ $scope.active = currentIndex;
+ setActive(currentIndex);
+ self.select(slides[slides.length - 1]);
+ } else {
+ currentIndex = index;
+ $scope.active = currentIndex;
+ setActive(currentIndex);
+ self.select(slides[index]);
+ }
+ } else if (currentIndex > index) {
+ currentIndex--;
+ $scope.active = currentIndex;
+ }
+
+ //clean the active value when no more slide
+ if (slides.length === 0) {
+ currentIndex = null;
+ $scope.active = null;
+ }
+ };
+
+ /* direction: "prev" or "next" */
+ self.select = $scope.select = function(nextSlide, direction) {
+ var nextIndex = findSlideIndex(nextSlide.slide);
+ //Decide direction if it's not given
+ if (direction === undefined) {
+ direction = nextIndex > self.getCurrentIndex() ? 'next' : 'prev';
+ }
+ //Prevent this user-triggered transition from occurring if there is already one in progress
+ if (nextSlide.slide.index !== currentIndex &&
+ !$scope.$currentTransition) {
+ goNext(nextSlide.slide, nextIndex, direction);
+ }
+ };
+
+ /* Allow outside people to call indexOf on slides array */
+ $scope.indexOfSlide = function(slide) {
+ return +slide.slide.index;
+ };
+
+ $scope.isActive = function(slide) {
+ return $scope.active === slide.slide.index;
+ };
+
+ $scope.isPrevDisabled = function() {
+ return $scope.active === 0 && $scope.noWrap();
+ };
+
+ $scope.isNextDisabled = function() {
+ return $scope.active === slides.length - 1 && $scope.noWrap();
+ };
+
+ $scope.pause = function() {
+ if (!$scope.noPause) {
+ isPlaying = false;
+ resetTimer();
+ }
+ };
+
+ $scope.play = function() {
+ if (!isPlaying) {
+ isPlaying = true;
+ restartTimer();
+ }
+ };
+
+ $element.on('mouseenter', $scope.pause);
+ $element.on('mouseleave', $scope.play);
+
+ $scope.$on('$destroy', function() {
+ destroyed = true;
+ resetTimer();
+ });
+
+ $scope.$watch('noTransition', function(noTransition) {
+ $animate.enabled($element, !noTransition);
+ });
+
+ $scope.$watch('interval', restartTimer);
+
+ $scope.$watchCollection('slides', resetTransition);
+
+ $scope.$watch('active', function(index) {
+ if (angular.isNumber(index) && currentIndex !== index) {
+ for (var i = 0; i < slides.length; i++) {
+ if (slides[i].slide.index === index) {
+ index = i;
+ break;
+ }
+ }
+
+ var slide = slides[index];
+ if (slide) {
+ setActive(index);
+ self.select(slides[index]);
+ currentIndex = index;
+ }
+ }
+ });
+
+ function getSlideByIndex(index) {
+ for (var i = 0, l = slides.length; i < l; ++i) {
+ if (slides[i].index === index) {
+ return slides[i];
+ }
+ }
+ }
+
+ function setActive(index) {
+ for (var i = 0; i < slides.length; i++) {
+ slides[i].slide.active = i === index;
+ }
+ }
+
+ function goNext(slide, index, direction) {
+ if (destroyed) {
+ return;
+ }
+
+ angular.extend(slide, {direction: direction});
+ angular.extend(slides[currentIndex].slide || {}, {direction: direction});
+ if ($animate.enabled($element) && !$scope.$currentTransition &&
+ slides[index].element && self.slides.length > 1) {
+ slides[index].element.data(SLIDE_DIRECTION, slide.direction);
+ var currentIdx = self.getCurrentIndex();
+
+ if (angular.isNumber(currentIdx) && slides[currentIdx].element) {
+ slides[currentIdx].element.data(SLIDE_DIRECTION, slide.direction);
+ }
+
+ $scope.$currentTransition = true;
+ $animate.on('addClass', slides[index].element, function(element, phase) {
+ if (phase === 'close') {
+ $scope.$currentTransition = null;
+ $animate.off('addClass', element);
+ }
+ });
+ }
+
+ $scope.active = slide.index;
+ currentIndex = slide.index;
+ setActive(index);
+
+ //every time you change slides, reset the timer
+ restartTimer();
+ }
+
+ function findSlideIndex(slide) {
+ for (var i = 0; i < slides.length; i++) {
+ if (slides[i].slide === slide) {
+ return i;
+ }
+ }
+ }
+
+ function resetTimer() {
+ if (currentInterval) {
+ $interval.cancel(currentInterval);
+ currentInterval = null;
+ }
+ }
+
+ function resetTransition(slides) {
+ if (!slides.length) {
+ $scope.$currentTransition = null;
+ }
+ }
+
+ function restartTimer() {
+ resetTimer();
+ var interval = +$scope.interval;
+ if (!isNaN(interval) && interval > 0) {
+ currentInterval = $interval(timerFn, interval);
+ }
+ }
+
+ function timerFn() {
+ var interval = +$scope.interval;
+ if (isPlaying && !isNaN(interval) && interval > 0 && slides.length) {
+ $scope.next();
+ } else {
+ $scope.pause();
+ }
+ }
+}])
+
+.directive('uibCarousel', function() {
+ return {
+ transclude: true,
+ controller: 'UibCarouselController',
+ controllerAs: 'carousel',
+ restrict: 'A',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/carousel/carousel.html';
+ },
+ scope: {
+ active: '=',
+ interval: '=',
+ noTransition: '=',
+ noPause: '=',
+ noWrap: '&'
+ }
+ };
+})
+
+.directive('uibSlide', ['$animate', function($animate) {
+ return {
+ require: '^uibCarousel',
+ restrict: 'A',
+ transclude: true,
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/carousel/slide.html';
+ },
+ scope: {
+ actual: '=?',
+ index: '=?'
+ },
+ link: function (scope, element, attrs, carouselCtrl) {
+ element.addClass('item');
+ carouselCtrl.addSlide(scope, element);
+ //when the scope is destroyed then remove the slide from the current slides array
+ scope.$on('$destroy', function() {
+ carouselCtrl.removeSlide(scope);
+ });
+
+ scope.$watch('active', function(active) {
+ $animate[active ? 'addClass' : 'removeClass'](element, 'active');
+ });
+ }
+ };
+}])
+
+.animation('.item', ['$animateCss',
+function($animateCss) {
+ var SLIDE_DIRECTION = 'uib-slideDirection';
+
+ function removeClass(element, className, callback) {
+ element.removeClass(className);
+ if (callback) {
+ callback();
+ }
+ }
+
+ return {
+ beforeAddClass: function(element, className, done) {
+ if (className === 'active') {
+ var stopped = false;
+ var direction = element.data(SLIDE_DIRECTION);
+ var directionClass = direction === 'next' ? 'left' : 'right';
+ var removeClassFn = removeClass.bind(this, element,
+ directionClass + ' ' + direction, done);
+ element.addClass(direction);
+
+ $animateCss(element, {addClass: directionClass})
+ .start()
+ .done(removeClassFn);
+
+ return function() {
+ stopped = true;
+ };
+ }
+ done();
+ },
+ beforeRemoveClass: function (element, className, done) {
+ if (className === 'active') {
+ var stopped = false;
+ var direction = element.data(SLIDE_DIRECTION);
+ var directionClass = direction === 'next' ? 'left' : 'right';
+ var removeClassFn = removeClass.bind(this, element, directionClass, done);
+
+ $animateCss(element, {addClass: directionClass})
+ .start()
+ .done(removeClassFn);
+
+ return function() {
+ stopped = true;
+ };
+ }
+ done();
+ }
+ };
+}]);
+
+angular.module('ui.bootstrap.dateparser', [])
+
+.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {
+ // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js
+ var SPECIAL_CHARACTERS_REGEXP = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
+
+ var localeId;
+ var formatCodeToRegex;
+
+ this.init = function() {
+ localeId = $locale.id;
+
+ this.parsers = {};
+ this.formatters = {};
+
+ formatCodeToRegex = [
+ {
+ key: 'yyyy',
+ regex: '\\d{4}',
+ apply: function(value) { this.year = +value; },
+ formatter: function(date) {
+ var _date = new Date();
+ _date.setFullYear(Math.abs(date.getFullYear()));
+ return dateFilter(_date, 'yyyy');
+ }
+ },
+ {
+ key: 'yy',
+ regex: '\\d{2}',
+ apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },
+ formatter: function(date) {
+ var _date = new Date();
+ _date.setFullYear(Math.abs(date.getFullYear()));
+ return dateFilter(_date, 'yy');
+ }
+ },
+ {
+ key: 'y',
+ regex: '\\d{1,4}',
+ apply: function(value) { this.year = +value; },
+ formatter: function(date) {
+ var _date = new Date();
+ _date.setFullYear(Math.abs(date.getFullYear()));
+ return dateFilter(_date, 'y');
+ }
+ },
+ {
+ key: 'M!',
+ regex: '0?[1-9]|1[0-2]',
+ apply: function(value) { this.month = value - 1; },
+ formatter: function(date) {
+ var value = date.getMonth();
+ if (/^[0-9]$/.test(value)) {
+ return dateFilter(date, 'MM');
+ }
+
+ return dateFilter(date, 'M');
+ }
+ },
+ {
+ key: 'MMMM',
+ regex: $locale.DATETIME_FORMATS.MONTH.join('|'),
+ apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },
+ formatter: function(date) { return dateFilter(date, 'MMMM'); }
+ },
+ {
+ key: 'MMM',
+ regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),
+ apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },
+ formatter: function(date) { return dateFilter(date, 'MMM'); }
+ },
+ {
+ key: 'MM',
+ regex: '0[1-9]|1[0-2]',
+ apply: function(value) { this.month = value - 1; },
+ formatter: function(date) { return dateFilter(date, 'MM'); }
+ },
+ {
+ key: 'M',
+ regex: '[1-9]|1[0-2]',
+ apply: function(value) { this.month = value - 1; },
+ formatter: function(date) { return dateFilter(date, 'M'); }
+ },
+ {
+ key: 'd!',
+ regex: '[0-2]?[0-9]{1}|3[0-1]{1}',
+ apply: function(value) { this.date = +value; },
+ formatter: function(date) {
+ var value = date.getDate();
+ if (/^[1-9]$/.test(value)) {
+ return dateFilter(date, 'dd');
+ }
+
+ return dateFilter(date, 'd');
+ }
+ },
+ {
+ key: 'dd',
+ regex: '[0-2][0-9]{1}|3[0-1]{1}',
+ apply: function(value) { this.date = +value; },
+ formatter: function(date) { return dateFilter(date, 'dd'); }
+ },
+ {
+ key: 'd',
+ regex: '[1-2]?[0-9]{1}|3[0-1]{1}',
+ apply: function(value) { this.date = +value; },
+ formatter: function(date) { return dateFilter(date, 'd'); }
+ },
+ {
+ key: 'EEEE',
+ regex: $locale.DATETIME_FORMATS.DAY.join('|'),
+ formatter: function(date) { return dateFilter(date, 'EEEE'); }
+ },
+ {
+ key: 'EEE',
+ regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),
+ formatter: function(date) { return dateFilter(date, 'EEE'); }
+ },
+ {
+ key: 'HH',
+ regex: '(?:0|1)[0-9]|2[0-3]',
+ apply: function(value) { this.hours = +value; },
+ formatter: function(date) { return dateFilter(date, 'HH'); }
+ },
+ {
+ key: 'hh',
+ regex: '0[0-9]|1[0-2]',
+ apply: function(value) { this.hours = +value; },
+ formatter: function(date) { return dateFilter(date, 'hh'); }
+ },
+ {
+ key: 'H',
+ regex: '1?[0-9]|2[0-3]',
+ apply: function(value) { this.hours = +value; },
+ formatter: function(date) { return dateFilter(date, 'H'); }
+ },
+ {
+ key: 'h',
+ regex: '[0-9]|1[0-2]',
+ apply: function(value) { this.hours = +value; },
+ formatter: function(date) { return dateFilter(date, 'h'); }
+ },
+ {
+ key: 'mm',
+ regex: '[0-5][0-9]',
+ apply: function(value) { this.minutes = +value; },
+ formatter: function(date) { return dateFilter(date, 'mm'); }
+ },
+ {
+ key: 'm',
+ regex: '[0-9]|[1-5][0-9]',
+ apply: function(value) { this.minutes = +value; },
+ formatter: function(date) { return dateFilter(date, 'm'); }
+ },
+ {
+ key: 'sss',
+ regex: '[0-9][0-9][0-9]',
+ apply: function(value) { this.milliseconds = +value; },
+ formatter: function(date) { return dateFilter(date, 'sss'); }
+ },
+ {
+ key: 'ss',
+ regex: '[0-5][0-9]',
+ apply: function(value) { this.seconds = +value; },
+ formatter: function(date) { return dateFilter(date, 'ss'); }
+ },
+ {
+ key: 's',
+ regex: '[0-9]|[1-5][0-9]',
+ apply: function(value) { this.seconds = +value; },
+ formatter: function(date) { return dateFilter(date, 's'); }
+ },
+ {
+ key: 'a',
+ regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),
+ apply: function(value) {
+ if (this.hours === 12) {
+ this.hours = 0;
+ }
+
+ if (value === 'PM') {
+ this.hours += 12;
+ }
+ },
+ formatter: function(date) { return dateFilter(date, 'a'); }
+ },
+ {
+ key: 'Z',
+ regex: '[+-]\\d{4}',
+ apply: function(value) {
+ var matches = value.match(/([+-])(\d{2})(\d{2})/),
+ sign = matches[1],
+ hours = matches[2],
+ minutes = matches[3];
+ this.hours += toInt(sign + hours);
+ this.minutes += toInt(sign + minutes);
+ },
+ formatter: function(date) {
+ return dateFilter(date, 'Z');
+ }
+ },
+ {
+ key: 'ww',
+ regex: '[0-4][0-9]|5[0-3]',
+ formatter: function(date) { return dateFilter(date, 'ww'); }
+ },
+ {
+ key: 'w',
+ regex: '[0-9]|[1-4][0-9]|5[0-3]',
+ formatter: function(date) { return dateFilter(date, 'w'); }
+ },
+ {
+ key: 'GGGG',
+ regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\s/g, '\\s'),
+ formatter: function(date) { return dateFilter(date, 'GGGG'); }
+ },
+ {
+ key: 'GGG',
+ regex: $locale.DATETIME_FORMATS.ERAS.join('|'),
+ formatter: function(date) { return dateFilter(date, 'GGG'); }
+ },
+ {
+ key: 'GG',
+ regex: $locale.DATETIME_FORMATS.ERAS.join('|'),
+ formatter: function(date) { return dateFilter(date, 'GG'); }
+ },
+ {
+ key: 'G',
+ regex: $locale.DATETIME_FORMATS.ERAS.join('|'),
+ formatter: function(date) { return dateFilter(date, 'G'); }
+ }
+ ];
+
+ if (angular.version.major >= 1 && angular.version.minor > 4) {
+ formatCodeToRegex.push({
+ key: 'LLLL',
+ regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),
+ apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },
+ formatter: function(date) { return dateFilter(date, 'LLLL'); }
+ });
+ }
+ };
+
+ this.init();
+
+ function getFormatCodeToRegex(key) {
+ return filterFilter(formatCodeToRegex, {key: key}, true)[0];
+ }
+
+ this.getParser = function (key) {
+ var f = getFormatCodeToRegex(key);
+ return f && f.apply || null;
+ };
+
+ this.overrideParser = function (key, parser) {
+ var f = getFormatCodeToRegex(key);
+ if (f && angular.isFunction(parser)) {
+ this.parsers = {};
+ f.apply = parser;
+ }
+ }.bind(this);
+
+ function createParser(format) {
+ var map = [], regex = format.split('');
+
+ // check for literal values
+ var quoteIndex = format.indexOf('\'');
+ if (quoteIndex > -1) {
+ var inLiteral = false;
+ format = format.split('');
+ for (var i = quoteIndex; i < format.length; i++) {
+ if (inLiteral) {
+ if (format[i] === '\'') {
+ if (i + 1 < format.length && format[i+1] === '\'') { // escaped single quote
+ format[i+1] = '$';
+ regex[i+1] = '';
+ } else { // end of literal
+ regex[i] = '';
+ inLiteral = false;
+ }
+ }
+ format[i] = '$';
+ } else {
+ if (format[i] === '\'') { // start of literal
+ format[i] = '$';
+ regex[i] = '';
+ inLiteral = true;
+ }
+ }
+ }
+
+ format = format.join('');
+ }
+
+ angular.forEach(formatCodeToRegex, function(data) {
+ var index = format.indexOf(data.key);
+
+ if (index > -1) {
+ format = format.split('');
+
+ regex[index] = '(' + data.regex + ')';
+ format[index] = '$'; // Custom symbol to define consumed part of format
+ for (var i = index + 1, n = index + data.key.length; i < n; i++) {
+ regex[i] = '';
+ format[i] = '$';
+ }
+ format = format.join('');
+
+ map.push({
+ index: index,
+ key: data.key,
+ apply: data.apply,
+ matcher: data.regex
+ });
+ }
+ });
+
+ return {
+ regex: new RegExp('^' + regex.join('') + '$'),
+ map: orderByFilter(map, 'index')
+ };
+ }
+
+ function createFormatter(format) {
+ var formatters = [];
+ var i = 0;
+ var formatter, literalIdx;
+ while (i < format.length) {
+ if (angular.isNumber(literalIdx)) {
+ if (format.charAt(i) === '\'') {
+ if (i + 1 >= format.length || format.charAt(i + 1) !== '\'') {
+ formatters.push(constructLiteralFormatter(format, literalIdx, i));
+ literalIdx = null;
+ }
+ } else if (i === format.length) {
+ while (literalIdx < format.length) {
+ formatter = constructFormatterFromIdx(format, literalIdx);
+ formatters.push(formatter);
+ literalIdx = formatter.endIdx;
+ }
+ }
+
+ i++;
+ continue;
+ }
+
+ if (format.charAt(i) === '\'') {
+ literalIdx = i;
+ i++;
+ continue;
+ }
+
+ formatter = constructFormatterFromIdx(format, i);
+
+ formatters.push(formatter.parser);
+ i = formatter.endIdx;
+ }
+
+ return formatters;
+ }
+
+ function constructLiteralFormatter(format, literalIdx, endIdx) {
+ return function() {
+ return format.substr(literalIdx + 1, endIdx - literalIdx - 1);
+ };
+ }
+
+ function constructFormatterFromIdx(format, i) {
+ var currentPosStr = format.substr(i);
+ for (var j = 0; j < formatCodeToRegex.length; j++) {
+ if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {
+ var data = formatCodeToRegex[j];
+ return {
+ endIdx: i + data.key.length,
+ parser: data.formatter
+ };
+ }
+ }
+
+ return {
+ endIdx: i + 1,
+ parser: function() {
+ return currentPosStr.charAt(0);
+ }
+ };
+ }
+
+ this.filter = function(date, format) {
+ if (!angular.isDate(date) || isNaN(date) || !format) {
+ return '';
+ }
+
+ format = $locale.DATETIME_FORMATS[format] || format;
+
+ if ($locale.id !== localeId) {
+ this.init();
+ }
+
+ if (!this.formatters[format]) {
+ this.formatters[format] = createFormatter(format);
+ }
+
+ var formatters = this.formatters[format];
+
+ return formatters.reduce(function(str, formatter) {
+ return str + formatter(date);
+ }, '');
+ };
+
+ this.parse = function(input, format, baseDate) {
+ if (!angular.isString(input) || !format) {
+ return input;
+ }
+
+ format = $locale.DATETIME_FORMATS[format] || format;
+ format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\$&');
+
+ if ($locale.id !== localeId) {
+ this.init();
+ }
+
+ if (!this.parsers[format]) {
+ this.parsers[format] = createParser(format, 'apply');
+ }
+
+ var parser = this.parsers[format],
+ regex = parser.regex,
+ map = parser.map,
+ results = input.match(regex),
+ tzOffset = false;
+ if (results && results.length) {
+ var fields, dt;
+ if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {
+ fields = {
+ year: baseDate.getFullYear(),
+ month: baseDate.getMonth(),
+ date: baseDate.getDate(),
+ hours: baseDate.getHours(),
+ minutes: baseDate.getMinutes(),
+ seconds: baseDate.getSeconds(),
+ milliseconds: baseDate.getMilliseconds()
+ };
+ } else {
+ if (baseDate) {
+ $log.warn('dateparser:', 'baseDate is not a valid date');
+ }
+ fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };
+ }
+
+ for (var i = 1, n = results.length; i < n; i++) {
+ var mapper = map[i - 1];
+ if (mapper.matcher === 'Z') {
+ tzOffset = true;
+ }
+
+ if (mapper.apply) {
+ mapper.apply.call(fields, results[i]);
+ }
+ }
+
+ var datesetter = tzOffset ? Date.prototype.setUTCFullYear :
+ Date.prototype.setFullYear;
+ var timesetter = tzOffset ? Date.prototype.setUTCHours :
+ Date.prototype.setHours;
+
+ if (isValid(fields.year, fields.month, fields.date)) {
+ if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {
+ dt = new Date(baseDate);
+ datesetter.call(dt, fields.year, fields.month, fields.date);
+ timesetter.call(dt, fields.hours, fields.minutes,
+ fields.seconds, fields.milliseconds);
+ } else {
+ dt = new Date(0);
+ datesetter.call(dt, fields.year, fields.month, fields.date);
+ timesetter.call(dt, fields.hours || 0, fields.minutes || 0,
+ fields.seconds || 0, fields.milliseconds || 0);
+ }
+ }
+
+ return dt;
+ }
+ };
+
+ // Check if date is valid for specific month (and year for February).
+ // Month: 0 = Jan, 1 = Feb, etc
+ function isValid(year, month, date) {
+ if (date < 1) {
+ return false;
+ }
+
+ if (month === 1 && date > 28) {
+ return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);
+ }
+
+ if (month === 3 || month === 5 || month === 8 || month === 10) {
+ return date < 31;
+ }
+
+ return true;
+ }
+
+ function toInt(str) {
+ return parseInt(str, 10);
+ }
+
+ this.toTimezone = toTimezone;
+ this.fromTimezone = fromTimezone;
+ this.timezoneToOffset = timezoneToOffset;
+ this.addDateMinutes = addDateMinutes;
+ this.convertTimezoneToLocal = convertTimezoneToLocal;
+
+ function toTimezone(date, timezone) {
+ return date && timezone ? convertTimezoneToLocal(date, timezone) : date;
+ }
+
+ function fromTimezone(date, timezone) {
+ return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;
+ }
+
+ //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207
+ function timezoneToOffset(timezone, fallback) {
+ timezone = timezone.replace(/:/g, '');
+ var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;
+ return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;
+ }
+
+ function addDateMinutes(date, minutes) {
+ date = new Date(date.getTime());
+ date.setMinutes(date.getMinutes() + minutes);
+ return date;
+ }
+
+ function convertTimezoneToLocal(date, timezone, reverse) {
+ reverse = reverse ? -1 : 1;
+ var dateTimezoneOffset = date.getTimezoneOffset();
+ var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);
+ return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));
+ }
+}]);
+
+// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to
+// at most one element.
+angular.module('ui.bootstrap.isClass', [])
+.directive('uibIsClass', [
+ '$animate',
+function ($animate) {
+ // 11111111 22222222
+ var ON_REGEXP = /^\s*([\s\S]+?)\s+on\s+([\s\S]+?)\s*$/;
+ // 11111111 22222222
+ var IS_REGEXP = /^\s*([\s\S]+?)\s+for\s+([\s\S]+?)\s*$/;
+
+ var dataPerTracked = {};
+
+ return {
+ restrict: 'A',
+ compile: function(tElement, tAttrs) {
+ var linkedScopes = [];
+ var instances = [];
+ var expToData = {};
+ var lastActivated = null;
+ var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);
+ var onExp = onExpMatches[2];
+ var expsStr = onExpMatches[1];
+ var exps = expsStr.split(',');
+
+ return linkFn;
+
+ function linkFn(scope, element, attrs) {
+ linkedScopes.push(scope);
+ instances.push({
+ scope: scope,
+ element: element
+ });
+
+ exps.forEach(function(exp, k) {
+ addForExp(exp, scope);
+ });
+
+ scope.$on('$destroy', removeScope);
+ }
+
+ function addForExp(exp, scope) {
+ var matches = exp.match(IS_REGEXP);
+ var clazz = scope.$eval(matches[1]);
+ var compareWithExp = matches[2];
+ var data = expToData[exp];
+ if (!data) {
+ var watchFn = function(compareWithVal) {
+ var newActivated = null;
+ instances.some(function(instance) {
+ var thisVal = instance.scope.$eval(onExp);
+ if (thisVal === compareWithVal) {
+ newActivated = instance;
+ return true;
+ }
+ });
+ if (data.lastActivated !== newActivated) {
+ if (data.lastActivated) {
+ $animate.removeClass(data.lastActivated.element, clazz);
+ }
+ if (newActivated) {
+ $animate.addClass(newActivated.element, clazz);
+ }
+ data.lastActivated = newActivated;
+ }
+ };
+ expToData[exp] = data = {
+ lastActivated: null,
+ scope: scope,
+ watchFn: watchFn,
+ compareWithExp: compareWithExp,
+ watcher: scope.$watch(compareWithExp, watchFn)
+ };
+ }
+ data.watchFn(scope.$eval(compareWithExp));
+ }
+
+ function removeScope(e) {
+ var removedScope = e.targetScope;
+ var index = linkedScopes.indexOf(removedScope);
+ linkedScopes.splice(index, 1);
+ instances.splice(index, 1);
+ if (linkedScopes.length) {
+ var newWatchScope = linkedScopes[0];
+ angular.forEach(expToData, function(data) {
+ if (data.scope === removedScope) {
+ data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);
+ data.scope = newWatchScope;
+ }
+ });
+ } else {
+ expToData = {};
+ }
+ }
+ }
+ };
+}]);
+angular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])
+
+.value('$datepickerSuppressError', false)
+
+.value('$datepickerLiteralWarning', true)
+
+.constant('uibDatepickerConfig', {
+ datepickerMode: 'day',
+ formatDay: 'dd',
+ formatMonth: 'MMMM',
+ formatYear: 'yyyy',
+ formatDayHeader: 'EEE',
+ formatDayTitle: 'MMMM yyyy',
+ formatMonthTitle: 'yyyy',
+ maxDate: null,
+ maxMode: 'year',
+ minDate: null,
+ minMode: 'day',
+ monthColumns: 3,
+ ngModelOptions: {},
+ shortcutPropagation: false,
+ showWeeks: true,
+ yearColumns: 5,
+ yearRows: 4
+})
+
+.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',
+ function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {
+ var self = this,
+ ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;
+ ngModelOptions = {},
+ watchListeners = [];
+
+ $element.addClass('uib-datepicker');
+ $attrs.$set('role', 'application');
+
+ if (!$scope.datepickerOptions) {
+ $scope.datepickerOptions = {};
+ }
+
+ // Modes chain
+ this.modes = ['day', 'month', 'year'];
+
+ [
+ 'customClass',
+ 'dateDisabled',
+ 'datepickerMode',
+ 'formatDay',
+ 'formatDayHeader',
+ 'formatDayTitle',
+ 'formatMonth',
+ 'formatMonthTitle',
+ 'formatYear',
+ 'maxDate',
+ 'maxMode',
+ 'minDate',
+ 'minMode',
+ 'monthColumns',
+ 'showWeeks',
+ 'shortcutPropagation',
+ 'startingDay',
+ 'yearColumns',
+ 'yearRows'
+ ].forEach(function(key) {
+ switch (key) {
+ case 'customClass':
+ case 'dateDisabled':
+ $scope[key] = $scope.datepickerOptions[key] || angular.noop;
+ break;
+ case 'datepickerMode':
+ $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?
+ $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;
+ break;
+ case 'formatDay':
+ case 'formatDayHeader':
+ case 'formatDayTitle':
+ case 'formatMonth':
+ case 'formatMonthTitle':
+ case 'formatYear':
+ self[key] = angular.isDefined($scope.datepickerOptions[key]) ?
+ $interpolate($scope.datepickerOptions[key])($scope.$parent) :
+ datepickerConfig[key];
+ break;
+ case 'monthColumns':
+ case 'showWeeks':
+ case 'shortcutPropagation':
+ case 'yearColumns':
+ case 'yearRows':
+ self[key] = angular.isDefined($scope.datepickerOptions[key]) ?
+ $scope.datepickerOptions[key] : datepickerConfig[key];
+ break;
+ case 'startingDay':
+ if (angular.isDefined($scope.datepickerOptions.startingDay)) {
+ self.startingDay = $scope.datepickerOptions.startingDay;
+ } else if (angular.isNumber(datepickerConfig.startingDay)) {
+ self.startingDay = datepickerConfig.startingDay;
+ } else {
+ self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;
+ }
+
+ break;
+ case 'maxDate':
+ case 'minDate':
+ $scope.$watch('datepickerOptions.' + key, function(value) {
+ if (value) {
+ if (angular.isDate(value)) {
+ self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));
+ } else {
+ if ($datepickerLiteralWarning) {
+ $log.warn('Literal date support has been deprecated, please switch to date object usage');
+ }
+
+ self[key] = new Date(dateFilter(value, 'medium'));
+ }
+ } else {
+ self[key] = datepickerConfig[key] ?
+ dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :
+ null;
+ }
+
+ self.refreshView();
+ });
+
+ break;
+ case 'maxMode':
+ case 'minMode':
+ if ($scope.datepickerOptions[key]) {
+ $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {
+ self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];
+ if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||
+ key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {
+ $scope.datepickerMode = self[key];
+ $scope.datepickerOptions.datepickerMode = self[key];
+ }
+ });
+ } else {
+ self[key] = $scope[key] = datepickerConfig[key] || null;
+ }
+
+ break;
+ }
+ });
+
+ $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);
+
+ $scope.disabled = angular.isDefined($attrs.disabled) || false;
+ if (angular.isDefined($attrs.ngDisabled)) {
+ watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {
+ $scope.disabled = disabled;
+ self.refreshView();
+ }));
+ }
+
+ $scope.isActive = function(dateObject) {
+ if (self.compare(dateObject.date, self.activeDate) === 0) {
+ $scope.activeDateId = dateObject.uid;
+ return true;
+ }
+ return false;
+ };
+
+ this.init = function(ngModelCtrl_) {
+ ngModelCtrl = ngModelCtrl_;
+ ngModelOptions = extractOptions(ngModelCtrl);
+
+ if ($scope.datepickerOptions.initDate) {
+ self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();
+ $scope.$watch('datepickerOptions.initDate', function(initDate) {
+ if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {
+ self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));
+ self.refreshView();
+ }
+ });
+ } else {
+ self.activeDate = new Date();
+ }
+
+ var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();
+ this.activeDate = !isNaN(date) ?
+ dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :
+ dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));
+
+ ngModelCtrl.$render = function() {
+ self.render();
+ };
+ };
+
+ this.render = function() {
+ if (ngModelCtrl.$viewValue) {
+ var date = new Date(ngModelCtrl.$viewValue),
+ isValid = !isNaN(date);
+
+ if (isValid) {
+ this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));
+ } else if (!$datepickerSuppressError) {
+ $log.error('Datepicker directive: "ng-model" value must be a Date object');
+ }
+ }
+ this.refreshView();
+ };
+
+ this.refreshView = function() {
+ if (this.element) {
+ $scope.selectedDt = null;
+ this._refreshView();
+ if ($scope.activeDt) {
+ $scope.activeDateId = $scope.activeDt.uid;
+ }
+
+ var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;
+ date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));
+ ngModelCtrl.$setValidity('dateDisabled', !date ||
+ this.element && !this.isDisabled(date));
+ }
+ };
+
+ this.createDateObject = function(date, format) {
+ var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;
+ model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));
+ var today = new Date();
+ today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));
+ var time = this.compare(date, today);
+ var dt = {
+ date: date,
+ label: dateParser.filter(date, format),
+ selected: model && this.compare(date, model) === 0,
+ disabled: this.isDisabled(date),
+ past: time < 0,
+ current: time === 0,
+ future: time > 0,
+ customClass: this.customClass(date) || null
+ };
+
+ if (model && this.compare(date, model) === 0) {
+ $scope.selectedDt = dt;
+ }
+
+ if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {
+ $scope.activeDt = dt;
+ }
+
+ return dt;
+ };
+
+ this.isDisabled = function(date) {
+ return $scope.disabled ||
+ this.minDate && this.compare(date, this.minDate) < 0 ||
+ this.maxDate && this.compare(date, this.maxDate) > 0 ||
+ $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});
+ };
+
+ this.customClass = function(date) {
+ return $scope.customClass({date: date, mode: $scope.datepickerMode});
+ };
+
+ // Split array into smaller arrays
+ this.split = function(arr, size) {
+ var arrays = [];
+ while (arr.length > 0) {
+ arrays.push(arr.splice(0, size));
+ }
+ return arrays;
+ };
+
+ $scope.select = function(date) {
+ if ($scope.datepickerMode === self.minMode) {
+ var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);
+ dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
+ dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));
+ ngModelCtrl.$setViewValue(dt);
+ ngModelCtrl.$render();
+ } else {
+ self.activeDate = date;
+ setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);
+
+ $scope.$emit('uib:datepicker.mode');
+ }
+
+ $scope.$broadcast('uib:datepicker.focus');
+ };
+
+ $scope.move = function(direction) {
+ var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),
+ month = self.activeDate.getMonth() + direction * (self.step.months || 0);
+ self.activeDate.setFullYear(year, month, 1);
+ self.refreshView();
+ };
+
+ $scope.toggleMode = function(direction) {
+ direction = direction || 1;
+
+ if ($scope.datepickerMode === self.maxMode && direction === 1 ||
+ $scope.datepickerMode === self.minMode && direction === -1) {
+ return;
+ }
+
+ setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);
+
+ $scope.$emit('uib:datepicker.mode');
+ };
+
+ // Key event mapper
+ $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };
+
+ var focusElement = function() {
+ self.element[0].focus();
+ };
+
+ // Listen for focus requests from popup directive
+ $scope.$on('uib:datepicker.focus', focusElement);
+
+ $scope.keydown = function(evt) {
+ var key = $scope.keys[evt.which];
+
+ if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {
+ return;
+ }
+
+ evt.preventDefault();
+ if (!self.shortcutPropagation) {
+ evt.stopPropagation();
+ }
+
+ if (key === 'enter' || key === 'space') {
+ if (self.isDisabled(self.activeDate)) {
+ return; // do nothing
+ }
+ $scope.select(self.activeDate);
+ } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {
+ $scope.toggleMode(key === 'up' ? 1 : -1);
+ } else {
+ self.handleKeyDown(key, evt);
+ self.refreshView();
+ }
+ };
+
+ $element.on('keydown', function(evt) {
+ $scope.$apply(function() {
+ $scope.keydown(evt);
+ });
+ });
+
+ $scope.$on('$destroy', function() {
+ //Clear all watch listeners on destroy
+ while (watchListeners.length) {
+ watchListeners.shift()();
+ }
+ });
+
+ function setMode(mode) {
+ $scope.datepickerMode = mode;
+ $scope.datepickerOptions.datepickerMode = mode;
+ }
+
+ function extractOptions(ngModelCtrl) {
+ var ngModelOptions;
+
+ if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing
+ // guarantee a value
+ ngModelOptions = ngModelCtrl.$options ||
+ $scope.datepickerOptions.ngModelOptions ||
+ datepickerConfig.ngModelOptions ||
+ {};
+
+ // mimic 1.6+ api
+ ngModelOptions.getOption = function (key) {
+ return ngModelOptions[key];
+ };
+ } else { // in angular >=1.6 $options is always present
+ // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value
+ var timezone = ngModelCtrl.$options.getOption('timezone') ||
+ ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||
+ (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);
+
+ // values passed to createChild override existing values
+ ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance
+ .createChild(datepickerConfig.ngModelOptions) // lowest precedence
+ .createChild($scope.datepickerOptions.ngModelOptions)
+ .createChild(ngModelCtrl.$options) // highest precedence
+ .createChild({timezone: timezone}); // to keep from squashing a non-null value
+ }
+
+ return ngModelOptions;
+ }
+}])
+
+.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {
+ var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
+
+ this.step = { months: 1 };
+ this.element = $element;
+ function getDaysInMonth(year, month) {
+ return month === 1 && year % 4 === 0 &&
+ (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];
+ }
+
+ this.init = function(ctrl) {
+ angular.extend(ctrl, this);
+ scope.showWeeks = ctrl.showWeeks;
+ ctrl.refreshView();
+ };
+
+ this.getDates = function(startDate, n) {
+ var dates = new Array(n), current = new Date(startDate), i = 0, date;
+ while (i < n) {
+ date = new Date(current);
+ dates[i++] = date;
+ current.setDate(current.getDate() + 1);
+ }
+ return dates;
+ };
+
+ this._refreshView = function() {
+ var year = this.activeDate.getFullYear(),
+ month = this.activeDate.getMonth(),
+ firstDayOfMonth = new Date(this.activeDate);
+
+ firstDayOfMonth.setFullYear(year, month, 1);
+
+ var difference = this.startingDay - firstDayOfMonth.getDay(),
+ numDisplayedFromPreviousMonth = difference > 0 ?
+ 7 - difference : - difference,
+ firstDate = new Date(firstDayOfMonth);
+
+ if (numDisplayedFromPreviousMonth > 0) {
+ firstDate.setDate(-numDisplayedFromPreviousMonth + 1);
+ }
+
+ // 42 is the number of days on a six-week calendar
+ var days = this.getDates(firstDate, 42);
+ for (var i = 0; i < 42; i ++) {
+ days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {
+ secondary: days[i].getMonth() !== month,
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.labels = new Array(7);
+ for (var j = 0; j < 7; j++) {
+ scope.labels[j] = {
+ abbr: dateFilter(days[j].date, this.formatDayHeader),
+ full: dateFilter(days[j].date, 'EEEE')
+ };
+ }
+
+ scope.title = dateFilter(this.activeDate, this.formatDayTitle);
+ scope.rows = this.split(days, 7);
+
+ if (scope.showWeeks) {
+ scope.weekNumbers = [];
+ var thursdayIndex = (4 + 7 - this.startingDay) % 7,
+ numWeeks = scope.rows.length;
+ for (var curWeek = 0; curWeek < numWeeks; curWeek++) {
+ scope.weekNumbers.push(
+ getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));
+ }
+ }
+ };
+
+ this.compare = function(date1, date2) {
+ var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
+ var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
+ _date1.setFullYear(date1.getFullYear());
+ _date2.setFullYear(date2.getFullYear());
+ return _date1 - _date2;
+ };
+
+ function getISO8601WeekNumber(date) {
+ var checkDate = new Date(date);
+ checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday
+ var time = checkDate.getTime();
+ checkDate.setMonth(0); // Compare with Jan 1
+ checkDate.setDate(1);
+ return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;
+ }
+
+ this.handleKeyDown = function(key, evt) {
+ var date = this.activeDate.getDate();
+
+ if (key === 'left') {
+ date = date - 1;
+ } else if (key === 'up') {
+ date = date - 7;
+ } else if (key === 'right') {
+ date = date + 1;
+ } else if (key === 'down') {
+ date = date + 7;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);
+ this.activeDate.setMonth(month, 1);
+ date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);
+ } else if (key === 'home') {
+ date = 1;
+ } else if (key === 'end') {
+ date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());
+ }
+ this.activeDate.setDate(date);
+ };
+}])
+
+.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {
+ this.step = { years: 1 };
+ this.element = $element;
+
+ this.init = function(ctrl) {
+ angular.extend(ctrl, this);
+ ctrl.refreshView();
+ };
+
+ this._refreshView = function() {
+ var months = new Array(12),
+ year = this.activeDate.getFullYear(),
+ date;
+
+ for (var i = 0; i < 12; i++) {
+ date = new Date(this.activeDate);
+ date.setFullYear(year, i, 1);
+ months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.title = dateFilter(this.activeDate, this.formatMonthTitle);
+ scope.rows = this.split(months, this.monthColumns);
+ scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;
+ };
+
+ this.compare = function(date1, date2) {
+ var _date1 = new Date(date1.getFullYear(), date1.getMonth());
+ var _date2 = new Date(date2.getFullYear(), date2.getMonth());
+ _date1.setFullYear(date1.getFullYear());
+ _date2.setFullYear(date2.getFullYear());
+ return _date1 - _date2;
+ };
+
+ this.handleKeyDown = function(key, evt) {
+ var date = this.activeDate.getMonth();
+
+ if (key === 'left') {
+ date = date - 1;
+ } else if (key === 'up') {
+ date = date - this.monthColumns;
+ } else if (key === 'right') {
+ date = date + 1;
+ } else if (key === 'down') {
+ date = date + this.monthColumns;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);
+ this.activeDate.setFullYear(year);
+ } else if (key === 'home') {
+ date = 0;
+ } else if (key === 'end') {
+ date = 11;
+ }
+ this.activeDate.setMonth(date);
+ };
+}])
+
+.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {
+ var columns, range;
+ this.element = $element;
+
+ function getStartingYear(year) {
+ return parseInt((year - 1) / range, 10) * range + 1;
+ }
+
+ this.yearpickerInit = function() {
+ columns = this.yearColumns;
+ range = this.yearRows * columns;
+ this.step = { years: range };
+ };
+
+ this._refreshView = function() {
+ var years = new Array(range), date;
+
+ for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {
+ date = new Date(this.activeDate);
+ date.setFullYear(start + i, 0, 1);
+ years[i] = angular.extend(this.createDateObject(date, this.formatYear), {
+ uid: scope.uniqueId + '-' + i
+ });
+ }
+
+ scope.title = [years[0].label, years[range - 1].label].join(' - ');
+ scope.rows = this.split(years, columns);
+ scope.columns = columns;
+ };
+
+ this.compare = function(date1, date2) {
+ return date1.getFullYear() - date2.getFullYear();
+ };
+
+ this.handleKeyDown = function(key, evt) {
+ var date = this.activeDate.getFullYear();
+
+ if (key === 'left') {
+ date = date - 1;
+ } else if (key === 'up') {
+ date = date - columns;
+ } else if (key === 'right') {
+ date = date + 1;
+ } else if (key === 'down') {
+ date = date + columns;
+ } else if (key === 'pageup' || key === 'pagedown') {
+ date += (key === 'pageup' ? - 1 : 1) * range;
+ } else if (key === 'home') {
+ date = getStartingYear(this.activeDate.getFullYear());
+ } else if (key === 'end') {
+ date = getStartingYear(this.activeDate.getFullYear()) + range - 1;
+ }
+ this.activeDate.setFullYear(date);
+ };
+}])
+
+.directive('uibDatepicker', function() {
+ return {
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';
+ },
+ scope: {
+ datepickerOptions: '=?'
+ },
+ require: ['uibDatepicker', '^ngModel'],
+ restrict: 'A',
+ controller: 'UibDatepickerController',
+ controllerAs: 'datepicker',
+ link: function(scope, element, attrs, ctrls) {
+ var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ datepickerCtrl.init(ngModelCtrl);
+ }
+ };
+})
+
+.directive('uibDaypicker', function() {
+ return {
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/datepicker/day.html';
+ },
+ require: ['^uibDatepicker', 'uibDaypicker'],
+ restrict: 'A',
+ controller: 'UibDaypickerController',
+ link: function(scope, element, attrs, ctrls) {
+ var datepickerCtrl = ctrls[0],
+ daypickerCtrl = ctrls[1];
+
+ daypickerCtrl.init(datepickerCtrl);
+ }
+ };
+})
+
+.directive('uibMonthpicker', function() {
+ return {
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/datepicker/month.html';
+ },
+ require: ['^uibDatepicker', 'uibMonthpicker'],
+ restrict: 'A',
+ controller: 'UibMonthpickerController',
+ link: function(scope, element, attrs, ctrls) {
+ var datepickerCtrl = ctrls[0],
+ monthpickerCtrl = ctrls[1];
+
+ monthpickerCtrl.init(datepickerCtrl);
+ }
+ };
+})
+
+.directive('uibYearpicker', function() {
+ return {
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/datepicker/year.html';
+ },
+ require: ['^uibDatepicker', 'uibYearpicker'],
+ restrict: 'A',
+ controller: 'UibYearpickerController',
+ link: function(scope, element, attrs, ctrls) {
+ var ctrl = ctrls[0];
+ angular.extend(ctrl, ctrls[1]);
+ ctrl.yearpickerInit();
+
+ ctrl.refreshView();
+ }
+ };
+});
+
+angular.module('ui.bootstrap.position', [])
+
+/**
+ * A set of utility methods for working with the DOM.
+ * It is meant to be used where we need to absolute-position elements in
+ * relation to another element (this is the case for tooltips, popovers,
+ * typeahead suggestions etc.).
+ */
+ .factory('$uibPosition', ['$document', '$window', function($document, $window) {
+ /**
+ * Used by scrollbarWidth() function to cache scrollbar's width.
+ * Do not access this variable directly, use scrollbarWidth() instead.
+ */
+ var SCROLLBAR_WIDTH;
+ /**
+ * scrollbar on body and html element in IE and Edge overlay
+ * content and should be considered 0 width.
+ */
+ var BODY_SCROLLBAR_WIDTH;
+ var OVERFLOW_REGEX = {
+ normal: /(auto|scroll)/,
+ hidden: /(auto|scroll|hidden)/
+ };
+ var PLACEMENT_REGEX = {
+ auto: /\s?auto?\s?/i,
+ primary: /^(top|bottom|left|right)$/,
+ secondary: /^(top|bottom|left|right|center)$/,
+ vertical: /^(top|bottom)$/
+ };
+ var BODY_REGEX = /(HTML|BODY)/;
+
+ return {
+
+ /**
+ * Provides a raw DOM element from a jQuery/jQLite element.
+ *
+ * @param {element} elem - The element to convert.
+ *
+ * @returns {element} A HTML element.
+ */
+ getRawNode: function(elem) {
+ return elem.nodeName ? elem : elem[0] || elem;
+ },
+
+ /**
+ * Provides a parsed number for a style property. Strips
+ * units and casts invalid numbers to 0.
+ *
+ * @param {string} value - The style value to parse.
+ *
+ * @returns {number} A valid number.
+ */
+ parseStyle: function(value) {
+ value = parseFloat(value);
+ return isFinite(value) ? value : 0;
+ },
+
+ /**
+ * Provides the closest positioned ancestor.
+ *
+ * @param {element} element - The element to get the offest parent for.
+ *
+ * @returns {element} The closest positioned ancestor.
+ */
+ offsetParent: function(elem) {
+ elem = this.getRawNode(elem);
+
+ var offsetParent = elem.offsetParent || $document[0].documentElement;
+
+ function isStaticPositioned(el) {
+ return ($window.getComputedStyle(el).position || 'static') === 'static';
+ }
+
+ while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {
+ offsetParent = offsetParent.offsetParent;
+ }
+
+ return offsetParent || $document[0].documentElement;
+ },
+
+ /**
+ * Provides the scrollbar width, concept from TWBS measureScrollbar()
+ * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js
+ * In IE and Edge, scollbar on body and html element overlay and should
+ * return a width of 0.
+ *
+ * @returns {number} The width of the browser scollbar.
+ */
+ scrollbarWidth: function(isBody) {
+ if (isBody) {
+ if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {
+ var bodyElem = $document.find('body');
+ bodyElem.addClass('uib-position-body-scrollbar-measure');
+ BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;
+ BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;
+ bodyElem.removeClass('uib-position-body-scrollbar-measure');
+ }
+ return BODY_SCROLLBAR_WIDTH;
+ }
+
+ if (angular.isUndefined(SCROLLBAR_WIDTH)) {
+ var scrollElem = angular.element('<div class="uib-position-scrollbar-measure"></div>');
+ $document.find('body').append(scrollElem);
+ SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;
+ SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;
+ scrollElem.remove();
+ }
+
+ return SCROLLBAR_WIDTH;
+ },
+
+ /**
+ * Provides the padding required on an element to replace the scrollbar.
+ *
+ * @returns {object} An object with the following properties:
+ * <ul>
+ * <li>**scrollbarWidth**: the width of the scrollbar</li>
+ * <li>**widthOverflow**: whether the the width is overflowing</li>
+ * <li>**right**: the amount of right padding on the element needed to replace the scrollbar</li>
+ * <li>**rightOriginal**: the amount of right padding currently on the element</li>
+ * <li>**heightOverflow**: whether the the height is overflowing</li>
+ * <li>**bottom**: the amount of bottom padding on the element needed to replace the scrollbar</li>
+ * <li>**bottomOriginal**: the amount of bottom padding currently on the element</li>
+ * </ul>
+ */
+ scrollbarPadding: function(elem) {
+ elem = this.getRawNode(elem);
+
+ var elemStyle = $window.getComputedStyle(elem);
+ var paddingRight = this.parseStyle(elemStyle.paddingRight);
+ var paddingBottom = this.parseStyle(elemStyle.paddingBottom);
+ var scrollParent = this.scrollParent(elem, false, true);
+ var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));
+
+ return {
+ scrollbarWidth: scrollbarWidth,
+ widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,
+ right: paddingRight + scrollbarWidth,
+ originalRight: paddingRight,
+ heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,
+ bottom: paddingBottom + scrollbarWidth,
+ originalBottom: paddingBottom
+ };
+ },
+
+ /**
+ * Checks to see if the element is scrollable.
+ *
+ * @param {element} elem - The element to check.
+ * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,
+ * default is false.
+ *
+ * @returns {boolean} Whether the element is scrollable.
+ */
+ isScrollable: function(elem, includeHidden) {
+ elem = this.getRawNode(elem);
+
+ var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;
+ var elemStyle = $window.getComputedStyle(elem);
+ return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);
+ },
+
+ /**
+ * Provides the closest scrollable ancestor.
+ * A port of the jQuery UI scrollParent method:
+ * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js
+ *
+ * @param {element} elem - The element to find the scroll parent of.
+ * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,
+ * default is false.
+ * @param {boolean=} [includeSelf=false] - Should the element being passed be
+ * included in the scrollable llokup.
+ *
+ * @returns {element} A HTML element.
+ */
+ scrollParent: function(elem, includeHidden, includeSelf) {
+ elem = this.getRawNode(elem);
+
+ var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;
+ var documentEl = $document[0].documentElement;
+ var elemStyle = $window.getComputedStyle(elem);
+ if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {
+ return elem;
+ }
+ var excludeStatic = elemStyle.position === 'absolute';
+ var scrollParent = elem.parentElement || documentEl;
+
+ if (scrollParent === documentEl || elemStyle.position === 'fixed') {
+ return documentEl;
+ }
+
+ while (scrollParent.parentElement && scrollParent !== documentEl) {
+ var spStyle = $window.getComputedStyle(scrollParent);
+ if (excludeStatic && spStyle.position !== 'static') {
+ excludeStatic = false;
+ }
+
+ if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {
+ break;
+ }
+ scrollParent = scrollParent.parentElement;
+ }
+
+ return scrollParent;
+ },
+
+ /**
+ * Provides read-only equivalent of jQuery's position function:
+ * http://api.jquery.com/position/ - distance to closest positioned
+ * ancestor. Does not account for margins by default like jQuery position.
+ *
+ * @param {element} elem - The element to caclulate the position on.
+ * @param {boolean=} [includeMargins=false] - Should margins be accounted
+ * for, default is false.
+ *
+ * @returns {object} An object with the following properties:
+ * <ul>
+ * <li>**width**: the width of the element</li>
+ * <li>**height**: the height of the element</li>
+ * <li>**top**: distance to top edge of offset parent</li>
+ * <li>**left**: distance to left edge of offset parent</li>
+ * </ul>
+ */
+ position: function(elem, includeMagins) {
+ elem = this.getRawNode(elem);
+
+ var elemOffset = this.offset(elem);
+ if (includeMagins) {
+ var elemStyle = $window.getComputedStyle(elem);
+ elemOffset.top -= this.parseStyle(elemStyle.marginTop);
+ elemOffset.left -= this.parseStyle(elemStyle.marginLeft);
+ }
+ var parent = this.offsetParent(elem);
+ var parentOffset = {top: 0, left: 0};
+
+ if (parent !== $document[0].documentElement) {
+ parentOffset = this.offset(parent);
+ parentOffset.top += parent.clientTop - parent.scrollTop;
+ parentOffset.left += parent.clientLeft - parent.scrollLeft;
+ }
+
+ return {
+ width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),
+ height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),
+ top: Math.round(elemOffset.top - parentOffset.top),
+ left: Math.round(elemOffset.left - parentOffset.left)
+ };
+ },
+
+ /**
+ * Provides read-only equivalent of jQuery's offset function:
+ * http://api.jquery.com/offset/ - distance to viewport. Does
+ * not account for borders, margins, or padding on the body
+ * element.
+ *
+ * @param {element} elem - The element to calculate the offset on.
+ *
+ * @returns {object} An object with the following properties:
+ * <ul>
+ * <li>**width**: the width of the element</li>
+ * <li>**height**: the height of the element</li>
+ * <li>**top**: distance to top edge of viewport</li>
+ * <li>**right**: distance to bottom edge of viewport</li>
+ * </ul>
+ */
+ offset: function(elem) {
+ elem = this.getRawNode(elem);
+
+ var elemBCR = elem.getBoundingClientRect();
+ return {
+ width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),
+ height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),
+ top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),
+ left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))
+ };
+ },
+
+ /**
+ * Provides offset distance to the closest scrollable ancestor
+ * or viewport. Accounts for border and scrollbar width.
+ *
+ * Right and bottom dimensions represent the distance to the
+ * respective edge of the viewport element. If the element
+ * edge extends beyond the viewport, a negative value will be
+ * reported.
+ *
+ * @param {element} elem - The element to get the viewport offset for.
+ * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead
+ * of the first scrollable element, default is false.
+ * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element
+ * be accounted for, default is true.
+ *
+ * @returns {object} An object with the following properties:
+ * <ul>
+ * <li>**top**: distance to the top content edge of viewport element</li>
+ * <li>**bottom**: distance to the bottom content edge of viewport element</li>
+ * <li>**left**: distance to the left content edge of viewport element</li>
+ * <li>**right**: distance to the right content edge of viewport element</li>
+ * </ul>
+ */
+ viewportOffset: function(elem, useDocument, includePadding) {
+ elem = this.getRawNode(elem);
+ includePadding = includePadding !== false ? true : false;
+
+ var elemBCR = elem.getBoundingClientRect();
+ var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};
+
+ var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);
+ var offsetParentBCR = offsetParent.getBoundingClientRect();
+
+ offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;
+ offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;
+ if (offsetParent === $document[0].documentElement) {
+ offsetBCR.top += $window.pageYOffset;
+ offsetBCR.left += $window.pageXOffset;
+ }
+ offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;
+ offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;
+
+ if (includePadding) {
+ var offsetParentStyle = $window.getComputedStyle(offsetParent);
+ offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);
+ offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);
+ offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);
+ offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);
+ }
+
+ return {
+ top: Math.round(elemBCR.top - offsetBCR.top),
+ bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),
+ left: Math.round(elemBCR.left - offsetBCR.left),
+ right: Math.round(offsetBCR.right - elemBCR.right)
+ };
+ },
+
+ /**
+ * Provides an array of placement values parsed from a placement string.
+ * Along with the 'auto' indicator, supported placement strings are:
+ * <ul>
+ * <li>top: element on top, horizontally centered on host element.</li>
+ * <li>top-left: element on top, left edge aligned with host element left edge.</li>
+ * <li>top-right: element on top, lerightft edge aligned with host element right edge.</li>
+ * <li>bottom: element on bottom, horizontally centered on host element.</li>
+ * <li>bottom-left: element on bottom, left edge aligned with host element left edge.</li>
+ * <li>bottom-right: element on bottom, right edge aligned with host element right edge.</li>
+ * <li>left: element on left, vertically centered on host element.</li>
+ * <li>left-top: element on left, top edge aligned with host element top edge.</li>
+ * <li>left-bottom: element on left, bottom edge aligned with host element bottom edge.</li>
+ * <li>right: element on right, vertically centered on host element.</li>
+ * <li>right-top: element on right, top edge aligned with host element top edge.</li>
+ * <li>right-bottom: element on right, bottom edge aligned with host element bottom edge.</li>
+ * </ul>
+ * A placement string with an 'auto' indicator is expected to be
+ * space separated from the placement, i.e: 'auto bottom-left' If
+ * the primary and secondary placement values do not match 'top,
+ * bottom, left, right' then 'top' will be the primary placement and
+ * 'center' will be the secondary placement. If 'auto' is passed, true
+ * will be returned as the 3rd value of the array.
+ *
+ * @param {string} placement - The placement string to parse.
+ *
+ * @returns {array} An array with the following values
+ * <ul>
+ * <li>**[0]**: The primary placement.</li>
+ * <li>**[1]**: The secondary placement.</li>
+ * <li>**[2]**: If auto is passed: true, else undefined.</li>
+ * </ul>
+ */
+ parsePlacement: function(placement) {
+ var autoPlace = PLACEMENT_REGEX.auto.test(placement);
+ if (autoPlace) {
+ placement = placement.replace(PLACEMENT_REGEX.auto, '');
+ }
+
+ placement = placement.split('-');
+
+ placement[0] = placement[0] || 'top';
+ if (!PLACEMENT_REGEX.primary.test(placement[0])) {
+ placement[0] = 'top';
+ }
+
+ placement[1] = placement[1] || 'center';
+ if (!PLACEMENT_REGEX.secondary.test(placement[1])) {
+ placement[1] = 'center';
+ }
+
+ if (autoPlace) {
+ placement[2] = true;
+ } else {
+ placement[2] = false;
+ }
+
+ return placement;
+ },
+
+ /**
+ * Provides coordinates for an element to be positioned relative to
+ * another element. Passing 'auto' as part of the placement parameter
+ * will enable smart placement - where the element fits. i.e:
+ * 'auto left-top' will check to see if there is enough space to the left
+ * of the hostElem to fit the targetElem, if not place right (same for secondary
+ * top placement). Available space is calculated using the viewportOffset
+ * function.
+ *
+ * @param {element} hostElem - The element to position against.
+ * @param {element} targetElem - The element to position.
+ * @param {string=} [placement=top] - The placement for the targetElem,
+ * default is 'top'. 'center' is assumed as secondary placement for
+ * 'top', 'left', 'right', and 'bottom' placements. Available placements are:
+ * <ul>
+ * <li>top</li>
+ * <li>top-right</li>
+ * <li>top-left</li>
+ * <li>bottom</li>
+ * <li>bottom-left</li>
+ * <li>bottom-right</li>
+ * <li>left</li>
+ * <li>left-top</li>
+ * <li>left-bottom</li>
+ * <li>right</li>
+ * <li>right-top</li>
+ * <li>right-bottom</li>
+ * </ul>
+ * @param {boolean=} [appendToBody=false] - Should the top and left values returned
+ * be calculated from the body element, default is false.
+ *
+ * @returns {object} An object with the following properties:
+ * <ul>
+ * <li>**top**: Value for targetElem top.</li>
+ * <li>**left**: Value for targetElem left.</li>
+ * <li>**placement**: The resolved placement.</li>
+ * </ul>
+ */
+ positionElements: function(hostElem, targetElem, placement, appendToBody) {
+ hostElem = this.getRawNode(hostElem);
+ targetElem = this.getRawNode(targetElem);
+
+ // need to read from prop to support tests.
+ var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');
+ var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');
+
+ placement = this.parsePlacement(placement);
+
+ var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);
+ var targetElemPos = {top: 0, left: 0, placement: ''};
+
+ if (placement[2]) {
+ var viewportOffset = this.viewportOffset(hostElem, appendToBody);
+
+ var targetElemStyle = $window.getComputedStyle(targetElem);
+ var adjustedSize = {
+ width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),
+ height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))
+ };
+
+ placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :
+ placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :
+ placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :
+ placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :
+ placement[0];
+
+ placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :
+ placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :
+ placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :
+ placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :
+ placement[1];
+
+ if (placement[1] === 'center') {
+ if (PLACEMENT_REGEX.vertical.test(placement[0])) {
+ var xOverflow = hostElemPos.width / 2 - targetWidth / 2;
+ if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {
+ placement[1] = 'left';
+ } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {
+ placement[1] = 'right';
+ }
+ } else {
+ var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;
+ if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {
+ placement[1] = 'top';
+ } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {
+ placement[1] = 'bottom';
+ }
+ }
+ }
+ }
+
+ switch (placement[0]) {
+ case 'top':
+ targetElemPos.top = hostElemPos.top - targetHeight;
+ break;
+ case 'bottom':
+ targetElemPos.top = hostElemPos.top + hostElemPos.height;
+ break;
+ case 'left':
+ targetElemPos.left = hostElemPos.left - targetWidth;
+ break;
+ case 'right':
+ targetElemPos.left = hostElemPos.left + hostElemPos.width;
+ break;
+ }
+
+ switch (placement[1]) {
+ case 'top':
+ targetElemPos.top = hostElemPos.top;
+ break;
+ case 'bottom':
+ targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;
+ break;
+ case 'left':
+ targetElemPos.left = hostElemPos.left;
+ break;
+ case 'right':
+ targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;
+ break;
+ case 'center':
+ if (PLACEMENT_REGEX.vertical.test(placement[0])) {
+ targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;
+ } else {
+ targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;
+ }
+ break;
+ }
+
+ targetElemPos.top = Math.round(targetElemPos.top);
+ targetElemPos.left = Math.round(targetElemPos.left);
+ targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];
+
+ return targetElemPos;
+ },
+
+ /**
+ * Provides a way to adjust the top positioning after first
+ * render to correctly align element to top after content
+ * rendering causes resized element height
+ *
+ * @param {array} placementClasses - The array of strings of classes
+ * element should have.
+ * @param {object} containerPosition - The object with container
+ * position information
+ * @param {number} initialHeight - The initial height for the elem.
+ * @param {number} currentHeight - The current height for the elem.
+ */
+ adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {
+ if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {
+ return {
+ top: containerPosition.top - currentHeight + 'px'
+ };
+ }
+ },
+
+ /**
+ * Provides a way for positioning tooltip & dropdown
+ * arrows when using placement options beyond the standard
+ * left, right, top, or bottom.
+ *
+ * @param {element} elem - The tooltip/dropdown element.
+ * @param {string} placement - The placement for the elem.
+ */
+ positionArrow: function(elem, placement) {
+ elem = this.getRawNode(elem);
+
+ var innerElem = elem.querySelector('.tooltip-inner, .popover-inner');
+ if (!innerElem) {
+ return;
+ }
+
+ var isTooltip = angular.element(innerElem).hasClass('tooltip-inner');
+
+ var arrowElem = isTooltip ? elem.querySelector('.tooltip-arrow') : elem.querySelector('.arrow');
+ if (!arrowElem) {
+ return;
+ }
+
+ var arrowCss = {
+ top: '',
+ bottom: '',
+ left: '',
+ right: ''
+ };
+
+ placement = this.parsePlacement(placement);
+ if (placement[1] === 'center') {
+ // no adjustment necessary - just reset styles
+ angular.element(arrowElem).css(arrowCss);
+ return;
+ }
+
+ var borderProp = 'border-' + placement[0] + '-width';
+ var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];
+
+ var borderRadiusProp = 'border-';
+ if (PLACEMENT_REGEX.vertical.test(placement[0])) {
+ borderRadiusProp += placement[0] + '-' + placement[1];
+ } else {
+ borderRadiusProp += placement[1] + '-' + placement[0];
+ }
+ borderRadiusProp += '-radius';
+ var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];
+
+ switch (placement[0]) {
+ case 'top':
+ arrowCss.bottom = isTooltip ? '0' : '-' + borderWidth;
+ break;
+ case 'bottom':
+ arrowCss.top = isTooltip ? '0' : '-' + borderWidth;
+ break;
+ case 'left':
+ arrowCss.right = isTooltip ? '0' : '-' + borderWidth;
+ break;
+ case 'right':
+ arrowCss.left = isTooltip ? '0' : '-' + borderWidth;
+ break;
+ }
+
+ arrowCss[placement[1]] = borderRadius;
+
+ angular.element(arrowElem).css(arrowCss);
+ }
+ };
+ }]);
+
+angular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])
+
+.value('$datepickerPopupLiteralWarning', true)
+
+.constant('uibDatepickerPopupConfig', {
+ altInputFormats: [],
+ appendToBody: false,
+ clearText: 'Clear',
+ closeOnDateSelection: true,
+ closeText: 'Done',
+ currentText: 'Today',
+ datepickerPopup: 'yyyy-MM-dd',
+ datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',
+ datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',
+ html5Types: {
+ date: 'yyyy-MM-dd',
+ 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',
+ 'month': 'yyyy-MM'
+ },
+ onOpenFocus: true,
+ showButtonBar: true,
+ placement: 'auto bottom-left'
+})
+
+.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',
+function($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {
+ var cache = {},
+ isHtml5DateInput = false;
+ var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,
+ datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,
+ ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];
+
+ this.init = function(_ngModel_) {
+ ngModel = _ngModel_;
+ ngModelOptions = extractOptions(ngModel);
+ closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?
+ $scope.$parent.$eval($attrs.closeOnDateSelection) :
+ datepickerPopupConfig.closeOnDateSelection;
+ appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?
+ $scope.$parent.$eval($attrs.datepickerAppendToBody) :
+ datepickerPopupConfig.appendToBody;
+ onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?
+ $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;
+ datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?
+ $attrs.datepickerPopupTemplateUrl :
+ datepickerPopupConfig.datepickerPopupTemplateUrl;
+ datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?
+ $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;
+ altInputFormats = angular.isDefined($attrs.altInputFormats) ?
+ $scope.$parent.$eval($attrs.altInputFormats) :
+ datepickerPopupConfig.altInputFormats;
+
+ $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?
+ $scope.$parent.$eval($attrs.showButtonBar) :
+ datepickerPopupConfig.showButtonBar;
+
+ if (datepickerPopupConfig.html5Types[$attrs.type]) {
+ dateFormat = datepickerPopupConfig.html5Types[$attrs.type];
+ isHtml5DateInput = true;
+ } else {
+ dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;
+ $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {
+ var newDateFormat = value || datepickerPopupConfig.datepickerPopup;
+ // Invalidate the $modelValue to ensure that formatters re-run
+ // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764
+ if (newDateFormat !== dateFormat) {
+ dateFormat = newDateFormat;
+ ngModel.$modelValue = null;
+
+ if (!dateFormat) {
+ throw new Error('uibDatepickerPopup must have a date format specified.');
+ }
+ }
+ });
+ }
+
+ if (!dateFormat) {
+ throw new Error('uibDatepickerPopup must have a date format specified.');
+ }
+
+ if (isHtml5DateInput && $attrs.uibDatepickerPopup) {
+ throw new Error('HTML5 date input types do not support custom formats.');
+ }
+
+ // popup element used to display calendar
+ popupEl = angular.element('<div uib-datepicker-popup-wrap><div uib-datepicker></div></div>');
+
+ popupEl.attr({
+ 'ng-model': 'date',
+ 'ng-change': 'dateSelection(date)',
+ 'template-url': datepickerPopupTemplateUrl
+ });
+
+ // datepicker element
+ datepickerEl = angular.element(popupEl.children()[0]);
+ datepickerEl.attr('template-url', datepickerTemplateUrl);
+
+ if (!$scope.datepickerOptions) {
+ $scope.datepickerOptions = {};
+ }
+
+ if (isHtml5DateInput) {
+ if ($attrs.type === 'month') {
+ $scope.datepickerOptions.datepickerMode = 'month';
+ $scope.datepickerOptions.minMode = 'month';
+ }
+ }
+
+ datepickerEl.attr('datepicker-options', 'datepickerOptions');
+
+ if (!isHtml5DateInput) {
+ // Internal API to maintain the correct ng-invalid-[key] class
+ ngModel.$$parserName = 'date';
+ ngModel.$validators.date = validator;
+ ngModel.$parsers.unshift(parseDate);
+ ngModel.$formatters.push(function(value) {
+ if (ngModel.$isEmpty(value)) {
+ $scope.date = value;
+ return value;
+ }
+
+ if (angular.isNumber(value)) {
+ value = new Date(value);
+ }
+
+ $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));
+
+ return dateParser.filter($scope.date, dateFormat);
+ });
+ } else {
+ ngModel.$formatters.push(function(value) {
+ $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));
+ return value;
+ });
+ }
+
+ // Detect changes in the view from the text box
+ ngModel.$viewChangeListeners.push(function() {
+ $scope.date = parseDateString(ngModel.$viewValue);
+ });
+
+ $element.on('keydown', inputKeydownBind);
+
+ $popup = $compile(popupEl)($scope);
+ // Prevent jQuery cache memory leak (template is now redundant after linking)
+ popupEl.remove();
+
+ if (appendToBody) {
+ $document.find('body').append($popup);
+ } else {
+ $element.after($popup);
+ }
+
+ $scope.$on('$destroy', function() {
+ if ($scope.isOpen === true) {
+ if (!$rootScope.$$phase) {
+ $scope.$apply(function() {
+ $scope.isOpen = false;
+ });
+ }
+ }
+
+ $popup.remove();
+ $element.off('keydown', inputKeydownBind);
+ $document.off('click', documentClickBind);
+ if (scrollParentEl) {
+ scrollParentEl.off('scroll', positionPopup);
+ }
+ angular.element($window).off('resize', positionPopup);
+
+ //Clear all watch listeners on destroy
+ while (watchListeners.length) {
+ watchListeners.shift()();
+ }
+ });
+ };
+
+ $scope.getText = function(key) {
+ return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];
+ };
+
+ $scope.isDisabled = function(date) {
+ if (date === 'today') {
+ date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));
+ }
+
+ var dates = {};
+ angular.forEach(['minDate', 'maxDate'], function(key) {
+ if (!$scope.datepickerOptions[key]) {
+ dates[key] = null;
+ } else if (angular.isDate($scope.datepickerOptions[key])) {
+ dates[key] = new Date($scope.datepickerOptions[key]);
+ } else {
+ if ($datepickerPopupLiteralWarning) {
+ $log.warn('Literal date support has been deprecated, please switch to date object usage');
+ }
+
+ dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));
+ }
+ });
+
+ return $scope.datepickerOptions &&
+ dates.minDate && $scope.compare(date, dates.minDate) < 0 ||
+ dates.maxDate && $scope.compare(date, dates.maxDate) > 0;
+ };
+
+ $scope.compare = function(date1, date2) {
+ return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
+ };
+
+ // Inner change
+ $scope.dateSelection = function(dt) {
+ $scope.date = dt;
+ var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function
+ $element.val(date);
+ ngModel.$setViewValue(date);
+
+ if (closeOnDateSelection) {
+ $scope.isOpen = false;
+ $element[0].focus();
+ }
+ };
+
+ $scope.keydown = function(evt) {
+ if (evt.which === 27) {
+ evt.stopPropagation();
+ $scope.isOpen = false;
+ $element[0].focus();
+ }
+ };
+
+ $scope.select = function(date, evt) {
+ evt.stopPropagation();
+
+ if (date === 'today') {
+ var today = new Date();
+ if (angular.isDate($scope.date)) {
+ date = new Date($scope.date);
+ date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());
+ } else {
+ date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));
+ date.setHours(0, 0, 0, 0);
+ }
+ }
+ $scope.dateSelection(date);
+ };
+
+ $scope.close = function(evt) {
+ evt.stopPropagation();
+
+ $scope.isOpen = false;
+ $element[0].focus();
+ };
+
+ $scope.disabled = angular.isDefined($attrs.disabled) || false;
+ if ($attrs.ngDisabled) {
+ watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {
+ $scope.disabled = disabled;
+ }));
+ }
+
+ $scope.$watch('isOpen', function(value) {
+ if (value) {
+ if (!$scope.disabled) {
+ $timeout(function() {
+ positionPopup();
+
+ if (onOpenFocus) {
+ $scope.$broadcast('uib:datepicker.focus');
+ }
+
+ $document.on('click', documentClickBind);
+
+ var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;
+ if (appendToBody || $position.parsePlacement(placement)[2]) {
+ scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));
+ if (scrollParentEl) {
+ scrollParentEl.on('scroll', positionPopup);
+ }
+ } else {
+ scrollParentEl = null;
+ }
+
+ angular.element($window).on('resize', positionPopup);
+ }, 0, false);
+ } else {
+ $scope.isOpen = false;
+ }
+ } else {
+ $document.off('click', documentClickBind);
+ if (scrollParentEl) {
+ scrollParentEl.off('scroll', positionPopup);
+ }
+ angular.element($window).off('resize', positionPopup);
+ }
+ });
+
+ function cameltoDash(string) {
+ return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });
+ }
+
+ function parseDateString(viewValue) {
+ var date = dateParser.parse(viewValue, dateFormat, $scope.date);
+ if (isNaN(date)) {
+ for (var i = 0; i < altInputFormats.length; i++) {
+ date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);
+ if (!isNaN(date)) {
+ return date;
+ }
+ }
+ }
+ return date;
+ }
+
+ function parseDate(viewValue) {
+ if (angular.isNumber(viewValue)) {
+ // presumably timestamp to date object
+ viewValue = new Date(viewValue);
+ }
+
+ if (!viewValue) {
+ return null;
+ }
+
+ if (angular.isDate(viewValue) && !isNaN(viewValue)) {
+ return viewValue;
+ }
+
+ if (angular.isString(viewValue)) {
+ var date = parseDateString(viewValue);
+ if (!isNaN(date)) {
+ return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));
+ }
+ }
+
+ return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;
+ }
+
+ function validator(modelValue, viewValue) {
+ var value = modelValue || viewValue;
+
+ if (!$attrs.ngRequired && !value) {
+ return true;
+ }
+
+ if (angular.isNumber(value)) {
+ value = new Date(value);
+ }
+
+ if (!value) {
+ return true;
+ }
+
+ if (angular.isDate(value) && !isNaN(value)) {
+ return true;
+ }
+
+ if (angular.isString(value)) {
+ return !isNaN(parseDateString(value));
+ }
+
+ return false;
+ }
+
+ function documentClickBind(event) {
+ if (!$scope.isOpen && $scope.disabled) {
+ return;
+ }
+
+ var popup = $popup[0];
+ var dpContainsTarget = $element[0].contains(event.target);
+ // The popup node may not be an element node
+ // In some browsers (IE) only element nodes have the 'contains' function
+ var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);
+ if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {
+ $scope.$apply(function() {
+ $scope.isOpen = false;
+ });
+ }
+ }
+
+ function inputKeydownBind(evt) {
+ if (evt.which === 27 && $scope.isOpen) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $scope.$apply(function() {
+ $scope.isOpen = false;
+ });
+ $element[0].focus();
+ } else if (evt.which === 40 && !$scope.isOpen) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $scope.$apply(function() {
+ $scope.isOpen = true;
+ });
+ }
+ }
+
+ function positionPopup() {
+ if ($scope.isOpen) {
+ var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));
+ var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;
+ var position = $position.positionElements($element, dpElement, placement, appendToBody);
+ dpElement.css({top: position.top + 'px', left: position.left + 'px'});
+ if (dpElement.hasClass('uib-position-measure')) {
+ dpElement.removeClass('uib-position-measure');
+ }
+ }
+ }
+
+ function extractOptions(ngModelCtrl) {
+ var ngModelOptions;
+
+ if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing
+ // guarantee a value
+ ngModelOptions = angular.isObject(ngModelCtrl.$options) ?
+ ngModelCtrl.$options :
+ {
+ timezone: null
+ };
+
+ // mimic 1.6+ api
+ ngModelOptions.getOption = function (key) {
+ return ngModelOptions[key];
+ };
+ } else { // in angular >=1.6 $options is always present
+ ngModelOptions = ngModelCtrl.$options;
+ }
+
+ return ngModelOptions;
+ }
+
+ $scope.$on('uib:datepicker.mode', function() {
+ $timeout(positionPopup, 0, false);
+ });
+}])
+
+.directive('uibDatepickerPopup', function() {
+ return {
+ require: ['ngModel', 'uibDatepickerPopup'],
+ controller: 'UibDatepickerPopupController',
+ scope: {
+ datepickerOptions: '=?',
+ isOpen: '=?',
+ currentText: '@',
+ clearText: '@',
+ closeText: '@'
+ },
+ link: function(scope, element, attrs, ctrls) {
+ var ngModel = ctrls[0],
+ ctrl = ctrls[1];
+
+ ctrl.init(ngModel);
+ }
+ };
+})
+
+.directive('uibDatepickerPopupWrap', function() {
+ return {
+ restrict: 'A',
+ transclude: true,
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';
+ }
+ };
+});
+
+angular.module('ui.bootstrap.debounce', [])
+/**
+ * A helper, internal service that debounces a function
+ */
+ .factory('$$debounce', ['$timeout', function($timeout) {
+ return function(callback, debounceTime) {
+ var timeoutPromise;
+
+ return function() {
+ var self = this;
+ var args = Array.prototype.slice.call(arguments);
+ if (timeoutPromise) {
+ $timeout.cancel(timeoutPromise);
+ }
+
+ timeoutPromise = $timeout(function() {
+ callback.apply(self, args);
+ }, debounceTime);
+ };
+ };
+ }]);
+
+angular.module('ui.bootstrap.multiMap', [])
+/**
+ * A helper, internal data structure that stores all references attached to key
+ */
+ .factory('$$multiMap', function() {
+ return {
+ createNew: function() {
+ var map = {};
+
+ return {
+ entries: function() {
+ return Object.keys(map).map(function(key) {
+ return {
+ key: key,
+ value: map[key]
+ };
+ });
+ },
+ get: function(key) {
+ return map[key];
+ },
+ hasKey: function(key) {
+ return !!map[key];
+ },
+ keys: function() {
+ return Object.keys(map);
+ },
+ put: function(key, value) {
+ if (!map[key]) {
+ map[key] = [];
+ }
+
+ map[key].push(value);
+ },
+ remove: function(key, value) {
+ var values = map[key];
+
+ if (!values) {
+ return;
+ }
+
+ var idx = values.indexOf(value);
+
+ if (idx !== -1) {
+ values.splice(idx, 1);
+ }
+
+ if (!values.length) {
+ delete map[key];
+ }
+ }
+ };
+ }
+ };
+ });
+
+angular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])
+
+.constant('uibDropdownConfig', {
+ appendToOpenClass: 'uib-dropdown-open',
+ openClass: 'open'
+})
+
+.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {
+ var openScope = null;
+ var openedContainers = $$multiMap.createNew();
+
+ this.isOnlyOpen = function(dropdownScope, appendTo) {
+ var openedDropdowns = openedContainers.get(appendTo);
+ if (openedDropdowns) {
+ var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {
+ if (dropdown.scope === dropdownScope) {
+ return dropdown;
+ }
+
+ return toClose;
+ }, {});
+ if (openDropdown) {
+ return openedDropdowns.length === 1;
+ }
+ }
+
+ return false;
+ };
+
+ this.open = function(dropdownScope, element, appendTo) {
+ if (!openScope) {
+ $document.on('click', closeDropdown);
+ }
+
+ if (openScope && openScope !== dropdownScope) {
+ openScope.isOpen = false;
+ }
+
+ openScope = dropdownScope;
+
+ if (!appendTo) {
+ return;
+ }
+
+ var openedDropdowns = openedContainers.get(appendTo);
+ if (openedDropdowns) {
+ var openedScopes = openedDropdowns.map(function(dropdown) {
+ return dropdown.scope;
+ });
+ if (openedScopes.indexOf(dropdownScope) === -1) {
+ openedContainers.put(appendTo, {
+ scope: dropdownScope
+ });
+ }
+ } else {
+ openedContainers.put(appendTo, {
+ scope: dropdownScope
+ });
+ }
+ };
+
+ this.close = function(dropdownScope, element, appendTo) {
+ if (openScope === dropdownScope) {
+ $document.off('click', closeDropdown);
+ $document.off('keydown', this.keybindFilter);
+ openScope = null;
+ }
+
+ if (!appendTo) {
+ return;
+ }
+
+ var openedDropdowns = openedContainers.get(appendTo);
+ if (openedDropdowns) {
+ var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {
+ if (dropdown.scope === dropdownScope) {
+ return dropdown;
+ }
+
+ return toClose;
+ }, {});
+ if (dropdownToClose) {
+ openedContainers.remove(appendTo, dropdownToClose);
+ }
+ }
+ };
+
+ var closeDropdown = function(evt) {
+ // This method may still be called during the same mouse event that
+ // unbound this event handler. So check openScope before proceeding.
+ if (!openScope || !openScope.isOpen) { return; }
+
+ if (evt && openScope.getAutoClose() === 'disabled') { return; }
+
+ if (evt && evt.which === 3) { return; }
+
+ var toggleElement = openScope.getToggleElement();
+ if (evt && toggleElement && toggleElement[0].contains(evt.target)) {
+ return;
+ }
+
+ var dropdownElement = openScope.getDropdownElement();
+ if (evt && openScope.getAutoClose() === 'outsideClick' &&
+ dropdownElement && dropdownElement[0].contains(evt.target)) {
+ return;
+ }
+
+ openScope.focusToggleElement();
+ openScope.isOpen = false;
+
+ if (!$rootScope.$$phase) {
+ openScope.$apply();
+ }
+ };
+
+ this.keybindFilter = function(evt) {
+ if (!openScope) {
+ // see this.close as ESC could have been pressed which kills the scope so we can not proceed
+ return;
+ }
+
+ var dropdownElement = openScope.getDropdownElement();
+ var toggleElement = openScope.getToggleElement();
+ var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);
+ var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);
+ if (evt.which === 27) {
+ evt.stopPropagation();
+ openScope.focusToggleElement();
+ closeDropdown();
+ } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ openScope.focusDropdownEntry(evt.which);
+ }
+ };
+}])
+
+.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {
+ var self = this,
+ scope = $scope.$new(), // create a child scope so we are not polluting original one
+ templateScope,
+ appendToOpenClass = dropdownConfig.appendToOpenClass,
+ openClass = dropdownConfig.openClass,
+ getIsOpen,
+ setIsOpen = angular.noop,
+ toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,
+ keynavEnabled = false,
+ selectedOption = null,
+ body = $document.find('body');
+
+ $element.addClass('dropdown');
+
+ this.init = function() {
+ if ($attrs.isOpen) {
+ getIsOpen = $parse($attrs.isOpen);
+ setIsOpen = getIsOpen.assign;
+
+ $scope.$watch(getIsOpen, function(value) {
+ scope.isOpen = !!value;
+ });
+ }
+
+ keynavEnabled = angular.isDefined($attrs.keyboardNav);
+ };
+
+ this.toggle = function(open) {
+ scope.isOpen = arguments.length ? !!open : !scope.isOpen;
+ if (angular.isFunction(setIsOpen)) {
+ setIsOpen(scope, scope.isOpen);
+ }
+
+ return scope.isOpen;
+ };
+
+ // Allow other directives to watch status
+ this.isOpen = function() {
+ return scope.isOpen;
+ };
+
+ scope.getToggleElement = function() {
+ return self.toggleElement;
+ };
+
+ scope.getAutoClose = function() {
+ return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'
+ };
+
+ scope.getElement = function() {
+ return $element;
+ };
+
+ scope.isKeynavEnabled = function() {
+ return keynavEnabled;
+ };
+
+ scope.focusDropdownEntry = function(keyCode) {
+ var elems = self.dropdownMenu ? //If append to body is used.
+ angular.element(self.dropdownMenu).find('a') :
+ $element.find('ul').eq(0).find('a');
+
+ switch (keyCode) {
+ case 40: {
+ if (!angular.isNumber(self.selectedOption)) {
+ self.selectedOption = 0;
+ } else {
+ self.selectedOption = self.selectedOption === elems.length - 1 ?
+ self.selectedOption :
+ self.selectedOption + 1;
+ }
+ break;
+ }
+ case 38: {
+ if (!angular.isNumber(self.selectedOption)) {
+ self.selectedOption = elems.length - 1;
+ } else {
+ self.selectedOption = self.selectedOption === 0 ?
+ 0 : self.selectedOption - 1;
+ }
+ break;
+ }
+ }
+ elems[self.selectedOption].focus();
+ };
+
+ scope.getDropdownElement = function() {
+ return self.dropdownMenu;
+ };
+
+ scope.focusToggleElement = function() {
+ if (self.toggleElement) {
+ self.toggleElement[0].focus();
+ }
+ };
+
+ function removeDropdownMenu() {
+ $element.append(self.dropdownMenu);
+ }
+
+ scope.$watch('isOpen', function(isOpen, wasOpen) {
+ var appendTo = null,
+ appendToBody = false;
+
+ if (angular.isDefined($attrs.dropdownAppendTo)) {
+ var appendToEl = $parse($attrs.dropdownAppendTo)(scope);
+ if (appendToEl) {
+ appendTo = angular.element(appendToEl);
+ }
+ }
+
+ if (angular.isDefined($attrs.dropdownAppendToBody)) {
+ var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);
+ if (appendToBodyValue !== false) {
+ appendToBody = true;
+ }
+ }
+
+ if (appendToBody && !appendTo) {
+ appendTo = body;
+ }
+
+ if (appendTo && self.dropdownMenu) {
+ if (isOpen) {
+ appendTo.append(self.dropdownMenu);
+ $element.on('$destroy', removeDropdownMenu);
+ } else {
+ $element.off('$destroy', removeDropdownMenu);
+ removeDropdownMenu();
+ }
+ }
+
+ if (appendTo && self.dropdownMenu) {
+ var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),
+ css,
+ rightalign,
+ scrollbarPadding,
+ scrollbarWidth = 0;
+
+ css = {
+ top: pos.top + 'px',
+ display: isOpen ? 'block' : 'none'
+ };
+
+ rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');
+ if (!rightalign) {
+ css.left = pos.left + 'px';
+ css.right = 'auto';
+ } else {
+ css.left = 'auto';
+ scrollbarPadding = $position.scrollbarPadding(appendTo);
+
+ if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {
+ scrollbarWidth = scrollbarPadding.scrollbarWidth;
+ }
+
+ css.right = window.innerWidth - scrollbarWidth -
+ (pos.left + $element.prop('offsetWidth')) + 'px';
+ }
+
+ // Need to adjust our positioning to be relative to the appendTo container
+ // if it's not the body element
+ if (!appendToBody) {
+ var appendOffset = $position.offset(appendTo);
+
+ css.top = pos.top - appendOffset.top + 'px';
+
+ if (!rightalign) {
+ css.left = pos.left - appendOffset.left + 'px';
+ } else {
+ css.right = window.innerWidth -
+ (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';
+ }
+ }
+
+ self.dropdownMenu.css(css);
+ }
+
+ var openContainer = appendTo ? appendTo : $element;
+ var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;
+ var hasOpenClass = openContainer.hasClass(dropdownOpenClass);
+ var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);
+
+ if (hasOpenClass === !isOpen) {
+ var toggleClass;
+ if (appendTo) {
+ toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';
+ } else {
+ toggleClass = isOpen ? 'addClass' : 'removeClass';
+ }
+ $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {
+ if (angular.isDefined(isOpen) && isOpen !== wasOpen) {
+ toggleInvoker($scope, { open: !!isOpen });
+ }
+ });
+ }
+
+ if (isOpen) {
+ if (self.dropdownMenuTemplateUrl) {
+ $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {
+ templateScope = scope.$new();
+ $compile(tplContent.trim())(templateScope, function(dropdownElement) {
+ var newEl = dropdownElement;
+ self.dropdownMenu.replaceWith(newEl);
+ self.dropdownMenu = newEl;
+ $document.on('keydown', uibDropdownService.keybindFilter);
+ });
+ });
+ } else {
+ $document.on('keydown', uibDropdownService.keybindFilter);
+ }
+
+ scope.focusToggleElement();
+ uibDropdownService.open(scope, $element, appendTo);
+ } else {
+ uibDropdownService.close(scope, $element, appendTo);
+ if (self.dropdownMenuTemplateUrl) {
+ if (templateScope) {
+ templateScope.$destroy();
+ }
+ var newEl = angular.element('<ul class="dropdown-menu"></ul>');
+ self.dropdownMenu.replaceWith(newEl);
+ self.dropdownMenu = newEl;
+ }
+
+ self.selectedOption = null;
+ }
+
+ if (angular.isFunction(setIsOpen)) {
+ setIsOpen($scope, isOpen);
+ }
+ });
+}])
+
+.directive('uibDropdown', function() {
+ return {
+ controller: 'UibDropdownController',
+ link: function(scope, element, attrs, dropdownCtrl) {
+ dropdownCtrl.init();
+ }
+ };
+})
+
+.directive('uibDropdownMenu', function() {
+ return {
+ restrict: 'A',
+ require: '?^uibDropdown',
+ link: function(scope, element, attrs, dropdownCtrl) {
+ if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {
+ return;
+ }
+
+ element.addClass('dropdown-menu');
+
+ var tplUrl = attrs.templateUrl;
+ if (tplUrl) {
+ dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;
+ }
+
+ if (!dropdownCtrl.dropdownMenu) {
+ dropdownCtrl.dropdownMenu = element;
+ }
+ }
+ };
+})
+
+.directive('uibDropdownToggle', function() {
+ return {
+ require: '?^uibDropdown',
+ link: function(scope, element, attrs, dropdownCtrl) {
+ if (!dropdownCtrl) {
+ return;
+ }
+
+ element.addClass('dropdown-toggle');
+
+ dropdownCtrl.toggleElement = element;
+
+ var toggleDropdown = function(event) {
+ event.preventDefault();
+
+ if (!element.hasClass('disabled') && !attrs.disabled) {
+ scope.$apply(function() {
+ dropdownCtrl.toggle();
+ });
+ }
+ };
+
+ element.on('click', toggleDropdown);
+
+ // WAI-ARIA
+ element.attr({ 'aria-haspopup': true, 'aria-expanded': false });
+ scope.$watch(dropdownCtrl.isOpen, function(isOpen) {
+ element.attr('aria-expanded', !!isOpen);
+ });
+
+ scope.$on('$destroy', function() {
+ element.off('click', toggleDropdown);
+ });
+ }
+ };
+});
+
+angular.module('ui.bootstrap.stackedMap', [])
+/**
+ * A helper, internal data structure that acts as a map but also allows getting / removing
+ * elements in the LIFO order
+ */
+ .factory('$$stackedMap', function() {
+ return {
+ createNew: function() {
+ var stack = [];
+
+ return {
+ add: function(key, value) {
+ stack.push({
+ key: key,
+ value: value
+ });
+ },
+ get: function(key) {
+ for (var i = 0; i < stack.length; i++) {
+ if (key === stack[i].key) {
+ return stack[i];
+ }
+ }
+ },
+ keys: function() {
+ var keys = [];
+ for (var i = 0; i < stack.length; i++) {
+ keys.push(stack[i].key);
+ }
+ return keys;
+ },
+ top: function() {
+ return stack[stack.length - 1];
+ },
+ remove: function(key) {
+ var idx = -1;
+ for (var i = 0; i < stack.length; i++) {
+ if (key === stack[i].key) {
+ idx = i;
+ break;
+ }
+ }
+ return stack.splice(idx, 1)[0];
+ },
+ removeTop: function() {
+ return stack.pop();
+ },
+ length: function() {
+ return stack.length;
+ }
+ };
+ }
+ };
+ });
+angular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])
+/**
+ * Pluggable resolve mechanism for the modal resolve resolution
+ * Supports UI Router's $resolve service
+ */
+ .provider('$uibResolve', function() {
+ var resolve = this;
+ this.resolver = null;
+
+ this.setResolver = function(resolver) {
+ this.resolver = resolver;
+ };
+
+ this.$get = ['$injector', '$q', function($injector, $q) {
+ var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;
+ return {
+ resolve: function(invocables, locals, parent, self) {
+ if (resolver) {
+ return resolver.resolve(invocables, locals, parent, self);
+ }
+
+ var promises = [];
+
+ angular.forEach(invocables, function(value) {
+ if (angular.isFunction(value) || angular.isArray(value)) {
+ promises.push($q.resolve($injector.invoke(value)));
+ } else if (angular.isString(value)) {
+ promises.push($q.resolve($injector.get(value)));
+ } else {
+ promises.push($q.resolve(value));
+ }
+ });
+
+ return $q.all(promises).then(function(resolves) {
+ var resolveObj = {};
+ var resolveIter = 0;
+ angular.forEach(invocables, function(value, key) {
+ resolveObj[key] = resolves[resolveIter++];
+ });
+
+ return resolveObj;
+ });
+ }
+ };
+ }];
+ })
+
+/**
+ * A helper directive for the $modal service. It creates a backdrop element.
+ */
+ .directive('uibModalBackdrop', ['$animate', '$injector', '$uibModalStack',
+ function($animate, $injector, $modalStack) {
+ return {
+ restrict: 'A',
+ compile: function(tElement, tAttrs) {
+ tElement.addClass(tAttrs.backdropClass);
+ return linkFn;
+ }
+ };
+
+ function linkFn(scope, element, attrs) {
+ if (attrs.modalInClass) {
+ $animate.addClass(element, attrs.modalInClass);
+
+ scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {
+ var done = setIsAsync();
+ if (scope.modalOptions.animation) {
+ $animate.removeClass(element, attrs.modalInClass).then(done);
+ } else {
+ done();
+ }
+ });
+ }
+ }
+ }])
+
+ .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',
+ function($modalStack, $q, $animateCss, $document) {
+ return {
+ scope: {
+ index: '@'
+ },
+ restrict: 'A',
+ transclude: true,
+ templateUrl: function(tElement, tAttrs) {
+ return tAttrs.templateUrl || 'uib/template/modal/window.html';
+ },
+ link: function(scope, element, attrs) {
+ element.addClass(attrs.windowTopClass || '');
+ scope.size = attrs.size;
+
+ scope.close = function(evt) {
+ var modal = $modalStack.getTop();
+ if (modal && modal.value.backdrop &&
+ modal.value.backdrop !== 'static' &&
+ evt.target === evt.currentTarget) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $modalStack.dismiss(modal.key, 'backdrop click');
+ }
+ };
+
+ // moved from template to fix issue #2280
+ element.on('click', scope.close);
+
+ // This property is only added to the scope for the purpose of detecting when this directive is rendered.
+ // We can detect that by using this property in the template associated with this directive and then use
+ // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.
+ scope.$isRendered = true;
+
+ // Deferred object that will be resolved when this modal is rendered.
+ var modalRenderDeferObj = $q.defer();
+ // Resolve render promise post-digest
+ scope.$$postDigest(function() {
+ modalRenderDeferObj.resolve();
+ });
+
+ modalRenderDeferObj.promise.then(function() {
+ var animationPromise = null;
+
+ if (attrs.modalInClass) {
+ animationPromise = $animateCss(element, {
+ addClass: attrs.modalInClass
+ }).start();
+
+ scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {
+ var done = setIsAsync();
+ $animateCss(element, {
+ removeClass: attrs.modalInClass
+ }).start().then(done);
+ });
+ }
+
+
+ $q.when(animationPromise).then(function() {
+ // Notify {@link $modalStack} that modal is rendered.
+ var modal = $modalStack.getTop();
+ if (modal) {
+ $modalStack.modalRendered(modal.key);
+ }
+
+ /**
+ * If something within the freshly-opened modal already has focus (perhaps via a
+ * directive that causes focus) then there's no need to try to focus anything.
+ */
+ if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {
+ var inputWithAutofocus = element[0].querySelector('[autofocus]');
+ /**
+ * Auto-focusing of a freshly-opened modal element causes any child elements
+ * with the autofocus attribute to lose focus. This is an issue on touch
+ * based devices which will show and then hide the onscreen keyboard.
+ * Attempts to refocus the autofocus element via JavaScript will not reopen
+ * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus
+ * the modal element if the modal does not contain an autofocus element.
+ */
+ if (inputWithAutofocus) {
+ inputWithAutofocus.focus();
+ } else {
+ element[0].focus();
+ }
+ }
+ });
+ });
+ }
+ };
+ }])
+
+ .directive('uibModalAnimationClass', function() {
+ return {
+ compile: function(tElement, tAttrs) {
+ if (tAttrs.modalAnimation) {
+ tElement.addClass(tAttrs.uibModalAnimationClass);
+ }
+ }
+ };
+ })
+
+ .directive('uibModalTransclude', ['$animate', function($animate) {
+ return {
+ link: function(scope, element, attrs, controller, transclude) {
+ transclude(scope.$parent, function(clone) {
+ element.empty();
+ $animate.enter(clone, element);
+ });
+ }
+ };
+ }])
+
+ .factory('$uibModalStack', ['$animate', '$animateCss', '$document',
+ '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',
+ function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {
+ var OPENED_MODAL_CLASS = 'modal-open';
+
+ var backdropDomEl, backdropScope;
+ var openedWindows = $$stackedMap.createNew();
+ var openedClasses = $$multiMap.createNew();
+ var $modalStack = {
+ NOW_CLOSING_EVENT: 'modal.stack.now-closing'
+ };
+ var topModalIndex = 0;
+ var previousTopOpenedModal = null;
+ var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';
+
+ //Modal focus behavior
+ var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\'-1\']), ' +
+ 'button:not([disabled]):not([tabindex=\'-1\']),select:not([disabled]):not([tabindex=\'-1\']), textarea:not([disabled]):not([tabindex=\'-1\']), ' +
+ 'iframe, object, embed, *[tabindex]:not([tabindex=\'-1\']), *[contenteditable=true]';
+ var scrollbarPadding;
+ var SNAKE_CASE_REGEXP = /[A-Z]/g;
+
+ // TODO: extract into common dependency with tooltip
+ function snake_case(name) {
+ var separator = '-';
+ return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {
+ return (pos ? separator : '') + letter.toLowerCase();
+ });
+ }
+
+ function isVisible(element) {
+ return !!(element.offsetWidth ||
+ element.offsetHeight ||
+ element.getClientRects().length);
+ }
+
+ function backdropIndex() {
+ var topBackdropIndex = -1;
+ var opened = openedWindows.keys();
+ for (var i = 0; i < opened.length; i++) {
+ if (openedWindows.get(opened[i]).value.backdrop) {
+ topBackdropIndex = i;
+ }
+ }
+
+ // If any backdrop exist, ensure that it's index is always
+ // right below the top modal
+ if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {
+ topBackdropIndex = topModalIndex;
+ }
+ return topBackdropIndex;
+ }
+
+ $rootScope.$watch(backdropIndex, function(newBackdropIndex) {
+ if (backdropScope) {
+ backdropScope.index = newBackdropIndex;
+ }
+ });
+
+ function removeModalWindow(modalInstance, elementToReceiveFocus) {
+ var modalWindow = openedWindows.get(modalInstance).value;
+ var appendToElement = modalWindow.appendTo;
+
+ //clean up the stack
+ openedWindows.remove(modalInstance);
+ previousTopOpenedModal = openedWindows.top();
+ if (previousTopOpenedModal) {
+ topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);
+ }
+
+ removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {
+ var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;
+ openedClasses.remove(modalBodyClass, modalInstance);
+ var areAnyOpen = openedClasses.hasKey(modalBodyClass);
+ appendToElement.toggleClass(modalBodyClass, areAnyOpen);
+ if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {
+ if (scrollbarPadding.originalRight) {
+ appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});
+ } else {
+ appendToElement.css({paddingRight: ''});
+ }
+ scrollbarPadding = null;
+ }
+ toggleTopWindowClass(true);
+ }, modalWindow.closedDeferred);
+ checkRemoveBackdrop();
+
+ //move focus to specified element if available, or else to body
+ if (elementToReceiveFocus && elementToReceiveFocus.focus) {
+ elementToReceiveFocus.focus();
+ } else if (appendToElement.focus) {
+ appendToElement.focus();
+ }
+ }
+
+ // Add or remove "windowTopClass" from the top window in the stack
+ function toggleTopWindowClass(toggleSwitch) {
+ var modalWindow;
+
+ if (openedWindows.length() > 0) {
+ modalWindow = openedWindows.top().value;
+ modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);
+ }
+ }
+
+ function checkRemoveBackdrop() {
+ //remove backdrop if no longer needed
+ if (backdropDomEl && backdropIndex() === -1) {
+ var backdropScopeRef = backdropScope;
+ removeAfterAnimate(backdropDomEl, backdropScope, function() {
+ backdropScopeRef = null;
+ });
+ backdropDomEl = undefined;
+ backdropScope = undefined;
+ }
+ }
+
+ function removeAfterAnimate(domEl, scope, done, closedDeferred) {
+ var asyncDeferred;
+ var asyncPromise = null;
+ var setIsAsync = function() {
+ if (!asyncDeferred) {
+ asyncDeferred = $q.defer();
+ asyncPromise = asyncDeferred.promise;
+ }
+
+ return function asyncDone() {
+ asyncDeferred.resolve();
+ };
+ };
+ scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);
+
+ // Note that it's intentional that asyncPromise might be null.
+ // That's when setIsAsync has not been called during the
+ // NOW_CLOSING_EVENT broadcast.
+ return $q.when(asyncPromise).then(afterAnimating);
+
+ function afterAnimating() {
+ if (afterAnimating.done) {
+ return;
+ }
+ afterAnimating.done = true;
+
+ $animate.leave(domEl).then(function() {
+ if (done) {
+ done();
+ }
+
+ domEl.remove();
+ if (closedDeferred) {
+ closedDeferred.resolve();
+ }
+ });
+
+ scope.$destroy();
+ }
+ }
+
+ $document.on('keydown', keydownListener);
+
+ $rootScope.$on('$destroy', function() {
+ $document.off('keydown', keydownListener);
+ });
+
+ function keydownListener(evt) {
+ if (evt.isDefaultPrevented()) {
+ return evt;
+ }
+
+ var modal = openedWindows.top();
+ if (modal) {
+ switch (evt.which) {
+ case 27: {
+ if (modal.value.keyboard) {
+ evt.preventDefault();
+ $rootScope.$apply(function() {
+ $modalStack.dismiss(modal.key, 'escape key press');
+ });
+ }
+ break;
+ }
+ case 9: {
+ var list = $modalStack.loadFocusElementList(modal);
+ var focusChanged = false;
+ if (evt.shiftKey) {
+ if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {
+ focusChanged = $modalStack.focusLastFocusableElement(list);
+ }
+ } else {
+ if ($modalStack.isFocusInLastItem(evt, list)) {
+ focusChanged = $modalStack.focusFirstFocusableElement(list);
+ }
+ }
+
+ if (focusChanged) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ }
+
+ break;
+ }
+ }
+ }
+ }
+
+ $modalStack.open = function(modalInstance, modal) {
+ var modalOpener = $document[0].activeElement,
+ modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;
+
+ toggleTopWindowClass(false);
+
+ // Store the current top first, to determine what index we ought to use
+ // for the current top modal
+ previousTopOpenedModal = openedWindows.top();
+
+ openedWindows.add(modalInstance, {
+ deferred: modal.deferred,
+ renderDeferred: modal.renderDeferred,
+ closedDeferred: modal.closedDeferred,
+ modalScope: modal.scope,
+ backdrop: modal.backdrop,
+ keyboard: modal.keyboard,
+ openedClass: modal.openedClass,
+ windowTopClass: modal.windowTopClass,
+ animation: modal.animation,
+ appendTo: modal.appendTo
+ });
+
+ openedClasses.put(modalBodyClass, modalInstance);
+
+ var appendToElement = modal.appendTo,
+ currBackdropIndex = backdropIndex();
+
+ if (currBackdropIndex >= 0 && !backdropDomEl) {
+ backdropScope = $rootScope.$new(true);
+ backdropScope.modalOptions = modal;
+ backdropScope.index = currBackdropIndex;
+ backdropDomEl = angular.element('<div uib-modal-backdrop="modal-backdrop"></div>');
+ backdropDomEl.attr({
+ 'class': 'modal-backdrop',
+ 'ng-style': '{\'z-index\': 1040 + (index && 1 || 0) + index*10}',
+ 'uib-modal-animation-class': 'fade',
+ 'modal-in-class': 'in'
+ });
+ if (modal.backdropClass) {
+ backdropDomEl.addClass(modal.backdropClass);
+ }
+
+ if (modal.animation) {
+ backdropDomEl.attr('modal-animation', 'true');
+ }
+ $compile(backdropDomEl)(backdropScope);
+ $animate.enter(backdropDomEl, appendToElement);
+ if ($uibPosition.isScrollable(appendToElement)) {
+ scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);
+ if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {
+ appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});
+ }
+ }
+ }
+
+ var content;
+ if (modal.component) {
+ content = document.createElement(snake_case(modal.component.name));
+ content = angular.element(content);
+ content.attr({
+ resolve: '$resolve',
+ 'modal-instance': '$uibModalInstance',
+ close: '$close($value)',
+ dismiss: '$dismiss($value)'
+ });
+ } else {
+ content = modal.content;
+ }
+
+ // Set the top modal index based on the index of the previous top modal
+ topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;
+ var angularDomEl = angular.element('<div uib-modal-window="modal-window"></div>');
+ angularDomEl.attr({
+ 'class': 'modal',
+ 'template-url': modal.windowTemplateUrl,
+ 'window-top-class': modal.windowTopClass,
+ 'role': 'dialog',
+ 'aria-labelledby': modal.ariaLabelledBy,
+ 'aria-describedby': modal.ariaDescribedBy,
+ 'size': modal.size,
+ 'index': topModalIndex,
+ 'animate': 'animate',
+ 'ng-style': '{\'z-index\': 1050 + $$topModalIndex*10, display: \'block\'}',
+ 'tabindex': -1,
+ 'uib-modal-animation-class': 'fade',
+ 'modal-in-class': 'in'
+ }).append(content);
+ if (modal.windowClass) {
+ angularDomEl.addClass(modal.windowClass);
+ }
+
+ if (modal.animation) {
+ angularDomEl.attr('modal-animation', 'true');
+ }
+
+ appendToElement.addClass(modalBodyClass);
+ if (modal.scope) {
+ // we need to explicitly add the modal index to the modal scope
+ // because it is needed by ngStyle to compute the zIndex property.
+ modal.scope.$$topModalIndex = topModalIndex;
+ }
+ $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);
+
+ openedWindows.top().value.modalDomEl = angularDomEl;
+ openedWindows.top().value.modalOpener = modalOpener;
+
+ applyAriaHidden(angularDomEl);
+
+ function applyAriaHidden(el) {
+ if (!el || el[0].tagName === 'BODY') {
+ return;
+ }
+
+ getSiblings(el).forEach(function(sibling) {
+ var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',
+ ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);
+
+ if (!ariaHiddenCount) {
+ ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;
+ }
+
+ sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);
+ sibling.setAttribute('aria-hidden', 'true');
+ });
+
+ return applyAriaHidden(el.parent());
+
+ function getSiblings(el) {
+ var children = el.parent() ? el.parent().children() : [];
+
+ return Array.prototype.filter.call(children, function(child) {
+ return child !== el[0];
+ });
+ }
+ }
+ };
+
+ function broadcastClosing(modalWindow, resultOrReason, closing) {
+ return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;
+ }
+
+ function unhideBackgroundElements() {
+ Array.prototype.forEach.call(
+ document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),
+ function(hiddenEl) {
+ var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),
+ newHiddenCount = ariaHiddenCount - 1;
+ hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);
+
+ if (!newHiddenCount) {
+ hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);
+ hiddenEl.removeAttribute('aria-hidden');
+ }
+ }
+ );
+ }
+
+ $modalStack.close = function(modalInstance, result) {
+ var modalWindow = openedWindows.get(modalInstance);
+ unhideBackgroundElements();
+ if (modalWindow && broadcastClosing(modalWindow, result, true)) {
+ modalWindow.value.modalScope.$$uibDestructionScheduled = true;
+ modalWindow.value.deferred.resolve(result);
+ removeModalWindow(modalInstance, modalWindow.value.modalOpener);
+ return true;
+ }
+
+ return !modalWindow;
+ };
+
+ $modalStack.dismiss = function(modalInstance, reason) {
+ var modalWindow = openedWindows.get(modalInstance);
+ unhideBackgroundElements();
+ if (modalWindow && broadcastClosing(modalWindow, reason, false)) {
+ modalWindow.value.modalScope.$$uibDestructionScheduled = true;
+ modalWindow.value.deferred.reject(reason);
+ removeModalWindow(modalInstance, modalWindow.value.modalOpener);
+ return true;
+ }
+ return !modalWindow;
+ };
+
+ $modalStack.dismissAll = function(reason) {
+ var topModal = this.getTop();
+ while (topModal && this.dismiss(topModal.key, reason)) {
+ topModal = this.getTop();
+ }
+ };
+
+ $modalStack.getTop = function() {
+ return openedWindows.top();
+ };
+
+ $modalStack.modalRendered = function(modalInstance) {
+ var modalWindow = openedWindows.get(modalInstance);
+ if (modalWindow) {
+ modalWindow.value.renderDeferred.resolve();
+ }
+ };
+
+ $modalStack.focusFirstFocusableElement = function(list) {
+ if (list.length > 0) {
+ list[0].focus();
+ return true;
+ }
+ return false;
+ };
+
+ $modalStack.focusLastFocusableElement = function(list) {
+ if (list.length > 0) {
+ list[list.length - 1].focus();
+ return true;
+ }
+ return false;
+ };
+
+ $modalStack.isModalFocused = function(evt, modalWindow) {
+ if (evt && modalWindow) {
+ var modalDomEl = modalWindow.value.modalDomEl;
+ if (modalDomEl && modalDomEl.length) {
+ return (evt.target || evt.srcElement) === modalDomEl[0];
+ }
+ }
+ return false;
+ };
+
+ $modalStack.isFocusInFirstItem = function(evt, list) {
+ if (list.length > 0) {
+ return (evt.target || evt.srcElement) === list[0];
+ }
+ return false;
+ };
+
+ $modalStack.isFocusInLastItem = function(evt, list) {
+ if (list.length > 0) {
+ return (evt.target || evt.srcElement) === list[list.length - 1];
+ }
+ return false;
+ };
+
+ $modalStack.loadFocusElementList = function(modalWindow) {
+ if (modalWindow) {
+ var modalDomE1 = modalWindow.value.modalDomEl;
+ if (modalDomE1 && modalDomE1.length) {
+ var elements = modalDomE1[0].querySelectorAll(tabbableSelector);
+ return elements ?
+ Array.prototype.filter.call(elements, function(element) {
+ return isVisible(element);
+ }) : elements;
+ }
+ }
+ };
+
+ return $modalStack;
+ }])
+
+ .provider('$uibModal', function() {
+ var $modalProvider = {
+ options: {
+ animation: true,
+ backdrop: true, //can also be false or 'static'
+ keyboard: true
+ },
+ $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',
+ function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {
+ var $modal = {};
+
+ function getTemplatePromise(options) {
+ return options.template ? $q.when(options.template) :
+ $templateRequest(angular.isFunction(options.templateUrl) ?
+ options.templateUrl() : options.templateUrl);
+ }
+
+ var promiseChain = null;
+ $modal.getPromiseChain = function() {
+ return promiseChain;
+ };
+
+ $modal.open = function(modalOptions) {
+ var modalResultDeferred = $q.defer();
+ var modalOpenedDeferred = $q.defer();
+ var modalClosedDeferred = $q.defer();
+ var modalRenderDeferred = $q.defer();
+
+ //prepare an instance of a modal to be injected into controllers and returned to a caller
+ var modalInstance = {
+ result: modalResultDeferred.promise,
+ opened: modalOpenedDeferred.promise,
+ closed: modalClosedDeferred.promise,
+ rendered: modalRenderDeferred.promise,
+ close: function (result) {
+ return $modalStack.close(modalInstance, result);
+ },
+ dismiss: function (reason) {
+ return $modalStack.dismiss(modalInstance, reason);
+ }
+ };
+
+ //merge and clean up options
+ modalOptions = angular.extend({}, $modalProvider.options, modalOptions);
+ modalOptions.resolve = modalOptions.resolve || {};
+ modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);
+
+ if (!modalOptions.appendTo.length) {
+ throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');
+ }
+
+ //verify options
+ if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {
+ throw new Error('One of component or template or templateUrl options is required.');
+ }
+
+ var templateAndResolvePromise;
+ if (modalOptions.component) {
+ templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));
+ } else {
+ templateAndResolvePromise =
+ $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);
+ }
+
+ function resolveWithTemplate() {
+ return templateAndResolvePromise;
+ }
+
+ // Wait for the resolution of the existing promise chain.
+ // Then switch to our own combined promise dependency (regardless of how the previous modal fared).
+ // Then add to $modalStack and resolve opened.
+ // Finally clean up the chain variable if no subsequent modal has overwritten it.
+ var samePromise;
+ samePromise = promiseChain = $q.all([promiseChain])
+ .then(resolveWithTemplate, resolveWithTemplate)
+ .then(function resolveSuccess(tplAndVars) {
+ var providedScope = modalOptions.scope || $rootScope;
+
+ var modalScope = providedScope.$new();
+ modalScope.$close = modalInstance.close;
+ modalScope.$dismiss = modalInstance.dismiss;
+
+ modalScope.$on('$destroy', function() {
+ if (!modalScope.$$uibDestructionScheduled) {
+ modalScope.$dismiss('$uibUnscheduledDestruction');
+ }
+ });
+
+ var modal = {
+ scope: modalScope,
+ deferred: modalResultDeferred,
+ renderDeferred: modalRenderDeferred,
+ closedDeferred: modalClosedDeferred,
+ animation: modalOptions.animation,
+ backdrop: modalOptions.backdrop,
+ keyboard: modalOptions.keyboard,
+ backdropClass: modalOptions.backdropClass,
+ windowTopClass: modalOptions.windowTopClass,
+ windowClass: modalOptions.windowClass,
+ windowTemplateUrl: modalOptions.windowTemplateUrl,
+ ariaLabelledBy: modalOptions.ariaLabelledBy,
+ ariaDescribedBy: modalOptions.ariaDescribedBy,
+ size: modalOptions.size,
+ openedClass: modalOptions.openedClass,
+ appendTo: modalOptions.appendTo
+ };
+
+ var component = {};
+ var ctrlInstance, ctrlInstantiate, ctrlLocals = {};
+
+ if (modalOptions.component) {
+ constructLocals(component, false, true, false);
+ component.name = modalOptions.component;
+ modal.component = component;
+ } else if (modalOptions.controller) {
+ constructLocals(ctrlLocals, true, false, true);
+
+ // the third param will make the controller instantiate later,private api
+ // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126
+ ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);
+ if (modalOptions.controllerAs && modalOptions.bindToController) {
+ ctrlInstance = ctrlInstantiate.instance;
+ ctrlInstance.$close = modalScope.$close;
+ ctrlInstance.$dismiss = modalScope.$dismiss;
+ angular.extend(ctrlInstance, {
+ $resolve: ctrlLocals.$scope.$resolve
+ }, providedScope);
+ }
+
+ ctrlInstance = ctrlInstantiate();
+
+ if (angular.isFunction(ctrlInstance.$onInit)) {
+ ctrlInstance.$onInit();
+ }
+ }
+
+ if (!modalOptions.component) {
+ modal.content = tplAndVars[0];
+ }
+
+ $modalStack.open(modalInstance, modal);
+ modalOpenedDeferred.resolve(true);
+
+ function constructLocals(obj, template, instanceOnScope, injectable) {
+ obj.$scope = modalScope;
+ obj.$scope.$resolve = {};
+ if (instanceOnScope) {
+ obj.$scope.$uibModalInstance = modalInstance;
+ } else {
+ obj.$uibModalInstance = modalInstance;
+ }
+
+ var resolves = template ? tplAndVars[1] : tplAndVars;
+ angular.forEach(resolves, function(value, key) {
+ if (injectable) {
+ obj[key] = value;
+ }
+
+ obj.$scope.$resolve[key] = value;
+ });
+ }
+ }, function resolveError(reason) {
+ modalOpenedDeferred.reject(reason);
+ modalResultDeferred.reject(reason);
+ })['finally'](function() {
+ if (promiseChain === samePromise) {
+ promiseChain = null;
+ }
+ });
+
+ return modalInstance;
+ };
+
+ return $modal;
+ }
+ ]
+ };
+
+ return $modalProvider;
+ });
+
+angular.module('ui.bootstrap.paging', [])
+/**
+ * Helper internal service for generating common controller code between the
+ * pager and pagination components
+ */
+.factory('uibPaging', ['$parse', function($parse) {
+ return {
+ create: function(ctrl, $scope, $attrs) {
+ ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;
+ ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl
+ ctrl._watchers = [];
+
+ ctrl.init = function(ngModelCtrl, config) {
+ ctrl.ngModelCtrl = ngModelCtrl;
+ ctrl.config = config;
+
+ ngModelCtrl.$render = function() {
+ ctrl.render();
+ };
+
+ if ($attrs.itemsPerPage) {
+ ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {
+ ctrl.itemsPerPage = parseInt(value, 10);
+ $scope.totalPages = ctrl.calculateTotalPages();
+ ctrl.updatePage();
+ }));
+ } else {
+ ctrl.itemsPerPage = config.itemsPerPage;
+ }
+
+ $scope.$watch('totalItems', function(newTotal, oldTotal) {
+ if (angular.isDefined(newTotal) || newTotal !== oldTotal) {
+ $scope.totalPages = ctrl.calculateTotalPages();
+ ctrl.updatePage();
+ }
+ });
+ };
+
+ ctrl.calculateTotalPages = function() {
+ var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);
+ return Math.max(totalPages || 0, 1);
+ };
+
+ ctrl.render = function() {
+ $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;
+ };
+
+ $scope.selectPage = function(page, evt) {
+ if (evt) {
+ evt.preventDefault();
+ }
+
+ var clickAllowed = !$scope.ngDisabled || !evt;
+ if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {
+ if (evt && evt.target) {
+ evt.target.blur();
+ }
+ ctrl.ngModelCtrl.$setViewValue(page);
+ ctrl.ngModelCtrl.$render();
+ }
+ };
+
+ $scope.getText = function(key) {
+ return $scope[key + 'Text'] || ctrl.config[key + 'Text'];
+ };
+
+ $scope.noPrevious = function() {
+ return $scope.page === 1;
+ };
+
+ $scope.noNext = function() {
+ return $scope.page === $scope.totalPages;
+ };
+
+ ctrl.updatePage = function() {
+ ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable
+
+ if ($scope.page > $scope.totalPages) {
+ $scope.selectPage($scope.totalPages);
+ } else {
+ ctrl.ngModelCtrl.$render();
+ }
+ };
+
+ $scope.$on('$destroy', function() {
+ while (ctrl._watchers.length) {
+ ctrl._watchers.shift()();
+ }
+ });
+ }
+ };
+}]);
+
+angular.module('ui.bootstrap.pager', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])
+
+.controller('UibPagerController', ['$scope', '$attrs', 'uibPaging', 'uibPagerConfig', function($scope, $attrs, uibPaging, uibPagerConfig) {
+ $scope.align = angular.isDefined($attrs.align) ? $scope.$parent.$eval($attrs.align) : uibPagerConfig.align;
+
+ uibPaging.create(this, $scope, $attrs);
+}])
+
+.constant('uibPagerConfig', {
+ itemsPerPage: 10,
+ previousText: '« Previous',
+ nextText: 'Next »',
+ align: true
+})
+
+.directive('uibPager', ['uibPagerConfig', function(uibPagerConfig) {
+ return {
+ scope: {
+ totalItems: '=',
+ previousText: '@',
+ nextText: '@',
+ ngDisabled: '='
+ },
+ require: ['uibPager', '?ngModel'],
+ restrict: 'A',
+ controller: 'UibPagerController',
+ controllerAs: 'pager',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/pager/pager.html';
+ },
+ link: function(scope, element, attrs, ctrls) {
+ element.addClass('pager');
+ var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if (!ngModelCtrl) {
+ return; // do nothing if no ng-model
+ }
+
+ paginationCtrl.init(ngModelCtrl, uibPagerConfig);
+ }
+ };
+}]);
+
+angular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])
+.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {
+ var ctrl = this;
+ // Setup configuration parameters
+ var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,
+ rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,
+ forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,
+ boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,
+ pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;
+ $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;
+ $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;
+ $attrs.$set('role', 'menu');
+
+ uibPaging.create(this, $scope, $attrs);
+
+ if ($attrs.maxSize) {
+ ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {
+ maxSize = parseInt(value, 10);
+ ctrl.render();
+ }));
+ }
+
+ // Create page object used in template
+ function makePage(number, text, isActive) {
+ return {
+ number: number,
+ text: text,
+ active: isActive
+ };
+ }
+
+ function getPages(currentPage, totalPages) {
+ var pages = [];
+
+ // Default page limits
+ var startPage = 1, endPage = totalPages;
+ var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;
+
+ // recompute if maxSize
+ if (isMaxSized) {
+ if (rotate) {
+ // Current page is displayed in the middle of the visible ones
+ startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);
+ endPage = startPage + maxSize - 1;
+
+ // Adjust if limit is exceeded
+ if (endPage > totalPages) {
+ endPage = totalPages;
+ startPage = endPage - maxSize + 1;
+ }
+ } else {
+ // Visible pages are paginated with maxSize
+ startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;
+
+ // Adjust last page if limit is exceeded
+ endPage = Math.min(startPage + maxSize - 1, totalPages);
+ }
+ }
+
+ // Add page number links
+ for (var number = startPage; number <= endPage; number++) {
+ var page = makePage(number, pageLabel(number), number === currentPage);
+ pages.push(page);
+ }
+
+ // Add links to move between page sets
+ if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {
+ if (startPage > 1) {
+ if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning
+ var previousPageSet = makePage(startPage - 1, '...', false);
+ pages.unshift(previousPageSet);
+ }
+ if (boundaryLinkNumbers) {
+ if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential
+ var secondPageLink = makePage(2, '2', false);
+ pages.unshift(secondPageLink);
+ }
+ //add the first page
+ var firstPageLink = makePage(1, '1', false);
+ pages.unshift(firstPageLink);
+ }
+ }
+
+ if (endPage < totalPages) {
+ if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end
+ var nextPageSet = makePage(endPage + 1, '...', false);
+ pages.push(nextPageSet);
+ }
+ if (boundaryLinkNumbers) {
+ if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential
+ var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);
+ pages.push(secondToLastPageLink);
+ }
+ //add the last page
+ var lastPageLink = makePage(totalPages, totalPages, false);
+ pages.push(lastPageLink);
+ }
+ }
+ }
+ return pages;
+ }
+
+ var originalRender = this.render;
+ this.render = function() {
+ originalRender();
+ if ($scope.page > 0 && $scope.page <= $scope.totalPages) {
+ $scope.pages = getPages($scope.page, $scope.totalPages);
+ }
+ };
+}])
+
+.constant('uibPaginationConfig', {
+ itemsPerPage: 10,
+ boundaryLinks: false,
+ boundaryLinkNumbers: false,
+ directionLinks: true,
+ firstText: 'First',
+ previousText: 'Previous',
+ nextText: 'Next',
+ lastText: 'Last',
+ rotate: true,
+ forceEllipses: false
+})
+
+.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {
+ return {
+ scope: {
+ totalItems: '=',
+ firstText: '@',
+ previousText: '@',
+ nextText: '@',
+ lastText: '@',
+ ngDisabled:'='
+ },
+ require: ['uibPagination', '?ngModel'],
+ restrict: 'A',
+ controller: 'UibPaginationController',
+ controllerAs: 'pagination',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/pagination/pagination.html';
+ },
+ link: function(scope, element, attrs, ctrls) {
+ element.addClass('pagination');
+ var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+
+ if (!ngModelCtrl) {
+ return; // do nothing if no ng-model
+ }
+
+ paginationCtrl.init(ngModelCtrl, uibPaginationConfig);
+ }
+ };
+}]);
+
+/**
+ * The following features are still outstanding: animation as a
+ * function, placement as a function, inside, support for more triggers than
+ * just mouse enter/leave, html tooltips, and selector delegation.
+ */
+angular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])
+
+/**
+ * The $tooltip service creates tooltip- and popover-like directives as well as
+ * houses global options for them.
+ */
+.provider('$uibTooltip', function() {
+ // The default options tooltip and popover.
+ var defaultOptions = {
+ placement: 'top',
+ placementClassPrefix: '',
+ animation: true,
+ popupDelay: 0,
+ popupCloseDelay: 0,
+ useContentExp: false
+ };
+
+ // Default hide triggers for each show trigger
+ var triggerMap = {
+ 'mouseenter': 'mouseleave',
+ 'click': 'click',
+ 'outsideClick': 'outsideClick',
+ 'focus': 'blur',
+ 'none': ''
+ };
+
+ // The options specified to the provider globally.
+ var globalOptions = {};
+
+ /**
+ * `options({})` allows global configuration of all tooltips in the
+ * application.
+ *
+ * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {
+ * // place tooltips left instead of top by default
+ * $tooltipProvider.options( { placement: 'left' } );
+ * });
+ */
+ this.options = function(value) {
+ angular.extend(globalOptions, value);
+ };
+
+ /**
+ * This allows you to extend the set of trigger mappings available. E.g.:
+ *
+ * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );
+ */
+ this.setTriggers = function setTriggers(triggers) {
+ angular.extend(triggerMap, triggers);
+ };
+
+ /**
+ * This is a helper function for translating camel-case to snake_case.
+ */
+ function snake_case(name) {
+ var regexp = /[A-Z]/g;
+ var separator = '-';
+ return name.replace(regexp, function(letter, pos) {
+ return (pos ? separator : '') + letter.toLowerCase();
+ });
+ }
+
+ /**
+ * Returns the actual instance of the $tooltip service.
+ * TODO support multiple triggers
+ */
+ this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {
+ var openedTooltips = $$stackedMap.createNew();
+ $document.on('keyup', keypressListener);
+
+ $rootScope.$on('$destroy', function() {
+ $document.off('keyup', keypressListener);
+ });
+
+ function keypressListener(e) {
+ if (e.which === 27) {
+ var last = openedTooltips.top();
+ if (last) {
+ last.value.close();
+ last = null;
+ }
+ }
+ }
+
+ return function $tooltip(ttType, prefix, defaultTriggerShow, options) {
+ options = angular.extend({}, defaultOptions, globalOptions, options);
+
+ /**
+ * Returns an object of show and hide triggers.
+ *
+ * If a trigger is supplied,
+ * it is used to show the tooltip; otherwise, it will use the `trigger`
+ * option passed to the `$tooltipProvider.options` method; else it will
+ * default to the trigger supplied to this directive factory.
+ *
+ * The hide trigger is based on the show trigger. If the `trigger` option
+ * was passed to the `$tooltipProvider.options` method, it will use the
+ * mapped trigger from `triggerMap` or the passed trigger if the map is
+ * undefined; otherwise, it uses the `triggerMap` value of the show
+ * trigger; else it will just use the show trigger.
+ */
+ function getTriggers(trigger) {
+ var show = (trigger || options.trigger || defaultTriggerShow).split(' ');
+ var hide = show.map(function(trigger) {
+ return triggerMap[trigger] || trigger;
+ });
+ return {
+ show: show,
+ hide: hide
+ };
+ }
+
+ var directiveName = snake_case(ttType);
+
+ var startSym = $interpolate.startSymbol();
+ var endSym = $interpolate.endSymbol();
+ var template =
+ '<div '+ directiveName + '-popup ' +
+ 'uib-title="' + startSym + 'title' + endSym + '" ' +
+ (options.useContentExp ?
+ 'content-exp="contentExp()" ' :
+ 'content="' + startSym + 'content' + endSym + '" ') +
+ 'origin-scope="origScope" ' +
+ 'class="uib-position-measure ' + prefix + '" ' +
+ 'tooltip-animation-class="fade"' +
+ 'uib-tooltip-classes ' +
+ 'ng-class="{ in: isOpen }" ' +
+ '>' +
+ '</div>';
+
+ return {
+ compile: function(tElem, tAttrs) {
+ var tooltipLinker = $compile(template);
+
+ return function link(scope, element, attrs, tooltipCtrl) {
+ var tooltip;
+ var tooltipLinkedScope;
+ var transitionTimeout;
+ var showTimeout;
+ var hideTimeout;
+ var positionTimeout;
+ var adjustmentTimeout;
+ var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;
+ var triggers = getTriggers(undefined);
+ var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);
+ var ttScope = scope.$new(true);
+ var repositionScheduled = false;
+ var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;
+ var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;
+ var observers = [];
+ var lastPlacement;
+
+ var positionTooltip = function() {
+ // check if tooltip exists and is not empty
+ if (!tooltip || !tooltip.html()) { return; }
+
+ if (!positionTimeout) {
+ positionTimeout = $timeout(function() {
+ var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);
+ var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');
+ var elementPos = appendToBody ? $position.offset(element) : $position.position(element);
+ tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });
+ var placementClasses = ttPosition.placement.split('-');
+
+ if (!tooltip.hasClass(placementClasses[0])) {
+ tooltip.removeClass(lastPlacement.split('-')[0]);
+ tooltip.addClass(placementClasses[0]);
+ }
+
+ if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {
+ tooltip.removeClass(options.placementClassPrefix + lastPlacement);
+ tooltip.addClass(options.placementClassPrefix + ttPosition.placement);
+ }
+
+ adjustmentTimeout = $timeout(function() {
+ var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');
+ var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);
+ if (adjustment) {
+ tooltip.css(adjustment);
+ }
+ adjustmentTimeout = null;
+ }, 0, false);
+
+ // first time through tt element will have the
+ // uib-position-measure class or if the placement
+ // has changed we need to position the arrow.
+ if (tooltip.hasClass('uib-position-measure')) {
+ $position.positionArrow(tooltip, ttPosition.placement);
+ tooltip.removeClass('uib-position-measure');
+ } else if (lastPlacement !== ttPosition.placement) {
+ $position.positionArrow(tooltip, ttPosition.placement);
+ }
+ lastPlacement = ttPosition.placement;
+
+ positionTimeout = null;
+ }, 0, false);
+ }
+ };
+
+ // Set up the correct scope to allow transclusion later
+ ttScope.origScope = scope;
+
+ // By default, the tooltip is not open.
+ // TODO add ability to start tooltip opened
+ ttScope.isOpen = false;
+
+ function toggleTooltipBind() {
+ if (!ttScope.isOpen) {
+ showTooltipBind();
+ } else {
+ hideTooltipBind();
+ }
+ }
+
+ // Show the tooltip with delay if specified, otherwise show it immediately
+ function showTooltipBind() {
+ if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {
+ return;
+ }
+
+ cancelHide();
+ prepareTooltip();
+
+ if (ttScope.popupDelay) {
+ // Do nothing if the tooltip was already scheduled to pop-up.
+ // This happens if show is triggered multiple times before any hide is triggered.
+ if (!showTimeout) {
+ showTimeout = $timeout(show, ttScope.popupDelay, false);
+ }
+ } else {
+ show();
+ }
+ }
+
+ function hideTooltipBind() {
+ cancelShow();
+
+ if (ttScope.popupCloseDelay) {
+ if (!hideTimeout) {
+ hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);
+ }
+ } else {
+ hide();
+ }
+ }
+
+ // Show the tooltip popup element.
+ function show() {
+ cancelShow();
+ cancelHide();
+
+ // Don't show empty tooltips.
+ if (!ttScope.content) {
+ return angular.noop;
+ }
+
+ createTooltip();
+
+ // And show the tooltip.
+ ttScope.$evalAsync(function() {
+ ttScope.isOpen = true;
+ assignIsOpen(true);
+ positionTooltip();
+ });
+ }
+
+ function cancelShow() {
+ if (showTimeout) {
+ $timeout.cancel(showTimeout);
+ showTimeout = null;
+ }
+
+ if (positionTimeout) {
+ $timeout.cancel(positionTimeout);
+ positionTimeout = null;
+ }
+ }
+
+ // Hide the tooltip popup element.
+ function hide() {
+ if (!ttScope) {
+ return;
+ }
+
+ // First things first: we don't show it anymore.
+ ttScope.$evalAsync(function() {
+ if (ttScope) {
+ ttScope.isOpen = false;
+ assignIsOpen(false);
+ // And now we remove it from the DOM. However, if we have animation, we
+ // need to wait for it to expire beforehand.
+ // FIXME: this is a placeholder for a port of the transitions library.
+ // The fade transition in TWBS is 150ms.
+ if (ttScope.animation) {
+ if (!transitionTimeout) {
+ transitionTimeout = $timeout(removeTooltip, 150, false);
+ }
+ } else {
+ removeTooltip();
+ }
+ }
+ });
+ }
+
+ function cancelHide() {
+ if (hideTimeout) {
+ $timeout.cancel(hideTimeout);
+ hideTimeout = null;
+ }
+
+ if (transitionTimeout) {
+ $timeout.cancel(transitionTimeout);
+ transitionTimeout = null;
+ }
+ }
+
+ function createTooltip() {
+ // There can only be one tooltip element per directive shown at once.
+ if (tooltip) {
+ return;
+ }
+
+ tooltipLinkedScope = ttScope.$new();
+ tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {
+ if (appendToBody) {
+ $document.find('body').append(tooltip);
+ } else {
+ element.after(tooltip);
+ }
+ });
+
+ openedTooltips.add(ttScope, {
+ close: hide
+ });
+
+ prepObservers();
+ }
+
+ function removeTooltip() {
+ cancelShow();
+ cancelHide();
+ unregisterObservers();
+
+ if (tooltip) {
+ tooltip.remove();
+
+ tooltip = null;
+ if (adjustmentTimeout) {
+ $timeout.cancel(adjustmentTimeout);
+ }
+ }
+
+ openedTooltips.remove(ttScope);
+
+ if (tooltipLinkedScope) {
+ tooltipLinkedScope.$destroy();
+ tooltipLinkedScope = null;
+ }
+ }
+
+ /**
+ * Set the initial scope values. Once
+ * the tooltip is created, the observers
+ * will be added to keep things in sync.
+ */
+ function prepareTooltip() {
+ ttScope.title = attrs[prefix + 'Title'];
+ if (contentParse) {
+ ttScope.content = contentParse(scope);
+ } else {
+ ttScope.content = attrs[ttType];
+ }
+
+ ttScope.popupClass = attrs[prefix + 'Class'];
+ ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;
+ var placement = $position.parsePlacement(ttScope.placement);
+ lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];
+
+ var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);
+ var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);
+ ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;
+ ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;
+ }
+
+ function assignIsOpen(isOpen) {
+ if (isOpenParse && angular.isFunction(isOpenParse.assign)) {
+ isOpenParse.assign(scope, isOpen);
+ }
+ }
+
+ ttScope.contentExp = function() {
+ return ttScope.content;
+ };
+
+ /**
+ * Observe the relevant attributes.
+ */
+ attrs.$observe('disabled', function(val) {
+ if (val) {
+ cancelShow();
+ }
+
+ if (val && ttScope.isOpen) {
+ hide();
+ }
+ });
+
+ if (isOpenParse) {
+ scope.$watch(isOpenParse, function(val) {
+ if (ttScope && !val === ttScope.isOpen) {
+ toggleTooltipBind();
+ }
+ });
+ }
+
+ function prepObservers() {
+ observers.length = 0;
+
+ if (contentParse) {
+ observers.push(
+ scope.$watch(contentParse, function(val) {
+ ttScope.content = val;
+ if (!val && ttScope.isOpen) {
+ hide();
+ }
+ })
+ );
+
+ observers.push(
+ tooltipLinkedScope.$watch(function() {
+ if (!repositionScheduled) {
+ repositionScheduled = true;
+ tooltipLinkedScope.$$postDigest(function() {
+ repositionScheduled = false;
+ if (ttScope && ttScope.isOpen) {
+ positionTooltip();
+ }
+ });
+ }
+ })
+ );
+ } else {
+ observers.push(
+ attrs.$observe(ttType, function(val) {
+ ttScope.content = val;
+ if (!val && ttScope.isOpen) {
+ hide();
+ } else {
+ positionTooltip();
+ }
+ })
+ );
+ }
+
+ observers.push(
+ attrs.$observe(prefix + 'Title', function(val) {
+ ttScope.title = val;
+ if (ttScope.isOpen) {
+ positionTooltip();
+ }
+ })
+ );
+
+ observers.push(
+ attrs.$observe(prefix + 'Placement', function(val) {
+ ttScope.placement = val ? val : options.placement;
+ if (ttScope.isOpen) {
+ positionTooltip();
+ }
+ })
+ );
+ }
+
+ function unregisterObservers() {
+ if (observers.length) {
+ angular.forEach(observers, function(observer) {
+ observer();
+ });
+ observers.length = 0;
+ }
+ }
+
+ // hide tooltips/popovers for outsideClick trigger
+ function bodyHideTooltipBind(e) {
+ if (!ttScope || !ttScope.isOpen || !tooltip) {
+ return;
+ }
+ // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked
+ if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {
+ hideTooltipBind();
+ }
+ }
+
+ // KeyboardEvent handler to hide the tooltip on Escape key press
+ function hideOnEscapeKey(e) {
+ if (e.which === 27) {
+ hideTooltipBind();
+ }
+ }
+
+ var unregisterTriggers = function() {
+ triggers.show.forEach(function(trigger) {
+ if (trigger === 'outsideClick') {
+ element.off('click', toggleTooltipBind);
+ } else {
+ element.off(trigger, showTooltipBind);
+ element.off(trigger, toggleTooltipBind);
+ }
+ element.off('keypress', hideOnEscapeKey);
+ });
+ triggers.hide.forEach(function(trigger) {
+ if (trigger === 'outsideClick') {
+ $document.off('click', bodyHideTooltipBind);
+ } else {
+ element.off(trigger, hideTooltipBind);
+ }
+ });
+ };
+
+ function prepTriggers() {
+ var showTriggers = [], hideTriggers = [];
+ var val = scope.$eval(attrs[prefix + 'Trigger']);
+ unregisterTriggers();
+
+ if (angular.isObject(val)) {
+ Object.keys(val).forEach(function(key) {
+ showTriggers.push(key);
+ hideTriggers.push(val[key]);
+ });
+ triggers = {
+ show: showTriggers,
+ hide: hideTriggers
+ };
+ } else {
+ triggers = getTriggers(val);
+ }
+
+ if (triggers.show !== 'none') {
+ triggers.show.forEach(function(trigger, idx) {
+ if (trigger === 'outsideClick') {
+ element.on('click', toggleTooltipBind);
+ $document.on('click', bodyHideTooltipBind);
+ } else if (trigger === triggers.hide[idx]) {
+ element.on(trigger, toggleTooltipBind);
+ } else if (trigger) {
+ element.on(trigger, showTooltipBind);
+ element.on(triggers.hide[idx], hideTooltipBind);
+ }
+ element.on('keypress', hideOnEscapeKey);
+ });
+ }
+ }
+
+ prepTriggers();
+
+ var animation = scope.$eval(attrs[prefix + 'Animation']);
+ ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;
+
+ var appendToBodyVal;
+ var appendKey = prefix + 'AppendToBody';
+ if (appendKey in attrs && attrs[appendKey] === undefined) {
+ appendToBodyVal = true;
+ } else {
+ appendToBodyVal = scope.$eval(attrs[appendKey]);
+ }
+
+ appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;
+
+ // Make sure tooltip is destroyed and removed.
+ scope.$on('$destroy', function onDestroyTooltip() {
+ unregisterTriggers();
+ removeTooltip();
+ ttScope = null;
+ });
+ };
+ }
+ };
+ };
+ }];
+})
+
+// This is mostly ngInclude code but with a custom scope
+.directive('uibTooltipTemplateTransclude', [
+ '$animate', '$sce', '$compile', '$templateRequest',
+function ($animate, $sce, $compile, $templateRequest) {
+ return {
+ link: function(scope, elem, attrs) {
+ var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);
+
+ var changeCounter = 0,
+ currentScope,
+ previousElement,
+ currentElement;
+
+ var cleanupLastIncludeContent = function() {
+ if (previousElement) {
+ previousElement.remove();
+ previousElement = null;
+ }
+
+ if (currentScope) {
+ currentScope.$destroy();
+ currentScope = null;
+ }
+
+ if (currentElement) {
+ $animate.leave(currentElement).then(function() {
+ previousElement = null;
+ });
+ previousElement = currentElement;
+ currentElement = null;
+ }
+ };
+
+ scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {
+ var thisChangeId = ++changeCounter;
+
+ if (src) {
+ //set the 2nd param to true to ignore the template request error so that the inner
+ //contents and scope can be cleaned up.
+ $templateRequest(src, true).then(function(response) {
+ if (thisChangeId !== changeCounter) { return; }
+ var newScope = origScope.$new();
+ var template = response;
+
+ var clone = $compile(template)(newScope, function(clone) {
+ cleanupLastIncludeContent();
+ $animate.enter(clone, elem);
+ });
+
+ currentScope = newScope;
+ currentElement = clone;
+
+ currentScope.$emit('$includeContentLoaded', src);
+ }, function() {
+ if (thisChangeId === changeCounter) {
+ cleanupLastIncludeContent();
+ scope.$emit('$includeContentError', src);
+ }
+ });
+ scope.$emit('$includeContentRequested', src);
+ } else {
+ cleanupLastIncludeContent();
+ }
+ });
+
+ scope.$on('$destroy', cleanupLastIncludeContent);
+ }
+ };
+}])
+
+/**
+ * Note that it's intentional that these classes are *not* applied through $animate.
+ * They must not be animated as they're expected to be present on the tooltip on
+ * initialization.
+ */
+.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {
+ return {
+ restrict: 'A',
+ link: function(scope, element, attrs) {
+ // need to set the primary position so the
+ // arrow has space during position measure.
+ // tooltip.positionTooltip()
+ if (scope.placement) {
+ // // There are no top-left etc... classes
+ // // in TWBS, so we need the primary position.
+ var position = $uibPosition.parsePlacement(scope.placement);
+ element.addClass(position[0]);
+ }
+
+ if (scope.popupClass) {
+ element.addClass(scope.popupClass);
+ }
+
+ if (scope.animation) {
+ element.addClass(attrs.tooltipAnimationClass);
+ }
+ }
+ };
+}])
+
+.directive('uibTooltipPopup', function() {
+ return {
+ restrict: 'A',
+ scope: { content: '@' },
+ templateUrl: 'uib/template/tooltip/tooltip-popup.html'
+ };
+})
+
+.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');
+}])
+
+.directive('uibTooltipTemplatePopup', function() {
+ return {
+ restrict: 'A',
+ scope: { contentExp: '&', originScope: '&' },
+ templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'
+ };
+})
+
+.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {
+ useContentExp: true
+ });
+}])
+
+.directive('uibTooltipHtmlPopup', function() {
+ return {
+ restrict: 'A',
+ scope: { contentExp: '&' },
+ templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'
+ };
+})
+
+.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {
+ useContentExp: true
+ });
+}]);
+
+/**
+ * The following features are still outstanding: popup delay, animation as a
+ * function, placement as a function, inside, support for more triggers than
+ * just mouse enter/leave, and selector delegatation.
+ */
+angular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])
+
+.directive('uibPopoverTemplatePopup', function() {
+ return {
+ restrict: 'A',
+ scope: { uibTitle: '@', contentExp: '&', originScope: '&' },
+ templateUrl: 'uib/template/popover/popover-template.html'
+ };
+})
+
+.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {
+ useContentExp: true
+ });
+}])
+
+.directive('uibPopoverHtmlPopup', function() {
+ return {
+ restrict: 'A',
+ scope: { contentExp: '&', uibTitle: '@' },
+ templateUrl: 'uib/template/popover/popover-html.html'
+ };
+})
+
+.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibPopoverHtml', 'popover', 'click', {
+ useContentExp: true
+ });
+}])
+
+.directive('uibPopoverPopup', function() {
+ return {
+ restrict: 'A',
+ scope: { uibTitle: '@', content: '@' },
+ templateUrl: 'uib/template/popover/popover.html'
+ };
+})
+
+.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {
+ return $uibTooltip('uibPopover', 'popover', 'click');
+}]);
+
+angular.module('ui.bootstrap.progressbar', [])
+
+.constant('uibProgressConfig', {
+ animate: true,
+ max: 100
+})
+
+.controller('UibProgressController', ['$scope', '$attrs', 'uibProgressConfig', function($scope, $attrs, progressConfig) {
+ var self = this,
+ animate = angular.isDefined($attrs.animate) ? $scope.$parent.$eval($attrs.animate) : progressConfig.animate;
+
+ this.bars = [];
+ $scope.max = getMaxOrDefault();
+
+ this.addBar = function(bar, element, attrs) {
+ if (!animate) {
+ element.css({'transition': 'none'});
+ }
+
+ this.bars.push(bar);
+
+ bar.max = getMaxOrDefault();
+ bar.title = attrs && angular.isDefined(attrs.title) ? attrs.title : 'progressbar';
+
+ bar.$watch('value', function(value) {
+ bar.recalculatePercentage();
+ });
+
+ bar.recalculatePercentage = function() {
+ var totalPercentage = self.bars.reduce(function(total, bar) {
+ bar.percent = +(100 * bar.value / bar.max).toFixed(2);
+ return total + bar.percent;
+ }, 0);
+
+ if (totalPercentage > 100) {
+ bar.percent -= totalPercentage - 100;
+ }
+ };
+
+ bar.$on('$destroy', function() {
+ element = null;
+ self.removeBar(bar);
+ });
+ };
+
+ this.removeBar = function(bar) {
+ this.bars.splice(this.bars.indexOf(bar), 1);
+ this.bars.forEach(function (bar) {
+ bar.recalculatePercentage();
+ });
+ };
+
+ //$attrs.$observe('maxParam', function(maxParam) {
+ $scope.$watch('maxParam', function(maxParam) {
+ self.bars.forEach(function(bar) {
+ bar.max = getMaxOrDefault();
+ bar.recalculatePercentage();
+ });
+ });
+
+ function getMaxOrDefault () {
+ return angular.isDefined($scope.maxParam) ? $scope.maxParam : progressConfig.max;
+ }
+}])
+
+.directive('uibProgress', function() {
+ return {
+ replace: true,
+ transclude: true,
+ controller: 'UibProgressController',
+ require: 'uibProgress',
+ scope: {
+ maxParam: '=?max'
+ },
+ templateUrl: 'uib/template/progressbar/progress.html'
+ };
+})
+
+.directive('uibBar', function() {
+ return {
+ replace: true,
+ transclude: true,
+ require: '^uibProgress',
+ scope: {
+ value: '=',
+ type: '@'
+ },
+ templateUrl: 'uib/template/progressbar/bar.html',
+ link: function(scope, element, attrs, progressCtrl) {
+ progressCtrl.addBar(scope, element, attrs);
+ }
+ };
+})
+
+.directive('uibProgressbar', function() {
+ return {
+ replace: true,
+ transclude: true,
+ controller: 'UibProgressController',
+ scope: {
+ value: '=',
+ maxParam: '=?max',
+ type: '@'
+ },
+ templateUrl: 'uib/template/progressbar/progressbar.html',
+ link: function(scope, element, attrs, progressCtrl) {
+ progressCtrl.addBar(scope, angular.element(element.children()[0]), {title: attrs.title});
+ }
+ };
+});
+
+angular.module('ui.bootstrap.rating', [])
+
+.constant('uibRatingConfig', {
+ max: 5,
+ stateOn: null,
+ stateOff: null,
+ enableReset: true,
+ titles: ['one', 'two', 'three', 'four', 'five']
+})
+
+.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {
+ var ngModelCtrl = { $setViewValue: angular.noop },
+ self = this;
+
+ this.init = function(ngModelCtrl_) {
+ ngModelCtrl = ngModelCtrl_;
+ ngModelCtrl.$render = this.render;
+
+ ngModelCtrl.$formatters.push(function(value) {
+ if (angular.isNumber(value) && value << 0 !== value) {
+ value = Math.round(value);
+ }
+
+ return value;
+ });
+
+ this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;
+ this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;
+ this.enableReset = angular.isDefined($attrs.enableReset) ?
+ $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;
+ var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;
+ this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?
+ tmpTitles : ratingConfig.titles;
+
+ var ratingStates = angular.isDefined($attrs.ratingStates) ?
+ $scope.$parent.$eval($attrs.ratingStates) :
+ new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);
+ $scope.range = this.buildTemplateObjects(ratingStates);
+ };
+
+ this.buildTemplateObjects = function(states) {
+ for (var i = 0, n = states.length; i < n; i++) {
+ states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);
+ }
+ return states;
+ };
+
+ this.getTitle = function(index) {
+ if (index >= this.titles.length) {
+ return index + 1;
+ }
+
+ return this.titles[index];
+ };
+
+ $scope.rate = function(value) {
+ if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {
+ var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;
+ ngModelCtrl.$setViewValue(newViewValue);
+ ngModelCtrl.$render();
+ }
+ };
+
+ $scope.enter = function(value) {
+ if (!$scope.readonly) {
+ $scope.value = value;
+ }
+ $scope.onHover({value: value});
+ };
+
+ $scope.reset = function() {
+ $scope.value = ngModelCtrl.$viewValue;
+ $scope.onLeave();
+ };
+
+ $scope.onKeydown = function(evt) {
+ if (/(37|38|39|40)/.test(evt.which)) {
+ evt.preventDefault();
+ evt.stopPropagation();
+ $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));
+ }
+ };
+
+ this.render = function() {
+ $scope.value = ngModelCtrl.$viewValue;
+ $scope.title = self.getTitle($scope.value - 1);
+ };
+}])
+
+.directive('uibRating', function() {
+ return {
+ require: ['uibRating', 'ngModel'],
+ restrict: 'A',
+ scope: {
+ readonly: '=?readOnly',
+ onHover: '&',
+ onLeave: '&'
+ },
+ controller: 'UibRatingController',
+ templateUrl: 'uib/template/rating/rating.html',
+ link: function(scope, element, attrs, ctrls) {
+ var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];
+ ratingCtrl.init(ngModelCtrl);
+ }
+ };
+});
+
+angular.module('ui.bootstrap.tabs', [])
+
+.controller('UibTabsetController', ['$scope', function ($scope) {
+ var ctrl = this,
+ oldIndex;
+ ctrl.tabs = [];
+
+ ctrl.select = function(index, evt) {
+ if (!destroyed) {
+ var previousIndex = findTabIndex(oldIndex);
+ var previousSelected = ctrl.tabs[previousIndex];
+ if (previousSelected) {
+ previousSelected.tab.onDeselect({
+ $event: evt,
+ $selectedIndex: index
+ });
+ if (evt && evt.isDefaultPrevented()) {
+ return;
+ }
+ previousSelected.tab.active = false;
+ }
+
+ var selected = ctrl.tabs[index];
+ if (selected) {
+ selected.tab.onSelect({
+ $event: evt
+ });
+ selected.tab.active = true;
+ ctrl.active = selected.index;
+ oldIndex = selected.index;
+ } else if (!selected && angular.isDefined(oldIndex)) {
+ ctrl.active = null;
+ oldIndex = null;
+ }
+ }
+ };
+
+ ctrl.addTab = function addTab(tab) {
+ ctrl.tabs.push({
+ tab: tab,
+ index: tab.index
+ });
+ ctrl.tabs.sort(function(t1, t2) {
+ if (t1.index > t2.index) {
+ return 1;
+ }
+
+ if (t1.index < t2.index) {
+ return -1;
+ }
+
+ return 0;
+ });
+
+ if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {
+ var newActiveIndex = findTabIndex(tab.index);
+ ctrl.select(newActiveIndex);
+ }
+ };
+
+ ctrl.removeTab = function removeTab(tab) {
+ var index;
+ for (var i = 0; i < ctrl.tabs.length; i++) {
+ if (ctrl.tabs[i].tab === tab) {
+ index = i;
+ break;
+ }
+ }
+
+ if (ctrl.tabs[index].index === ctrl.active) {
+ var newActiveTabIndex = index === ctrl.tabs.length - 1 ?
+ index - 1 : index + 1 % ctrl.tabs.length;
+ ctrl.select(newActiveTabIndex);
+ }
+
+ ctrl.tabs.splice(index, 1);
+ };
+
+ $scope.$watch('tabset.active', function(val) {
+ if (angular.isDefined(val) && val !== oldIndex) {
+ ctrl.select(findTabIndex(val));
+ }
+ });
+
+ var destroyed;
+ $scope.$on('$destroy', function() {
+ destroyed = true;
+ });
+
+ function findTabIndex(index) {
+ for (var i = 0; i < ctrl.tabs.length; i++) {
+ if (ctrl.tabs[i].index === index) {
+ return i;
+ }
+ }
+ }
+}])
+
+.directive('uibTabset', function() {
+ return {
+ transclude: true,
+ replace: true,
+ scope: {},
+ bindToController: {
+ active: '=?',
+ type: '@'
+ },
+ controller: 'UibTabsetController',
+ controllerAs: 'tabset',
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/tabs/tabset.html';
+ },
+ link: function(scope, element, attrs) {
+ scope.vertical = angular.isDefined(attrs.vertical) ?
+ scope.$parent.$eval(attrs.vertical) : false;
+ scope.justified = angular.isDefined(attrs.justified) ?
+ scope.$parent.$eval(attrs.justified) : false;
+ }
+ };
+})
+
+.directive('uibTab', ['$parse', function($parse) {
+ return {
+ require: '^uibTabset',
+ replace: true,
+ templateUrl: function(element, attrs) {
+ return attrs.templateUrl || 'uib/template/tabs/tab.html';
+ },
+ transclude: true,
+ scope: {
+ heading: '@',
+ index: '=?',
+ classes: '@?',
+ onSelect: '&select', //This callback is called in contentHeadingTransclude
+ //once it inserts the tab's content into the dom
+ onDeselect: '&deselect'
+ },
+ controller: function() {
+ //Empty controller so other directives can require being 'under' a tab
+ },
+ controllerAs: 'tab',
+ link: function(scope, elm, attrs, tabsetCtrl, transclude) {
+ scope.disabled = false;
+ if (attrs.disable) {
+ scope.$parent.$watch($parse(attrs.disable), function(value) {
+ scope.disabled = !! value;
+ });
+ }
+
+ if (angular.isUndefined(attrs.index)) {
+ if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {
+ scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;
+ } else {
+ scope.index = 0;
+ }
+ }
+
+ if (angular.isUndefined(attrs.classes)) {
+ scope.classes = '';
+ }
+
+ scope.select = function(evt) {
+ if (!scope.disabled) {
+ var index;
+ for (var i = 0; i < tabsetCtrl.tabs.length; i++) {
+ if (tabsetCtrl.tabs[i].tab === scope) {
+ index = i;
+ break;
+ }
+ }
+
+ tabsetCtrl.select(index, evt);
+ }
+ };
+
+ tabsetCtrl.addTab(scope);
+ scope.$on('$destroy', function() {
+ tabsetCtrl.removeTab(scope);
+ });
+
+ //We need to transclude later, once the content container is ready.
+ //when this link happens, we're inside a tab heading.
+ scope.$transcludeFn = transclude;
+ }
+ };
+}])
+
+.directive('uibTabHeadingTransclude', function() {
+ return {
+ restrict: 'A',
+ require: '^uibTab',
+ link: function(scope, elm) {
+ scope.$watch('headingElement', function updateHeadingElement(heading) {
+ if (heading) {
+ elm.html('');
+ elm.append(heading);
+ }
+ });
+ }
+ };
+})
+
+.directive('uibTabContentTransclude', function() {
+ return {
+ restrict: 'A',
+ require: '^uibTabset',
+ link: function(scope, elm, attrs) {
+ var tab = scope.$eval(attrs.uibTabContentTransclude).tab;
+
+ //Now our tab is ready to be transcluded: both the tab heading area
+ //and the tab content area are loaded. Transclude 'em both.
+ tab.$transcludeFn(tab.$parent, function(contents) {
+ angular.forEach(contents, function(node) {
+ if (isTabHeading(node)) {
+ //Let tabHeadingTransclude know.
+ tab.headingElement = node;
+ } else {
+ elm.append(node);
+ }
+ });
+ });
+ }
+ };
+
+ function isTabHeading(node) {
+ return node.tagName && (
+ node.hasAttribute('uib-tab-heading') ||
+ node.hasAttribute('data-uib-tab-heading') ||
+ node.hasAttribute('x-uib-tab-heading') ||
+ node.tagName.toLowerCase() === 'uib-tab-heading' ||
+ node.tagName.toLowerCase() === 'data-uib-tab-heading' ||
+ node.tagName.toLowerCase() === 'x-uib-tab-heading' ||
+ node.tagName.toLowerCase() === 'uib:tab-heading'
+ );
+ }
+});
+
+angular.module('ui.bootstrap.timepicker', [])
+
+.constant('uibTimepickerConfig', {
+ hourStep: 1,
+ minuteStep: 1,
+ secondStep: 1,
+ showMeridian: true,
+ showSeconds: false,
+ meridians: null,
+ readonlyInput: false,
+ mousewheel: true,
+ arrowkeys: true,
+ showSpinners: true,
+ templateUrl: 'uib/template/timepicker/timepicker.html'
+})
+
+.controller('UibTimepickerController', ['$scope', '$element', '$attrs', '$parse', '$log', '$locale', 'uibTimepickerConfig', function($scope, $element, $attrs, $parse, $log, $locale, timepickerConfig) {
+ var hoursModelCtrl, minutesModelCtrl, secondsModelCtrl;
+ var selected = new Date(),
+ watchers = [],
+ ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl
+ meridians = angular.isDefined($attrs.meridians) ? $scope.$parent.$eval($attrs.meridians) : timepickerConfig.meridians || $locale.DATETIME_FORMATS.AMPMS,
+ padHours = angular.isDefined($attrs.padHours) ? $scope.$parent.$eval($attrs.padHours) : true;
+
+ $scope.tabindex = angular.isDefined($attrs.tabindex) ? $attrs.tabindex : 0;
+ $element.removeAttr('tabindex');
+
+ this.init = function(ngModelCtrl_, inputs) {
+ ngModelCtrl = ngModelCtrl_;
+ ngModelCtrl.$render = this.render;
+
+ ngModelCtrl.$formatters.unshift(function(modelValue) {
+ return modelValue ? new Date(modelValue) : null;
+ });
+
+ var hoursInputEl = inputs.eq(0),
+ minutesInputEl = inputs.eq(1),
+ secondsInputEl = inputs.eq(2);
+
+ hoursModelCtrl = hoursInputEl.controller('ngModel');
+ minutesModelCtrl = minutesInputEl.controller('ngModel');
+ secondsModelCtrl = secondsInputEl.controller('ngModel');
+
+ var mousewheel = angular.isDefined($attrs.mousewheel) ? $scope.$parent.$eval($attrs.mousewheel) : timepickerConfig.mousewheel;
+
+ if (mousewheel) {
+ this.setupMousewheelEvents(hoursInputEl, minutesInputEl, secondsInputEl);
+ }
+
+ var arrowkeys = angular.isDefined($attrs.arrowkeys) ? $scope.$parent.$eval($attrs.arrowkeys) : timepickerConfig.arrowkeys;
+ if (arrowkeys) {
+ this.setupArrowkeyEvents(hoursInputEl, minutesInputEl, secondsInputEl);
+ }
+
+ $scope.readonlyInput = angular.isDefined($attrs.readonlyInput) ? $scope.$parent.$eval($attrs.readonlyInput) : timepickerConfig.readonlyInput;
+ this.setupInputEvents(hoursInputEl, minutesInputEl, secondsInputEl);
+ };
+
+ var hourStep = timepickerConfig.hourStep;
+ if ($attrs.hourStep) {
+ watchers.push($scope.$parent.$watch($parse($attrs.hourStep), function(value) {
+ hourStep = +value;
+ }));
+ }
+
+ var minuteStep = timepickerConfig.minuteStep;
+ if ($attrs.minuteStep) {
+ watchers.push($scope.$parent.$watch($parse($attrs.minuteStep), function(value) {
+ minuteStep = +value;
+ }));
+ }
+
+ var min;
+ watchers.push($scope.$parent.$watch($parse($attrs.min), function(value) {
+ var dt = new Date(value);
+ min = isNaN(dt) ? undefined : dt;
+ }));
+
+ var max;
+ watchers.push($scope.$parent.$watch($parse($attrs.max), function(value) {
+ var dt = new Date(value);
+ max = isNaN(dt) ? undefined : dt;
+ }));
+
+ var disabled = false;
+ if ($attrs.ngDisabled) {
+ watchers.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(value) {
+ disabled = value;
+ }));
+ }
+
+ $scope.noIncrementHours = function() {
+ var incrementedSelected = addMinutes(selected, hourStep * 60);
+ return disabled || incrementedSelected > max ||
+ incrementedSelected < selected && incrementedSelected < min;
+ };
+
+ $scope.noDecrementHours = function() {
+ var decrementedSelected = addMinutes(selected, -hourStep * 60);
+ return disabled || decrementedSelected < min ||
+ decrementedSelected > selected && decrementedSelected > max;
+ };
+
+ $scope.noIncrementMinutes = function() {
+ var incrementedSelected = addMinutes(selected, minuteStep);
+ return disabled || incrementedSelected > max ||
+ incrementedSelected < selected && incrementedSelected < min;
+ };
+
+ $scope.noDecrementMinutes = function() {
+ var decrementedSelected = addMinutes(selected, -minuteStep);
+ return disabled || decrementedSelected < min ||
+ decrementedSelected > selected && decrementedSelected > max;
+ };
+
+ $scope.noIncrementSeconds = function() {
+ var incrementedSelected = addSeconds(selected, secondStep);
+ return disabled || incrementedSelected > max ||
+ incrementedSelected < selected && incrementedSelected < min;
+ };
+
+ $scope.noDecrementSeconds = function() {
+ var decrementedSelected = addSeconds(selected, -secondStep);
+ return disabled || decrementedSelected < min ||
+ decrementedSelected > selected && decrementedSelected > max;
+ };
+
+ $scope.noToggleMeridian = function() {
+ if (selected.getHours() < 12) {
+ return disabled || addMinutes(selected, 12 * 60) > max;
+ }
+
+ return disabled || addMinutes(selected, -12 * 60) < min;
+ };
+
+ var secondStep = timepickerConfig.secondStep;
+ if ($attrs.secondStep) {
+ watchers.push($scope.$parent.$watch($parse($attrs.secondStep), function(value) {
+ secondStep = +value;
+ }));
+ }
+
+ $scope.showSeconds = timepickerConfig.showSeconds;
+ if ($attrs.showSeconds) {
+ watchers.push($scope.$parent.$watch($parse($attrs.showSeconds), function(value) {
+ $scope.showSeconds = !!value;
+ }));
+ }
+
+ // 12H / 24H mode
+ $scope.showMeridian = timepickerConfig.showMeridian;
+ if ($attrs.showMeridian) {
+ watchers.push($scope.$parent.$watch($parse($attrs.showMeridian), function(value) {
+ $scope.showMeridian = !!value;
+
+ if (ngModelCtrl.$error.time) {
+ // Evaluate from template
+ var hours = getHoursFromTemplate(), minutes = getMinutesFromTemplate();
+ if (angular.isDefined(hours) && angular.isDefined(minutes)) {
+ selected.setHours(hours);
+ refresh();
+ }
+ } else {
+ updateTemplate();
+ }
+ }));
+ }
+
+ // Get $scope.hours in 24H mode if valid
+ function getHoursFromTemplate() {
+ var hours = +$scope.hours;
+ var valid = $scope.showMeridian ? hours > 0 && hours < 13 :
+ hours >= 0 && hours < 24;
+ if (!valid || $scope.hours === '') {
+ return undefined;
+ }
... 75637 lines suppressed ...